diff -Nru postgresql-10-10.17/configure postgresql-10-10.19/configure --- postgresql-10-10.17/configure 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/configure 2021-11-08 22:05:38.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for PostgreSQL 10.17. +# Generated by GNU Autoconf 2.69 for PostgreSQL 10.19. # # Report bugs to . # @@ -582,8 +582,8 @@ # Identity of this package. PACKAGE_NAME='PostgreSQL' PACKAGE_TARNAME='postgresql' -PACKAGE_VERSION='10.17' -PACKAGE_STRING='PostgreSQL 10.17' +PACKAGE_VERSION='10.19' +PACKAGE_STRING='PostgreSQL 10.19' PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org' PACKAGE_URL='' @@ -1417,7 +1417,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures PostgreSQL 10.17 to adapt to many kinds of systems. +\`configure' configures PostgreSQL 10.19 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1482,7 +1482,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of PostgreSQL 10.17:";; + short | recursive ) echo "Configuration of PostgreSQL 10.19:";; esac cat <<\_ACEOF @@ -1644,7 +1644,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -PostgreSQL configure 10.17 +PostgreSQL configure 10.19 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2359,7 +2359,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by PostgreSQL $as_me 10.17, which was +It was created by PostgreSQL $as_me 10.19, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -10600,7 +10600,8 @@ fi -# Note: We can test for libldap_r only after we know PTHREAD_LIBS +# Note: We can test for libldap_r only after we know PTHREAD_LIBS; +# also, on AIX, we may need to have openssl in LIBS for this step. if test "$with_ldap" = yes ; then _LIBS="$LIBS" if test "$PORTNAME" != "win32"; then @@ -10653,10 +10654,12 @@ LDAP_LIBS_BE="-lldap $EXTRA_LDAP_LIBS" if test "$enable_thread_safety" = yes; then - # on some platforms ldap_r fails to link without PTHREAD_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldap_simple_bind in -lldap_r" >&5 -$as_echo_n "checking for ldap_simple_bind in -lldap_r... " >&6; } -if ${ac_cv_lib_ldap_r_ldap_simple_bind+:} false; then : + # Use ldap_r for FE if available, else assume ldap is thread-safe. + # On some platforms ldap_r fails to link without PTHREAD_LIBS. + LIBS="$_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldap_bind in -lldap_r" >&5 +$as_echo_n "checking for ldap_bind in -lldap_r... " >&6; } +if ${ac_cv_lib_ldap_r_ldap_bind+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -10670,38 +10673,32 @@ #ifdef __cplusplus extern "C" #endif -char ldap_simple_bind (); +char ldap_bind (); int main () { -return ldap_simple_bind (); +return ldap_bind (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ldap_r_ldap_simple_bind=yes + ac_cv_lib_ldap_r_ldap_bind=yes else - ac_cv_lib_ldap_r_ldap_simple_bind=no + ac_cv_lib_ldap_r_ldap_bind=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ldap_r_ldap_simple_bind" >&5 -$as_echo "$ac_cv_lib_ldap_r_ldap_simple_bind" >&6; } -if test "x$ac_cv_lib_ldap_r_ldap_simple_bind" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBLDAP_R 1 -_ACEOF - - LIBS="-lldap_r $LIBS" - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ldap_r_ldap_bind" >&5 +$as_echo "$ac_cv_lib_ldap_r_ldap_bind" >&6; } +if test "x$ac_cv_lib_ldap_r_ldap_bind" = xyes; then : + LDAP_LIBS_FE="-lldap_r $EXTRA_LDAP_LIBS" else - as_fn_error $? "library 'ldap_r' is required for LDAP" "$LINENO" 5 + LDAP_LIBS_FE="-lldap $EXTRA_LDAP_LIBS" fi - LDAP_LIBS_FE="-lldap_r $EXTRA_LDAP_LIBS" else LDAP_LIBS_FE="-lldap $EXTRA_LDAP_LIBS" fi @@ -13513,6 +13510,16 @@ cat >>confdefs.h <<_ACEOF #define HAVE_DECL_STRLCPY $ac_have_decl _ACEOF +ac_fn_c_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default" +if test "x$ac_cv_have_decl_strnlen" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRNLEN $ac_have_decl +_ACEOF # This is probably only present on macOS, but may as well check always ac_fn_c_check_decl "$LINENO" "F_FULLFSYNC" "ac_cv_have_decl_F_FULLFSYNC" "#include @@ -13880,6 +13887,19 @@ fi +ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" +if test "x$ac_cv_func_strnlen" = xyes; then : + $as_echo "#define HAVE_STRNLEN 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strnlen.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strnlen.$ac_objext" + ;; +esac + +fi + case $host_os in @@ -17772,7 +17792,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by PostgreSQL $as_me 10.17, which was +This file was extended by PostgreSQL $as_me 10.19, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17842,7 +17862,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -PostgreSQL config.status 10.17 +PostgreSQL config.status 10.19 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru postgresql-10-10.17/configure.in postgresql-10-10.19/configure.in --- postgresql-10-10.17/configure.in 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/configure.in 2021-11-08 22:05:38.000000000 +0000 @@ -17,7 +17,7 @@ dnl m4_pattern_forbid(^PGAC_)dnl to catch undefined macros -AC_INIT([PostgreSQL], [10.17], [pgsql-bugs@postgresql.org]) +AC_INIT([PostgreSQL], [10.19], [pgsql-bugs@postgresql.org]) m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required. Untested combinations of 'autoconf' and PostgreSQL versions are not @@ -1182,7 +1182,8 @@ AC_CHECK_LIB(xslt, xsltCleanupGlobals, [], [AC_MSG_ERROR([library 'xslt' is required for XSLT support])]) fi -# Note: We can test for libldap_r only after we know PTHREAD_LIBS +# Note: We can test for libldap_r only after we know PTHREAD_LIBS; +# also, on AIX, we may need to have openssl in LIBS for this step. if test "$with_ldap" = yes ; then _LIBS="$LIBS" if test "$PORTNAME" != "win32"; then @@ -1191,11 +1192,13 @@ [$EXTRA_LDAP_LIBS]) LDAP_LIBS_BE="-lldap $EXTRA_LDAP_LIBS" if test "$enable_thread_safety" = yes; then - # on some platforms ldap_r fails to link without PTHREAD_LIBS - AC_CHECK_LIB(ldap_r, ldap_simple_bind, [], - [AC_MSG_ERROR([library 'ldap_r' is required for LDAP])], + # Use ldap_r for FE if available, else assume ldap is thread-safe. + # On some platforms ldap_r fails to link without PTHREAD_LIBS. + LIBS="$_LIBS" + AC_CHECK_LIB(ldap_r, ldap_bind, + [LDAP_LIBS_FE="-lldap_r $EXTRA_LDAP_LIBS"], + [LDAP_LIBS_FE="-lldap $EXTRA_LDAP_LIBS"], [$PTHREAD_CFLAGS $PTHREAD_LIBS $EXTRA_LDAP_LIBS]) - LDAP_LIBS_FE="-lldap_r $EXTRA_LDAP_LIBS" else LDAP_LIBS_FE="-lldap $EXTRA_LDAP_LIBS" fi @@ -1548,7 +1551,7 @@ ]) # fi AC_CHECK_DECLS(fdatasync, [], [], [#include ]) -AC_CHECK_DECLS([strlcat, strlcpy]) +AC_CHECK_DECLS([strlcat, strlcpy, strnlen]) # This is probably only present on macOS, but may as well check always AC_CHECK_DECLS(F_FULLFSYNC, [], [], [#include ]) @@ -1640,7 +1643,7 @@ AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break]) fi -AC_REPLACE_FUNCS([crypt fls getopt getrusage inet_aton mkdtemp random rint srandom strerror strlcat strlcpy]) +AC_REPLACE_FUNCS([crypt fls getopt getrusage inet_aton mkdtemp random rint srandom strerror strlcat strlcpy strnlen]) case $host_os in diff -Nru postgresql-10-10.17/contrib/btree_gin/btree_gin.c postgresql-10-10.19/contrib/btree_gin/btree_gin.c --- postgresql-10-10.17/contrib/btree_gin/btree_gin.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/btree_gin/btree_gin.c 2021-11-08 22:05:38.000000000 +0000 @@ -353,7 +353,7 @@ static Datum leftmostvalue_char(void) { - return CharGetDatum(SCHAR_MIN); + return CharGetDatum(0); } GIN_SUPPORT(char, false, leftmostvalue_char, btcharcmp) diff -Nru postgresql-10-10.17/contrib/btree_gin/expected/char.out postgresql-10-10.19/contrib/btree_gin/expected/char.out --- postgresql-10-10.17/contrib/btree_gin/expected/char.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/btree_gin/expected/char.out 2021-11-08 22:05:38.000000000 +0000 @@ -7,12 +7,19 @@ SELECT * FROM test_char WHERE i<'d'::"char" ORDER BY i; i --- -(0 rows) + a + b + c +(3 rows) SELECT * FROM test_char WHERE i<='d'::"char" ORDER BY i; i --- -(0 rows) + a + b + c + d +(4 rows) SELECT * FROM test_char WHERE i='d'::"char" ORDER BY i; i diff -Nru postgresql-10-10.17/contrib/pgcrypto/expected/blowfish_1.out postgresql-10-10.19/contrib/pgcrypto/expected/blowfish_1.out --- postgresql-10-10.17/contrib/pgcrypto/expected/blowfish_1.out 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/contrib/pgcrypto/expected/blowfish_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,95 @@ +-- +-- Blowfish cipher +-- +-- ensure consistent test output regardless of the default bytea format +SET bytea_output TO escape; +-- some standard Blowfish testvalues +SELECT encode(encrypt( +decode('0000000000000000', 'hex'), +decode('0000000000000000', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +SELECT encode(encrypt( +decode('ffffffffffffffff', 'hex'), +decode('ffffffffffffffff', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +SELECT encode(encrypt( +decode('1000000000000001', 'hex'), +decode('3000000000000000', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +SELECT encode(encrypt( +decode('1111111111111111', 'hex'), +decode('1111111111111111', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +SELECT encode(encrypt( +decode('0123456789abcdef', 'hex'), +decode('fedcba9876543210', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +SELECT encode(encrypt( +decode('01a1d6d039776742', 'hex'), +decode('fedcba9876543210', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +SELECT encode(encrypt( +decode('ffffffffffffffff', 'hex'), +decode('0000000000000000', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- setkey +SELECT encode(encrypt( +decode('fedcba9876543210', 'hex'), +decode('f0e1d2c3b4a5968778695a4b3c2d1e0f', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- with padding +SELECT encode(encrypt( +decode('01234567890123456789', 'hex'), +decode('33443344334433443344334433443344', 'hex'), +'bf-ecb'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- cbc +-- 28 bytes key +SELECT encode(encrypt( +decode('6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5', 'hex'), +decode('37363534333231204e6f77206973207468652074696d6520666f7220', 'hex'), +'bf-cbc'), 'hex'); +ERROR: encrypt error: Key was too big +-- 29 bytes key +SELECT encode(encrypt( +decode('6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5ff92cc', 'hex'), +decode('37363534333231204e6f77206973207468652074696d6520666f722000', 'hex'), +'bf-cbc'), 'hex'); +ERROR: encrypt error: Key was too big +-- blowfish-448 +SELECT encode(encrypt( +decode('fedcba9876543210', 'hex'), +decode('f0e1d2c3b4a5968778695a4b3c2d1e0f001122334455667704689104c2fd3b2f584023641aba61761f1f1f1f0e0e0e0effffffffffffffff', 'hex'), +'bf-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Key was too big +-- result: c04504012e4e1f53 +-- empty data +select encode(encrypt('', 'foo', 'bf'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- 10 bytes key +select encode(encrypt('foo', '0123456789', 'bf'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- 22 bytes key +select encode(encrypt('foo', '0123456789012345678901', 'bf'), 'hex'); +ERROR: encrypt error: Key was too big +-- decrypt +select decrypt(encrypt('foo', '0123456', 'bf'), '0123456', 'bf'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- iv +select encode(encrypt_iv('foo', '0123456', 'abcd', 'bf'), 'hex'); +ERROR: encrypt_iv error: Cipher cannot be initialized ? +select decrypt_iv(decode('95c7e89322525d59', 'hex'), '0123456', 'abcd', 'bf'); +ERROR: decrypt_iv error: Cipher cannot be initialized ? +-- long message +select encode(encrypt('Lets try a longer message.', '0123456789', 'bf'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +select decrypt(encrypt('Lets try a longer message.', '0123456789', 'bf'), '0123456789', 'bf'); +ERROR: encrypt error: Cipher cannot be initialized ? diff -Nru postgresql-10-10.17/contrib/pgcrypto/expected/cast5_1.out postgresql-10-10.19/contrib/pgcrypto/expected/cast5_1.out --- postgresql-10-10.17/contrib/pgcrypto/expected/cast5_1.out 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/contrib/pgcrypto/expected/cast5_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,48 @@ +-- +-- Cast5 cipher +-- +-- ensure consistent test output regardless of the default bytea format +SET bytea_output TO escape; +-- test vectors from RFC2144 +-- 128 bit key +SELECT encode(encrypt( +decode('01 23 45 67 89 AB CD EF', 'hex'), +decode('01 23 45 67 12 34 56 78 23 45 67 89 34 56 78 9A', 'hex'), +'cast5-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- result: 23 8B 4F E5 84 7E 44 B2 +-- 80 bit key +SELECT encode(encrypt( +decode('01 23 45 67 89 AB CD EF', 'hex'), +decode('01 23 45 67 12 34 56 78 23 45', 'hex'), +'cast5-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- result: EB 6A 71 1A 2C 02 27 1B +-- 40 bit key +SELECT encode(encrypt( +decode('01 23 45 67 89 AB CD EF', 'hex'), +decode('01 23 45 67 12', 'hex'), +'cast5-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- result: 7A C8 16 D1 6E 9B 30 2E +-- cbc +-- empty data +select encode( encrypt('', 'foo', 'cast5'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- 10 bytes key +select encode( encrypt('foo', '0123456789', 'cast5'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- decrypt +select decrypt(encrypt('foo', '0123456', 'cast5'), '0123456', 'cast5'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- iv +select encode(encrypt_iv('foo', '0123456', 'abcd', 'cast5'), 'hex'); +ERROR: encrypt_iv error: Cipher cannot be initialized ? +select decrypt_iv(decode('384a970695ce016a', 'hex'), + '0123456', 'abcd', 'cast5'); +ERROR: decrypt_iv error: Cipher cannot be initialized ? +-- long message +select encode(encrypt('Lets try a longer message.', '0123456789', 'cast5'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +select decrypt(encrypt('Lets try a longer message.', '0123456789', 'cast5'), '0123456789', 'cast5'); +ERROR: encrypt error: Cipher cannot be initialized ? diff -Nru postgresql-10-10.17/contrib/pgcrypto/expected/des_1.out postgresql-10-10.19/contrib/pgcrypto/expected/des_1.out --- postgresql-10-10.17/contrib/pgcrypto/expected/des_1.out 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/contrib/pgcrypto/expected/des_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,31 @@ +-- +-- DES cipher +-- +-- ensure consistent test output regardless of the default bytea format +SET bytea_output TO escape; +-- no official test vectors atm +-- from blowfish.sql +SELECT encode(encrypt( +decode('0123456789abcdef', 'hex'), +decode('fedcba9876543210', 'hex'), +'des-ecb/pad:none'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- empty data +select encode( encrypt('', 'foo', 'des'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- 8 bytes key +select encode( encrypt('foo', '01234589', 'des'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- decrypt +select decrypt(encrypt('foo', '0123456', 'des'), '0123456', 'des'); +ERROR: encrypt error: Cipher cannot be initialized ? +-- iv +select encode(encrypt_iv('foo', '0123456', 'abcd', 'des'), 'hex'); +ERROR: encrypt_iv error: Cipher cannot be initialized ? +select decrypt_iv(decode('50735067b073bb93', 'hex'), '0123456', 'abcd', 'des'); +ERROR: decrypt_iv error: Cipher cannot be initialized ? +-- long message +select encode(encrypt('Lets try a longer message.', '01234567', 'des'), 'hex'); +ERROR: encrypt error: Cipher cannot be initialized ? +select decrypt(encrypt('Lets try a longer message.', '01234567', 'des'), '01234567', 'des'); +ERROR: encrypt error: Cipher cannot be initialized ? diff -Nru postgresql-10-10.17/contrib/pgcrypto/expected/pgp-decrypt_2.out postgresql-10-10.19/contrib/pgcrypto/expected/pgp-decrypt_2.out --- postgresql-10-10.17/contrib/pgcrypto/expected/pgp-decrypt_2.out 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/contrib/pgcrypto/expected/pgp-decrypt_2.out 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,421 @@ +-- +-- pgp_descrypt tests +-- +-- Checking ciphers +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.blowfish.sha1.mdc.s2k3.z0 + +jA0EBAMCfFNwxnvodX9g0jwB4n4s26/g5VmKzVab1bX1SmwY7gvgvlWdF3jKisvS +yA6Ce1QTMK3KdL2MPfamsTUSAML8huCJMwYQFfE= +=JcP+ +-----END PGP MESSAGE----- +'), 'foobar'); +ERROR: Wrong key or corrupt data +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCci97v0Q6Z0Zg0kQBsVf5Oe3iC+FBzUmuMV9KxmAyOMyjCc/5i8f1Eest +UTAsG35A1vYs02VARKzGz6xI2UHwFUirP+brPBg3Ee7muOx8pA== +=XtrP +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes192.sha1.mdc.s2k3.z0 + +jA0ECAMCI7YQpWqp3D1g0kQBCjB7GlX7+SQeXNleXeXQ78ZAPNliquGDq9u378zI +5FPTqAhIB2/2fjY8QEIs1ai00qphjX2NitxV/3Wn+6dufB4Q4g== +=rCZt +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes256.sha1.mdc.s2k3.z0 + +jA0ECQMC4f/5djqCC1Rg0kQBTHEPsD+Sw7biBsM2er3vKyGPAQkuTBGKC5ie7hT/ +lceMfQdbAg6oTFyJpk/wH18GzRDphCofg0X8uLgkAKMrpcmgog== +=fB6S +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +-- Checking MDC modes +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.nomdc.s2k3.z0 + +jA0EBwMCnv07rlXqWctgyS2Dm2JfOKCRL4sLSLJUC8RS2cH7cIhKSuLitOtyquB+ +u9YkgfJfsuRJmgQ9tmo= +=60ui +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCEeP3idNjQ1Bg0kQBf4G0wX+2QNzLh2YNwYkQgQkfYhn/hLXjV4nK9nsE +8Ex1Dsdt5UPvOz8W8VKQRS6loOfOe+yyXil8W3IYFwUpdDUi+Q== +=moGf +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +-- Checking hashes +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.md5.mdc.s2k3.z0 + +jA0EBwMClrXXtOXetohg0kQBn0Kl1ymevQZRHkdoYRHgzCwSQEiss7zYff2UNzgO +KyRrHf7zEBuZiZ2AG34jNVMOLToj1jJUg5zTSdecUzQVCykWTA== +=NyLk +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCApbdlrURoWJg0kQBzHM/E0o7djY82bNuspjxjAcPFrrtp0uvDdMQ4z2m +/PM8jhgI5vxFYfNQjLl8y3fHYIomk9YflN9K/Q13iq8A8sjeTw== +=FxbQ +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +-- Checking S2K modes +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k0.z0 + +jAQEBwAC0kQBKTaLAKE3xzps+QIZowqRNb2eAdzBw2LxEW2YD5PgNlbhJdGg+dvw +Ah9GXjGS1TVALzTImJbz1uHUZRfhJlFbc5yGQw== +=YvkV +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k1.z0 + +jAwEBwEC/QTByBLI3b/SRAHPxKzI6SZBo5lAEOD+EsvKQWO4adL9tDY+++Iqy1xK +4IaWXVKEj9R2Lr2xntWWMGZtcKtjD2lFFRXXd9dZp1ZThNDz +=dbXm +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCEq4Su3ZqNEJg0kQB4QG5jBTKF0i04xtH+avzmLhstBNRxvV3nsmB3cwl +z+9ZaA/XdSx5ZiFnMym8P6r8uY9rLjjNptvvRHlxIReF+p9MNg== +=VJKg +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes192.sha1.mdc.s2k0.z0 + +jAQECAAC0kQBBDnQWkgsx9YFaqDfWmpsiyAJ6y2xG/sBvap1dySYEMuZ+wJTXQ9E +Cr3i2M7TgVZ0M4jp4QL0adG1lpN5iK7aQeOwMw== +=cg+i +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes192.sha1.mdc.s2k1.z0 + +jAwECAECruOfyNDFiTnSRAEVoGXm4A9UZKkWljdzjEO/iaE7mIraltIpQMkiqCh9 +7h8uZ2u9uRBOv222fZodGvc6bvq/4R4hAa/6qSHtm8mdmvGt +=aHmC +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes192.sha1.mdc.s2k3.z0 + +jA0ECAMCjFn6SRi3SONg0kQBqtSHPaD0m7rXfDAhCWU/ypAsI93GuHGRyM99cvMv +q6eF6859ZVnli3BFSDSk3a4e/pXhglxmDYCfjAXkozKNYLo6yw== +=K0LS +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes256.sha1.mdc.s2k0.z0 + +jAQECQAC0kQB4L1eMbani07XF2ZYiXNK9LW3v8w41oUPl7dStmrJPQFwsdxmrDHu +rQr3WbdKdY9ufjOE5+mXI+EFkSPrF9rL9NCq6w== +=RGts +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes256.sha1.mdc.s2k1.z0 + +jAwECQECKHhrou7ZOIXSRAHWIVP+xjVQcjAVBTt+qh9SNzYe248xFTwozkwev3mO ++KVJW0qhk0An+Y2KF99/bYFl9cL5D3Tl43fC8fXGl3x3m7pR +=SUrU +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes256.sha1.mdc.s2k3.z0 + +jA0ECQMCjc8lwZu8Fz1g0kQBkEzjImi21liep5jj+3dAJ2aZFfUkohi8b3n9z+7+ +4+NRzL7cMW2RLAFnJbiqXDlRHMwleeuLN1up2WIxsxtYYuaBjA== +=XZrG +-----END PGP MESSAGE----- +'), 'foobar'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +-- Checking longer passwords +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCx6dBiuqrYNRg0kQBEo63AvA1SCslxP7ayanLf1H0/hlk2nONVhTwVEWi +tTGup1mMz6Cfh1uDRErUuXpx9A0gdMu7zX0o5XjrL7WGDAZdSw== +=XKKG +-----END PGP MESSAGE----- +'), '0123456789abcdefghij'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCBDvYuS990iFg0kQBW31UK5OiCjWf5x6KJ8qNNT2HZWQCjCBZMU0XsOC6 +CMxFKadf144H/vpoV9GA0f22keQgCl0EsTE4V4lweVOPTKCMJg== +=gWDh +-----END PGP MESSAGE----- +'), '0123456789abcdefghij2jk4h5g2j54khg23h54g2kh54g2khj54g23hj54'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCqXbFafC+ofVg0kQBejyiPqH0QMERVGfmPOjtAxvyG5KDIJPYojTgVSDt +FwsDabdQUz5O7bgNSnxfmyw1OifGF+W2bIn/8W+0rDf8u3+O+Q== +=OxOF +-----END PGP MESSAGE----- +'), 'x'); + pgp_sym_decrypt +----------------- + Secret message. +(1 row) + +-- Checking various data +select encode(digest(pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat1.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCGJ+SpuOysINg0kQBJfSjzsW0x4OVcAyr17O7FBvMTwIGeGcJd99oTQU8 +Xtx3kDqnhUq9Z1fS3qPbi5iNP2A9NxOBxPWz2JzxhydANlgbxg== +=W/ik +-----END PGP MESSAGE----- +'), '0123456789abcdefghij'), 'sha1'), 'hex'); + encode +------------------------------------------ + 0225e3ede6f2587b076d021a189ff60aad67e066 +(1 row) + +-- expected: 0225e3ede6f2587b076d021a189ff60aad67e066 +select encode(digest(pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat2.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCvdpDvidNzMxg0jUBvj8eS2+1t/9/zgemxvhtc0fvdKGGbjH7dleaTJRB +SaV9L04ky1qECNDx3XjnoKLC+H7IOQ== +=Fxen +-----END PGP MESSAGE----- +'), '0123456789abcdefghij'), 'sha1'), 'hex'); + encode +------------------------------------------ + da39a3ee5e6b4b0d3255bfef95601890afd80709 +(1 row) + +-- expected: da39a3ee5e6b4b0d3255bfef95601890afd80709 +select encode(digest(pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: dat3.aes.sha1.mdc.s2k3.z0 + +jA0EBwMCxQvxJZ3G/HRg0lgBeYmTa7/uDAjPyFwSX4CYBgpZWVn/JS8JzILrcWF8 +gFnkUKIE0PSaYFp+Yi1VlRfUtRQ/X/LYNGa7tWZS+4VQajz2Xtz4vUeAEiYFYPXk +73Hb8m1yRhQK +=ivrD +-----END PGP MESSAGE----- +'), '0123456789abcdefghij'), 'sha1'), 'hex'); + encode +------------------------------------------ + 5e5c135efc0dd00633efc6dfd6e731ea408a5b4c +(1 row) + +-- expected: 5e5c135efc0dd00633efc6dfd6e731ea408a5b4c +-- Checking CRLF +select encode(digest(pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: crlf mess + +ww0ECQMCt7VAtby6l4Bi0lgB5KMIZiiF/b3CfMfUyY0eDncsGXtkbu1X+l9brjpMP8eJnY79Amms +a3nsOzKTXUfS9VyaXo8IrncM6n7fdaXpwba/3tNsAhJG4lDv1k4g9v8Ix2dfv6Rs +=mBP9 +-----END PGP MESSAGE----- +'), 'key', 'convert-crlf=0'), 'sha1'), 'hex'); + encode +------------------------------------------ + 9353062be7720f1446d30b9e75573a4833886784 +(1 row) + +-- expected: 9353062be7720f1446d30b9e75573a4833886784 +select encode(digest(pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- +Comment: crlf mess + +ww0ECQMCt7VAtby6l4Bi0lgB5KMIZiiF/b3CfMfUyY0eDncsGXtkbu1X+l9brjpMP8eJnY79Amms +a3nsOzKTXUfS9VyaXo8IrncM6n7fdaXpwba/3tNsAhJG4lDv1k4g9v8Ix2dfv6Rs +=mBP9 +-----END PGP MESSAGE----- +'), 'key', 'convert-crlf=1'), 'sha1'), 'hex'); + encode +------------------------------------------ + 7efefcab38467f7484d6fa43dc86cf5281bd78e2 +(1 row) + +-- expected: 7efefcab38467f7484d6fa43dc86cf5281bd78e2 +-- check BUG #11905, problem with messages 6 less than a power of 2. +select pgp_sym_decrypt(pgp_sym_encrypt(repeat('x',65530),'1'),'1') = repeat('x',65530); + ?column? +---------- + t +(1 row) + +-- expected: true +-- Negative tests +-- Decryption with a certain incorrect key yields an apparent Literal Data +-- packet reporting its content to be binary data. Ciphertext source: +-- iterative pgp_sym_encrypt('secret', 'key') until the random prefix gave +-- rise to that property. +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- + +ww0EBwMCxf8PTrQBmJdl0jcB6y2joE7GSLKRv7trbNsF5Z8ou5NISLUg31llVH/S0B2wl4bvzZjV +VsxxqLSPzNLAeIspJk5G +=mSd/ +-----END PGP MESSAGE----- +'), 'wrong-key', 'debug=1'); +NOTICE: dbg: prefix_init: corrupt prefix +NOTICE: dbg: parse_literal_data: data type=b +NOTICE: dbg: mdcbuf_finish: bad MDC pkt hdr +ERROR: Wrong key or corrupt data +-- Routine text/binary mismatch. +select pgp_sym_decrypt(pgp_sym_encrypt_bytea('P', 'key'), 'key', 'debug=1'); +NOTICE: dbg: parse_literal_data: data type=b +ERROR: Not text data +-- Decryption with a certain incorrect key yields an apparent BZip2-compressed +-- plaintext. Ciphertext source: iterative pgp_sym_encrypt('secret', 'key') +-- until the random prefix gave rise to that property. +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- + +ww0EBwMC9rK/dMkF5Zlt0jcBlzAQ1mQY2qYbKYbw8h3EZ5Jk0K2IiY92R82TRhWzBIF/8cmXDPtP +GXsd65oYJZp3Khz0qfyn +=Nmpq +-----END PGP MESSAGE----- +'), 'wrong-key', 'debug=1'); +NOTICE: dbg: prefix_init: corrupt prefix +NOTICE: dbg: parse_compressed_data: bzip2 unsupported +NOTICE: dbg: mdcbuf_finish: bad MDC pkt hdr +ERROR: Wrong key or corrupt data +-- Routine use of BZip2 compression. Ciphertext source: +-- echo x | gpg --homedir /nonexistent --personal-compress-preferences bzip2 \ +-- --personal-cipher-preferences aes --no-emit-version --batch \ +-- --symmetric --passphrase key --armor +select pgp_sym_decrypt(dearmor(' +-----BEGIN PGP MESSAGE----- + +jA0EBwMCRhFrAKNcLVJg0mMBLJG1cCASNk/x/3dt1zJ+2eo7jHfjgg3N6wpB3XIe +QCwkWJwlBG5pzbO5gu7xuPQN+TbPJ7aQ2sLx3bAHhtYb0i3vV9RO10Gw++yUyd4R +UCAAw2JRIISttRHMfDpDuZJpvYo= +=AZ9M +-----END PGP MESSAGE----- +'), 'key', 'debug=1'); +NOTICE: dbg: parse_compressed_data: bzip2 unsupported +ERROR: Unsupported compression algorithm diff -Nru postgresql-10-10.17/contrib/pgcrypto/expected/pgp-pubkey-decrypt_1.out postgresql-10-10.19/contrib/pgcrypto/expected/pgp-pubkey-decrypt_1.out --- postgresql-10-10.17/contrib/pgcrypto/expected/pgp-pubkey-decrypt_1.out 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/contrib/pgcrypto/expected/pgp-pubkey-decrypt_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,652 @@ +-- +-- PGP Public Key Encryption +-- +-- As most of the low-level stuff is tested in symmetric key +-- tests, here's only public-key specific tests +create table keytbl ( + id int4, + name text, + pubkey text, + seckey text +); +create table encdata ( + id int4, + data text +); +insert into keytbl (id, name, pubkey, seckey) +values (1, 'elg1024', ' +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +mQGiBELIIUgRBACp401L6jXrLB28c3YA4sM3OJKnxM1GT9YTkWyE3Vyte65H8WU9 +tGPBX7OMuaX5eGZ84LFUGvaP0k7anfmXcDkCO3P9GgL+ro/dS2Ps/vChQPZqHaxE +xpKDUt47B7DGdRJrC8DRnIR4wbSyQA6ma3S1yFqC5pJhSs+mqf9eExOjiwCgntth +klRxIYw352ZX9Ov9oht/p/ED/1Xi4PS+tkXVvyIw5aZfa61bT6XvDkoPI0Aj3GE5 +YmCHJlKA/IhEr8QJOLV++5VEv4l6KQ1/DFoJzoNdr1AGJukgTc6X/WcQRzfQtUic +PHQme5oAWoHa6bVQZOwvbJh3mOXDq/Tk/KF22go8maM44vMn4bvv+SBbslviYLiL +jZJ1A/9JXF1esNq+X9HehJyqHHU7LEEf/ck6zC7o2erM3/LZlZuLNPD2cv3oL3Nv +saEgcTSZl+8XmO8pLmzjKIb+hi70qVx3t2IhMqbb4B/dMY1Ck62gPBKa81/Wwi7v +IsEBQLEtyBmGmI64YpzoRNFeaaF9JY+sAKqROqe6dLjJ7vebQLQfRWxnYW1hbCAx +MDI0IDx0ZXN0QGV4YW1wbGUub3JnPoheBBMRAgAeBQJCyCFIAhsDBgsJCAcDAgMV +AgMDFgIBAh4BAheAAAoJEBwpvA0YF3NkOtsAniI9W2bC3CxARTpYrev7ihreDzFc +AJ9WYLQxDQAi5Ec9AQoodPkIagzZ4LkBDQRCyCFKEAQAh5SNbbJMAsJ+sQbcWEzd +ku8AdYB5zY7Qyf9EOvn0g39bzANhxmmb6gbRlQN0ioymlDwraTKUAfuCZgNcg/0P +sxFGb9nDcvjIV8qdVpnq1PuzMFuBbmGI6weg7Pj01dlPiO0wt1lLX+SubktqbYxI ++h31c3RDZqxj+KAgxR8YNGMAAwYD+wQs2He1Z5+p4OSgMERiNzF0acZUYmc0e+/9 +6gfL0ft3IP+SSFo6hEBrkKVhZKoPSSRr5KpNaEobhdxsnKjUaw/qyoaFcNMzb4sF +k8wq5UlCkR+h72u6hv8FuleCV8SJUT1U2JjtlXJR2Pey9ifh8rZfu57UbdwdHa0v +iWc4DilhiEkEGBECAAkFAkLIIUoCGwwACgkQHCm8DRgXc2TtrwCfdPom+HlNVE9F +ig3hGY1Rb4NEk1gAn1u9IuQB+BgDP40YHHz6bKWS/x80 +=RWci +-----END PGP PUBLIC KEY BLOCK----- +', ' +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +lQG7BELIIUgRBACp401L6jXrLB28c3YA4sM3OJKnxM1GT9YTkWyE3Vyte65H8WU9 +tGPBX7OMuaX5eGZ84LFUGvaP0k7anfmXcDkCO3P9GgL+ro/dS2Ps/vChQPZqHaxE +xpKDUt47B7DGdRJrC8DRnIR4wbSyQA6ma3S1yFqC5pJhSs+mqf9eExOjiwCgntth +klRxIYw352ZX9Ov9oht/p/ED/1Xi4PS+tkXVvyIw5aZfa61bT6XvDkoPI0Aj3GE5 +YmCHJlKA/IhEr8QJOLV++5VEv4l6KQ1/DFoJzoNdr1AGJukgTc6X/WcQRzfQtUic +PHQme5oAWoHa6bVQZOwvbJh3mOXDq/Tk/KF22go8maM44vMn4bvv+SBbslviYLiL +jZJ1A/9JXF1esNq+X9HehJyqHHU7LEEf/ck6zC7o2erM3/LZlZuLNPD2cv3oL3Nv +saEgcTSZl+8XmO8pLmzjKIb+hi70qVx3t2IhMqbb4B/dMY1Ck62gPBKa81/Wwi7v +IsEBQLEtyBmGmI64YpzoRNFeaaF9JY+sAKqROqe6dLjJ7vebQAAAnj4i4st+s+C6 +WKTIDcL1Iy0Saq8lCp60H0VsZ2FtYWwgMTAyNCA8dGVzdEBleGFtcGxlLm9yZz6I +XgQTEQIAHgUCQsghSAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAcKbwNGBdz +ZDrbAJ9cp6AsjOhiLxwznsMJheGf4xkH8wCfUPjMCLm4tAEnyYn2hDNt7CB8B6Kd +ATEEQsghShAEAIeUjW2yTALCfrEG3FhM3ZLvAHWAec2O0Mn/RDr59IN/W8wDYcZp +m+oG0ZUDdIqMppQ8K2kylAH7gmYDXIP9D7MRRm/Zw3L4yFfKnVaZ6tT7szBbgW5h +iOsHoOz49NXZT4jtMLdZS1/krm5Lam2MSPod9XN0Q2asY/igIMUfGDRjAAMGA/sE +LNh3tWefqeDkoDBEYjcxdGnGVGJnNHvv/eoHy9H7dyD/kkhaOoRAa5ClYWSqD0kk +a+SqTWhKG4XcbJyo1GsP6sqGhXDTM2+LBZPMKuVJQpEfoe9ruob/BbpXglfEiVE9 +VNiY7ZVyUdj3svYn4fK2X7ue1G3cHR2tL4lnOA4pYQAA9030E4u2ZKOfJBpUM+EM +m9VmsGjaQZV4teB0R/q3W8sRIYhJBBgRAgAJBQJCyCFKAhsMAAoJEBwpvA0YF3Nk +7a8AniFFotw1x2X+oryu3Q3nNtmxoKHpAJ9HU7jw7ydg33dI9J8gVkrmsSZ2/w== +=nvqq +-----END PGP PRIVATE KEY BLOCK----- +'); +insert into keytbl (id, name, pubkey, seckey) +values (2, 'elg2048', ' +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +mQGiBELIIgoRBAC1onBpxKYgDvrgCaUWPY34947X3ogxGOfCN0p6Eqrx+2PUhm4n +vFvmczpMT4iDc0mUO+iwnwsEkXQI1eC99g8c0jnZAvzJZ5miAHL8hukMAMfDkYke +5aVvcPPc8uPDlItpszGmH0rM0V9TIt/i9QEXetpyNWhk4jj5qnohYhLeZwCgkOdO +RFAdNi4vfFPivvtAp2ffjU8D/R3x/UJCvkzi7i9rQHGo313xxmQu5BuqIjANBUij +8IE7LRPI/Qhg2hYy3sTJwImDi7VkS+fuvNVk0d6MTWplAXYU96bn12JaD21R9sKl +Fzcc+0iZI1wYA1PczisUkoTISE+dQFUsoGHfpDLhoBuesXQrhBavI8t8VPd+nkdt +J+oKA/9iRQ87FzxdYTkh2drrv69FZHc3Frsjw9nPcBq/voAvXH0MRilqyCg7HpW/ +T9naeOERksa+Rj4R57IF1l4e5oiiGJo9QmaKZcsCsXrREJCycrlEtMqXfSPy+bi5 +0yDZE/Qm1dwu13+OXOsRvkoNYjO8Mzo9K8wU12hMqN0a2bu6a7QjRWxnYW1hbCAy +MDQ4IDx0ZXN0MjA0OEBleGFtcGxlLm9yZz6IXgQTEQIAHgUCQsgiCgIbAwYLCQgH +AwIDFQIDAxYCAQIeAQIXgAAKCRBI6c1W/qZo29PDAKCG724enIxRog1j+aeCp/uq +or6mbwCePuKy2/1kD1FvnhkZ/R5fpm+pdm25Ag0EQsgiIhAIAJI3Gb2Ehtz1taQ9 +AhPY4Avad2BsqD3S5X/R11Cm0KBE/04D29dxn3f8QfxDsexYvNIZjoJPBqqZ7iMX +MhoWyw8ZF5Zs1mLIjFGVorePrm94N3MNPWM7x9M36bHUjx0vCZKFIhcGY1g+htE/ +QweaJzNVeA5z4qZmik41FbQyQSyHa3bOkTZu++/U6ghP+iDp5UDBjMTkVyqITUVN +gC+MR+da/I60irBVhue7younh4ovF+CrVDQJC06HZl6CAJJyA81SmRfi+dmKbbjZ +LF6rhz0norPjISJvkIqvdtM4VPBKI5wpgwCzpEqjuiKrAVujRT68zvBvJ4aVqb11 +k5QdJscAAwUH/jVJh0HbWAoiFTe+NvohfrA8vPcD0rtU3Y+siiqrabotnxJd2NuC +bxghJYGfNtnx0KDjFbCRKJVeTFok4UnuVYhXdH/c6i0/rCTNdeW2D6pmR4GfBozR +Pw/ARf+jONawGLyUj7uq13iquwMSE7VyNuF3ycL2OxXjgOWMjkH8c+zfHHpjaZ0R +QsetMq/iNBWraayKZnWUd+eQqNzE+NUo7w1jAu7oDpy+8a1eipxzK+O0HfU5LTiF +Z1Oe4Um0P2l3Xtx8nEgj4vSeoEkl2qunfGW00ZMMTCWabg0ZgxPzMfMeIcm6525A +Yn2qL+X/qBJTInAl7/hgPz2D1Yd7d5/RdWaISQQYEQIACQUCQsgiIgIbDAAKCRBI +6c1W/qZo25ZSAJ98WTrtl2HiX8ZqZq95v1+9cHtZPQCfZDoWQPybkNescLmXC7q5 +1kNTmEU= +=8QM5 +-----END PGP PUBLIC KEY BLOCK----- +', ' +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +lQG7BELIIgoRBAC1onBpxKYgDvrgCaUWPY34947X3ogxGOfCN0p6Eqrx+2PUhm4n +vFvmczpMT4iDc0mUO+iwnwsEkXQI1eC99g8c0jnZAvzJZ5miAHL8hukMAMfDkYke +5aVvcPPc8uPDlItpszGmH0rM0V9TIt/i9QEXetpyNWhk4jj5qnohYhLeZwCgkOdO +RFAdNi4vfFPivvtAp2ffjU8D/R3x/UJCvkzi7i9rQHGo313xxmQu5BuqIjANBUij +8IE7LRPI/Qhg2hYy3sTJwImDi7VkS+fuvNVk0d6MTWplAXYU96bn12JaD21R9sKl +Fzcc+0iZI1wYA1PczisUkoTISE+dQFUsoGHfpDLhoBuesXQrhBavI8t8VPd+nkdt +J+oKA/9iRQ87FzxdYTkh2drrv69FZHc3Frsjw9nPcBq/voAvXH0MRilqyCg7HpW/ +T9naeOERksa+Rj4R57IF1l4e5oiiGJo9QmaKZcsCsXrREJCycrlEtMqXfSPy+bi5 +0yDZE/Qm1dwu13+OXOsRvkoNYjO8Mzo9K8wU12hMqN0a2bu6awAAn2F+iNBElfJS +8azqO/kEiIfpqu6/DQG0I0VsZ2FtYWwgMjA0OCA8dGVzdDIwNDhAZXhhbXBsZS5v +cmc+iF0EExECAB4FAkLIIgoCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQSOnN +Vv6maNvTwwCYkpcJmpl3aHCQdGomz7dFohDgjgCgiThZt2xTEi6GhBB1vuhk+f55 +n3+dAj0EQsgiIhAIAJI3Gb2Ehtz1taQ9AhPY4Avad2BsqD3S5X/R11Cm0KBE/04D +29dxn3f8QfxDsexYvNIZjoJPBqqZ7iMXMhoWyw8ZF5Zs1mLIjFGVorePrm94N3MN +PWM7x9M36bHUjx0vCZKFIhcGY1g+htE/QweaJzNVeA5z4qZmik41FbQyQSyHa3bO +kTZu++/U6ghP+iDp5UDBjMTkVyqITUVNgC+MR+da/I60irBVhue7younh4ovF+Cr +VDQJC06HZl6CAJJyA81SmRfi+dmKbbjZLF6rhz0norPjISJvkIqvdtM4VPBKI5wp +gwCzpEqjuiKrAVujRT68zvBvJ4aVqb11k5QdJscAAwUH/jVJh0HbWAoiFTe+Nvoh +frA8vPcD0rtU3Y+siiqrabotnxJd2NuCbxghJYGfNtnx0KDjFbCRKJVeTFok4Unu +VYhXdH/c6i0/rCTNdeW2D6pmR4GfBozRPw/ARf+jONawGLyUj7uq13iquwMSE7Vy +NuF3ycL2OxXjgOWMjkH8c+zfHHpjaZ0RQsetMq/iNBWraayKZnWUd+eQqNzE+NUo +7w1jAu7oDpy+8a1eipxzK+O0HfU5LTiFZ1Oe4Um0P2l3Xtx8nEgj4vSeoEkl2qun +fGW00ZMMTCWabg0ZgxPzMfMeIcm6525AYn2qL+X/qBJTInAl7/hgPz2D1Yd7d5/R +dWYAAVQKFPXbRaxbdArwRVXMzSD3qj/+VwwhwEDt8zmBGnlBfwVdkjQQrDUMmV1S +EwyISQQYEQIACQUCQsgiIgIbDAAKCRBI6c1W/qZo25ZSAJ4sgUfHTVsG/x3p3fcM +3b5R86qKEACggYKSwPWCs0YVRHOWqZY0pnHtLH8= +=3Dgk +-----END PGP PRIVATE KEY BLOCK----- +'); +insert into keytbl (id, name, pubkey, seckey) +values (3, 'elg4096', ' +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +mQGiBELII7wRBACFuaAvb11cIvjJK9LkZr4cYuYhLWh3DJdojNNnLNiym5OEksvY +05cw8OgqKtPzICU7o/mHXTWhzJYUt3i50/AeYygI8Q0uATS6RnDAKNlES1EMoHKz +2a5iFbYs4bm4IwlkvYd8uWjcu+U0YLbxir39u+anIc6eT+q3WiH/q3zDRwCgkT98 +cnIG8iO8PdwDSP8G4Lt6TYED/R45GvCzJ4onQALLE92KkLUz8aFWSl05r84kczEN +SxiP9Ss6m465RmwWHfwYAu4b+c4GeNyU8fIU2EM8cezchC+edEi3xu1s+pCV0Dk4 +18DGC8WKCICO30vBynuNmYg7W/7Zd4wtjss454fMW7+idVDNM701mmXBtI1nsBtG +7Z4tA/9FxjFbJK9jh24RewfjHpLYqcfCo2SsUjOwsnMZ5yg2yv9KyVVQhRqwmrqt +q8MRyjGmfoD9PPdCgvqgzy0hHvAHUtTm2zUczGTG+0g4hNIklxC/Mv6J4KE+NWTh +uB4acqofHyaw2WnKOuRUsoDi6rG5AyjNMyAK/vVcEGj7J1tk27QjRWxnYW1hbCA0 +MDk2IDx0ZXN0NDA5NkBleGFtcGxlLm9yZz6IXgQTEQIAHgUCQsgjvAIbAwYLCQgH +AwIDFQIDAxYCAQIeAQIXgAAKCRBj+HX2P2d0oAEDAJ9lI+CNmb42z3+a6TnVusM6 +FI7oLwCfUwA1zEcRdsT3nIkoYh0iKxFSDFW5BA0EQsgkdhAQAJQbLXlgcJ/jq+Xh +Eujb77/eeftFJObNIRYD9fmJ7HFIXbUcknEpbs+cRH/nrj5dGSY3OT3jCXOUtvec +sCoX/CpZWL0oqDjAiZtNSFiulw5Gav4gHYkWKgKdSo+2rkavEPqKIVHvMeXaJtGT +d7v/AmL/P8T7gls93o5WFBOLtPbDvWqaKRy2U5TAhl1laiM0vGALRVjvSCgnGw9g +FpSnXbO3AfenUSjDzZujfGLHtU44ixHSS/D4DepiF3YaYLsN4CBqZRv6FbMZD5W3 +DnJY4kS1kH0MzdcF19TlcZ3itTCcGIt1tMKf84mccPoqdMzH7vumBGTeFEly5Afp +9berJcirqh2fzlunN0GS02z6SGWnjTbDlkNDxuxPSBbpcpNyD3jpYAUqSwRsZ/+5 +zkzcbGtDmvy9sJ5lAXkxGoIoQ1tEVX/LOHnh2NQHK8ourVOnr7MS0nozssITZJ5E +XqtHiREjiYEuPyZiVZKJHLWuYYaF+n40znnz3sJuXFRreHhHbbvRdlYUU5mJV+XZ +BLgKuS33NdpGeMIngnCc/9IQ6OZb6ixc94kbkd3w2PVr8CbKlu/IHTjWOO2mAo+D ++OydlYl23FiM3KOyMP1HcEOJMB/nwkMtrvd+522Lu9n77ktKfot9IPrQDIQTyXjR +3pCOFtCOBnk2tJHMPoG9jn9ah/LHAAMHEACDZ5I/MHGfmiKg2hrmqBu2J2j/deC8 +CpwcyDH1ovQ0gHvb9ESa+CVRU2Wdy2CD7Q9SmtMverB5eneL418iPVRcQdwRmQ2y +IH4udlBa6ce9HTUCaecAZ4/tYBnaC0Av/9l9tz14eYcwRMDpB+bnkhgF+PZ1KAfD +9wcY2aHbtsf3lZBc5h4owPJkxpe/BNzuJxW3q4VpSbLsZhwnCZ2wg7DRwP44wFIk +00ptmoBY59gsU6I40XtzrF8JDr0cA57xND5RY21Z8lnnYRE1Tc8h5REps9ZIxW3/ +yl91404bPLqxczpUHQAMSTAmBaStPYX1nS51uofOhLs5SKPCUmxfGKIOhsD0oLUn +78DnkONVGeXzBibSwwtbgfMzee4G8wSUfJ7w8WXz1TyanaGLnJ+DuKASSOrFoBCD +HEDuWZWgSL74NOQupFRk0gxOPmqU94Y8HziQWma/cETbmD83q8rxN+GM2oBxQkQG +xcbqMTHE7aVhV3tymbSWVaYhww3oIwsZS9oUIi1DnPEowS6CpVRrwdvLjLJnJzzV +O3AFPn9eZ1Q7R1tNx+zZ4OOfhvI/OlRJ3HBx2L53embkbdY9gFYCCdTjPyjKoDIx +kALgCajjCYMNUsAKNSd6mMCQ8TtvukSzkZS1RGKP27ohsdnzIVsiEAbxDMMcI4k1 +ul0LExUTCXSjeIhJBBgRAgAJBQJCyCR2AhsMAAoJEGP4dfY/Z3Sg19sAn0NDS8pb +qrMpQAxSb7zRTmcXEFd9AJ435H0ttP/NhLHXC9ezgbCMmpXMOQ== +=kRxT +-----END PGP PUBLIC KEY BLOCK----- +', ' +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +lQG7BELII7wRBACFuaAvb11cIvjJK9LkZr4cYuYhLWh3DJdojNNnLNiym5OEksvY +05cw8OgqKtPzICU7o/mHXTWhzJYUt3i50/AeYygI8Q0uATS6RnDAKNlES1EMoHKz +2a5iFbYs4bm4IwlkvYd8uWjcu+U0YLbxir39u+anIc6eT+q3WiH/q3zDRwCgkT98 +cnIG8iO8PdwDSP8G4Lt6TYED/R45GvCzJ4onQALLE92KkLUz8aFWSl05r84kczEN +SxiP9Ss6m465RmwWHfwYAu4b+c4GeNyU8fIU2EM8cezchC+edEi3xu1s+pCV0Dk4 +18DGC8WKCICO30vBynuNmYg7W/7Zd4wtjss454fMW7+idVDNM701mmXBtI1nsBtG +7Z4tA/9FxjFbJK9jh24RewfjHpLYqcfCo2SsUjOwsnMZ5yg2yv9KyVVQhRqwmrqt +q8MRyjGmfoD9PPdCgvqgzy0hHvAHUtTm2zUczGTG+0g4hNIklxC/Mv6J4KE+NWTh +uB4acqofHyaw2WnKOuRUsoDi6rG5AyjNMyAK/vVcEGj7J1tk2wAAoJCUNy6awTkw +XfbLbpqh0fvDst7jDLa0I0VsZ2FtYWwgNDA5NiA8dGVzdDQwOTZAZXhhbXBsZS5v +cmc+iF4EExECAB4FAkLII7wCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQY/h1 +9j9ndKABAwCeNEOVK87EzXYbtxYBsnjrUI948NIAn2+f3BXiBFDV5NvqPwIZ0m77 +Fwy4nQRMBELIJHYQEACUGy15YHCf46vl4RLo2++/3nn7RSTmzSEWA/X5iexxSF21 +HJJxKW7PnER/564+XRkmNzk94wlzlLb3nLAqF/wqWVi9KKg4wImbTUhYrpcORmr+ +IB2JFioCnUqPtq5GrxD6iiFR7zHl2ibRk3e7/wJi/z/E+4JbPd6OVhQTi7T2w71q +mikctlOUwIZdZWojNLxgC0VY70goJxsPYBaUp12ztwH3p1Eow82bo3xix7VOOIsR +0kvw+A3qYhd2GmC7DeAgamUb+hWzGQ+Vtw5yWOJEtZB9DM3XBdfU5XGd4rUwnBiL +dbTCn/OJnHD6KnTMx+77pgRk3hRJcuQH6fW3qyXIq6odn85bpzdBktNs+khlp402 +w5ZDQ8bsT0gW6XKTcg946WAFKksEbGf/uc5M3GxrQ5r8vbCeZQF5MRqCKENbRFV/ +yzh54djUByvKLq1Tp6+zEtJ6M7LCE2SeRF6rR4kRI4mBLj8mYlWSiRy1rmGGhfp+ +NM55897CblxUa3h4R2270XZWFFOZiVfl2QS4Crkt9zXaRnjCJ4JwnP/SEOjmW+os +XPeJG5Hd8Nj1a/AmypbvyB041jjtpgKPg/jsnZWJdtxYjNyjsjD9R3BDiTAf58JD +La73fudti7vZ++5LSn6LfSD60AyEE8l40d6QjhbQjgZ5NrSRzD6BvY5/WofyxwAD +BxAAg2eSPzBxn5oioNoa5qgbtido/3XgvAqcHMgx9aL0NIB72/REmvglUVNlnctg +g+0PUprTL3qweXp3i+NfIj1UXEHcEZkNsiB+LnZQWunHvR01AmnnAGeP7WAZ2gtA +L//Zfbc9eHmHMETA6Qfm55IYBfj2dSgHw/cHGNmh27bH95WQXOYeKMDyZMaXvwTc +7icVt6uFaUmy7GYcJwmdsIOw0cD+OMBSJNNKbZqAWOfYLFOiONF7c6xfCQ69HAOe +8TQ+UWNtWfJZ52ERNU3PIeURKbPWSMVt/8pfdeNOGzy6sXM6VB0ADEkwJgWkrT2F +9Z0udbqHzoS7OUijwlJsXxiiDobA9KC1J+/A55DjVRnl8wYm0sMLW4HzM3nuBvME +lHye8PFl89U8mp2hi5yfg7igEkjqxaAQgxxA7lmVoEi++DTkLqRUZNIMTj5qlPeG +PB84kFpmv3BE25g/N6vK8TfhjNqAcUJEBsXG6jExxO2lYVd7cpm0llWmIcMN6CML +GUvaFCItQ5zxKMEugqVUa8Hby4yyZyc81TtwBT5/XmdUO0dbTcfs2eDjn4byPzpU +Sdxwcdi+d3pm5G3WPYBWAgnU4z8oyqAyMZAC4Amo4wmDDVLACjUnepjAkPE7b7pE +s5GUtURij9u6IbHZ8yFbIhAG8QzDHCOJNbpdCxMVEwl0o3gAAckBdfKuasiNUn5G +L5XRnSvaOFzftr8zteOlZChCSNvzH5k+i1j7RJbWq06OeKRywPzjfjgM2MvRzI43 +ICeISQQYEQIACQUCQsgkdgIbDAAKCRBj+HX2P2d0oNfbAJ9+G3SeXrk+dWwo9EGi +hqMi2GVTsgCfeoQJPsc8FLYUgfymc/3xqAVLUtg= +=Gjq6 +-----END PGP PRIVATE KEY BLOCK----- +'); +insert into keytbl (id, name, pubkey, seckey) +values (4, 'rsa2048', ' +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +mQELBELIJbEBCADAIdtcoLAmQfl8pb73pPRuEYx8qW9klLfCGG5A4OUOi00JHNwP +ZaABe1PGzjoeXrgM1MTQZhoZu1Vdg+KDI6XAtiy9P6bLg7ntsXksD4wBoIKtQKc2 +55pdukxTiu+xeJJG2q8ZZPOp97CV9fbQ9vPCwgnuSsDCoQlibZikDVPAyVTvp7Jx +5rz8yXsl4sxvaeMZPqqFPtA/ENeQ3cpsyR1BQXSvoZpH1Fq0b8GcZTEdWWD/w6/K +MCRC8TmgEd+z3e8kIsCwFQ+TSHbCcxRWdgZE7gE31sJHHVkrZlXtLU8MPXWqslVz +R0cX+yC8j6bXI6/BqZ2SvRndJwuunRAr4um7AAYptB5SU0EgMjA0OCA8cnNhMjA0 +OEBleGFtcGxlLm9yZz6JATQEEwECAB4FAkLIJbECGwMGCwkIBwMCAxUCAwMWAgEC +HgECF4AACgkQnc+OnJvTHyQqHwf8DtzuAGmObfe3ggtn14x2wnU1Nigebe1K5liR +nrLuVlLBpdO6CWmMUzfKRvyZlx54GlA9uUQSjW+RlgejdOTQqesDrcTEukYd4yzw +bLZyM5Gb3lsE/FEmE7Dxw/0Utf59uACqzG8LACQn9J6sEgZWKxAupuYTHXd12lDP +D3dnU4uzKPhMcjnSN00pzjusP7C9NZd3OLkAx2vw/dmb4Q+/QxeZhVYYsAUuR2hv +9bgGWopumlOkt8Zu5YG6+CtTbJXprPI7pJ1jHbeE+q/29hWJQtS8Abx82AcOkzhv +S3NZKoJ/1DrGgoDAu1mGkM4KvLAxfDs/qQ9dZhtEmDbKPLTVEA== +=lR4n +-----END PGP PUBLIC KEY BLOCK----- +', ' +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +lQOWBELIJbEBCADAIdtcoLAmQfl8pb73pPRuEYx8qW9klLfCGG5A4OUOi00JHNwP +ZaABe1PGzjoeXrgM1MTQZhoZu1Vdg+KDI6XAtiy9P6bLg7ntsXksD4wBoIKtQKc2 +55pdukxTiu+xeJJG2q8ZZPOp97CV9fbQ9vPCwgnuSsDCoQlibZikDVPAyVTvp7Jx +5rz8yXsl4sxvaeMZPqqFPtA/ENeQ3cpsyR1BQXSvoZpH1Fq0b8GcZTEdWWD/w6/K +MCRC8TmgEd+z3e8kIsCwFQ+TSHbCcxRWdgZE7gE31sJHHVkrZlXtLU8MPXWqslVz +R0cX+yC8j6bXI6/BqZ2SvRndJwuunRAr4um7AAYpAAf/QZsrrz0c7dgWwGqMIpw6 +fP+/lLa74+fa2CFRWtYowEiKsfDg/wN7Ua07036dNhPa8aZPsU6SRzm5PybKOURe +D9pNt0FxJkX0j5pCWfjSJgTbc1rCdqZ/oyBk/U6pQtf//zfw3PbDl7I8TC6GOt2w +5NgcXdsWHP7LAmPctOVUyzFsenevR0MFTHkMbmKI1HpFm8XN/e1Fl+qIAD+OagTF +5B32VvpoJtkh5nxnIuToNJsa9Iy7F9MM2CeFOyTMihMcjXKBBUaAYoF115irBvqu +7N/qWmzqLg8yxBZ56mh6meCF3+67VA2y7fL8rhw2QuqgLg1JFlKAVL+9crCSrn// +GQQA1kT7FytW6BNOffblFYZkrJer3icoRDqa/ljgH/yVaWoVT1igy0E9XzYO7MwP +2usj/resLy0NC1qCthk51cZ/wthooMl88e5Wb4l5FYwBEac7muSBTo4W8cAH1hFj +TWL6XAGvEzGX3Mt9pn8uYGlQLZAhJoNCAU2EOCbN1PchDvsEAOWNKYesuUVk8+sQ +St0NDNhd9BWtTWTHkCZb1dKC3JTfr9PqkTBLrWFbYjkOtvdPAW7FDaXXXZfdH1jH +WfwP3Q+I6sqgSaWpCS4dBAns3/RVtO7czVgyIwma04iIvJqderYrfvkUq95KfwP2 +V8wXkhrPPPxyrg5y3wQlpY2jb5RBBAC17SK1ms+DBtck4vpdjp3SJ32SbyC/DU30 +89Q12j74S7Zdu1qZlKnvy3kWPYX/hMuSzGZ+mLVJNFEqH2X01aFzppYz0hdI9PGB +9tTFEqZWQL9ZkXfjc79Cgnt12pNukRbtw0N/kyutOdIFHVT79wVAd+powqziXJsC +Kc+4xjwSCkZitB5SU0EgMjA0OCA8cnNhMjA0OEBleGFtcGxlLm9yZz6JATQEEwEC +AB4FAkLIJbECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQnc+OnJvTHyQqHwf8 +DtzuAGmObfe3ggtn14x2wnU1Nigebe1K5liRnrLuVlLBpdO6CWmMUzfKRvyZlx54 +GlA9uUQSjW+RlgejdOTQqesDrcTEukYd4yzwbLZyM5Gb3lsE/FEmE7Dxw/0Utf59 +uACqzG8LACQn9J6sEgZWKxAupuYTHXd12lDPD3dnU4uzKPhMcjnSN00pzjusP7C9 +NZd3OLkAx2vw/dmb4Q+/QxeZhVYYsAUuR2hv9bgGWopumlOkt8Zu5YG6+CtTbJXp +rPI7pJ1jHbeE+q/29hWJQtS8Abx82AcOkzhvS3NZKoJ/1DrGgoDAu1mGkM4KvLAx +fDs/qQ9dZhtEmDbKPLTVEA== +=WKAv +-----END PGP PRIVATE KEY BLOCK----- +'); +insert into keytbl (id, name, pubkey, seckey) +values (5, 'psw-elg1024', ' +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +mQGiBELIIUgRBACp401L6jXrLB28c3YA4sM3OJKnxM1GT9YTkWyE3Vyte65H8WU9 +tGPBX7OMuaX5eGZ84LFUGvaP0k7anfmXcDkCO3P9GgL+ro/dS2Ps/vChQPZqHaxE +xpKDUt47B7DGdRJrC8DRnIR4wbSyQA6ma3S1yFqC5pJhSs+mqf9eExOjiwCgntth +klRxIYw352ZX9Ov9oht/p/ED/1Xi4PS+tkXVvyIw5aZfa61bT6XvDkoPI0Aj3GE5 +YmCHJlKA/IhEr8QJOLV++5VEv4l6KQ1/DFoJzoNdr1AGJukgTc6X/WcQRzfQtUic +PHQme5oAWoHa6bVQZOwvbJh3mOXDq/Tk/KF22go8maM44vMn4bvv+SBbslviYLiL +jZJ1A/9JXF1esNq+X9HehJyqHHU7LEEf/ck6zC7o2erM3/LZlZuLNPD2cv3oL3Nv +saEgcTSZl+8XmO8pLmzjKIb+hi70qVx3t2IhMqbb4B/dMY1Ck62gPBKa81/Wwi7v +IsEBQLEtyBmGmI64YpzoRNFeaaF9JY+sAKqROqe6dLjJ7vebQLQfRWxnYW1hbCAx +MDI0IDx0ZXN0QGV4YW1wbGUub3JnPoheBBMRAgAeBQJCyCFIAhsDBgsJCAcDAgMV +AgMDFgIBAh4BAheAAAoJEBwpvA0YF3NkOtsAniI9W2bC3CxARTpYrev7ihreDzFc +AJ9WYLQxDQAi5Ec9AQoodPkIagzZ4LkBDQRCyCFKEAQAh5SNbbJMAsJ+sQbcWEzd +ku8AdYB5zY7Qyf9EOvn0g39bzANhxmmb6gbRlQN0ioymlDwraTKUAfuCZgNcg/0P +sxFGb9nDcvjIV8qdVpnq1PuzMFuBbmGI6weg7Pj01dlPiO0wt1lLX+SubktqbYxI ++h31c3RDZqxj+KAgxR8YNGMAAwYD+wQs2He1Z5+p4OSgMERiNzF0acZUYmc0e+/9 +6gfL0ft3IP+SSFo6hEBrkKVhZKoPSSRr5KpNaEobhdxsnKjUaw/qyoaFcNMzb4sF +k8wq5UlCkR+h72u6hv8FuleCV8SJUT1U2JjtlXJR2Pey9ifh8rZfu57UbdwdHa0v +iWc4DilhiEkEGBECAAkFAkLIIUoCGwwACgkQHCm8DRgXc2TtrwCfdPom+HlNVE9F +ig3hGY1Rb4NEk1gAn1u9IuQB+BgDP40YHHz6bKWS/x80 +=RWci +-----END PGP PUBLIC KEY BLOCK----- +', ' +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +lQHpBELIIUgRBACp401L6jXrLB28c3YA4sM3OJKnxM1GT9YTkWyE3Vyte65H8WU9 +tGPBX7OMuaX5eGZ84LFUGvaP0k7anfmXcDkCO3P9GgL+ro/dS2Ps/vChQPZqHaxE +xpKDUt47B7DGdRJrC8DRnIR4wbSyQA6ma3S1yFqC5pJhSs+mqf9eExOjiwCgntth +klRxIYw352ZX9Ov9oht/p/ED/1Xi4PS+tkXVvyIw5aZfa61bT6XvDkoPI0Aj3GE5 +YmCHJlKA/IhEr8QJOLV++5VEv4l6KQ1/DFoJzoNdr1AGJukgTc6X/WcQRzfQtUic +PHQme5oAWoHa6bVQZOwvbJh3mOXDq/Tk/KF22go8maM44vMn4bvv+SBbslviYLiL +jZJ1A/9JXF1esNq+X9HehJyqHHU7LEEf/ck6zC7o2erM3/LZlZuLNPD2cv3oL3Nv +saEgcTSZl+8XmO8pLmzjKIb+hi70qVx3t2IhMqbb4B/dMY1Ck62gPBKa81/Wwi7v +IsEBQLEtyBmGmI64YpzoRNFeaaF9JY+sAKqROqe6dLjJ7vebQP4HAwImKZ5q2QwT +D2DDAY/IQBjes7WgqZeacfLPDoB8ecD/KLoSCH6Z3etvbPHSOKiazxoJ962Ix74H +ZAE6ZbMTtl5dZW1ptB9FbGdhbWFsIDEwMjQgPHRlc3RAZXhhbXBsZS5vcmc+iF4E +ExECAB4FAkLIIUgCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQHCm8DRgXc2Q6 +2wCfXKegLIzoYi8cM57DCYXhn+MZB/MAn1D4zAi5uLQBJ8mJ9oQzbewgfAeinQFf +BELIIUoQBACHlI1tskwCwn6xBtxYTN2S7wB1gHnNjtDJ/0Q6+fSDf1vMA2HGaZvq +BtGVA3SKjKaUPCtpMpQB+4JmA1yD/Q+zEUZv2cNy+MhXyp1WmerU+7MwW4FuYYjr +B6Ds+PTV2U+I7TC3WUtf5K5uS2ptjEj6HfVzdENmrGP4oCDFHxg0YwADBgP7BCzY +d7Vnn6ng5KAwRGI3MXRpxlRiZzR77/3qB8vR+3cg/5JIWjqEQGuQpWFkqg9JJGvk +qk1oShuF3GycqNRrD+rKhoVw0zNviwWTzCrlSUKRH6Hva7qG/wW6V4JXxIlRPVTY +mO2VclHY97L2J+Hytl+7ntRt3B0drS+JZzgOKWH+BwMCJimeatkMEw9gRkFjt4Xa +9rX8awMBE5+vVcGKv/DNiCvJnlYvSdCj8VfuHsYFliiJo6u17NJon+K43e3yvDNk +f631VOVanGEz7TyqOkWQiEkEGBECAAkFAkLIIUoCGwwACgkQHCm8DRgXc2TtrwCe +IUWi3DXHZf6ivK7dDec22bGgoekAn0dTuPDvJ2Dfd0j0nyBWSuaxJnb/ +=SNvr +-----END PGP PRIVATE KEY BLOCK----- +'); +insert into keytbl (id, name, pubkey, seckey) +values (6, 'rsaenc2048', ' +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +mQELBELr2m0BCADOrnknlnXI0EzRExf/TgoHvK7Xx/E0keWqV3KrOyC3/tY2KOrj +UVxaAX5pkFX9wdQObGPIJm06u6D16CH6CildX/vxG7YgvvKzK8JGAbwrXAfk7OIW +czO2zRaZGDynoK3mAxHRBReyTKtNv8rDQhuZs6AOozJNARdbyUO/yqUnqNNygWuT +4htFDEuLPIJwAbMSD0BvFW6YQaPdxzaAZm3EWVNbwDzjgbBUdBiUUwRdZIFUhsjJ +dirFdy5+uuZru6y6CNC1OERkJ7P8EyoFiZckAIE5gshVZzNuyLOZjc5DhWBvLbX4 +NZElAnfiv+4nA6y8wQLSIbmHA3nqJaBklj85AAYptCVSU0EgMjA0OCBFbmMgPHJz +YTIwNDhlbmNAZXhhbXBsZS5vcmc+iQE0BBMBAgAeBQJC69ptAhsDBgsJCAcDAgMV +AgMDFgIBAh4BAheAAAoJEMiZ6pNEGVVZHMkIAJtGHHZ9iM8Yq1rr0zl1L6SvlQP8 +JCaxHa31wH3PKqGtq2M+cpb2rXf7gAY/doHJPXggfVzkyFrysmQ1gPbDGYLyOutw ++IkhihEb5bWxQBNj+3zAFs1YX6v2HXWbSUSmyY1V9/+NTtKk03olDc/swd3lXzku +UOhcgfpBgIt3Q+MpT6M2+OIF7lVfSb1rWdpwTfGhZzW9szQOeoS4gPvxCCRyuabQ +RJ6DWH61F8fFIDJg1z+A/Obx4fqX6GOA69RzgZ3oukFBIXxNwV9PZNnAmHtZVYO8 +0g/oVYBbuvOYedffDBeQarhERZ5W2TnIE+nqY61YOLBqosliygdZTXULzNi5AQsE +QuvaugEIAOuCJZdkzORA6e1lr81Lnr4JzMsVBFA+X/yIkBbV6qX/A4nVSLAZKNPX +z1YIrMTu+1rMIiy10IWbA6zgMTpzPhJRfgePONgdnCYyK5Ksh5/C5ntzKwwGwxfK +lAXIxJurCHXTbEa+YvPdn76vJ3HsXOXVEL+fLb4U3l3Ng87YM202Lh1Ha2MeS2zE +FZcAoKbFqAAjDLEai64SoOFh0W3CsD1DL4zmfp+YZrUPHTtZadsi53i4KKW/ws9U +rHlolqYNhYze/uRLyfnUx9PN4r/GhEzauyDMV0smo91uB3aewPft+eCpmeWnu0PF +JVK4xyRmhIq2rVCw16a1pBJirvGM+y0ABimJAR8EGAECAAkFAkLr2roCGwwACgkQ +yJnqk0QZVVku1wgAg1bLSjPkhw+ldG5HzumpqR84+JKyozdJaJzefu2+1iqYE0B0 +WLz2PJVIiK41xiEkKhBvTOQYuXmtWqAWXptD91P5SoXoNJWLQO3TNwarANhHxkWg +w/TOUxQqoctlRUej5NDD+4eW5G9lcS1FEGuKDWtX096u80vO+TbyJjvx2eVM1k+X +dmeYsGOiNgDimCreJGYc14G7eY9jt24gw10n1sMAKI1qm6lcoHqZ9OOyla+wJdro +PYZGO7R8+1O9R22WrK6BYDT5j/1JwMZqbOESjNvDEVT0yOHClCHRN4CChbt6LhKh +CLUNdz/udIt0JAC6c/HdPLSW3HnmM3+iNj+Kug== +=pwU2 +-----END PGP PUBLIC KEY BLOCK----- +', ' +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.4.1 (GNU/Linux) + +lQOWBELr2m0BCADOrnknlnXI0EzRExf/TgoHvK7Xx/E0keWqV3KrOyC3/tY2KOrj +UVxaAX5pkFX9wdQObGPIJm06u6D16CH6CildX/vxG7YgvvKzK8JGAbwrXAfk7OIW +czO2zRaZGDynoK3mAxHRBReyTKtNv8rDQhuZs6AOozJNARdbyUO/yqUnqNNygWuT +4htFDEuLPIJwAbMSD0BvFW6YQaPdxzaAZm3EWVNbwDzjgbBUdBiUUwRdZIFUhsjJ +dirFdy5+uuZru6y6CNC1OERkJ7P8EyoFiZckAIE5gshVZzNuyLOZjc5DhWBvLbX4 +NZElAnfiv+4nA6y8wQLSIbmHA3nqJaBklj85AAYpAAf9GuKpxrXp267eSPw9ZeSw +Ik6ob1I0MHbhhHeaXQnF0SuOViJ1+Bs74hUB3/F5fqrnjVLIS/ysYzegYpbpXOIa +MZwYcp2e+dpmVb7tkGQgzXH0igGtBQBqoSUVq9mG2XKPVh2JmiYgOH6GrHSGmnCq +GCgEK4ezSomB/3OtPFSjAxOlSw6dXSkapSxW3pEGvCdaWd9p8yl4rSpGsZEErPPL +uSbZZrHtWfgq5UXdPeE1UnMlBcvSruvpN4qgWMgSMs4d2lXvzXJLcht/nryP+atT +H1gwnRmlDCVv5BeJepKo3ORJDvcPlXkJPhqS9If3BhTqt6QgQEFI4aIYYZOZpZoi +2QQA2Zckzktmsc1MS04zS9gm1CbxM9d2KK8EOlh7fycRQhYYqqavhTBH2MgEp+Dd +ZtuEN5saNDe9x/fwi2ok1Bq6luGMWPZU/nZe7fxadzwfliy/qPzStWFW3vY9mMLu +6uEqgjin/lf4YrAswXDZaEc5e4GuNgGfwr27hpjxE1jg3PsEAPMqXEOMT2yh+yRu +DlLRbFhYOI4aUHY2CGoQQONnwv2O5gFvmOcPlg3J5lvnwlOYCx0c3bDxAtHyjPJq +FAZqcJBaB9RDhKHwlWDrbx/6FPH2SuKE+u4msIhPFin4V3FAP+yTem/TKrdnaWy6 +EUrhCWTXVRTijBaCudfjFd/ipHZbA/0dv7UAcoWK6kiVLzyE+jOvtN+ZxTzxq7CW +mlFPgAC966hgJmz9IXqadtMgPAoL3PK9q1DbPM3JhsQcJrNzTJqZrdN1/kPU0HHa ++aof1BVy3wSvp2mXgaRUULStyhUIyBRM6hAYp3/MoWEYn/bwr+zQkIU8Zsk6OsZ6 +q1xE3cowrUWFtCVSU0EgMjA0OCBFbmMgPHJzYTIwNDhlbmNAZXhhbXBsZS5vcmc+ +iQE0BBMBAgAeBQJC69ptAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEMiZ6pNE +GVVZHMkIAJtGHHZ9iM8Yq1rr0zl1L6SvlQP8JCaxHa31wH3PKqGtq2M+cpb2rXf7 +gAY/doHJPXggfVzkyFrysmQ1gPbDGYLyOutw+IkhihEb5bWxQBNj+3zAFs1YX6v2 +HXWbSUSmyY1V9/+NTtKk03olDc/swd3lXzkuUOhcgfpBgIt3Q+MpT6M2+OIF7lVf +Sb1rWdpwTfGhZzW9szQOeoS4gPvxCCRyuabQRJ6DWH61F8fFIDJg1z+A/Obx4fqX +6GOA69RzgZ3oukFBIXxNwV9PZNnAmHtZVYO80g/oVYBbuvOYedffDBeQarhERZ5W +2TnIE+nqY61YOLBqosliygdZTXULzNidA5YEQuvaugEIAOuCJZdkzORA6e1lr81L +nr4JzMsVBFA+X/yIkBbV6qX/A4nVSLAZKNPXz1YIrMTu+1rMIiy10IWbA6zgMTpz +PhJRfgePONgdnCYyK5Ksh5/C5ntzKwwGwxfKlAXIxJurCHXTbEa+YvPdn76vJ3Hs +XOXVEL+fLb4U3l3Ng87YM202Lh1Ha2MeS2zEFZcAoKbFqAAjDLEai64SoOFh0W3C +sD1DL4zmfp+YZrUPHTtZadsi53i4KKW/ws9UrHlolqYNhYze/uRLyfnUx9PN4r/G +hEzauyDMV0smo91uB3aewPft+eCpmeWnu0PFJVK4xyRmhIq2rVCw16a1pBJirvGM ++y0ABikAB/oC3z7lv6sVg+ngjbpWy9lZu2/ECZ9FqViVz7bUkjfvSuowgpncryLW +4EpVV4U6mMSgU6kAi5VGT/BvYGSAtnqDWGiPs7Kk+h4Adz74bEAXzU280pNBtSfX +tGvzlS4a376KzYFSCJDRBdMebEhJMbY0wQmR8lTZu5JSUI4YYEuN0c7ckdsw8w42 +QWTLonG8HC6h8UPKS0EAcaCo7tFubMIesU6cWuTYucsHE+wjbADjuSNX968qczNe +NoL2BUznXOQoPu6HQO4/8cr7ib+VQkB2bHQcMoZazPUStIID1e4CL4XcxfuAmT8o +3XDvMLgVqNp5W2f8Mzmk3/DbtsLXLOv5BADsCzQpseC8ikSYJC72hcon1wlUmGeH +3qgGiiHhYXFa18xgI5juoO8DaWno0rPPlgr36Y8mSB5qjYHMXwjKnKyUmt11H+hU ++6uk4hq3Rjd8l+vfuOSr1xoTrtBUg9Rwfw6JVo0DC+8CWg4oBWsLXVM6KQXPFdJs +8kyFQplR/iP1XQQA/2tbDANjAYGNNDjJO9/0kEnSAUyYMasFJDrA2q17J5CroVQw +QpMmWwdDkRANUVPKnWHS5sS65BRc7UytKe2f3A3ZInGXJIK2Hl+TzapWYcYxql+4 +ol5mEDDMDbhEE8Wmj9KyB6iifdLI0K+yxNb9T4Jpj3J18+St+G8+9AcFcBEEAM1b +M9C+/05cnV8gjcByqH9M9ypo8fzPvMKVXWwCLQXpaL50QIkzLURkiMoEWrCdELaA +sVPotRzePTIQ1ooLeDxd1gRnDqjZiIR0kwmv6vq8tfzY96O2ZbGWFI5eth89aWEJ +WB8AR3zYcXpwJLwPuhXW2/NlZF0bclJ3jNzAfTIeQmeJAR8EGAECAAkFAkLr2roC +GwwACgkQyJnqk0QZVVku1wgAg1bLSjPkhw+ldG5HzumpqR84+JKyozdJaJzefu2+ +1iqYE0B0WLz2PJVIiK41xiEkKhBvTOQYuXmtWqAWXptD91P5SoXoNJWLQO3TNwar +ANhHxkWgw/TOUxQqoctlRUej5NDD+4eW5G9lcS1FEGuKDWtX096u80vO+TbyJjvx +2eVM1k+XdmeYsGOiNgDimCreJGYc14G7eY9jt24gw10n1sMAKI1qm6lcoHqZ9OOy +la+wJdroPYZGO7R8+1O9R22WrK6BYDT5j/1JwMZqbOESjNvDEVT0yOHClCHRN4CC +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----- +Version: GnuPG v1.4.1 (GNU/Linux) + +hQEOA9k2z2S7c/RmEAQAgVWW0DeLrZ+1thWJGBPp2WRFL9HeNqqWHbKJCXJbz1Uy +faUY7yxVvG5Eutmo+JMiY3mg23/DgVVXHQZsTWpGvGM6djgUNGKUjZDbW6Nog7Mr +e78IywattCOmgUP9vIwwg3OVjuDCN/nVirGQFnXpJBc8DzWqDMWRWDy1M0ZsK7AD +/2JTosSFxUdpON0DKtIY3GLzmh6Nk3iV0g8VgJKUBT1rhCXuMDj3snm//EMm7hTY +PlnObq4mIhgz8NqprmhooxnU0Kapofb3P3wCHPpU14zxhXY8iKO/3JhBq2uFcx4X +uBMwkW4AdNxY/mzJZELteTL8Tr0s7PISk+owb4URpG3n0jsBc0CVULxrjh5Ejkdw +wCM195J6+KbQxOOFQ0b3uOVvv4dEgd/hRERCOq5EPaFhlHegyYJ7YO842vnSDA== +=PABx +-----END PGP MESSAGE----- +'); +-- elg2048 / blowfish +insert into encdata (id, data) values (2, ' +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.4.1 (GNU/Linux) + +hQIOAywibh/+XMfUEAf+OINhBngEsw4a/IJIeJvUgv1gTQzBwOdQEuc/runr4Oa8 +Skw/Bj0X/zgABVZLem1a35NHaNwaQaCFwMQ41YyWCu+jTdsiyX/Nw0w8LKKz0rNC +vVpG6YuV7Turtsf8a5lXy1K0SHkLlgxQ6c76GS4gtSl5+bsL2+5R1gSRJ9NXqCQP +OHRipEiYwBPqr5R21ZG0FXXNKGOGkj6jt/M/wh3WVtAhYuBI+HPKRfAEjd/Pu/eD +e1zYtkH1dKKFmp44+nF0tTI274xpuso7ShfKYrOK3saFWrl0DWiWteUinjSA1YBY +m7dG7NZ8PW+g1SZWhEoPjEEEHz3kWMvlKheMRDudnQf/dDyX6kZVIAQF/5B012hq +QyVewgTGysowFIDn01uIewoEA9cASw699jw9IoJp+k5WZXnU+INllBLzQxniQCSu +iEcr0x3fYqNtj9QBfbIqyRcY6HTWcmzyOUeGaSyX76j+tRAvtVtXpraFFFnaHB70 +YpXTjLkp8EBafzMghFaKDeXlr2TG/T7rbwcwWrFIwPqEAUKWN5m97Q3eyo8/ioMd +YoFD64J9ovSsgbuU5IpIGAsjxK+NKzg/2STH7zZFEVCtgcIXsTHTZfiwS98/+1H9 +p1DIDaXIcUFV2ztmcKxh9gt2sXRz1W+x6D8O0k3nanU5yGG4miLKaq18fbcA0BD1 ++NIzAfelq6nvvxYKcGcamBMgLo5JkZOBHvyr6RsAKIT5QYc0QTjysTk9l0Am3gYc +G2pAE+3k +=TBHV +-----END PGP MESSAGE----- +'); +-- elg4096 / aes256 +insert into encdata (id, data) values (3, ' +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.4.1 (GNU/Linux) + +hQQOA7aFBP0Sjh/5EA/+JCgncc8IZmmRjPStWnGf9tVJhgHTn+smIclibGzs0deS +SPSCitzpblwbUDvu964+/5e5Q1l7rRuNN+AgETlEd4eppv7Swn2ChdgOXxRwukcT +Nh3G+PTFvD4ayi7w1db3qvXIt0MwN4Alt436wJmK1oz2Ka9IcyO+wHWrDy1nSGSx +z5x7YEj+EZPgWc/YAvudqE8Jpzd/OT5zSHN09UFkIAk6NxisKaIstbEGFgpqtoDZ +1SJM84XAdL2IcaJ3YY7k/yzwlawhsakKd4GSd5vWmAwvyzzbSiBMfKsDE16ePLNU +ZBF7CzmlCBPZ7YrFAHLpXBXXkCQvzD2BEYOjse50ZEfJ036T7950Ozcdy1EQbGon +nyQ4Gh0PBpnMcBuiXOceWuYzhlzFOzDtlVKdNTxFRDcbEyW2jo9xQYvCCLnYy8EH +2M7S8jCtVYJBbn63a82ELv+3+kWYcsvBJv2ZVBh4ncrBu9o0P+OYS7ApoOU+j6p2 ++t0RXHksqXS1YiUwYF5KSw09EbYMgNZ9G04Px/PxLU6fSC9iDrGX7Xt3kOUP0mku +C518fPckT0zzRXqfFruJNRzDytW50KxkOQZzU1/Az1YlYN9QzWeU4EtLPb2fftZo +D0qH/ln+f9Op5t6sD2fcxZVECU1b/bFtZsxvwH406YL+UQ7hU/XnZrzVVzODal8P +/j1hg7v7BdJqu1DTp9nFWUuwMFcYAczuXn29IG183NZ7Ts4whDeYEhS8eNoLPX4j +txY12ILD/w/3Q4LoW/hPa6OdfEzsn0U5GLf1WiGmJE1H6ft2U/xUnerc/u0kt+FU +WAisArd4MuKtf7B5Vu/VF3kUdrR0hTniUKUivmC4o1jSId31Dufxj4aadVyldXAr +6TNBcdyragZjxEZ6hsBCYzA0Rd1a8atd6OaQoIEEfAzCu5Ks29pydHErStYGjWJ1 +KA5KPLVvjbHpDmRhlCcm8vgpYQsBYEB5gE9fx5yCTlsVhCB6y23h7hfdMqerDqkO +ZOPsO5h+tiHCdIrQ36sMjuINy1/K2rYcXd+Crh2iHcfidpU9fvDz2ihTRNQlhjuT +0cQZM5JhctEx4VXF4LDctRhit7Hn0iqsk604woQfJVvP8O673xSXT/kBY0A/v9C0 +3C4YoFNeSaKwbfZQ/4u1ZFPJxK2IIJa8UGpyAUewLMlzGVVagljybv/f4Z9ERAhy +huq5sMmw8UPsrJF2TUGHz5WSIwoh0J/qovoQI09I9sdEnFczDvRavMO2Mldy3E5i +exz9oewtel6GOmsZQSYWT/vJzbYMmvHNmNpVwwoKrLV6oI3kyQ80GHBwI1WlwHoK +2iRB0w8q4VVvJeYAz8ZIp380cqC3pfO0uZsrOx4g3k4X0jsB5y7rF5xXcZfnVbvG +DYKcOy60/OHMWVvpw6trAoA+iP+cVWPtrbRvLglTVTfYmi1ToZDDipkALBhndQ== +=L/M/ +-----END PGP MESSAGE----- +'); +-- rsaenc2048 / aes128 +insert into encdata (id, data) values (4, ' +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.4.1 (GNU/Linux) + +hQEMA/0CBsQJt0h1AQf+JyYnCiortj26P11zk28MKOGfWpWyAhuIgwbJXsdQ+e6r +pEyyqs9GC6gI7SNF6+J8B/gsMwvkAL4FHAQCvA4ZZ6eeXR1Of4YG22JQGmpWVWZg +DTyfhA2vkczuqfAD2tgUpMT6sdyGkQ/fnQ0lknlfHgC5GRx7aavOoAKtMqiZW5PR +yae/qR48mjX7Mb+mLvbagv9mHEgQSmHwFpaq2k456BbcZ23bvCmBnCvqV/90Ggfb +VP6gkSoFVsJ19RHsOhW1dk9ehbl51WB3zUOO5FZWwUTY9DJvKblRK/frF0+CXjE4 +HfcZXHSpSjx4haGGTsMvEJ85qFjZpr0eTGOdY5cFhNJAAVP8MZfji7OhPRAoOOIK +eRGOCkao12pvPyFTFnPd5vqmyBbdNpK4Q0hS82ljugMJvM0p3vJZVzW402Kz6iBL +GQ== +=XHkF +-----END PGP MESSAGE----- +'); +-- rsaenc2048 / aes128 (not from gnupg) +insert into encdata (id, data) values (5, ' +-----BEGIN PGP MESSAGE----- + +wcBMA/0CBsQJt0h1AQgAzxZ8j+OTeZ8IlLxfZ/mVd28/gUsCY+xigWBk/anZlK3T +p2tNU2idHzKdAttH2Hu/PWbZp4kwjl9spezYxMqCeBZqtfGED88Y+rqK0n/ul30A +7jjFHaw0XUOqFNlST1v6H2i7UXndnp+kcLfHPhnO5BIYWxB2CYBehItqtrn75eqr +C7trGzU/cr74efcWagbCDSNjiAV7GlEptlzmgVMmNikyI6w0ojEUx8lCLc/OsFz9 +pJUAX8xuwjxDVv+W7xk6c96grQiQlm+FLDYGiGNXoAzx3Wi/howu3uV40dXfY+jx +3WBrhEew5Pkpt1SsWoFnJWOfJ8GLd0ec8vfRCqAIVdLgAeS7NyawQYtd6wuVrEAj +5SMg4Thb4d+g45RksuGLHUUr4qO9tiXglODa4InhmJfgNuLk+RGz4LXjq8wepEmW +vRbgFOG54+Cf4C/gC+HkreDm5JKSKjvvw4B/jC6CDxq+JoziEe2Z1uEjCuEcr+Es +/eGzeOi36BejXPMHeKxXejj5qBBHKV0pHVhZSgffR0TtlXdB967Yl/5agV0R89hI +7Gw52emfnH4Z0Y4V0au2H0k1dR/2IxXdJEWSTG7Be1JHT59p9ei2gSEOrdBMIOjP +tbYYUlmmbvD49bHfThkDiC+oc9947LgQsk3kOOLbNHcjkbrjH8R5kjII4m/SEZA1 +g09T+338SzevBcVXh/cFrQ6/Et+lyyO2LJRUMs69g/HyzJOVWT2Iu8E0eS9MWevY +Qtrkrhrpkl3Y02qEp/j6M03Yu2t6ZF7dp51aJ5VhO2mmmtHaTnCyCc8Fcf72LmD8 +blH2nKZC9d6fi4YzSYMepZpMOFR65M80MCMiDUGnZBB8sEADu2/iVtqDUeG8mAA= +=PHJ1 +-----END PGP MESSAGE----- +'); +-- successful decrypt +select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) +from keytbl, encdata where keytbl.id=1 and encdata.id=1; + pgp_pub_decrypt +----------------- + Secret msg +(1 row) + +select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) +from keytbl, encdata where keytbl.id=2 and encdata.id=2; +ERROR: Wrong key or corrupt data +select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) +from keytbl, encdata where keytbl.id=3 and encdata.id=3; + pgp_pub_decrypt +----------------- + Secret msg +(1 row) + +select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) +from keytbl, encdata where keytbl.id=6 and encdata.id=4; + pgp_pub_decrypt +----------------- + Secret message. +(1 row) + +-- wrong key +select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) +from keytbl, encdata where keytbl.id=2 and encdata.id=1; +ERROR: Wrong key +-- sign-only 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: Wrong key or corrupt data +-- rsa: password-protected secret key, right password +select pgp_pub_decrypt(dearmor(data), dearmor(seckey), 'parool') +from keytbl, encdata where keytbl.id=7 and encdata.id=4; + 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; +ERROR: Need password for secret key +-- password-protected secret key, wrong password +select pgp_pub_decrypt(dearmor(data), dearmor(seckey), 'foo') +from keytbl, encdata where keytbl.id=5 and encdata.id=1; +ERROR: Wrong key or corrupt data +-- password-protected secret key, right password +select pgp_pub_decrypt(dearmor(data), dearmor(seckey), 'parool') +from keytbl, encdata where keytbl.id=5 and encdata.id=1; + pgp_pub_decrypt +----------------- + Secret msg +(1 row) + +-- test for a short read from prefix_init +select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) +from keytbl, encdata where keytbl.id=6 and encdata.id=5; +ERROR: Wrong key or corrupt data diff -Nru postgresql-10-10.17/contrib/pgcrypto/openssl.c postgresql-10-10.19/contrib/pgcrypto/openssl.c --- postgresql-10-10.17/contrib/pgcrypto/openssl.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/pgcrypto/openssl.c 2021-11-08 22:05:38.000000000 +0000 @@ -380,6 +380,8 @@ { if (!EVP_DecryptInit_ex(od->evp_ctx, od->evp_ciph, NULL, NULL, NULL)) return PXE_CIPHER_INIT; + if (!EVP_CIPHER_CTX_set_padding(od->evp_ctx, 0)) + return PXE_CIPHER_INIT; if (!EVP_CIPHER_CTX_set_key_length(od->evp_ctx, od->klen)) return PXE_CIPHER_INIT; if (!EVP_DecryptInit_ex(od->evp_ctx, NULL, NULL, od->key, od->iv)) @@ -404,6 +406,8 @@ { if (!EVP_EncryptInit_ex(od->evp_ctx, od->evp_ciph, NULL, NULL, NULL)) return PXE_CIPHER_INIT; + if (!EVP_CIPHER_CTX_set_padding(od->evp_ctx, 0)) + return PXE_CIPHER_INIT; if (!EVP_CIPHER_CTX_set_key_length(od->evp_ctx, od->klen)) return PXE_CIPHER_INIT; if (!EVP_EncryptInit_ex(od->evp_ctx, NULL, NULL, od->key, od->iv)) diff -Nru postgresql-10-10.17/contrib/pgcrypto/px.c postgresql-10-10.19/contrib/pgcrypto/px.c --- postgresql-10-10.17/contrib/pgcrypto/px.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/pgcrypto/px.c 2021-11-08 22:05:38.000000000 +0000 @@ -300,6 +300,7 @@ combo_decrypt(PX_Combo *cx, const uint8 *data, unsigned dlen, uint8 *res, unsigned *rlen) { + int err = 0; unsigned bs, i, pad; @@ -325,7 +326,9 @@ /* decrypt */ *rlen = dlen; - px_cipher_decrypt(c, data, dlen, res); + err = px_cipher_decrypt(c, data, dlen, res); + if (err) + return err; /* unpad */ if (bs > 1 && cx->padding) diff -Nru postgresql-10-10.17/contrib/pg_stat_statements/pg_stat_statements.c postgresql-10-10.19/contrib/pg_stat_statements/pg_stat_statements.c --- postgresql-10-10.17/contrib/pg_stat_statements/pg_stat_statements.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/pg_stat_statements/pg_stat_statements.c 2021-11-08 22:05:38.000000000 +0000 @@ -1933,6 +1933,7 @@ char *buf; int fd; struct stat stat; + Size nread; fd = OpenTransientFile(PGSS_TEXT_FILE, O_RDONLY | PG_BINARY, 0); if (fd < 0) @@ -1973,28 +1974,40 @@ } /* - * OK, slurp in the file. If we get a short read and errno doesn't get - * set, the reason is probably that garbage collection truncated the file - * since we did the fstat(), so we don't log a complaint --- but we don't - * return the data, either, since it's most likely corrupt due to - * concurrent writes from garbage collection. + * OK, slurp in the file. Windows fails if we try to read more than + * INT_MAX bytes at once, and other platforms might not like that either, + * so read a very large file in 1GB segments. */ - errno = 0; - if (read(fd, buf, stat.st_size) != stat.st_size) + nread = 0; + while (nread < stat.st_size) { - if (errno) - ereport(LOG, - (errcode_for_file_access(), - errmsg("could not read pg_stat_statement file \"%s\": %m", - PGSS_TEXT_FILE))); - free(buf); - CloseTransientFile(fd); - return NULL; + int toread = Min(1024 * 1024 * 1024, stat.st_size - nread); + + /* + * If we get a short read and errno doesn't get set, the reason is + * probably that garbage collection truncated the file since we did + * the fstat(), so we don't log a complaint --- but we don't return + * the data, either, since it's most likely corrupt due to concurrent + * writes from garbage collection. + */ + errno = 0; + if (read(fd, buf + nread, toread) != toread) + { + if (errno) + ereport(LOG, + (errcode_for_file_access(), + errmsg("could not read pg_stat_statement file \"%s\": %m", + PGSS_TEXT_FILE))); + free(buf); + CloseTransientFile(fd); + return NULL; + } + nread += toread; } CloseTransientFile(fd); - *buffer_size = stat.st_size; + *buffer_size = nread; return buf; } diff -Nru postgresql-10-10.17/contrib/postgres_fdw/connection.c postgresql-10-10.19/contrib/postgres_fdw/connection.c --- postgresql-10-10.17/contrib/postgres_fdw/connection.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/postgres_fdw/connection.c 2021-11-08 22:05:38.000000000 +0000 @@ -1039,6 +1039,11 @@ * Cancel the currently-in-progress query (whose query text we do not have) * and ignore the result. Returns true if we successfully cancel the query * and discard any pending result, and false if not. + * + * It's not a huge problem if we throw an ERROR here, but if we get into error + * recursion trouble, we'll end up slamming the connection shut, which will + * necessitate failing the entire toplevel transaction even if subtransactions + * were used. Try to use WARNING where we can. */ static bool pgfdw_cancel_query(PGconn *conn) @@ -1086,6 +1091,11 @@ * If the query is executed successfully but returns an error, the return * value is true if and only if ignore_errors is set. If the query can't be * sent or times out, the return value is false. + * + * It's not a huge problem if we throw an ERROR here, but if we get into error + * recursion trouble, we'll end up slamming the connection shut, which will + * necessitate failing the entire toplevel transaction even if subtransactions + * were used. Try to use WARNING where we can. */ static bool pgfdw_exec_cleanup_query(PGconn *conn, const char *query, bool ignore_errors) @@ -1132,11 +1142,6 @@ * be a query that was initiated as part of transaction abort to get the remote * side back to the appropriate state. * - * It's not a huge problem if we throw an ERROR here, but if we get into error - * recursion trouble, we'll end up slamming the connection shut, which will - * necessitate failing the entire toplevel transaction even if subtransactions - * were used. Try to use WARNING where we can. - * * endtime is the time at which we should give up and assume the remote * side is dead. Returns true if the timeout expired, otherwise false. * Sets *result except in case of a timeout. diff -Nru postgresql-10-10.17/contrib/postgres_fdw/expected/postgres_fdw.out postgresql-10-10.19/contrib/postgres_fdw/expected/postgres_fdw.out --- postgresql-10-10.17/contrib/postgres_fdw/expected/postgres_fdw.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/postgres_fdw/expected/postgres_fdw.out 2021-11-08 22:05:38.000000000 +0000 @@ -4175,18 +4175,23 @@ -- conversion error -- =================================================================== ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE int; -SELECT * FROM ft1 WHERE c1 = 1; -- ERROR +SELECT * FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8) WHERE x1 = 1; -- ERROR ERROR: invalid input syntax for integer: "foo" -CONTEXT: column "c8" of foreign table "ft1" -SELECT ft1.c1, ft2.c2, ft1.c8 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR +CONTEXT: column "x8" of foreign table "ftx" +SELECT ftx.x1, ft2.c2, ftx.x8 FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8), ft2 + WHERE ftx.x1 = ft2.c1 AND ftx.x1 = 1; -- ERROR ERROR: invalid input syntax for integer: "foo" -CONTEXT: column "c8" of foreign table "ft1" -SELECT ft1.c1, ft2.c2, ft1 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR +CONTEXT: column "x8" of foreign table "ftx" +SELECT ftx.x1, ft2.c2, ftx FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8), ft2 + WHERE ftx.x1 = ft2.c1 AND ftx.x1 = 1; -- ERROR ERROR: invalid input syntax for integer: "foo" -CONTEXT: whole-row reference to foreign table "ft1" +CONTEXT: whole-row reference to foreign table "ftx" SELECT sum(c2), array_agg(c8) FROM ft1 GROUP BY c8; -- ERROR ERROR: invalid input syntax for integer: "foo" CONTEXT: processing expression at position 2 in select list +ANALYZE ft1; -- ERROR +ERROR: invalid input syntax for integer: "foo" +CONTEXT: column "c8" of foreign table "ft1" ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE user_enum; -- =================================================================== -- subtransaction diff -Nru postgresql-10-10.17/contrib/postgres_fdw/option.c postgresql-10-10.19/contrib/postgres_fdw/option.c --- postgresql-10-10.17/contrib/postgres_fdw/option.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/postgres_fdw/option.c 2021-11-08 22:05:38.000000000 +0000 @@ -116,15 +116,18 @@ else if (strcmp(def->defname, "fdw_startup_cost") == 0 || strcmp(def->defname, "fdw_tuple_cost") == 0) { - /* these must have a non-negative numeric value */ + /* + * These must have a floating point value greater than or equal to + * zero. + */ double val; char *endp; val = strtod(defGetString(def), &endp); if (*endp || val < 0) ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("%s requires a non-negative numeric value", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("\"%s\" must be a floating point value greater than or equal to zero", def->defname))); } else if (strcmp(def->defname, "extensions") == 0) @@ -139,8 +142,8 @@ fetch_size = strtol(defGetString(def), NULL, 10); if (fetch_size <= 0) ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("%s requires a non-negative integer value", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("\"%s\" must be an integer value greater than zero", def->defname))); } } diff -Nru postgresql-10-10.17/contrib/postgres_fdw/postgres_fdw.c postgresql-10-10.19/contrib/postgres_fdw/postgres_fdw.c --- postgresql-10-10.17/contrib/postgres_fdw/postgres_fdw.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/postgres_fdw/postgres_fdw.c 2021-11-08 22:05:38.000000000 +0000 @@ -244,16 +244,9 @@ */ typedef struct ConversionLocation { - Relation rel; /* foreign table's relcache entry. */ AttrNumber cur_attno; /* attribute number being processed, or 0 */ - - /* - * In case of foreign join push down, fdw_scan_tlist is used to identify - * the Var node corresponding to the error location and - * fsstate->ss.ps.state gives access to the RTEs of corresponding relation - * to get the relation name and attribute name. - */ - ForeignScanState *fsstate; + Relation rel; /* foreign table being processed, or NULL */ + ForeignScanState *fsstate; /* plan node being processed, or NULL */ } ConversionLocation; /* Callback argument for ec_member_matches_foreign */ @@ -4975,7 +4968,12 @@ * rel is the local representation of the foreign table, attinmeta is * conversion data for the rel's tupdesc, and retrieved_attrs is an * integer list of the table column numbers present in the PGresult. + * fsstate is the ForeignScan plan node's execution state. * temp_context is a working context that can be reset after each tuple. + * + * Note: either rel or fsstate, but not both, can be NULL. rel is NULL + * if we're processing a remote join, while fsstate is NULL in a non-query + * context such as ANALYZE, or if we're processing a non-scan query node. */ static HeapTuple make_tuple_from_result_row(PGresult *res, @@ -5007,6 +5005,10 @@ */ oldcontext = MemoryContextSwitchTo(temp_context); + /* + * Get the tuple descriptor for the row. Use the rel's tupdesc if rel is + * provided, otherwise look to the scan node's ScanTupleSlot. + */ if (rel) tupdesc = RelationGetDescr(rel); else @@ -5026,8 +5028,8 @@ /* * Set up and install callback to report where conversion error occurs. */ - errpos.rel = rel; errpos.cur_attno = 0; + errpos.rel = rel; errpos.fsstate = fsstate; errcallback.callback = conversion_error_callback; errcallback.arg = (void *) &errpos; @@ -5146,71 +5148,102 @@ /* * Callback function which is called when error occurs during column value * conversion. Print names of column and relation. + * + * Note that this function mustn't do any catalog lookups, since we are in + * an already-failed transaction. Fortunately, we can get the needed info + * from the relation or the query's rangetable instead. */ static void conversion_error_callback(void *arg) { + ConversionLocation *errpos = (ConversionLocation *) arg; + Relation rel = errpos->rel; + ForeignScanState *fsstate = errpos->fsstate; const char *attname = NULL; const char *relname = NULL; bool is_wholerow = false; - ConversionLocation *errpos = (ConversionLocation *) arg; - if (errpos->rel) + /* + * If we're in a scan node, always use aliases from the rangetable, for + * consistency between the simple-relation and remote-join cases. Look at + * the relation's tupdesc only if we're not in a scan node. + */ + if (fsstate) { - /* error occurred in a scan against a foreign table */ - TupleDesc tupdesc = RelationGetDescr(errpos->rel); + /* ForeignScan case */ + ForeignScan *fsplan = castNode(ForeignScan, fsstate->ss.ps.plan); + int varno = 0; + AttrNumber colno = 0; - if (errpos->cur_attno > 0 && errpos->cur_attno <= tupdesc->natts) - attname = NameStr(tupdesc->attrs[errpos->cur_attno - 1]->attname); - else if (errpos->cur_attno == SelfItemPointerAttributeNumber) - attname = "ctid"; - else if (errpos->cur_attno == ObjectIdAttributeNumber) - attname = "oid"; + if (fsplan->scan.scanrelid > 0) + { + /* error occurred in a scan against a foreign table */ + varno = fsplan->scan.scanrelid; + colno = errpos->cur_attno; + } + else + { + /* error occurred in a scan against a foreign join */ + TargetEntry *tle; - relname = RelationGetRelationName(errpos->rel); - } - else - { - /* error occurred in a scan against a foreign join */ - ForeignScanState *fsstate = errpos->fsstate; - ForeignScan *fsplan = castNode(ForeignScan, fsstate->ss.ps.plan); - EState *estate = fsstate->ss.ps.state; - TargetEntry *tle; + tle = list_nth_node(TargetEntry, fsplan->fdw_scan_tlist, + errpos->cur_attno - 1); - tle = list_nth_node(TargetEntry, fsplan->fdw_scan_tlist, - errpos->cur_attno - 1); + /* + * Target list can have Vars and expressions. For Vars, we can + * get some information, however for expressions we can't. Thus + * for expressions, just show generic context message. + */ + if (IsA(tle->expr, Var)) + { + Var *var = (Var *) tle->expr; - /* - * Target list can have Vars and expressions. For Vars, we can get - * it's relation, however for expressions we can't. Thus for - * expressions, just show generic context message. - */ - if (IsA(tle->expr, Var)) + varno = var->varno; + colno = var->varattno; + } + } + + if (varno > 0) { - RangeTblEntry *rte; - Var *var = (Var *) tle->expr; + EState *estate = fsstate->ss.ps.state; + RangeTblEntry *rte = rt_fetch(varno, estate->es_range_table); - rte = rt_fetch(var->varno, estate->es_range_table); + relname = rte->eref->aliasname; - if (var->varattno == 0) + if (colno == 0) is_wholerow = true; - else - attname = get_relid_attribute_name(rte->relid, var->varattno); - - relname = get_rel_name(rte->relid); + else if (colno > 0 && colno <= list_length(rte->eref->colnames)) + attname = strVal(list_nth(rte->eref->colnames, colno - 1)); + else if (colno == SelfItemPointerAttributeNumber) + attname = "ctid"; + else if (colno == ObjectIdAttributeNumber) + attname = "oid"; } - else - errcontext("processing expression at position %d in select list", - errpos->cur_attno); } - - if (relname) + else if (rel) { - if (is_wholerow) - errcontext("whole-row reference to foreign table \"%s\"", relname); - else if (attname) - errcontext("column \"%s\" of foreign table \"%s\"", attname, relname); + /* Non-ForeignScan case (we should always have a rel here) */ + TupleDesc tupdesc = RelationGetDescr(rel); + + relname = RelationGetRelationName(rel); + if (errpos->cur_attno > 0 && errpos->cur_attno <= tupdesc->natts) + { + Form_pg_attribute attr = TupleDescAttr(tupdesc, + errpos->cur_attno - 1); + + attname = NameStr(attr->attname); + } + else if (errpos->cur_attno == SelfItemPointerAttributeNumber) + attname = "ctid"; } + + if (relname && is_wholerow) + errcontext("whole-row reference to foreign table \"%s\"", relname); + else if (relname && attname) + errcontext("column \"%s\" of foreign table \"%s\"", attname, relname); + else + errcontext("processing expression at position %d in select list", + errpos->cur_attno); } /* diff -Nru postgresql-10-10.17/contrib/postgres_fdw/sql/postgres_fdw.sql postgresql-10-10.19/contrib/postgres_fdw/sql/postgres_fdw.sql --- postgresql-10-10.17/contrib/postgres_fdw/sql/postgres_fdw.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/postgres_fdw/sql/postgres_fdw.sql 2021-11-08 22:05:38.000000000 +0000 @@ -1055,10 +1055,13 @@ -- conversion error -- =================================================================== ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE int; -SELECT * FROM ft1 WHERE c1 = 1; -- ERROR -SELECT ft1.c1, ft2.c2, ft1.c8 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR -SELECT ft1.c1, ft2.c2, ft1 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR +SELECT * FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8) WHERE x1 = 1; -- ERROR +SELECT ftx.x1, ft2.c2, ftx.x8 FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8), ft2 + WHERE ftx.x1 = ft2.c1 AND ftx.x1 = 1; -- ERROR +SELECT ftx.x1, ft2.c2, ftx FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8), ft2 + WHERE ftx.x1 = ft2.c1 AND ftx.x1 = 1; -- ERROR SELECT sum(c2), array_agg(c8) FROM ft1 GROUP BY c8; -- ERROR +ANALYZE ft1; -- ERROR ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE user_enum; -- =================================================================== diff -Nru postgresql-10-10.17/contrib/test_decoding/expected/concurrent_ddl_dml.out postgresql-10-10.19/contrib/test_decoding/expected/concurrent_ddl_dml.out --- postgresql-10-10.17/contrib/test_decoding/expected/concurrent_ddl_dml.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/expected/concurrent_ddl_dml.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,30 +2,38 @@ starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_float s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_float: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE float; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[double precision]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl1_float s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl1_float: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float; @@ -33,45 +41,57 @@ step s1_commit: COMMIT; step s2_alter_tbl1_float: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +---------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.pg_temp: INSERT: val1[integer]:1 val2[double precision]:1 -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_char s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +---------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[character varying]:'1' -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl1_char s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varying; @@ -79,24 +99,30 @@ step s1_commit: COMMIT; step s2_alter_tbl1_char: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.pg_temp: INSERT: val1[integer]:1 val2[character varying]:'1' -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s2_alter_tbl1_float s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -104,24 +130,30 @@ step s1_commit: COMMIT; step s2_alter_tbl1_float: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +---------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.pg_temp: INSERT: val1[integer]:1 val2[double precision]:1 -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s2_alter_tbl1_char s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -129,24 +161,30 @@ step s1_commit: COMMIT; step s2_alter_tbl1_char: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.pg_temp: INSERT: val1[integer]:1 val2[character varying]:'1' -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_float s1_insert_tbl2 s2_alter_tbl1_float s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_float: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE float; @@ -155,24 +193,30 @@ step s1_commit: COMMIT; step s2_alter_tbl1_float: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[double precision]:1 -COMMIT -BEGIN +data +---------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[double precision]:1 +COMMIT +BEGIN table public.pg_temp: INSERT: val1[integer]:1 val2[double precision]:1 -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_char s1_insert_tbl2 s2_alter_tbl1_char s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; @@ -181,24 +225,30 @@ step s1_commit: COMMIT; step s2_alter_tbl1_char: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[character varying]:'1' -COMMIT -BEGIN +data +------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[character varying]:'1' +COMMIT +BEGIN table public.pg_temp: INSERT: val1[integer]:1 val2[character varying]:'1' -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_char s1_begin s1_insert_tbl1 s2_alter_tbl2_text s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -206,21 +256,27 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data +data +---------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1' +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1' -COMMIT -?column? - -stop starting permutation: s1_init s2_alter_tbl2_char s1_begin s1_insert_tbl1 s2_alter_tbl2_text s1_insert_tbl2 s2_alter_tbl1_char s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -230,24 +286,30 @@ step s1_commit: COMMIT; step s2_alter_tbl1_char: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1' -COMMIT -BEGIN +data +------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1' +COMMIT +BEGIN table public.pg_temp: INSERT: val1[integer]:1 val2[character varying]:'1' -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_boolean s1_insert_tbl2 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_boolean: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE boolean; @@ -255,21 +317,27 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_boolean s1_insert_tbl2 s2_alter_tbl1_boolean s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_boolean: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE boolean; @@ -278,44 +346,56 @@ step s2_alter_tbl1_boolean: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE boolean; step s1_commit: COMMIT; step s2_alter_tbl1_boolean: <... completed> -error in steps s1_commit s2_alter_tbl1_boolean: ERROR: column "val2" cannot be cast automatically to type boolean +ERROR: column "val2" cannot be cast automatically to type boolean step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_add_int s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +-------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s1_commit s1_begin s2_alter_tbl2_add_int s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -325,45 +405,57 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +-------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_add_float s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_add_float: ALTER TABLE tbl2 ADD COLUMN val3 FLOAT; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +----------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[double precision]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s1_commit s1_begin s2_alter_tbl2_add_float s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -373,45 +465,57 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +----------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[double precision]:1 -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s2_alter_tbl2_add_char s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s1_begin s1_insert_tbl1 s1_insert_tbl2 s1_commit s1_begin s2_alter_tbl2_add_char s1_insert_tbl2_3col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); @@ -421,24 +525,30 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -BEGIN +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -?column? +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_int s1_begin s1_insert_tbl2_3col s2_alter_tbl2_drop_3rd_col s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_begin: BEGIN; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); @@ -446,20 +556,26 @@ step s1_commit: COMMIT; step s2_alter_tbl2_drop_3rd_col: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +-------------------------------------------------------------------------- +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_int s1_begin s1_insert_tbl2_3col s2_alter_tbl2_drop_3rd_col s1_insert_tbl2 s1_commit s1_insert_tbl2 s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_begin: BEGIN; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); @@ -469,24 +585,30 @@ step s2_alter_tbl2_drop_3rd_col: <... completed> step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 +data +----------------------------------------------------------------------------- +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:null -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_int s1_begin s1_insert_tbl2_3col s2_alter_tbl2_drop_3rd_col s1_commit s2_get_changes s2_alter_tbl2_add_text s1_begin s1_insert_tbl2_3col s2_alter_tbl2_3rd_char s1_insert_tbl2_3col s1_commit s2_get_changes s2_alter_tbl2_3rd_int s1_insert_tbl2_3col s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; step s1_begin: BEGIN; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); @@ -494,11 +616,13 @@ step s1_commit: COMMIT; step s2_alter_tbl2_drop_3rd_col: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +-------------------------------------------------------------------------- +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT +COMMIT +(3 rows) + step s2_alter_tbl2_add_text: ALTER TABLE tbl2 ADD COLUMN val3 TEXT; step s1_begin: BEGIN; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); @@ -507,34 +631,42 @@ step s1_commit: COMMIT; step s2_alter_tbl2_3rd_char: <... completed> step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +------------------------------------------------------------------------- +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -COMMIT +COMMIT +(4 rows) + step s2_alter_tbl2_3rd_int: ALTER TABLE tbl2 ALTER COLUMN val3 TYPE int USING val3::integer; step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +-------------------------------------------------------------------------------- +BEGIN table public.pg_temp: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:null -table public.pg_temp: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -table public.pg_temp: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 -COMMIT -?column? +table public.pg_temp: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 +table public.pg_temp: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1 +COMMIT +(8 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_char s1_begin s1_insert_tbl1 s1_insert_tbl2_3col s2_alter_tbl2_3rd_text s1_insert_tbl2_3col s1_commit s1_insert_tbl2_3col s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -545,25 +677,31 @@ step s2_alter_tbl2_3rd_text: <... completed> step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -COMMIT -?column? +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' +COMMIT +(8 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_text s1_begin s1_insert_tbl1 s1_insert_tbl2_3col s2_alter_tbl2_3rd_char s1_insert_tbl2_3col s1_commit s1_insert_tbl2_3col s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_text: ALTER TABLE tbl2 ADD COLUMN val3 TEXT; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -574,25 +712,31 @@ step s2_alter_tbl2_3rd_char: <... completed> step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -COMMIT -BEGIN +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' +COMMIT +BEGIN table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -?column? +COMMIT +(8 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_char s1_begin s1_insert_tbl1 s2_alter_tbl2_3rd_text s1_insert_tbl2_3col s1_commit s2_alter_tbl2_drop_3rd_col s1_insert_tbl2 s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -602,24 +746,30 @@ step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1' -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_text s1_begin s1_insert_tbl1 s2_alter_tbl2_3rd_char s1_insert_tbl2_3col s1_commit s2_alter_tbl2_drop_3rd_col s1_insert_tbl2 s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_text: ALTER TABLE tbl2 ADD COLUMN val3 TEXT; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -629,24 +779,30 @@ step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3; step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1); step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 +data +-------------------------------------------------------------------------------------- +BEGIN +table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1' -COMMIT -BEGIN -table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +BEGIN +table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 +COMMIT +(7 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s1_init s2_alter_tbl2_add_char s1_begin s1_insert_tbl1 s2_alter_tbl2_drop_3rd_col s1_insert_tbl1 s1_commit s2_get_changes step s1_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying; step s1_begin: BEGIN; step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); @@ -654,12 +810,16 @@ step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1); step s1_commit: COMMIT; step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +---------------------------------------------------------- +BEGIN table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop diff -Nru postgresql-10-10.17/contrib/test_decoding/expected/delayed_startup.out postgresql-10-10.19/contrib/test_decoding/expected/delayed_startup.out --- postgresql-10-10.17/contrib/test_decoding/expected/delayed_startup.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/expected/delayed_startup.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,33 +6,45 @@ step s2init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); step s1c: COMMIT; step s2init: <... completed> -?column? +?column? +-------- +init +(1 row) -init step s2start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data +data +---- +(0 rows) step s1b: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1w: INSERT INTO do_write DEFAULT VALUES; step s1c: COMMIT; step s2start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN +data +-------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:2 -COMMIT +COMMIT +(3 rows) + step s1b: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1w: INSERT INTO do_write DEFAULT VALUES; step s2start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data +data +---- +(0 rows) step s1c: COMMIT; step s2start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN +data +-------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:3 -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop diff -Nru postgresql-10-10.17/contrib/test_decoding/expected/mxact.out postgresql-10-10.19/contrib/test_decoding/expected/mxact.out --- postgresql-10-10.17/contrib/test_decoding/expected/mxact.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/expected/mxact.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,65 +2,89 @@ starting permutation: s0init s0start s1begin s1sharepgclass s2begin s2sharepgclass s0w s0start s2commit s1commit step s0init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s0start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data +data +---- +(0 rows) step s1begin: BEGIN; step s1sharepgclass: SELECT count(*) > 1 FROM (SELECT * FROM pg_class FOR SHARE) s; -?column? +?column? +-------- +t +(1 row) -t step s2begin: BEGIN; step s2sharepgclass: SELECT count(*) > 1 FROM (SELECT * FROM pg_class FOR SHARE) s; -?column? +?column? +-------- +t +(1 row) -t step s0w: INSERT INTO do_write DEFAULT VALUES; step s0start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN +data +-------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:1 -COMMIT +COMMIT +(3 rows) + step s2commit: COMMIT; step s1commit: COMMIT; -?column? +?column? +-------- +stop +(1 row) -stop starting permutation: s0init s0start s1begin s1keysharepgclass s2begin s2keysharepgclass s0alter s0w s0start s2commit s1commit step s0init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -?column? +?column? +-------- +init +(1 row) -init step s0start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data +data +---- +(0 rows) step s1begin: BEGIN; step s1keysharepgclass: SELECT count(*) > 1 FROM (SELECT * FROM pg_class FOR KEY SHARE) s; -?column? +?column? +-------- +t +(1 row) -t step s2begin: BEGIN; step s2keysharepgclass: SELECT count(*) > 1 FROM (SELECT * FROM pg_class FOR KEY SHARE) s; -?column? +?column? +-------- +t +(1 row) -t step s0alter: ALTER TABLE do_write ADD column ts timestamptz; step s0w: INSERT INTO do_write DEFAULT VALUES; step s0start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN -COMMIT -BEGIN +data +------------------------------------------------------------------------------ +BEGIN +COMMIT +BEGIN table public.do_write: INSERT: id[integer]:1 ts[timestamp with time zone]:null -COMMIT +COMMIT +(5 rows) + step s2commit: COMMIT; step s1commit: COMMIT; -?column? +?column? +-------- +stop +(1 row) -stop diff -Nru postgresql-10-10.17/contrib/test_decoding/expected/oldest_xmin.out postgresql-10-10.19/contrib/test_decoding/expected/oldest_xmin.out --- postgresql-10-10.17/contrib/test_decoding/expected/oldest_xmin.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/expected/oldest_xmin.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,28 +3,38 @@ starting permutation: s0_begin s0_getxid s1_begin s1_insert s0_alter s0_commit s0_checkpoint s0_get_changes s0_get_changes s1_commit s0_vacuum s0_get_changes step s0_begin: BEGIN; step s0_getxid: SELECT txid_current() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s1_begin: BEGIN; step s1_insert: INSERT INTO harvest VALUES ((1, 2, 3)); step s0_alter: ALTER TYPE basket DROP ATTRIBUTE mangos; step s0_commit: COMMIT; step s0_checkpoint: CHECKPOINT; step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data +data +---- +(0 rows) step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data +data +---- +(0 rows) step s1_commit: COMMIT; step s0_vacuum: VACUUM pg_attribute; step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +------------------------------------------------------ +BEGIN table public.harvest: INSERT: fruits[basket]:'(1,2,3)' -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop diff -Nru postgresql-10-10.17/contrib/test_decoding/expected/ondisk_startup.out postgresql-10-10.19/contrib/test_decoding/expected/ondisk_startup.out --- postgresql-10-10.17/contrib/test_decoding/expected/ondisk_startup.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/expected/ondisk_startup.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,50 +3,64 @@ starting permutation: s2b s2txid s1init s3b s3txid s2alter s2c s2b s2txid s3c s2c s1insert s1checkpoint s1start s1insert s1alter s1insert s1start step s2b: BEGIN; step s2txid: SELECT txid_current() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s1init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); step s3b: BEGIN; step s3txid: SELECT txid_current() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s2alter: ALTER TABLE do_write ADD COLUMN addedbys2 int; step s2c: COMMIT; step s2b: BEGIN; step s2txid: SELECT txid_current() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s3c: COMMIT; step s1init: <... completed> -?column? +?column? +-------- +init +(1 row) -init step s2c: COMMIT; step s1insert: INSERT INTO do_write DEFAULT VALUES; step s1checkpoint: CHECKPOINT; step s1start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN +data +-------------------------------------------------------------------- +BEGIN table public.do_write: INSERT: id[integer]:1 addedbys2[integer]:null -COMMIT +COMMIT +(3 rows) + step s1insert: INSERT INTO do_write DEFAULT VALUES; step s1alter: ALTER TABLE do_write ADD COLUMN addedbys1 int; step s1insert: INSERT INTO do_write DEFAULT VALUES; step s1start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); -data - -BEGIN -table public.do_write: INSERT: id[integer]:2 addedbys2[integer]:null -COMMIT -BEGIN -COMMIT -BEGIN +data +-------------------------------------------------------------------------------------------- +BEGIN +table public.do_write: INSERT: id[integer]:2 addedbys2[integer]:null +COMMIT +BEGIN +COMMIT +BEGIN table public.do_write: INSERT: id[integer]:3 addedbys2[integer]:null addedbys1[integer]:null -COMMIT -?column? +COMMIT +(8 rows) + +?column? +-------- +stop +(1 row) -stop diff -Nru postgresql-10-10.17/contrib/test_decoding/expected/snapshot_transfer.out postgresql-10-10.19/contrib/test_decoding/expected/snapshot_transfer.out --- postgresql-10-10.17/contrib/test_decoding/expected/snapshot_transfer.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/expected/snapshot_transfer.out 2021-11-08 22:05:38.000000000 +0000 @@ -4,32 +4,40 @@ step s0_begin: BEGIN; step s0_begin_sub0: SAVEPOINT s0; step s0_log_assignment: SELECT txid_current() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s0_sub_get_base_snap: INSERT INTO dummy VALUES (0); step s1_produce_new_snap: ALTER TABLE harvest ADD COLUMN mangos int; step s0_insert: INSERT INTO harvest VALUES (1, 2, 3); step s0_end_sub0: RELEASE SAVEPOINT s0; step s0_commit: COMMIT; step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.dummy: INSERT: i[integer]:0 +data +---------------------------------------------------------------------------------- +BEGIN +table public.dummy: INSERT: i[integer]:0 table public.harvest: INSERT: apples[integer]:1 pears[integer]:2 mangos[integer]:3 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop starting permutation: s0_begin s0_begin_sub0 s0_log_assignment s0_begin_sub1 s0_sub_get_base_snap s1_produce_new_snap s0_insert s0_end_sub1 s0_end_sub0 s0_commit s0_get_changes step s0_begin: BEGIN; step s0_begin_sub0: SAVEPOINT s0; step s0_log_assignment: SELECT txid_current() IS NULL; -?column? +?column? +-------- +f +(1 row) -f step s0_begin_sub1: SAVEPOINT s1; step s0_sub_get_base_snap: INSERT INTO dummy VALUES (0); step s1_produce_new_snap: ALTER TABLE harvest ADD COLUMN mangos int; @@ -38,12 +46,16 @@ step s0_end_sub0: RELEASE SAVEPOINT s0; step s0_commit: COMMIT; step s0_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN -table public.dummy: INSERT: i[integer]:0 +data +---------------------------------------------------------------------------------- +BEGIN +table public.dummy: INSERT: i[integer]:0 table public.harvest: INSERT: apples[integer]:1 pears[integer]:2 mangos[integer]:3 -COMMIT -?column? +COMMIT +(4 rows) + +?column? +-------- +stop +(1 row) -stop diff -Nru postgresql-10-10.17/contrib/test_decoding/expected/subxact_without_top.out postgresql-10-10.19/contrib/test_decoding/expected/subxact_without_top.out --- postgresql-10-10.17/contrib/test_decoding/expected/subxact_without_top.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/expected/subxact_without_top.out 2021-11-08 22:05:38.000000000 +0000 @@ -15,25 +15,35 @@ step s1_begin: BEGIN; step s1_dml: INSERT INTO harvest VALUES (43); step s0_many_subxacts: select subxacts(); -subxacts +subxacts +-------- + +(1 row) - step s0_commit: COMMIT; step s2_checkpoint: CHECKPOINT; step s2_get_changes_suppress_output: SELECT null n FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1') GROUP BY n; -n +n +- + +(1 row) - step s2_get_changes_suppress_output: SELECT null n FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1') GROUP BY n; -n +n +- +(0 rows) step s1_commit: COMMIT; step s2_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); -data - -BEGIN +data +------------------------------------------------ +BEGIN table public.harvest: INSERT: apples[integer]:43 -COMMIT -?column? +COMMIT +(3 rows) + +?column? +-------- +stop +(1 row) -stop diff -Nru postgresql-10-10.17/contrib/test_decoding/specs/concurrent_ddl_dml.spec postgresql-10-10.19/contrib/test_decoding/specs/concurrent_ddl_dml.spec --- postgresql-10-10.17/contrib/test_decoding/specs/concurrent_ddl_dml.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/specs/concurrent_ddl_dml.spec 2021-11-08 22:05:38.000000000 +0000 @@ -19,7 +19,6 @@ step "s1_init" { SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); } step "s1_begin" { BEGIN; } step "s1_insert_tbl1" { INSERT INTO tbl1 (val1, val2) VALUES (1, 1); } -step "s1_insert_tbl1_3col" { INSERT INTO tbl1 (val1, val2, val3) VALUES (1, 1, 1); } step "s1_insert_tbl2" { INSERT INTO tbl2 (val1, val2) VALUES (1, 1); } step "s1_insert_tbl2_3col" { INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1); } step "s1_commit" { COMMIT; } @@ -29,15 +28,8 @@ step "s2_alter_tbl1_float" { ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float; } step "s2_alter_tbl1_char" { ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varying; } -step "s2_alter_tbl1_text" { ALTER TABLE tbl1 ALTER COLUMN val2 TYPE text; } step "s2_alter_tbl1_boolean" { ALTER TABLE tbl1 ALTER COLUMN val2 TYPE boolean; } -step "s2_alter_tbl1_add_int" { ALTER TABLE tbl1 ADD COLUMN val3 INTEGER; } -step "s2_alter_tbl1_add_float" { ALTER TABLE tbl1 ADD COLUMN val3 FLOAT; } -step "s2_alter_tbl1_add_char" { ALTER TABLE tbl1 ADD COLUMN val3 character varying; } -step "s2_alter_tbl1_add_boolean" { ALTER TABLE tbl1 ADD COLUMN val3 BOOLEAN; } -step "s2_alter_tbl1_add_text" { ALTER TABLE tbl1 ADD COLUMN val3 TEXT; } - step "s2_alter_tbl2_float" { ALTER TABLE tbl2 ALTER COLUMN val2 TYPE float; } step "s2_alter_tbl2_char" { ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying; } step "s2_alter_tbl2_text" { ALTER TABLE tbl2 ALTER COLUMN val2 TYPE text; } @@ -46,7 +38,6 @@ step "s2_alter_tbl2_add_int" { ALTER TABLE tbl2 ADD COLUMN val3 INTEGER; } step "s2_alter_tbl2_add_float" { ALTER TABLE tbl2 ADD COLUMN val3 FLOAT; } step "s2_alter_tbl2_add_char" { ALTER TABLE tbl2 ADD COLUMN val3 character varying; } -step "s2_alter_tbl2_add_boolean" { ALTER TABLE tbl2 ADD COLUMN val3 BOOLEAN; } step "s2_alter_tbl2_add_text" { ALTER TABLE tbl2 ADD COLUMN val3 TEXT; } step "s2_alter_tbl2_drop_3rd_col" { ALTER TABLE tbl2 DROP COLUMN val3; } step "s2_alter_tbl2_3rd_char" { ALTER TABLE tbl2 ALTER COLUMN val3 TYPE character varying; } diff -Nru postgresql-10-10.17/contrib/test_decoding/specs/snapshot_transfer.spec postgresql-10-10.19/contrib/test_decoding/specs/snapshot_transfer.spec --- postgresql-10-10.17/contrib/test_decoding/specs/snapshot_transfer.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/contrib/test_decoding/specs/snapshot_transfer.spec 2021-11-08 22:05:38.000000000 +0000 @@ -25,7 +25,6 @@ step "s0_insert" { INSERT INTO harvest VALUES (1, 2, 3); } step "s0_end_sub0" { RELEASE SAVEPOINT s0; } step "s0_end_sub1" { RELEASE SAVEPOINT s1; } -step "s0_insert2" { INSERT INTO harvest VALUES (1, 2, 3, 4); } step "s0_commit" { COMMIT; } step "s0_get_changes" { SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); } diff -Nru postgresql-10-10.17/debian/changelog postgresql-10-10.19/debian/changelog --- postgresql-10-10.17/debian/changelog 2021-07-21 14:24:58.000000000 +0000 +++ postgresql-10-10.19/debian/changelog 2022-04-10 21:23:40.000000000 +0000 @@ -1,9 +1,61 @@ -postgresql-10 (10.17-0ubuntu0.18.04.1~ubuntu16.04.1) xenial; urgency=medium +postgresql-10 (10.19-0ubuntu0.18.04.1~ubuntu16.04.1) xenial; urgency=medium * Backport to xenial: - Use old-style PIE config in debian/rules. - -- Colin Watson Wed, 21 Jul 2021 15:24:58 +0100 + -- Colin Watson Sun, 10 Apr 2022 22:23:40 +0100 + +postgresql-10 (10.19-0ubuntu0.18.04.1) bionic-security; urgency=medium + + * New upstream version (LP: #1950268). + + + Make the server reject extraneous data after an SSL or GSS + encryption handshake + CVE-2021-23214 + + + Make libpq reject extraneous data after an SSL or GSS + encryption handshake + CVE-2021-23222 + + + A dump/restore is not required for those running 10.X. + + + However, note that installations using physical replication should + update standby servers before the primary server, details in the + release notes linked below. + + + Also, several bugs have been found that may have resulted in corrupted + indexes, explained in detail in the release notes linked below. If any + of those cases apply to you, it's recommended to reindex + possibly-affected indexes after updating. + + + Also, if you are upgrading from a version earlier than 10.16, + see those release notes as well please. + + + Details about these and many further changes can be found at: + https://www.postgresql.org/docs/10/release-10-19.html + + -- Christian Ehrhardt Tue, 09 Nov 2021 09:39:50 +0100 + +postgresql-10 (10.18-0ubuntu0.18.04.1) bionic-security; urgency=medium + + * New upstream version (LP: #1939396). + + + Disallow SSL renegotiation more completely (Michael Paquier) + + SSL renegotiation has been disabled for some time, but the server + would still cooperate with a client-initiated renegotiation request. + A maliciously crafted renegotiation request could result in a server + crash (see OpenSSL issue CVE-2021-3449). Disable the feature + altogether on OpenSSL versions that permit doing so, which are + 1.1.0h and newer. + (CVE-2021-3449) + + + Details about these and many further changes can be found at: + https://www.postgresql.org/docs/10/release-10-18.html + + + d/p/reproducible-bki: refreshed for 10.18 + + -- Christian Ehrhardt Tue, 10 Aug 2021 14:18:35 +0200 postgresql-10 (10.17-0ubuntu0.18.04.1) bionic-security; urgency=medium diff -Nru postgresql-10-10.17/debian/patches/reproducible-bki postgresql-10-10.19/debian/patches/reproducible-bki --- postgresql-10-10.17/debian/patches/reproducible-bki 2020-02-13 13:57:16.000000000 +0000 +++ postgresql-10-10.19/debian/patches/reproducible-bki 2021-08-10 12:26:15.000000000 +0000 @@ -31,11 +31,9 @@ Discussion: https://postgr.es/m/20171215102223.GB31812@msg.df7cb.de -diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl -index 256a9c9c93..e4a0b8b2c7 100644 --- a/src/backend/catalog/genbki.pl +++ b/src/backend/catalog/genbki.pl -@@ -340,7 +340,7 @@ print $schemapg < EUC_JIS_2004 table -diff --git a/src/backend/utils/mb/Unicode/UCS_to_EUC_JP.pl b/src/backend/utils/mb/Unicode/UCS_to_EUC_JP.pl -index 5db663f362..77ce273171 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_EUC_JP.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_EUC_JP.pl @@ -14,7 +14,7 @@ @@ -130,8 +118,6 @@ # Load JIS0212.TXT my $jis0212 = &read_source("JIS0212.TXT"); -diff --git a/src/backend/utils/mb/Unicode/UCS_to_EUC_KR.pl b/src/backend/utils/mb/Unicode/UCS_to_EUC_KR.pl -index f0d978d3df..8e0126c7f5 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_EUC_KR.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_EUC_KR.pl @@ -19,7 +19,7 @@ @@ -143,8 +129,6 @@ # Load the source file. -diff --git a/src/backend/utils/mb/Unicode/UCS_to_EUC_TW.pl b/src/backend/utils/mb/Unicode/UCS_to_EUC_TW.pl -index 0bfcbd5bb2..61013e356a 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_EUC_TW.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_EUC_TW.pl @@ -20,7 +20,7 @@ @@ -156,8 +140,6 @@ my $mapping = &read_source("CNS11643.TXT"); -diff --git a/src/backend/utils/mb/Unicode/UCS_to_GB18030.pl b/src/backend/utils/mb/Unicode/UCS_to_GB18030.pl -index 4469cc7c9d..e9f816cfa8 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_GB18030.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_GB18030.pl @@ -16,7 +16,7 @@ @@ -169,8 +151,6 @@ # Read the input -diff --git a/src/backend/utils/mb/Unicode/UCS_to_JOHAB.pl b/src/backend/utils/mb/Unicode/UCS_to_JOHAB.pl -index 7c6f526f0d..be10d5200e 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_JOHAB.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_JOHAB.pl @@ -18,7 +18,7 @@ @@ -182,8 +162,6 @@ # Load the source file. -diff --git a/src/backend/utils/mb/Unicode/UCS_to_SHIFT_JIS_2004.pl b/src/backend/utils/mb/Unicode/UCS_to_SHIFT_JIS_2004.pl -index d1b36c0d77..98a6ee7c7b 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_SHIFT_JIS_2004.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_SHIFT_JIS_2004.pl @@ -12,7 +12,7 @@ use convutils; @@ -195,8 +173,6 @@ my $in_file = "sjis-0213-2004-std.txt"; -diff --git a/src/backend/utils/mb/Unicode/UCS_to_SJIS.pl b/src/backend/utils/mb/Unicode/UCS_to_SJIS.pl -index 746096449c..cc1edcc4aa 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_SJIS.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_SJIS.pl @@ -13,7 +13,7 @@ @@ -208,8 +184,6 @@ my $mapping = read_source("CP932.TXT"); -diff --git a/src/backend/utils/mb/Unicode/UCS_to_UHC.pl b/src/backend/utils/mb/Unicode/UCS_to_UHC.pl -index 8d99ca302b..640a2ec2f7 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_UHC.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_UHC.pl @@ -16,7 +16,7 @@ @@ -221,8 +195,6 @@ # Read the input -diff --git a/src/backend/utils/mb/Unicode/UCS_to_most.pl b/src/backend/utils/mb/Unicode/UCS_to_most.pl -index 1c3922e2ff..2d69748a93 100755 --- a/src/backend/utils/mb/Unicode/UCS_to_most.pl +++ b/src/backend/utils/mb/Unicode/UCS_to_most.pl @@ -18,7 +18,7 @@ @@ -234,8 +206,6 @@ my %filename = ( 'WIN866' => 'CP866.TXT', -diff --git a/src/bin/psql/create_help.pl b/src/bin/psql/create_help.pl -index cedb767b27..9fa1855878 100644 --- a/src/bin/psql/create_help.pl +++ b/src/bin/psql/create_help.pl @@ -51,8 +51,7 @@ print $hfile_handle "/* @@ -267,8 +237,6 @@ $cmdsynopsis =~ s/%/%%/g; while ($cmdsynopsis =~ m!<(\w+)[^>]*>(.+?)]*>!) -diff --git a/src/pl/plperl/text2macro.pl b/src/pl/plperl/text2macro.pl -index e681fca21a..27c6ef7e42 100644 --- a/src/pl/plperl/text2macro.pl +++ b/src/pl/plperl/text2macro.pl @@ -40,7 +40,7 @@ die "No text files specified" @@ -280,13 +248,11 @@ */ }; -diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm -index 60190400de..72826d5bad 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm -@@ -66,7 +66,7 @@ BEGIN - delete $ENV{PGPORT}; - delete $ENV{PGHOST}; +@@ -83,7 +83,7 @@ BEGIN + ); + delete @ENV{@envkeys}; - $ENV{PGAPPNAME} = $0; + $ENV{PGAPPNAME} = basename($0); diff -Nru postgresql-10-10.17/doc/bug.template postgresql-10-10.19/doc/bug.template --- postgresql-10-10.17/doc/bug.template 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/bug.template 2021-11-08 22:05:38.000000000 +0000 @@ -27,7 +27,7 @@ Operating System (example: Linux 2.4.18) : - PostgreSQL version (example: PostgreSQL 10.17): PostgreSQL 10.17 + PostgreSQL version (example: PostgreSQL 10.19): PostgreSQL 10.19 Compiler used (example: gcc 3.3.5) : diff -Nru postgresql-10-10.17/doc/src/sgml/advanced.sgml postgresql-10-10.19/doc/src/sgml/advanced.sgml --- postgresql-10-10.17/doc/src/sgml/advanced.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/advanced.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -46,7 +46,7 @@ CREATE VIEW myview AS - SELECT city, temp_lo, temp_hi, prcp, date, location + SELECT name, temp_lo, temp_hi, prcp, date, location FROM weather, cities WHERE city = name; @@ -101,12 +101,12 @@ CREATE TABLE cities ( - city varchar(80) primary key, + name varchar(80) primary key, location point ); CREATE TABLE weather ( - city varchar(80) references cities(city), + city varchar(80) references cities(name), temp_lo int, temp_hi int, prcp real, diff -Nru postgresql-10-10.17/doc/src/sgml/backup.sgml postgresql-10-10.19/doc/src/sgml/backup.sgml --- postgresql-10-10.17/doc/src/sgml/backup.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/backup.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -273,10 +273,10 @@ The split command allows you to split the output into smaller files that are acceptable in size to the underlying file system. For example, to - make chunks of 1 megabyte: + make 2 gigabyte chunks: -pg_dump dbname | split -b 1m - filename +pg_dump dbname | split -b 2G - filename Reload with: @@ -284,6 +284,15 @@ cat filename* | psql dbname + + If using GNU split, it is possible to + use it and gzip together: + + +pg_dump dbname | split -b 2G --filter='gzip > $FILE.gz' + + + It can be restored using zcat. diff -Nru postgresql-10-10.17/doc/src/sgml/bgworker.sgml postgresql-10-10.19/doc/src/sgml/bgworker.sgml --- postgresql-10-10.17/doc/src/sgml/bgworker.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/bgworker.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -123,8 +123,8 @@ bgw_restart_time is the interval, in seconds, that - postgres should wait before restarting the process, in - case it crashes. It can be any positive value, + postgres should wait before restarting the process in + the event that it crashes. It can be any positive value, or BGW_NEVER_RESTART, indicating not to restart the process in case of a crash. diff -Nru postgresql-10-10.17/doc/src/sgml/catalogs.sgml postgresql-10-10.19/doc/src/sgml/catalogs.sgml --- postgresql-10-10.17/doc/src/sgml/catalogs.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/catalogs.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -4596,7 +4596,7 @@ - Unused column contain zeroes. For example, oprleft + Unused columns contain zeroes. For example, oprleft is zero for a prefix operator. diff -Nru postgresql-10-10.17/doc/src/sgml/charset.sgml postgresql-10-10.19/doc/src/sgml/charset.sgml --- postgresql-10-10.17/doc/src/sgml/charset.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/charset.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -744,8 +744,8 @@ set that is preloaded by initdb. Users are encouraged to define their own collation objects that make use of these facilities to suit the sorting behavior to their requirements. - See - and for + See + and for information on ICU locale naming. The set of acceptable names and attributes depends on the particular ICU version. @@ -837,12 +837,8 @@ and BCP 47 for details. The list of possible collation types (co subtag) can be found in - the CLDR + the CLDR repository. - The ICU Locale - Explorer can be used to check the details of a particular locale - definition. The examples using the k* subtags require - at least ICU version 54. diff -Nru postgresql-10-10.17/doc/src/sgml/config.sgml postgresql-10-10.19/doc/src/sgml/config.sgml --- postgresql-10-10.17/doc/src/sgml/config.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/config.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -1529,6 +1529,11 @@ too high. It may be useful to control for this by separately setting . + + Note that for the collection of dead tuple identifiers, + VACUUM is only able to utilize up to a maximum of + 1GB of memory. + @@ -1584,6 +1589,16 @@ the value of should be used instead. The setting has no effect on the behavior of VACUUM when run in other contexts. + This parameter can only be set in the + postgresql.conf file or on the server command + line. + + + For the collection of dead tuple identifiers, autovacuum is only able + to utilize up to a maximum of 1GB of memory, so + setting autovacuum_work_mem to a value higher than + that has no effect on the number of dead tuples that autovacuum can + collect while scanning a table. @@ -3598,7 +3613,8 @@ max_worker_processes. - The default value is 4. + The default value is 4. This parameter can only be set at server + start. @@ -3623,7 +3639,9 @@ max_logical_replication_workers. - The default value is 2. + The default value is 2. This parameter can only be set in the + postgresql.conf file or on the server command + line. @@ -6599,6 +6617,66 @@ + + transaction_isolation (enum) + + transaction isolation level + + + transaction_isolation configuration parameter + + + + + This parameter reflects the current transaction's isolation level. + At the beginning of each transaction, it is set to the current value + of . + Any subsequent attempt to change it is equivalent to a command. + + + + + + transaction_read_only (boolean) + + read-only transaction + + + transaction_read_only configuration parameter + + + + + This parameter reflects the current transaction's read-only status. + At the beginning of each transaction, it is set to the current value + of . + Any subsequent attempt to change it is equivalent to a command. + + + + + + transaction_deferrable (boolean) + + deferrable transaction + + + transaction_deferrable configuration parameter + + + + + This parameter reflects the current transaction's deferrability status. + At the beginning of each transaction, it is set to the current value + of . + Any subsequent attempt to change it is equivalent to a command. + + + + session_replication_role (enum) @@ -7894,6 +7972,11 @@ useful to disable the restart so that the clusterware can gain control and take any actions it deems appropriate. + + + This parameter can only be set in the postgresql.conf + file or on the server command line. + diff -Nru postgresql-10-10.17/doc/src/sgml/datatype.sgml postgresql-10-10.19/doc/src/sgml/datatype.sgml --- postgresql-10-10.17/doc/src/sgml/datatype.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/datatype.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -1932,19 +1932,27 @@ 04:05:06.789-8 - ISO 8601 + ISO 8601, with time zone as UTC offset 04:05:06-08:00 - ISO 8601 + ISO 8601, with time zone as UTC offset 04:05-08:00 - ISO 8601 + ISO 8601, with time zone as UTC offset 040506-08 - ISO 8601 + ISO 8601, with time zone as UTC offset + + + 040506+0730 + ISO 8601, with fractional-hour time zone as UTC offset + + + 040506+07:30:00 + UTC offset specified to seconds (not allowed in ISO 8601) 04:05:06 PST @@ -1981,16 +1989,20 @@ POSIX-style time zone specification + -8:00:00 + UTC offset for PST + + -8:00 - ISO-8601 offset for PST + UTC offset for PST (ISO 8601 extended format) -800 - ISO-8601 offset for PST + UTC offset for PST (ISO 8601 basic format) -8 - ISO-8601 offset for PST + UTC offset for PST (ISO 8601 basic format) zulu @@ -1998,7 +2010,7 @@ z - Short form of zulu + Short form of zulu (also in ISO 8601) @@ -2337,6 +2349,24 @@ + In the ISO style, the time zone is always shown as + a signed numeric offset from UTC, with positive sign used for zones + east of Greenwich. The offset will be shown + as hh (hours only) if it is an integral + number of hours, else + as hh:mm if it + is an integral number of minutes, else as + hh:mm:ss. + (The third case is not possible with any modern time zone standard, + but it can appear when working with timestamps that predate the + adoption of standardized time zones.) + In the other date styles, the time zone is shown as an alphabetic + abbreviation if one is in common use in the current zone. Otherwise + it appears as a signed numeric offset in ISO 8601 basic format + (hh or hhmm). + + + The date/time style can be selected by the user using the SET datestyle command, the parameter in the @@ -2669,15 +2699,18 @@ - In the verbose input format, and in some fields of the more compact - input formats, field values can have fractional parts; for example - '1.5 week' or '01:02:03.45'. Such input is - converted to the appropriate number of months, days, and seconds - for storage. When this would result in a fractional number of - months or days, the fraction is added to the lower-order fields - using the conversion factors 1 month = 30 days and 1 day = 24 hours. - For example, '1.5 month' becomes 1 month and 15 days. - Only seconds will ever be shown as fractional on output. + Field values can have fractional parts: for example, '1.5 + weeks' or '01:02:03.45'. However, + because interval internally stores only three integer units (months, + days, microseconds), fractional units must be spilled to smaller + units. Fractional parts of units greater than months are truncated to + be an integer number of months, e.g. '1.5 years' + becomes '1 year 6 mons'. Fractional parts of + weeks and days are computed to be an integer number of days and + microseconds, assuming 30 days per month and 24 hours per day, e.g., + '1.75 months' becomes 1 mon 22 days + 12:00:00. Only seconds will ever be shown as fractional + on output. @@ -2721,10 +2754,10 @@ Internally interval values are stored as months, days, - and seconds. This is done because the number of days in a month + and microseconds. This is done because the number of days in a month varies, and a day can have 23 or 25 hours if a daylight savings time adjustment is involved. The months and days fields are integers - while the seconds field can store fractions. Because intervals are + while the microseconds field can store fractional seconds. Because intervals are usually created from constant strings or timestamp subtraction, this storage method works well in most cases, but can cause unexpected results: diff -Nru postgresql-10-10.17/doc/src/sgml/ddl.sgml postgresql-10-10.19/doc/src/sgml/ddl.sgml --- postgresql-10-10.17/doc/src/sgml/ddl.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ddl.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -3090,7 +3090,8 @@ That means partitioned tables and partitions do not participate in inheritance with regular tables. Since a partition hierarchy consisting of the partitioned table and its partitions is still an inheritance - hierarchy, all the normal rules of inheritance apply as described in + hierarchy, tableoid and all the normal rules + of inheritance apply as described in with some exceptions, most notably: diff -Nru postgresql-10-10.17/doc/src/sgml/ecpg.sgml postgresql-10-10.19/doc/src/sgml/ecpg.sgml --- postgresql-10-10.17/doc/src/sgml/ecpg.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ecpg.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -8607,7 +8607,7 @@ Note that the ECPG implementation differs from the Informix implementation. Informix limits an integer to the range from -32767 to 32767, while the limits in the ECPG implementation depend on the - architecture (-INT_MAX .. INT_MAX). + architecture (INT_MIN .. INT_MAX). diff -Nru postgresql-10-10.17/doc/src/sgml/filelist.sgml postgresql-10-10.19/doc/src/sgml/filelist.sgml --- postgresql-10-10.17/doc/src/sgml/filelist.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/filelist.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -87,6 +87,7 @@ + diff -Nru postgresql-10-10.17/doc/src/sgml/func.sgml postgresql-10-10.19/doc/src/sgml/func.sgml --- postgresql-10-10.17/doc/src/sgml/func.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/func.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -20034,6 +20034,7 @@ be pg_catalog, but that is not a requirement; the collations could be installed into some other schema as well. The function returns the number of new collation objects it created. + Use of this function is restricted to superusers. diff -Nru postgresql-10-10.17/doc/src/sgml/hash.sgml postgresql-10-10.19/doc/src/sgml/hash.sgml --- postgresql-10-10.17/doc/src/sgml/hash.sgml 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/hash.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,162 @@ + + + +Hash Indexes + + + index + Hash + + + + Overview + + + PostgreSQL + includes an implementation of persistent on-disk hash indexes, + which are fully crash recoverable. Any data type can be indexed by a + hash index, including data types that do not have a well-defined linear + ordering. Hash indexes store only the hash value of the data being + indexed, thus there are no restrictions on the size of the data column + being indexed. + + + + Hash indexes support only single-column indexes and do not allow + uniqueness checking. + + + + Hash indexes support only the = operator, + so WHERE clauses that specify range operations will not be able to take + advantage of hash indexes. + + + + Each hash index tuple stores just the 4-byte hash value, not the actual + column value. As a result, hash indexes may be much smaller than B-trees + when indexing longer data items such as UUIDs, URLs, etc. The absence of + the column value also makes all hash index scans lossy. Hash indexes may + take part in bitmap index scans and backward scans. + + + + Hash indexes are best optimized for SELECT and UPDATE-heavy workloads + that use equality scans on larger tables. In a B-tree index, searches must + descend through the tree until the leaf page is found. In tables with + millions of rows, this descent can increase access time to data. The + equivalent of a leaf page in a hash index is referred to as a bucket page. In + contrast, a hash index allows accessing the bucket pages directly, + thereby potentially reducing index access time in larger tables. This + reduction in "logical I/O" becomes even more pronounced on indexes/data + larger than shared_buffers/RAM. + + + + Hash indexes have been designed to cope with uneven distributions of + hash values. Direct access to the bucket pages works well if the hash + values are evenly distributed. When inserts mean that the bucket page + becomes full, additional overflow pages are chained to that specific + bucket page, locally expanding the storage for index tuples that match + that hash value. When scanning a hash bucket during queries, we need to + scan through all of the overflow pages. Thus an unbalanced hash index + might actually be worse than a B-tree in terms of number of block + accesses required, for some data. + + + + As a result of the overflow cases, we can say that hash indexes are + most suitable for unique, nearly unique data or data with a low number + of rows per hash bucket. + One possible way to avoid problems is to exclude highly non-unique + values from the index using a partial index condition, but this may + not be suitable in many cases. + + + + Like B-Trees, hash indexes perform simple index tuple deletion. This + is a deferred maintenance operation that deletes index tuples that are + known to be safe to delete (those whose item identifier's LP_DEAD bit + is already set). If an insert finds no space is available on a page we + try to avoid creating a new overflow page by attempting to remove dead + index tuples. Removal cannot occur if the page is pinned at that time. + Deletion of dead index pointers also occurs during VACUUM. + + + + If it can, VACUUM will also try to squeeze the index tuples onto as + few overflow pages as possible, minimizing the overflow chain. If an + overflow page becomes empty, overflow pages can be recycled for reuse + in other buckets, though we never return them to the operating system. + There is currently no provision to shrink a hash index, other than by + rebuilding it with REINDEX. + There is no provision for reducing the number of buckets, either. + + + + Hash indexes may expand the number of bucket pages as the number of + rows indexed grows. The hash key-to-bucket-number mapping is chosen so that + the index can be incrementally expanded. When a new bucket is to be added to + the index, exactly one existing bucket will need to be "split", with some of + its tuples being transferred to the new bucket according to the updated + key-to-bucket-number mapping. + + + + The expansion occurs in the foreground, which could increase execution + time for user inserts. Thus, hash indexes may not be suitable for tables + with rapidly increasing number of rows. + + + + + + Implementation + + + There are four kinds of pages in a hash index: the meta page (page zero), + which contains statically allocated control information; primary bucket + pages; overflow pages; and bitmap pages, which keep track of overflow + pages that have been freed and are available for re-use. For addressing + purposes, bitmap pages are regarded as a subset of the overflow pages. + + + + Both scanning the index and inserting tuples require locating the bucket + where a given tuple ought to be located. To do this, we need the bucket + count, highmask, and lowmask from the metapage; however, it's undesirable + for performance reasons to have to have to lock and pin the metapage for + every such operation. Instead, we retain a cached copy of the metapage + in each backend's relcache entry. This will produce the correct bucket + mapping as long as the target bucket hasn't been split since the last + cache refresh. + + + + Primary bucket pages and overflow pages are allocated independently since + any given index might need more or fewer overflow pages relative to its + number of buckets. The hash code uses an interesting set of addressing + rules to support a variable number of overflow pages while not having to + move primary bucket pages around after they are created. + + + + Each row in the table indexed is represented by a single index tuple in + the hash index. Hash index tuples are stored in bucket pages, and if + they exist, overflow pages. We speed up searches by keeping the index entries + in any one index page sorted by hash code, thus allowing binary search to be + used within an index page. Note however that there is *no* assumption about + the relative ordering of hash codes across different index pages of a bucket. + + + + The bucket splitting algorithms to expand the hash index are too complex to + be worthy of mention here, though are described in more detail in + src/backend/access/hash/README. + The split algorithm is crash safe and can be restarted if not completed + successfully. + + + + + diff -Nru postgresql-10-10.17/doc/src/sgml/html/acronyms.html postgresql-10-10.19/doc/src/sgml/html/acronyms.html --- postgresql-10-10.17/doc/src/sgml/html/acronyms.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/acronyms.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,12 +1,12 @@ -Appendix K. Acronyms

Appendix K. Acronyms

This is a list of acronyms commonly used in the PostgreSQL +Appendix K. Acronyms

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/admin.html postgresql-10-10.19/doc/src/sgml/html/admin.html --- postgresql-10-10.17/doc/src/sgml/html/admin.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/admin.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -Part III. Server Administration

Part III. Server Administration

This part covers topics that are of interest to a +Part III. Server Administration

Part III. Server Administration

This part covers topics that are of interest to a PostgreSQL database administrator. This includes installation of the software, set up and configuration of the server, management of users and databases, and maintenance tasks. @@ -20,4 +20,4 @@ the PostgreSQL database system. Readers are encouraged to look at Part I and Part II for additional information.

Table of Contents

16. Installation from Source Code
16.1. Short Version
16.2. Requirements
16.3. Getting The Source
16.4. Installation Procedure
16.5. Post-Installation Setup
16.6. Supported Platforms
16.7. Platform-specific Notes
17. Installation from Source Code on Windows
17.1. Building with Visual C++ or the - Microsoft Windows SDK
18. Server Setup and Operation
18.1. The PostgreSQL User Account
18.2. Creating a Database Cluster
18.3. Starting the Database Server
18.4. Managing Kernel Resources
18.5. Shutting Down the Server
18.6. Upgrading a PostgreSQL Cluster
18.7. Preventing Server Spoofing
18.8. Encryption Options
18.9. Secure TCP/IP Connections with SSL
18.10. Secure TCP/IP Connections with SSH Tunnels
18.11. Registering Event Log on Windows
19. Server Configuration
19.1. Setting Parameters
19.2. File Locations
19.3. Connections and Authentication
19.4. Resource Consumption
19.5. Write Ahead Log
19.6. Replication
19.7. Query Planning
19.8. Error Reporting and Logging
19.9. Run-time Statistics
19.10. Automatic Vacuuming
19.11. Client Connection Defaults
19.12. Lock Management
19.13. Version and Platform Compatibility
19.14. Error Handling
19.15. Preset Options
19.16. Customized Options
19.17. Developer Options
19.18. Short Options
20. Client Authentication
20.1. The pg_hba.conf File
20.2. User Name Maps
20.3. Authentication Methods
20.4. Authentication Problems
21. Database Roles
21.1. Database Roles
21.2. Role Attributes
21.3. Role Membership
21.4. Dropping Roles
21.5. Default Roles
21.6. Function Security
22. Managing Databases
22.1. Overview
22.2. Creating a Database
22.3. Template Databases
22.4. Database Configuration
22.5. Destroying a Database
22.6. Tablespaces
23. Localization
23.1. Locale Support
23.2. Collation Support
23.3. Character Set Support
24. Routine Database Maintenance Tasks
24.1. Routine Vacuuming
24.2. Routine Reindexing
24.3. Log File Maintenance
25. Backup and Restore
25.1. SQL Dump
25.2. File System Level Backup
25.3. Continuous Archiving and Point-in-Time Recovery (PITR)
26. High Availability, Load Balancing, and Replication
26.1. Comparison of Different Solutions
26.2. Log-Shipping Standby Servers
26.3. Failover
26.4. Alternative Method for Log Shipping
26.5. Hot Standby
27. Recovery Configuration
27.1. Archive Recovery Settings
27.2. Recovery Target Settings
27.3. Standby Server Settings
28. Monitoring Database Activity
28.1. Standard Unix Tools
28.2. The Statistics Collector
28.3. Viewing Locks
28.4. Progress Reporting
28.5. Dynamic Tracing
29. Monitoring Disk Usage
29.1. Determining Disk Usage
29.2. Disk Full Failure
30. Reliability and the Write-Ahead Log
30.1. Reliability
30.2. Write-Ahead Logging (WAL)
30.3. Asynchronous Commit
30.4. WAL Configuration
30.5. WAL Internals
31. Logical Replication
31.1. Publication
31.2. Subscription
31.3. Conflicts
31.4. Restrictions
31.5. Architecture
31.6. Monitoring
31.7. Security
31.8. Configuration Settings
31.9. Quick Setup
32. Regression Tests
32.1. Running the Tests
32.2. Test Evaluation
32.3. Variant Comparison Files
32.4. TAP Tests
32.5. Test Coverage Examination
\ No newline at end of file + Microsoft Windows SDK
18. Server Setup and Operation
18.1. The PostgreSQL User Account
18.2. Creating a Database Cluster
18.3. Starting the Database Server
18.4. Managing Kernel Resources
18.5. Shutting Down the Server
18.6. Upgrading a PostgreSQL Cluster
18.7. Preventing Server Spoofing
18.8. Encryption Options
18.9. Secure TCP/IP Connections with SSL
18.10. Secure TCP/IP Connections with SSH Tunnels
18.11. Registering Event Log on Windows
19. Server Configuration
19.1. Setting Parameters
19.2. File Locations
19.3. Connections and Authentication
19.4. Resource Consumption
19.5. Write Ahead Log
19.6. Replication
19.7. Query Planning
19.8. Error Reporting and Logging
19.9. Run-time Statistics
19.10. Automatic Vacuuming
19.11. Client Connection Defaults
19.12. Lock Management
19.13. Version and Platform Compatibility
19.14. Error Handling
19.15. Preset Options
19.16. Customized Options
19.17. Developer Options
19.18. Short Options
20. Client Authentication
20.1. The pg_hba.conf File
20.2. User Name Maps
20.3. Authentication Methods
20.4. Authentication Problems
21. Database Roles
21.1. Database Roles
21.2. Role Attributes
21.3. Role Membership
21.4. Dropping Roles
21.5. Default Roles
21.6. Function Security
22. Managing Databases
22.1. Overview
22.2. Creating a Database
22.3. Template Databases
22.4. Database Configuration
22.5. Destroying a Database
22.6. Tablespaces
23. Localization
23.1. Locale Support
23.2. Collation Support
23.3. Character Set Support
24. Routine Database Maintenance Tasks
24.1. Routine Vacuuming
24.2. Routine Reindexing
24.3. Log File Maintenance
25. Backup and Restore
25.1. SQL Dump
25.2. File System Level Backup
25.3. Continuous Archiving and Point-in-Time Recovery (PITR)
26. High Availability, Load Balancing, and Replication
26.1. Comparison of Different Solutions
26.2. Log-Shipping Standby Servers
26.3. Failover
26.4. Alternative Method for Log Shipping
26.5. Hot Standby
27. Recovery Configuration
27.1. Archive Recovery Settings
27.2. Recovery Target Settings
27.3. Standby Server Settings
28. Monitoring Database Activity
28.1. Standard Unix Tools
28.2. The Statistics Collector
28.3. Viewing Locks
28.4. Progress Reporting
28.5. Dynamic Tracing
29. Monitoring Disk Usage
29.1. Determining Disk Usage
29.2. Disk Full Failure
30. Reliability and the Write-Ahead Log
30.1. Reliability
30.2. Write-Ahead Logging (WAL)
30.3. Asynchronous Commit
30.4. WAL Configuration
30.5. WAL Internals
31. Logical Replication
31.1. Publication
31.2. Subscription
31.3. Conflicts
31.4. Restrictions
31.5. Architecture
31.6. Monitoring
31.7. Security
31.8. Configuration Settings
31.9. Quick Setup
32. Regression Tests
32.1. Running the Tests
32.2. Test Evaluation
32.3. Variant Comparison Files
32.4. TAP Tests
32.5. Test Coverage Examination
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/adminpack.html postgresql-10-10.19/doc/src/sgml/html/adminpack.html --- postgresql-10-10.17/doc/src/sgml/html/adminpack.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/adminpack.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.1. adminpack

F.1. adminpack

adminpack provides a number of support functions which +F.1. adminpack

F.1. adminpack

adminpack provides a number of support functions which pgAdmin and other administration and management tools can use to provide additional functionality, such as remote management of server log files. @@ -50,4 +50,4 @@ by pg_stat_file() pg_catalog.pg_logfile_rotate()integer Alternate name for pg_rotate_logfile(), but note that it returns integer 0 or 1 rather than boolean -


\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/amcheck.html postgresql-10-10.19/doc/src/sgml/html/amcheck.html --- postgresql-10-10.17/doc/src/sgml/html/amcheck.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/amcheck.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.2. amcheck

F.2. amcheck

The amcheck module provides functions that allow you to +F.2. amcheck

F.2. amcheck

The amcheck module provides functions that allow you to verify the logical consistency of the structure of indexes. If the structure appears to be valid, no error is raised.

The functions verify various invariants in the @@ -165,4 +165,4 @@ an invariant violation should be sought. pageinspect may play a useful role in diagnosing corruption that amcheck detects. A REINDEX may not be effective in repairing corruption. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-clusterdb.html postgresql-10-10.19/doc/src/sgml/html/app-clusterdb.html --- postgresql-10-10.17/doc/src/sgml/html/app-clusterdb.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-clusterdb.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -clusterdb

clusterdb

clusterdb — cluster a PostgreSQL database

Synopsis

clusterdb [connection-option...] [ --verbose | -v ] [ --table | -t +clusterdb

clusterdb

clusterdb — cluster a PostgreSQL database

Synopsis

clusterdb [connection-option...] [ --verbose | -v ] [ --table | -t table ] ... [dbname]

clusterdb [connection-option...] [ --verbose | -v ] --all | -a

Description

clusterdb is a utility for reclustering tables @@ -85,4 +85,4 @@

To cluster a single table foo in a database named xyzzy: -

$ clusterdb --table=foo xyzzy

See Also

CLUSTER
\ No newline at end of file +

$ clusterdb --table=foo xyzzy

See Also

CLUSTER
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-createdb.html postgresql-10-10.19/doc/src/sgml/html/app-createdb.html --- postgresql-10-10.17/doc/src/sgml/html/app-createdb.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-createdb.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -createdb

createdb

createdb — create a new PostgreSQL database

Synopsis

createdb [connection-option...] [option...] [dbname +createdb

createdb

createdb — create a new PostgreSQL database

Synopsis

createdb [connection-option...] [option...] [dbname [description]]

Description

createdb creates a new PostgreSQL database. @@ -100,4 +100,4 @@ template0 template database, here is the command-line command and the underlying SQL command:

$ createdb -p 5000 -h eden -T template0 -e demo
-CREATE DATABASE demo TEMPLATE template0;
\ No newline at end of file +CREATE DATABASE demo TEMPLATE template0;
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-createuser.html postgresql-10-10.19/doc/src/sgml/html/app-createuser.html --- postgresql-10-10.17/doc/src/sgml/html/app-createuser.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-createuser.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -createuser

createuser

createuser — define a new PostgreSQL user account

Synopsis

createuser [connection-option...] [option...] [username]

Description

createuser creates a +createuser

createuser

createuser — define a new PostgreSQL user account

Synopsis

createuser [connection-option...] [option...] [username]

Description

createuser creates a new PostgreSQL user (or more precisely, a role). Only superusers and users with CREATEROLE privilege can create new users, so createuser must be @@ -128,4 +128,4 @@ In the above example, the new password isn't actually echoed when typed, but we show what was typed for clarity. As you see, the password is encrypted before it is sent to the client. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-dropdb.html postgresql-10-10.19/doc/src/sgml/html/app-dropdb.html --- postgresql-10-10.17/doc/src/sgml/html/app-dropdb.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-dropdb.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -dropdb

dropdb

dropdb — remove a PostgreSQL database

Synopsis

dropdb [connection-option...] [option...] dbname

Description

dropdb destroys an existing +dropdb

dropdb

dropdb — remove a PostgreSQL database

Synopsis

dropdb [connection-option...] [option...] dbname

Description

dropdb destroys an existing PostgreSQL database. The user who executes this command must be a database superuser or the owner of the database. @@ -74,4 +74,4 @@

$ dropdb -p 5000 -h eden -i -e demo
 Database "demo" will be permanently deleted.
 Are you sure? (y/n) y
-DROP DATABASE demo;
\ No newline at end of file +DROP DATABASE demo;
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-dropuser.html postgresql-10-10.19/doc/src/sgml/html/app-dropuser.html --- postgresql-10-10.17/doc/src/sgml/html/app-dropuser.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-dropuser.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -dropuser

dropuser

dropuser — remove a PostgreSQL user account

Synopsis

dropuser [connection-option...] [option...] [username]

Description

dropuser removes an existing +dropuser

dropuser

dropuser — remove a PostgreSQL user account

Synopsis

dropuser [connection-option...] [option...] [username]

Description

dropuser removes an existing PostgreSQL user. Only superusers and users with the CREATEROLE privilege can remove PostgreSQL users. (To remove a @@ -71,4 +71,4 @@

$ dropuser -p 5000 -h eden -i -e joe
 Role "joe" will be permanently removed.
 Are you sure? (y/n) y
-DROP ROLE joe;
\ No newline at end of file +DROP ROLE joe;
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-ecpg.html postgresql-10-10.19/doc/src/sgml/html/app-ecpg.html --- postgresql-10-10.17/doc/src/sgml/html/app-ecpg.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-ecpg.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -ecpg

ecpg

ecpg — embedded SQL C preprocessor

Synopsis

ecpg [option...] file...

Description

ecpg is the embedded SQL preprocessor for C +ecpg

ecpg

ecpg — embedded SQL C preprocessor

Synopsis

ecpg [option...] file...

Description

ecpg is the embedded SQL preprocessor for C programs. It converts C programs with embedded SQL statements to normal C code by replacing the SQL invocations with special function calls. The output files can then be processed with any C @@ -77,4 +77,4 @@ program using the following sequence of commands:

ecpg prog1.pgc
 cc -I/usr/local/pgsql/include -c prog1.c
-cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg
\ No newline at end of file +cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/appendixes.html postgresql-10-10.19/doc/src/sgml/html/appendixes.html --- postgresql-10-10.17/doc/src/sgml/html/appendixes.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/appendixes.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,2 +1,2 @@ -Part VIII. Appendixes

Part VIII. Appendixes

Table of Contents

A. PostgreSQL Error Codes
B. Date/Time Support
B.1. Date/Time Input Interpretation
B.2. Handling of Invalid or Ambiguous Timestamps
B.3. Date/Time Key Words
B.4. Date/Time Configuration Files
B.5. POSIX Time Zone Specifications
B.6. History of Units
B.7. Julian Dates
C. SQL Key Words
D. SQL Conformance
D.1. Supported Features
D.2. Unsupported Features
D.3. XML Limits and Conformance to SQL/XML
E. Release Notes
E.1. Release 10.17
E.2. Release 10.16
E.3. Release 10.15
E.4. Release 10.14
E.5. Release 10.13
E.6. Release 10.12
E.7. Release 10.11
E.8. Release 10.10
E.9. Release 10.9
E.10. Release 10.8
E.11. Release 10.7
E.12. Release 10.6
E.13. Release 10.5
E.14. Release 10.4
E.15. Release 10.3
E.16. Release 10.2
E.17. Release 10.1
E.18. Release 10
E.19. Prior Releases
F. Additional Supplied Modules
F.1. adminpack
F.2. amcheck
F.3. auth_delay
F.4. auto_explain
F.5. bloom
F.6. btree_gin
F.7. btree_gist
F.8. chkpass
F.9. citext
F.10. cube
F.11. dblink
F.12. dict_int
F.13. dict_xsyn
F.14. earthdistance
F.15. file_fdw
F.16. fuzzystrmatch
F.17. hstore
F.18. intagg
F.19. intarray
F.20. isn
F.21. lo
F.22. ltree
F.23. pageinspect
F.24. passwordcheck
F.25. pg_buffercache
F.26. pgcrypto
F.27. pg_freespacemap
F.28. pg_prewarm
F.29. pgrowlocks
F.30. pg_stat_statements
F.31. pgstattuple
F.32. pg_trgm
F.33. pg_visibility
F.34. postgres_fdw
F.35. seg
F.36. sepgsql
F.37. spi
F.38. sslinfo
F.39. tablefunc
F.40. tcn
F.41. test_decoding
F.42. tsm_system_rows
F.43. tsm_system_time
F.44. unaccent
F.45. uuid-ossp
F.46. xml2
G. Additional Supplied Programs
G.1. Client Applications
G.2. Server Applications
H. External Projects
H.1. Client Interfaces
H.2. Administration Tools
H.3. Procedural Languages
H.4. Extensions
I. The Source Code Repository
I.1. Getting The Source via Git
J. Documentation
J.1. DocBook
J.2. Tool Sets
J.3. Building The Documentation
J.4. Documentation Authoring
J.5. Style Guide
K. Acronyms
L. Obsolete or Renamed Features
L.1. pg_xlogdump renamed to pg_waldump
L.2. pg_resetxlog renamed to pg_resetwal
L.3. pg_receivexlog renamed to pg_receivewal
\ No newline at end of file +Part VIII. Appendixes

Part VIII. Appendixes

Table of Contents

A. PostgreSQL Error Codes
B. Date/Time Support
B.1. Date/Time Input Interpretation
B.2. Handling of Invalid or Ambiguous Timestamps
B.3. Date/Time Key Words
B.4. Date/Time Configuration Files
B.5. POSIX Time Zone Specifications
B.6. History of Units
B.7. Julian Dates
C. SQL Key Words
D. SQL Conformance
D.1. Supported Features
D.2. Unsupported Features
D.3. XML Limits and Conformance to SQL/XML
E. Release Notes
E.1. Release 10.19
E.2. Release 10.18
E.3. Release 10.17
E.4. Release 10.16
E.5. Release 10.15
E.6. Release 10.14
E.7. Release 10.13
E.8. Release 10.12
E.9. Release 10.11
E.10. Release 10.10
E.11. Release 10.9
E.12. Release 10.8
E.13. Release 10.7
E.14. Release 10.6
E.15. Release 10.5
E.16. Release 10.4
E.17. Release 10.3
E.18. Release 10.2
E.19. Release 10.1
E.20. Release 10
E.21. Prior Releases
F. Additional Supplied Modules
F.1. adminpack
F.2. amcheck
F.3. auth_delay
F.4. auto_explain
F.5. bloom
F.6. btree_gin
F.7. btree_gist
F.8. chkpass
F.9. citext
F.10. cube
F.11. dblink
F.12. dict_int
F.13. dict_xsyn
F.14. earthdistance
F.15. file_fdw
F.16. fuzzystrmatch
F.17. hstore
F.18. intagg
F.19. intarray
F.20. isn
F.21. lo
F.22. ltree
F.23. pageinspect
F.24. passwordcheck
F.25. pg_buffercache
F.26. pgcrypto
F.27. pg_freespacemap
F.28. pg_prewarm
F.29. pgrowlocks
F.30. pg_stat_statements
F.31. pgstattuple
F.32. pg_trgm
F.33. pg_visibility
F.34. postgres_fdw
F.35. seg
F.36. sepgsql
F.37. spi
F.38. sslinfo
F.39. tablefunc
F.40. tcn
F.41. test_decoding
F.42. tsm_system_rows
F.43. tsm_system_time
F.44. unaccent
F.45. uuid-ossp
F.46. xml2
G. Additional Supplied Programs
G.1. Client Applications
G.2. Server Applications
H. External Projects
H.1. Client Interfaces
H.2. Administration Tools
H.3. Procedural Languages
H.4. Extensions
I. The Source Code Repository
I.1. Getting The Source via Git
J. Documentation
J.1. DocBook
J.2. Tool Sets
J.3. Building The Documentation
J.4. Documentation Authoring
J.5. Style Guide
K. Acronyms
L. Obsolete or Renamed Features
L.1. pg_xlogdump renamed to pg_waldump
L.2. pg_resetxlog renamed to pg_resetwal
L.3. pg_receivexlog renamed to pg_receivewal
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/appendix-obsolete.html postgresql-10-10.19/doc/src/sgml/html/appendix-obsolete.html --- postgresql-10-10.17/doc/src/sgml/html/appendix-obsolete.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/appendix-obsolete.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,7 +1,7 @@ -Appendix L. Obsolete or Renamed Features

Appendix L. Obsolete or Renamed Features

Functionality is sometimes removed from PostgreSQL, feature, setting +Appendix L. Obsolete or Renamed Features

Appendix L. Obsolete or Renamed Features

Functionality is sometimes removed from PostgreSQL, feature, setting and file names sometimes change, or documentation moves to different places. This section directs users coming from old versions of the documentation or from external links to the appropriate new location for the information they need. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-initdb.html postgresql-10-10.19/doc/src/sgml/html/app-initdb.html --- postgresql-10-10.17/doc/src/sgml/html/app-initdb.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-initdb.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -initdb

initdb

initdb — create a new PostgreSQL database cluster

Synopsis

initdb [option...] [ --pgdata | -D ] directory

Description +initdb

initdb

initdb — create a new PostgreSQL database cluster

Synopsis

initdb [option...] [ --pgdata | -D ] directory

Description

initdb creates a new PostgreSQL database cluster. A database cluster is a collection of databases that are managed by a single @@ -145,4 +145,4 @@ (see Section 33.14).

Notes

initdb can also be invoked via pg_ctl initdb. -

See Also

pg_ctl, postgres
\ No newline at end of file +

See Also

pg_ctl, postgres
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/applevel-consistency.html postgresql-10-10.19/doc/src/sgml/html/applevel-consistency.html --- postgresql-10-10.17/doc/src/sgml/html/applevel-consistency.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/applevel-consistency.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -13.4. Data Consistency Checks at the Application Level

13.4. Data Consistency Checks at the Application Level

It is very difficult to enforce business rules regarding data integrity +13.4. Data Consistency Checks at the Application Level

13.4. Data Consistency Checks at the Application Level

It is very difficult to enforce business rules regarding data integrity using Read Committed transactions because the view of the data is shifting with each statement, and even a single statement may not restrict itself to the statement's snapshot if a write conflict occurs. @@ -100,4 +100,4 @@ UPDATE, or DELETE), so it is possible to obtain locks explicitly before the snapshot is frozen. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgbasebackup.html postgresql-10-10.19/doc/src/sgml/html/app-pgbasebackup.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgbasebackup.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgbasebackup.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pg_basebackup

pg_basebackup

pg_basebackup — take a base backup of a PostgreSQL cluster

Synopsis

pg_basebackup [option...]

Description +pg_basebackup

pg_basebackup

pg_basebackup — take a base backup of a PostgreSQL cluster

Synopsis

pg_basebackup [option...]

Description

pg_basebackup is used to take base backups of a running PostgreSQL database cluster. These are taken without affecting other clients to the database, and can be used @@ -304,4 +304,4 @@ /opt/ts is relocated to ./backup/ts:

$ pg_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts

-

See Also

pg_dump
\ No newline at end of file +

See Also

pg_dump
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgconfig.html postgresql-10-10.19/doc/src/sgml/html/app-pgconfig.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgconfig.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgconfig.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pg_config

pg_config

pg_config — retrieve information about the installed version of PostgreSQL

Synopsis

pg_config [option...]

Description

The pg_config utility prints configuration parameters +pg_config

pg_config

pg_config — retrieve information about the installed version of PostgreSQL

Synopsis

pg_config [option...]

Description

The pg_config utility prints configuration parameters of the currently installed version of PostgreSQL. It is intended, for example, to be used by software packages that want to interface to PostgreSQL to facilitate finding the required header files @@ -77,4 +77,4 @@ shell quotation marks so arguments with spaces are represented correctly. Therefore, using eval is required for proper results. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgcontroldata.html postgresql-10-10.19/doc/src/sgml/html/app-pgcontroldata.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgcontroldata.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgcontroldata.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_controldata

pg_controldata

pg_controldata — display control information of a PostgreSQL database cluster

Synopsis

pg_controldata [option] [[-D] datadir]

Description

pg_controldata prints information initialized during +pg_controldata

pg_controldata

pg_controldata — display control information of a PostgreSQL database cluster

Synopsis

pg_controldata [option] [[-D] datadir]

Description

pg_controldata prints information initialized during initdb, such as the catalog version. It also shows information about write-ahead logging and checkpoint processing. This information is cluster-wide, and not specific to any one @@ -13,4 +13,4 @@ supports options -? and --help, which output the supported arguments.

Environment

PGDATA

Default data directory location -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pg-ctl.html postgresql-10-10.19/doc/src/sgml/html/app-pg-ctl.html --- postgresql-10-10.17/doc/src/sgml/html/app-pg-ctl.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pg-ctl.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_ctl

pg_ctl

pg_ctl — initialize, start, stop, or control a PostgreSQL server

Synopsis

pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]

pg_ctl stop [-D datadir] [-m +pg_ctl

pg_ctl

pg_ctl — initialize, start, stop, or control a PostgreSQL server

Synopsis

pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]

pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]

pg_ctl restart [-D datadir] [-m s[mart] | f[ast] | i[mmediate] @@ -217,4 +217,4 @@ pg_ctl: server is running (PID: 13718) /usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"

The second line is the command that would be invoked in restart mode. -

See Also

initdb, postgres
\ No newline at end of file +

See Also

initdb, postgres
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pg-dumpall.html postgresql-10-10.19/doc/src/sgml/html/app-pg-dumpall.html --- postgresql-10-10.17/doc/src/sgml/html/app-pg-dumpall.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pg-dumpall.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pg_dumpall

pg_dumpall

pg_dumpall — extract a PostgreSQL database cluster into a script file

Synopsis

pg_dumpall [connection-option...] [option...]

Description

pg_dumpall is a utility for writing out +pg_dumpall

pg_dumpall

pg_dumpall — extract a PostgreSQL database cluster into a script file

Synopsis

pg_dumpall [connection-option...] [option...]

Description

pg_dumpall is a utility for writing out (dumping) all PostgreSQL databases of a cluster into one script file. The script file contains SQL commands that can be used as input to psql to restore the databases. It does this by @@ -223,4 +223,4 @@ databases.)

See Also

Check pg_dump for details on possible error conditions. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgdump.html postgresql-10-10.19/doc/src/sgml/html/app-pgdump.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgdump.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgdump.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pg_dump

pg_dump

pg_dump — extract a PostgreSQL database into a script file or other archive file +pg_dump

pg_dump

pg_dump — extract a PostgreSQL database into a script file or other archive file

Synopsis

pg_dump [connection-option...] [option...] [dbname]

Description

pg_dump is a utility for backing up a PostgreSQL database. It makes consistent @@ -587,4 +587,4 @@ Thus, to dump a single table with a mixed-case name, you need something like -

$ pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql
\ No newline at end of file +

$ pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pg-isready.html postgresql-10-10.19/doc/src/sgml/html/app-pg-isready.html --- postgresql-10-10.17/doc/src/sgml/html/app-pg-isready.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pg-isready.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pg_isready

pg_isready

pg_isready — check the connection status of a PostgreSQL server

Synopsis

pg_isready [connection-option...] [option...]

Description

pg_isready is a utility for checking the connection +pg_isready

pg_isready

pg_isready — check the connection status of a PostgreSQL server

Synopsis

pg_isready [connection-option...] [option...]

Description

pg_isready is a utility for checking the connection status of a PostgreSQL database server. The exit status specifies the result of the connection check.

Options

-d dbname
--dbname=dbname

Specifies the name of the database to connect to. The @@ -50,4 +50,4 @@ someremotehost:5432 - no response $ echo $? 2

-

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgreceivewal.html postgresql-10-10.19/doc/src/sgml/html/app-pgreceivewal.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgreceivewal.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgreceivewal.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pg_receivewal

pg_receivewal

pg_receivewal — stream write-ahead logs from a PostgreSQL server

Synopsis

pg_receivewal [option...]

Description +pg_receivewal

pg_receivewal

pg_receivewal — stream write-ahead logs from a PostgreSQL server

Synopsis

pg_receivewal [option...]

Description

pg_receivewal is used to stream the write-ahead log from a running PostgreSQL cluster. The write-ahead log is streamed using the streaming replication protocol, and is written @@ -34,6 +34,16 @@ must permit the replication connection. The server must also be configured with max_wal_senders set high enough to leave at least one session available for the stream. +

The starting point of the write-ahead log streaming is calculated when + pg_receivewal starts: +

  1. First, scan the directory where the WAL segment files are written and + find the newest completed segment file, using as starting point the + beginning of the next WAL segment file. This is calculated independently + on the compression method used to compress each segment. +

  2. If a starting point cannot be calculated with the previous method, + the latest WAL flush location is used as reported by the server from + a IDENTIFY_SYSTEM command. +

If the connection is lost, or if it cannot be initially established, with a non-fatal error, pg_receivewal will retry the connection indefinitely, and reestablish streaming as soon @@ -139,4 +149,4 @@

Examples

To stream the write-ahead log from the server at mydbserver and store it in the local directory /usr/local/pgsql/archive: -

$ pg_receivewal -h mydbserver -D /usr/local/pgsql/archive
\ No newline at end of file +

$ pg_receivewal -h mydbserver -D /usr/local/pgsql/archive

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgreceivexlog.html postgresql-10-10.19/doc/src/sgml/html/app-pgreceivexlog.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgreceivexlog.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgreceivexlog.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,9 +1,9 @@ -L.3. pg_receivexlog renamed to pg_receivewal

L.3. pg_receivexlog renamed to pg_receivewal

PostgreSQL 9.6 and below provided a command named +L.3. pg_receivexlog renamed to pg_receivewal

L.3. pg_receivexlog renamed to pg_receivewal

PostgreSQL 9.6 and below provided a command named pg_receivexlog to fetch write-ahead-log (WAL) files. This command was renamed to pg_receivewal, see pg_receivewal for documentation of pg_receivewal and see - the release notes for PostgreSQL 10 for details + the release notes for PostgreSQL 10 for details on this change. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgrecvlogical.html postgresql-10-10.19/doc/src/sgml/html/app-pgrecvlogical.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgrecvlogical.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgrecvlogical.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pg_recvlogical

pg_recvlogical

pg_recvlogical — control PostgreSQL logical decoding streams

Synopsis

pg_recvlogical [option...]

Description

pg_recvlogical controls logical decoding replication +pg_recvlogical

pg_recvlogical

pg_recvlogical — control PostgreSQL logical decoding streams

Synopsis

pg_recvlogical [option...]

Description

pg_recvlogical controls logical decoding replication slots and streams data from such replication slots.

It creates a replication-mode connection, so it is subject to the same constraints as pg_receivewal, plus those for logical @@ -120,4 +120,4 @@ uses the environment variables supported by libpq (see Section 33.14).

Examples

See Section 48.1 for an example. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgresetwal.html postgresql-10-10.19/doc/src/sgml/html/app-pgresetwal.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgresetwal.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgresetwal.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_resetwal

pg_resetwal

pg_resetwal — reset the write-ahead log and other control information of a PostgreSQL database cluster

Synopsis

pg_resetwal [-f] [-n] [option...] {[-D] datadir}

Description

pg_resetwal clears the write-ahead log (WAL) and +pg_resetwal

pg_resetwal

pg_resetwal — reset the write-ahead log and other control information of a PostgreSQL database cluster

Synopsis

pg_resetwal [-f] [-n] [option...] {[-D] datadir}

Description

pg_resetwal clears the write-ahead log (WAL) and optionally resets some other control information stored in the pg_control file. This function is sometimes needed if these files have become corrupted. It should be used only as a @@ -94,6 +94,14 @@ data directory, adding one, and then multiplying by 52352 (0xCC80). The file names are in hexadecimal. There is no simple recipe such as the ones for other options of appending zeroes. +

-u xid

Manually set the oldest unfrozen transaction ID. +

A safe value can be determined by looking for the numerically smallest + file name in the directory pg_xact under the data directory + and then multiplying by 1048576 (0x100000). Note that the file names are in + hexadecimal. It is usually easiest to specify the option value in + hexadecimal too. For example, if 0007 is the smallest entry + in pg_xact, -u 0x700000 will work (five + trailing zeroes provide the proper multiplier).

-x xid

Manually set the next transaction ID.

A safe value can be determined by looking for the numerically largest file name in the directory pg_xact under the data directory, @@ -112,4 +120,4 @@ so, make doubly certain that there is no server process still alive.

pg_resetwal works only with servers of the same major version. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgresetxlog.html postgresql-10-10.19/doc/src/sgml/html/app-pgresetxlog.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgresetxlog.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgresetxlog.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,9 +1,9 @@ -L.2. pg_resetxlog renamed to pg_resetwal

L.2. pg_resetxlog renamed to pg_resetwal

PostgreSQL 9.6 and below provided a command named +L.2. pg_resetxlog renamed to pg_resetwal

L.2. pg_resetxlog renamed to pg_resetwal

PostgreSQL 9.6 and below provided a command named pg_resetxlog to reset the write-ahead-log (WAL) files. This command was renamed to pg_resetwal, see pg_resetwal for documentation of pg_resetwal and see - the release notes for PostgreSQL 10 for details + the release notes for PostgreSQL 10 for details on this change. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgrestore.html postgresql-10-10.19/doc/src/sgml/html/app-pgrestore.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgrestore.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgrestore.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pg_restore

pg_restore

pg_restore — restore a PostgreSQL database from an +pg_restore

pg_restore

pg_restore — restore a PostgreSQL database from an archive file created by pg_dump

Synopsis

pg_restore [connection-option...] [option...] [filename]

Description

pg_restore is a utility for restoring a PostgreSQL database from an archive @@ -369,4 +369,4 @@ ;8; 145416 TABLE ss_old postgres

could be used as input to pg_restore and would only restore items 10 and 6, in that order: -

$ pg_restore -L db.list db.dump
\ No newline at end of file +

$ pg_restore -L db.list db.dump
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-pgrewind.html postgresql-10-10.19/doc/src/sgml/html/app-pgrewind.html --- postgresql-10-10.17/doc/src/sgml/html/app-pgrewind.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-pgrewind.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_rewind

pg_rewind

pg_rewind — synchronize a PostgreSQL data directory with another data directory that was forked from it

Synopsis

pg_rewind [option...] { -D | --target-pgdata } directory { --source-pgdata=directory | --source-server=connstr }

Description

pg_rewind is a tool for synchronizing a PostgreSQL cluster +pg_rewind

pg_rewind

pg_rewind — synchronize a PostgreSQL data directory with another data directory that was forked from it

Synopsis

pg_rewind [option...] { -D | --target-pgdata } directory { --source-pgdata=directory | --source-server=connstr }

Description

pg_rewind is a tool for synchronizing a PostgreSQL cluster with another copy of the same cluster, after the clusters' timelines have diverged. A typical scenario is to bring an old master server back online after failover as a standby that follows the new master. @@ -99,4 +99,4 @@ doesn't apply the WAL, it just creates a backup label file that makes PostgreSQL start by replaying all WAL from that checkpoint forward.) -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-postgres.html postgresql-10-10.19/doc/src/sgml/html/app-postgres.html --- postgresql-10-10.17/doc/src/sgml/html/app-postgres.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-postgres.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -postgres

postgres

postgres — PostgreSQL database server

Synopsis

postgres [option...]

Description

postgres is the +postgres

postgres

postgres — PostgreSQL database server

Synopsis

postgres [option...]

Description

postgres is the PostgreSQL database server. In order for a client application to access a database it connects (over a network or locally) to a running postgres instance. @@ -351,4 +351,4 @@ to set a parameter.

See Also

initdb, pg_ctl -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-postmaster.html postgresql-10-10.19/doc/src/sgml/html/app-postmaster.html --- postgresql-10-10.17/doc/src/sgml/html/app-postmaster.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-postmaster.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,4 +1,4 @@ -postmaster

postmaster

postmaster — PostgreSQL database server

Synopsis

postmaster [option...]

Description

postmaster is a deprecated alias of postgres. +postmaster

postmaster

postmaster — PostgreSQL database server

Synopsis

postmaster [option...]

Description

postmaster is a deprecated alias of postgres.

See Also

postgres -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-psql.html postgresql-10-10.19/doc/src/sgml/html/app-psql.html --- postgresql-10-10.17/doc/src/sgml/html/app-psql.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-psql.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -psql

psql

psqlPostgreSQL interactive terminal +psql

psql

psqlPostgreSQL interactive terminal

Synopsis

psql [option...] [dbname [username]]

Description

psql is a terminal-based front-end to PostgreSQL. It enables you to type in @@ -282,7 +282,7 @@ psql is currently connected, followed by the string =>. For example:

$ psql testdb
-psql (10.17)
+psql (10.19)
 Type "help" for help.
 
 testdb=>

@@ -2141,4 +2141,4 @@ 2 | 202 | 204 | 206 | 208 1 | 101 | 102 | 103 | 104 (4 rows)

-

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-reindexdb.html postgresql-10-10.19/doc/src/sgml/html/app-reindexdb.html --- postgresql-10-10.17/doc/src/sgml/html/app-reindexdb.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-reindexdb.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -reindexdb

reindexdb

reindexdb — reindex a PostgreSQL database

Synopsis

reindexdb [connection-option...] [option...] [ -S | --schema +reindexdb

reindexdb

reindexdb — reindex a PostgreSQL database

Synopsis

reindexdb [connection-option...] [option...] [ -S | --schema schema ] ... [ -t | --table @@ -31,7 +31,7 @@ Multiple indexes can be recreated by writing multiple -i switches.

-q
--quiet

Do not display progress messages. -

-s
--system

Reindex database's system catalogs. +

-s
--system

Reindex database's system catalogs only.

-S schema
--schema=schema

Reindex schema only. Multiple schemas can be reindexed by writing multiple -S switches. @@ -99,4 +99,4 @@

$ reindexdb test

To reindex the table foo and the index bar in a database named abcd: -

$ reindexdb --table=foo --index=bar abcd

See Also

REINDEX
\ No newline at end of file +

$ reindexdb --table=foo --index=bar abcd

See Also

REINDEX
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/app-vacuumdb.html postgresql-10-10.19/doc/src/sgml/html/app-vacuumdb.html --- postgresql-10-10.17/doc/src/sgml/html/app-vacuumdb.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/app-vacuumdb.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -vacuumdb

vacuumdb

vacuumdb — garbage-collect and analyze a PostgreSQL database

Synopsis

vacuumdb [connection-option...] [option...] [ -t | --table +vacuumdb

vacuumdb

vacuumdb — garbage-collect and analyze a PostgreSQL database

Synopsis

vacuumdb [connection-option...] [option...] [ -t | --table table [( column [,...] )] ] @@ -120,4 +120,4 @@ foo in a database named xyzzy, and analyze a single column bar of the table for the optimizer: -

$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy

See Also

VACUUM
\ No newline at end of file +

$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy

See Also

VACUUM
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/archive-recovery-settings.html postgresql-10-10.19/doc/src/sgml/html/archive-recovery-settings.html --- postgresql-10-10.17/doc/src/sgml/html/archive-recovery-settings.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/archive-recovery-settings.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -27.1. Archive Recovery Settings

27.1. Archive Recovery Settings

restore_command (string) +27.1. Archive Recovery Settings

27.1. Archive Recovery Settings

restore_command (string)

The local shell command to execute to retrieve an archived segment of the WAL file series. This parameter is required for archive recovery, @@ -70,4 +70,4 @@ anyway. An exception is that if the command was terminated by a signal or an error by the shell (such as command not found), the database will not proceed with startup. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/arrays.html postgresql-10-10.19/doc/src/sgml/html/arrays.html --- postgresql-10-10.17/doc/src/sgml/html/arrays.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/arrays.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.15. Arrays

8.15. Arrays

PostgreSQL allows columns of a table to be +8.15. Arrays

8.15. Arrays

PostgreSQL allows columns of a table to be defined as variable-length multidimensional arrays. Arrays of any built-in or user-defined base type, enum type, or composite type can be created. @@ -530,4 +530,4 @@ with than the array-literal syntax when writing array values in SQL commands. In ARRAY, individual element values are written the same way they would be written when not members of an array. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/auth-delay.html postgresql-10-10.19/doc/src/sgml/html/auth-delay.html --- postgresql-10-10.17/doc/src/sgml/html/auth-delay.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/auth-delay.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.3. auth_delay

F.3. auth_delay

auth_delay causes the server to pause briefly before +F.3. auth_delay

F.3. auth_delay

auth_delay causes the server to pause briefly before reporting authentication failure, to make brute-force attacks on database passwords more difficult. Note that it does nothing to prevent denial-of-service attacks, and may even exacerbate them, since processes @@ -17,4 +17,4 @@ shared_preload_libraries = 'auth_delay' auth_delay.milliseconds = '500'

F.3.2. Author

KaiGai Kohei -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/auth-methods.html postgresql-10-10.19/doc/src/sgml/html/auth-methods.html --- postgresql-10-10.17/doc/src/sgml/html/auth-methods.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/auth-methods.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -20.3. Authentication Methods

20.3. Authentication Methods

The following subsections describe the authentication methods in more detail. +20.3. Authentication Methods

20.3. Authentication Methods

The following subsections describe the authentication methods in more detail.

20.3.1. Trust Authentication

When trust authentication is specified, PostgreSQL assumes that anyone who can connect to the server is authorized to access the database with @@ -514,4 +514,4 @@ operating system user running the server) must first be added to the auth group. The auth group exists by default on OpenBSD systems. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/auth-pg-hba-conf.html postgresql-10-10.19/doc/src/sgml/html/auth-pg-hba-conf.html --- postgresql-10-10.17/doc/src/sgml/html/auth-pg-hba-conf.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/auth-pg-hba-conf.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -20.1. The pg_hba.conf File

20.1. The pg_hba.conf File

Client authentication is controlled by a configuration file, +20.1. The pg_hba.conf File

20.1. The pg_hba.conf File

Client authentication is controlled by a configuration file, which traditionally is named pg_hba.conf and is stored in the database cluster's data directory. @@ -381,4 +381,4 @@ local all @admins,+support md5 # The database column can also use lists and file names: -local db1,db2,@demodbs all md5


\ No newline at end of file +local db1,db2,@demodbs all md5
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/auth-username-maps.html postgresql-10-10.19/doc/src/sgml/html/auth-username-maps.html --- postgresql-10-10.17/doc/src/sgml/html/auth-username-maps.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/auth-username-maps.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -20.2. User Name Maps

20.2. User Name Maps

When using an external authentication system such as Ident or GSSAPI, +20.2. User Name Maps

20.2. User Name Maps

When using an external authentication system such as Ident or GSSAPI, the name of the operating system user that initiated the connection might not be the same as the database user (role) that is to be used. In this case, a user name map can be applied to map the operating system @@ -78,4 +78,4 @@ # bob has user name robert on these machines omicron robert bob # bryanh can also connect as guest1 -omicron bryanh guest1


\ No newline at end of file +omicron bryanh guest1
\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/auto-explain.html postgresql-10-10.19/doc/src/sgml/html/auto-explain.html --- postgresql-10-10.17/doc/src/sgml/html/auto-explain.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/auto-explain.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.4. auto_explain

F.4. auto_explain

The auto_explain module provides a means for +F.4. auto_explain

F.4. auto_explain

The auto_explain module provides a means for logging execution plans of slow statements automatically, without having to run EXPLAIN by hand. This is especially helpful for tracking down un-optimized queries @@ -120,4 +120,4 @@ Buckets: 1024 Batches: 1 Memory Usage: 4kB -> Seq Scan on pg_index (cost=0.00..3.02 rows=92 width=4) (actual time=0.008..3.187 rows=92 loops=1) Filter: indisunique

F.4.3. Author

Takahiro Itagaki -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/backup-dump.html postgresql-10-10.19/doc/src/sgml/html/backup-dump.html --- postgresql-10-10.17/doc/src/sgml/html/backup-dump.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/backup-dump.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -25.1. SQL Dump

25.1. SQL Dump

The idea behind this dump method is to generate a file with SQL +25.1. SQL Dump

25.1. SQL Dump

The idea behind this dump method is to generate a file with SQL commands that, when fed back to the server, will recreate the database in the same state as it was at the time of the dump. PostgreSQL provides the utility program @@ -151,13 +151,20 @@

Use split The split command allows you to split the output into smaller files that are acceptable in size to the underlying file system. For example, to - make chunks of 1 megabyte: + make 2 gigabyte chunks: -

pg_dump dbname | split -b 1m - filename

+

pg_dump dbname | split -b 2G - filename

Reload with:

cat filename* | psql dbname

+ + If using GNU split, it is possible to + use it and gzip together: + +

pg_dump dbname | split -b 2G --filter='gzip > $FILE.gz'

+ + It can be restored using zcat.

Use pg_dump's custom dump format.  If PostgreSQL was built on a system with the zlib compression library installed, the custom dump format will compress data as it writes it to the output file. This will @@ -186,4 +193,4 @@ You can use pg_restore -j to restore a dump in parallel. This will work for any archive of either the "custom" or the "directory" archive mode, whether or not it has been created with pg_dump -j. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/backup-file.html postgresql-10-10.19/doc/src/sgml/html/backup-file.html --- postgresql-10-10.17/doc/src/sgml/html/backup-file.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/backup-file.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -25.2. File System Level Backup

25.2. File System Level Backup

An alternative backup strategy is to directly copy the files that +25.2. File System Level Backup

25.2. File System Level Backup

An alternative backup strategy is to directly copy the files that PostgreSQL uses to store the data in the database; Section 18.2 explains where these files are located. You can use whatever method you prefer @@ -77,4 +77,4 @@ than an SQL dump. (pg_dump does not need to dump the contents of indexes for example, just the commands to recreate them.) However, taking a file system backup might be faster. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/backup.html postgresql-10-10.19/doc/src/sgml/html/backup.html --- postgresql-10-10.17/doc/src/sgml/html/backup.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/backup.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 25. Backup and Restore

Chapter 25. Backup and Restore

As with everything that contains valuable data, PostgreSQL +Chapter 25. Backup and Restore

Chapter 25. Backup and Restore

As with everything that contains valuable data, PostgreSQL databases should be backed up regularly. While the procedure is essentially simple, it is important to have a clear understanding of the underlying techniques and assumptions. @@ -8,4 +8,4 @@

  • SQL dump

  • File system level backup

  • Continuous archiving

Each has its own strengths and weaknesses; each is discussed in turn in the following sections. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bgworker.html postgresql-10-10.19/doc/src/sgml/html/bgworker.html --- postgresql-10-10.17/doc/src/sgml/html/bgworker.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bgworker.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 47. Background Worker Processes

Chapter 47. Background Worker Processes

PostgreSQL can be extended to run user-supplied code in separate processes. +Chapter 47. Background Worker Processes

Chapter 47. Background Worker Processes

PostgreSQL can be extended to run user-supplied code in separate processes. Such processes are started, stopped and monitored by postgres, which permits them to have a lifetime closely linked to the server's status. These processes have the option to attach to PostgreSQL's @@ -71,8 +71,8 @@ when the processes are to be started; they do not stop when a different state is reached.

bgw_restart_time is the interval, in seconds, that - postgres should wait before restarting the process, in - case it crashes. It can be any positive value, + postgres should wait before restarting the process in + the event that it crashes. It can be any positive value, or BGW_NEVER_RESTART, indicating not to restart the process in case of a crash.

bgw_library_name is the name of a library in @@ -187,4 +187,4 @@ which demonstrates some useful techniques.

The maximum number of registered background workers is limited by max_worker_processes. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/biblio.html postgresql-10-10.19/doc/src/sgml/html/biblio.html --- postgresql-10-10.17/doc/src/sgml/html/biblio.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/biblio.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -Bibliography

Bibliography

Selected references and readings for SQL +Bibliography

Bibliography

Selected references and readings for SQL and PostgreSQL.

Some white papers and technical reports from the original POSTGRES development team @@ -17,4 +17,4 @@ system”. M. Stonebraker, M. Hearst, and S. Potamianos. SIGMOD Record 18(3). Sept. 1989.

[ston89b] The case for partial indexes”. M. Stonebraker. SIGMOD Record 18(4). Dec. 1989. 4-11.

[ston90a] The implementation of POSTGRES”. M. Stonebraker, L. A. Rowe, and M. Hirohama. Transactions on Knowledge and Data Engineering 2(1). IEEE. March 1990.

[ston90b] On - Rules, Procedures, Caching and Views in Database Systems”. M. Stonebraker, A. Jhingran, J. Goh, and S. Potamianos. ACM-SIGMOD Conference on Management of Data, June 1990.

\ No newline at end of file + Rules, Procedures, Caching and Views in Database Systems”. M. Stonebraker, A. Jhingran, J. Goh, and S. Potamianos. ACM-SIGMOD Conference on Management of Data, June 1990.

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bki-commands.html postgresql-10-10.19/doc/src/sgml/html/bki-commands.html --- postgresql-10-10.17/doc/src/sgml/html/bki-commands.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bki-commands.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -67.2. BKI Commands

67.2. BKI Commands

create +68.2. BKI Commands

68.2. BKI Commands

create tablename tableoid [bootstrap] @@ -94,4 +94,4 @@ As with declare index, filling of the index is postponed.

build indices

Fill in the indices that have previously been declared. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bki-example.html postgresql-10-10.19/doc/src/sgml/html/bki-example.html --- postgresql-10-10.17/doc/src/sgml/html/bki-example.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bki-example.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -67.4. Example

67.4. Example

The following sequence of commands will create the +68.4. Example

68.4. Example

The following sequence of commands will create the table test_table with OID 420, having two columns cola and colb of type int4 and text, respectively, and insert @@ -9,4 +9,4 @@ insert OID=421 ( 1 "value1" ) insert OID=422 ( 2 _null_ ) close test_table

-

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bki-format.html postgresql-10-10.19/doc/src/sgml/html/bki-format.html --- postgresql-10-10.17/doc/src/sgml/html/bki-format.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bki-format.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -67.1. BKI File Format

67.1. BKI File Format

This section describes how the PostgreSQL +68.1. BKI File Format

68.1. BKI File Format

This section describes how the PostgreSQL backend interprets BKI files. This description will be easier to understand if the postgres.bki file is at hand as an example. @@ -13,4 +13,4 @@ characters (parentheses, commas, etc.), numbers, or double-quoted strings. Everything is case sensitive.

Lines starting with # are ignored. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bki.html postgresql-10-10.19/doc/src/sgml/html/bki.html --- postgresql-10-10.17/doc/src/sgml/html/bki.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bki.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 67. BKI Backend Interface

Chapter 67. BKI Backend Interface

Backend Interface (BKI) files are scripts in a +Chapter 68. BKI Backend Interface

Chapter 68. BKI Backend Interface

Backend Interface (BKI) files are scripts in a special language that is understood by the PostgreSQL backend when running in the bootstrap mode. The bootstrap mode allows system catalogs @@ -20,4 +20,4 @@ share subdirectory of the installation tree.

Related information can be found in the documentation for initdb. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bki-structure.html postgresql-10-10.19/doc/src/sgml/html/bki-structure.html --- postgresql-10-10.17/doc/src/sgml/html/bki-structure.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bki-structure.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -67.3. Structure of the Bootstrap BKI File

67.3. Structure of the Bootstrap BKI File

The open command cannot be used until the tables it uses +68.3. Structure of the Bootstrap BKI File

68.3. Structure of the Bootstrap BKI File

The open command cannot be used until the tables it uses exist and have entries for the table that is to be opened. (These minimum tables are pg_class, pg_attribute, pg_proc, and @@ -24,4 +24,4 @@

  • build indices

  • There are doubtless other, undocumented ordering dependencies. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bloom.html postgresql-10-10.19/doc/src/sgml/html/bloom.html --- postgresql-10-10.17/doc/src/sgml/html/bloom.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bloom.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.5. bloom

    F.5. bloom

    bloom provides an index access method based on +F.5. bloom

    F.5. bloom

    bloom provides an index access method based on Bloom filters.

    A Bloom filter is a space-efficient data structure that is used to test whether an element is a member of a set. In the case of an index access @@ -151,4 +151,4 @@ Postgres Professional, Moscow, Russia

    Oleg Bartunov , Postgres Professional, Moscow, Russia -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bookindex.html postgresql-10-10.19/doc/src/sgml/html/bookindex.html --- postgresql-10-10.17/doc/src/sgml/html/bookindex.html 2021-05-10 20:58:30.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bookindex.html 2021-11-08 22:25:13.000000000 +0000 @@ -1,5 +1,5 @@ -Index

    Index

    Index

    A

    abbrev, Network Address Functions and Operators
    ABORT, ABORT
    abs, Mathematical Functions and Operators
    acos, Mathematical Functions and Operators
    acosd, Mathematical Functions and Operators
    administration tools
    externally maintained, Administration Tools
    adminpack, adminpack
    advisory lock, Advisory Locks
    age, Date/Time Functions and Operators
    aggregate function, Aggregate Functions, Aggregate Expressions, Aggregate Functions, User-defined Aggregates
    built-in, Aggregate Functions
    invocation, Aggregate Expressions
    moving aggregate, Moving-Aggregate Mode
    ordered set, Ordered-Set Aggregates
    partial aggregation, Partial Aggregation
    polymorphic, Polymorphic and Variadic Aggregates
    support functions for, Support Functions for Aggregates
    user-defined, User-defined Aggregates
    variadic, Polymorphic and Variadic Aggregates
    AIX, AIX
    installation on, AIX
    IPC configuration, Shared Memory and Semaphores
    akeys, hstore Operators and Functions
    alias, Table and Column Aliases, Column Labels
    for table name in query, Joins Between Tables
    in the FROM clause, Table and Column Aliases
    in the select list, Column Labels
    ALL, Subquery Expressions, Row and Array Comparisons
    allow_system_table_mods configuration parameter, Developer Options
    ALTER AGGREGATE, ALTER AGGREGATE
    ALTER COLLATION, ALTER COLLATION
    ALTER CONVERSION, ALTER CONVERSION
    ALTER DATABASE, ALTER DATABASE
    ALTER DEFAULT PRIVILEGES, ALTER DEFAULT PRIVILEGES
    ALTER DOMAIN, ALTER DOMAIN
    ALTER EVENT TRIGGER, ALTER EVENT TRIGGER
    ALTER EXTENSION, ALTER EXTENSION
    ALTER FOREIGN DATA WRAPPER, ALTER FOREIGN DATA WRAPPER
    ALTER FOREIGN TABLE, ALTER FOREIGN TABLE
    ALTER FUNCTION, ALTER FUNCTION
    ALTER GROUP, ALTER GROUP
    ALTER INDEX, ALTER INDEX
    ALTER LANGUAGE, ALTER LANGUAGE
    ALTER LARGE OBJECT, ALTER LARGE OBJECT
    ALTER MATERIALIZED VIEW, ALTER MATERIALIZED VIEW
    ALTER OPERATOR, ALTER OPERATOR
    ALTER OPERATOR CLASS, ALTER OPERATOR CLASS
    ALTER OPERATOR FAMILY, ALTER OPERATOR FAMILY
    ALTER POLICY, ALTER POLICY
    ALTER PUBLICATION, ALTER PUBLICATION
    ALTER ROLE, Role Attributes, ALTER ROLE
    ALTER RULE, ALTER RULE
    ALTER SCHEMA, ALTER SCHEMA
    ALTER SEQUENCE, ALTER SEQUENCE
    ALTER SERVER, ALTER SERVER
    ALTER STATISTICS, ALTER STATISTICS
    ALTER SUBSCRIPTION, ALTER SUBSCRIPTION
    ALTER SYSTEM, ALTER SYSTEM
    ALTER TABLE, ALTER TABLE
    ALTER TABLESPACE, ALTER TABLESPACE
    ALTER TEXT SEARCH CONFIGURATION, ALTER TEXT SEARCH CONFIGURATION
    ALTER TEXT SEARCH DICTIONARY, ALTER TEXT SEARCH DICTIONARY
    ALTER TEXT SEARCH PARSER, ALTER TEXT SEARCH PARSER
    ALTER TEXT SEARCH TEMPLATE, ALTER TEXT SEARCH TEMPLATE
    ALTER TRIGGER, ALTER TRIGGER
    ALTER TYPE, ALTER TYPE
    ALTER USER, ALTER USER
    ALTER USER MAPPING, ALTER USER MAPPING
    ALTER VIEW, ALTER VIEW
    amcheck, amcheck
    ANALYZE, Updating Planner Statistics, ANALYZE
    AND (operator), Logical Operators
    anonymous code blocks, DO
    any, Pseudo-Types
    ANY, Aggregate Functions, Subquery Expressions, Row and Array Comparisons
    anyarray, Pseudo-Types
    anyelement, Pseudo-Types
    anyenum, Pseudo-Types
    anynonarray, Pseudo-Types
    anyrange, Pseudo-Types
    applicable role, applicable_roles
    application_name configuration parameter, What To Log
    arbitrary precision numbers, Arbitrary Precision Numbers
    archive_cleanup_command recovery parameter, Archive Recovery Settings
    archive_command configuration parameter, Archiving
    archive_mode configuration parameter, Archiving
    archive_timeout configuration parameter, Archiving
    area, Geometric Functions and Operators
    armor, armor(), dearmor()
    array, Arrays
    accessing, Accessing Arrays
    constant, Array Value Input
    constructor, Array Constructors
    declaration, Declaration of Array Types
    I/O, Array Input and Output Syntax
    modifying, Modifying Arrays
    of user-defined type, User-defined Types
    searching, Searching in Arrays
    ARRAY, Array Constructors, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    array_agg, Aggregate Functions, Functions
    array_append, Array Functions and Operators
    array_cat, Array Functions and Operators
    array_dims, Array Functions and Operators
    array_fill, Array Functions and Operators
    array_length, Array Functions and Operators
    array_lower, Array Functions and Operators
    array_ndims, Array Functions and Operators
    array_nulls configuration parameter, Previous PostgreSQL Versions
    array_position, Array Functions and Operators
    array_positions, Array Functions and Operators
    array_prepend, Array Functions and Operators
    array_remove, Array Functions and Operators
    array_replace, Array Functions and Operators
    array_to_json, JSON Functions and Operators
    array_to_string, Array Functions and Operators
    array_to_tsvector, Text Search Functions and Operators
    array_upper, Array Functions and Operators
    ascii, String Functions and Operators
    asin, Mathematical Functions and Operators
    asind, Mathematical Functions and Operators
    ASSERT
    in PL/pgSQL, Checking Assertions
    assertions
    in PL/pgSQL, Checking Assertions
    asynchronous commit, Asynchronous Commit
    AT TIME ZONE, AT TIME ZONE
    atan, Mathematical Functions and Operators
    atan2, Mathematical Functions and Operators
    atan2d, Mathematical Functions and Operators
    atand, Mathematical Functions and Operators
    authentication_timeout configuration parameter, Security and Authentication
    auth_delay, auth_delay
    auth_delay.milliseconds configuration parameter, Configuration Parameters
    auto-increment (see serial)
    autocommit
    bulk-loading data, Disable Autocommit
    psql, Variables
    autovacuum
    configuration parameters, Automatic Vacuuming
    general information, The Autovacuum Daemon
    autovacuum configuration parameter, Automatic Vacuuming
    autovacuum_analyze_scale_factor configuration parameter, Automatic Vacuuming
    autovacuum_analyze_threshold configuration parameter, Automatic Vacuuming
    autovacuum_freeze_max_age configuration parameter, Automatic Vacuuming
    autovacuum_max_workers configuration parameter, Automatic Vacuuming
    autovacuum_multixact_freeze_max_age configuration parameter, Automatic Vacuuming
    autovacuum_naptime configuration parameter, Automatic Vacuuming
    autovacuum_vacuum_cost_delay configuration parameter, Automatic Vacuuming
    autovacuum_vacuum_cost_limit configuration parameter, Automatic Vacuuming
    autovacuum_vacuum_scale_factor configuration parameter, Automatic Vacuuming
    autovacuum_vacuum_threshold configuration parameter, Automatic Vacuuming
    autovacuum_work_mem configuration parameter, Memory
    auto_explain, auto_explain
    auto_explain.log_analyze configuration parameter, Configuration Parameters
    auto_explain.log_buffers configuration parameter, Configuration Parameters
    auto_explain.log_format configuration parameter, Configuration Parameters
    auto_explain.log_min_duration configuration parameter, Configuration Parameters
    auto_explain.log_nested_statements configuration parameter, Configuration Parameters
    auto_explain.log_timing configuration parameter, Configuration Parameters
    auto_explain.log_triggers configuration parameter, Configuration Parameters
    auto_explain.log_verbose configuration parameter, Configuration Parameters
    auto_explain.sample_rate configuration parameter, Configuration Parameters
    avals, hstore Operators and Functions
    average, Aggregate Functions
    avg, Aggregate Functions

    B

    B-tree (see index)
    backend_flush_after configuration parameter, Asynchronous Behavior
    Background workers, Background Worker Processes
    backslash escapes, String Constants with C-style Escapes
    backslash_quote configuration parameter, Previous PostgreSQL Versions
    backup, Backup Control Functions, Backup and Restore
    base type, The PostgreSQL Type System
    BASE_BACKUP, Streaming Replication Protocol
    BEGIN, BEGIN
    BETWEEN, Comparison Functions and Operators
    BETWEEN SYMMETRIC, Comparison Functions and Operators
    BGWORKER_BACKEND_DATABASE_CONNECTION, Background Worker Processes
    BGWORKER_SHMEM_ACCESS, Background Worker Processes
    bgwriter_delay configuration parameter, Background Writer
    bgwriter_flush_after configuration parameter, Background Writer
    bgwriter_lru_maxpages configuration parameter, Background Writer
    bgwriter_lru_multiplier configuration parameter, Background Writer
    bigint, Numeric Constants, Integer Types
    bigserial, Serial Types
    binary data, Binary Data Types, Binary String Functions and Operators
    functions, Binary String Functions and Operators
    binary string
    concatenation, Binary String Functions and Operators
    length, Binary String Functions and Operators
    bison, Requirements
    bit string, Bit-string Constants, Bit String Types
    constant, Bit-string Constants
    data type, Bit String Types
    bit strings, Bit String Functions and Operators
    functions, Bit String Functions and Operators
    bitmap scan, Combining Multiple Indexes, Planner Method Configuration
    bit_and, Aggregate Functions
    bit_length, String Functions and Operators
    bit_or, Aggregate Functions
    BLOB (see large object)
    block_size configuration parameter, Preset Options
    bloom, bloom
    bonjour configuration parameter, Connection Settings
    bonjour_name configuration parameter, Connection Settings
    Boolean, Boolean Type
    data type, Boolean Type
    operators (see operators, logical)
    bool_and, Aggregate Functions
    bool_or, Aggregate Functions
    booting
    starting the server during, Starting the Database Server
    box, Geometric Functions and Operators
    box (data type), Boxes
    BRIN (see index)
    brin_desummarize_range, Index Maintenance Functions
    brin_metapage_info, BRIN Functions
    brin_page_items, BRIN Functions
    brin_page_type, BRIN Functions
    brin_revmap_data, BRIN Functions
    brin_summarize_new_values, Index Maintenance Functions
    brin_summarize_range, Index Maintenance Functions
    broadcast, Network Address Functions and Operators
    BSD Authentication, BSD Authentication
    btree_gin, btree_gin
    btree_gist, btree_gist
    btrim, String Functions and Operators, Binary String Functions and Operators
    bt_index_check, Functions
    bt_index_parent_check, Functions
    bt_metap, B-tree Functions
    bt_page_items, B-tree Functions
    bt_page_stats, B-tree Functions
    bytea, Binary Data Types
    bytea_output configuration parameter, Statement Behavior

    C

    C, libpq - C Library, ECPG - Embedded SQL in C
    C++, Using C++ for Extensibility
    canceling, Canceling Queries in Progress
    SQL command, Canceling Queries in Progress
    cardinality, Array Functions and Operators
    CASCADE, Dependency Tracking
    with DROP, Dependency Tracking
    foreign key action, Foreign Keys
    Cascading Replication, High Availability, Load Balancing, and Replication
    CASE, Conditional Expressions, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    case sensitivity
    of SQL commands, Identifiers and Key Words
    cast, CREATE CAST
    I/O conversion, CREATE CAST
    cbrt, Mathematical Functions and Operators
    ceil, Mathematical Functions and Operators
    ceiling, Mathematical Functions and Operators
    center, Geometric Functions and Operators
    Certificate, Certificate Authentication
    char, Character Types
    character, Character Types
    character set, Locale and Formatting, Preset Options, Character Set Support
    character string, String Constants, Character Types
    concatenation, String Functions and Operators
    constant, String Constants
    data types, Character Types
    length, String Functions and Operators
    character varying, Character Types
    char_length, String Functions and Operators
    check constraint, Check Constraints
    CHECK OPTION, CREATE VIEW
    checkpoint, WAL Configuration
    CHECKPOINT, CHECKPOINT
    checkpoint_completion_target configuration parameter, Checkpoints
    checkpoint_flush_after configuration parameter, Checkpoints
    checkpoint_timeout configuration parameter, Checkpoints
    checkpoint_warning configuration parameter, Checkpoints
    check_function_bodies configuration parameter, Statement Behavior
    chkpass, chkpass
    chr, String Functions and Operators
    cid, Object Identifier Types
    cidr, cidr
    circle, Circles, Geometric Functions and Operators
    citext, citext
    client authentication, Client Authentication
    timeout during, Security and Authentication
    client_encoding configuration parameter, Locale and Formatting
    client_min_messages configuration parameter, Statement Behavior
    clock_timestamp, Date/Time Functions and Operators
    CLOSE, CLOSE
    cluster
    of databases (see database cluster)
    CLUSTER, CLUSTER
    clusterdb, clusterdb
    clustering, High Availability, Load Balancing, and Replication
    cluster_name configuration parameter, Process Title
    cmax, System Columns
    cmin, System Columns
    COALESCE, COALESCE
    COLLATE, Collation Expressions
    collation, Collation Support
    in PL/pgSQL, Collation of PL/pgSQL Variables
    in SQL functions, SQL Functions with Collations
    collation for, System Information Functions
    column, Concepts, Table Basics
    adding, Adding a Column
    removing, Removing a Column
    renaming, Renaming a Column
    system column, System Columns
    column data type
    changing, Changing a Column's Data Type
    column reference, Column References
    col_description, System Information Functions
    comment, Comments
    about database objects, System Information Functions
    in SQL, Comments
    COMMENT, COMMENT
    COMMIT, COMMIT
    COMMIT PREPARED, COMMIT PREPARED
    commit_delay configuration parameter, Settings
    commit_siblings configuration parameter, Settings
    common table expression (see WITH)
    comparison, Comparison Functions and Operators, Subquery Expressions
    composite type, Row and Array Comparisons
    operators, Comparison Functions and Operators
    row constructor, Row and Array Comparisons
    subquery result row, Subquery Expressions
    compiling, Building libpq Programs
    libpq applications, Building libpq Programs
    composite type, Composite Types, The PostgreSQL Type System
    comparison, Row and Array Comparisons
    constant, Constructing Composite Values
    constructor, Row Constructors
    computed field, Using Composite Types in Queries
    concat, String Functions and Operators
    concat_ws, String Functions and Operators
    concurrency, Concurrency Control
    conditional expression, Conditional Expressions
    configuration
    of recovery
    of a standby server, Recovery Configuration
    of the server, Server Configuration
    of the server
    functions, Configuration Settings Functions
    configure, Installation Procedure
    config_file configuration parameter, File Locations
    conjunction, Logical Operators
    connectby, Functions Provided, connectby
    connection service file, The Connection Service File
    conninfo, Connection Strings
    constant, Constants
    constraint, Constraints
    adding, Adding a Constraint
    check, Check Constraints
    exclusion, Exclusion Constraints
    foreign key, Foreign Keys
    name, Check Constraints
    NOT NULL, Not-Null Constraints
    primary key, Primary Keys
    removing, Removing a Constraint
    unique, Unique Constraints
    constraint exclusion, Partitioning and Constraint Exclusion, Other Planner Options
    constraint_exclusion configuration parameter, Other Planner Options
    CONTINUE
    in PL/pgSQL, CONTINUE
    continuous archiving, Backup and Restore
    in standby, Continuous archiving in standby
    control file, Extension Files
    convert, String Functions and Operators
    convert_from, String Functions and Operators
    convert_to, String Functions and Operators
    COPY, Populating a Table With Rows, Functions Associated with the COPY Command, COPY
    with libpq, Functions Associated with the COPY Command
    corr, Aggregate Functions
    correlation, Aggregate Functions
    in the query planner, Extended Statistics
    cos, Mathematical Functions and Operators
    cosd, Mathematical Functions and Operators
    cot, Mathematical Functions and Operators
    cotd, Mathematical Functions and Operators
    count, Aggregate Functions
    covariance
    population, Aggregate Functions
    sample, Aggregate Functions
    covar_pop, Aggregate Functions
    covar_samp, Aggregate Functions
    cpu_index_tuple_cost configuration parameter, Planner Cost Constants
    cpu_operator_cost configuration parameter, Planner Cost Constants
    cpu_tuple_cost configuration parameter, Planner Cost Constants
    CREATE ACCESS METHOD, CREATE ACCESS METHOD
    CREATE AGGREGATE, CREATE AGGREGATE
    CREATE CAST, CREATE CAST
    CREATE COLLATION, CREATE COLLATION
    CREATE CONVERSION, CREATE CONVERSION
    CREATE DATABASE, Creating a Database, CREATE DATABASE
    CREATE DOMAIN, CREATE DOMAIN
    CREATE EVENT TRIGGER, CREATE EVENT TRIGGER
    CREATE EXTENSION, CREATE EXTENSION
    CREATE FOREIGN DATA WRAPPER, CREATE FOREIGN DATA WRAPPER
    CREATE FOREIGN TABLE, CREATE FOREIGN TABLE
    CREATE FUNCTION, CREATE FUNCTION
    CREATE GROUP, CREATE GROUP
    CREATE INDEX, CREATE INDEX
    CREATE LANGUAGE, CREATE LANGUAGE
    CREATE MATERIALIZED VIEW, CREATE MATERIALIZED VIEW
    CREATE OPERATOR, CREATE OPERATOR
    CREATE OPERATOR CLASS, CREATE OPERATOR CLASS
    CREATE OPERATOR FAMILY, CREATE OPERATOR FAMILY
    CREATE POLICY, CREATE POLICY
    CREATE PUBLICATION, CREATE PUBLICATION
    CREATE ROLE, Database Roles, CREATE ROLE
    CREATE RULE, CREATE RULE
    CREATE SCHEMA, CREATE SCHEMA
    CREATE SEQUENCE, CREATE SEQUENCE
    CREATE SERVER, CREATE SERVER
    CREATE STATISTICS, CREATE STATISTICS
    CREATE SUBSCRIPTION, CREATE SUBSCRIPTION
    CREATE TABLE, Creating a New Table, CREATE TABLE
    CREATE TABLE AS, CREATE TABLE AS
    CREATE TABLESPACE, Tablespaces, CREATE TABLESPACE
    CREATE TEXT SEARCH CONFIGURATION, CREATE TEXT SEARCH CONFIGURATION
    CREATE TEXT SEARCH DICTIONARY, CREATE TEXT SEARCH DICTIONARY
    CREATE TEXT SEARCH PARSER, CREATE TEXT SEARCH PARSER
    CREATE TEXT SEARCH TEMPLATE, CREATE TEXT SEARCH TEMPLATE
    CREATE TRANSFORM, CREATE TRANSFORM
    CREATE TRIGGER, CREATE TRIGGER
    CREATE TYPE, CREATE TYPE
    CREATE USER, CREATE USER
    CREATE USER MAPPING, CREATE USER MAPPING
    CREATE VIEW, CREATE VIEW
    createdb, Creating a Database, Creating a Database, createdb
    createuser, Database Roles, createuser
    CREATE_REPLICATION_SLOT, Streaming Replication Protocol
    cross compilation, Installation Procedure
    cross join, Joined Tables
    crosstab, crosstab(text), crosstabN(text), crosstab(text, text)
    crypt, crypt()
    cstring, Pseudo-Types
    ctid, System Columns
    CTID, View Rules in Non-SELECT Statements
    CUBE, GROUPING SETS, CUBE, and ROLLUP
    cube (extension), cube
    cume_dist, Window Functions
    hypothetical, Aggregate Functions
    current_catalog, System Information Functions
    current_database, System Information Functions
    current_date, Date/Time Functions and Operators
    current_logfiles
    and the log_destination configuration parameter, Where To Log
    and the pg_current_logfile function, System Information Functions
    current_query, System Information Functions
    current_role, System Information Functions
    current_schema, System Information Functions
    current_schemas, System Information Functions
    current_setting, Configuration Settings Functions
    current_time, Date/Time Functions and Operators
    current_timestamp, Date/Time Functions and Operators
    current_user, System Information Functions
    currval, Sequence Manipulation Functions
    cursor, Cursors, CLOSE, DECLARE, EXPLAIN, FETCH, MOVE
    CLOSE, CLOSE
    DECLARE, DECLARE
    FETCH, FETCH
    in PL/pgSQL, Cursors
    MOVE, MOVE
    showing the query plan, EXPLAIN
    cursor_tuple_fraction configuration parameter, Other Planner Options
    custom scan provider, Writing A Custom Scan Provider
    handler for, Writing A Custom Scan Provider
    Cygwin, Cygwin
    installation on, Cygwin

    D

    data area (see database cluster)
    data partitioning, High Availability, Load Balancing, and Replication
    data type, Data Types, Numeric Types, Enumerated Types, Type Conversion, The PostgreSQL Type System, The PostgreSQL Type System, Base Types in C-Language Functions, User-defined Types
    base, The PostgreSQL Type System
    category, Overview
    composite, The PostgreSQL Type System
    constant, Constants of Other Types
    conversion, Type Conversion
    enumerated (enum), Enumerated Types
    internal organization, Base Types in C-Language Functions
    numeric, Numeric Types
    type cast, Type Casts
    user-defined, User-defined Types
    database, Creating a Database, Managing Databases
    creating, Creating a Database
    privilege to create, Role Attributes
    database activity, Monitoring Database Activity
    monitoring, Monitoring Database Activity
    database cluster, Concepts, Creating a Database Cluster
    data_checksums configuration parameter, Preset Options
    data_directory configuration parameter, File Locations
    data_sync_retry configuration parameter, Error Handling
    date, Date/Time Types, Dates
    constants, Special Values
    current, Current Date/Time
    output format, Date/Time Output
    (see also formatting)
    DateStyle configuration parameter, Locale and Formatting
    date_part, Date/Time Functions and Operators, EXTRACT, date_part
    date_trunc, Date/Time Functions and Operators, date_trunc
    dblink, dblink, dblink
    dblink_build_sql_delete, dblink_build_sql_delete
    dblink_build_sql_insert, dblink_build_sql_insert
    dblink_build_sql_update, dblink_build_sql_update
    dblink_cancel_query, dblink_cancel_query
    dblink_close, dblink_close
    dblink_connect, dblink_connect
    dblink_connect_u, dblink_connect_u
    dblink_disconnect, dblink_disconnect
    dblink_error_message, dblink_error_message
    dblink_exec, dblink_exec
    dblink_fetch, dblink_fetch
    dblink_get_connections, dblink_get_connections
    dblink_get_notify, dblink_get_notify
    dblink_get_pkey, dblink_get_pkey
    dblink_get_result, dblink_get_result
    dblink_is_busy, dblink_is_busy
    dblink_open, dblink_open
    dblink_send_query, dblink_send_query
    db_user_namespace configuration parameter, Security and Authentication
    deadlock, Deadlocks
    timeout during, Lock Management
    deadlock_timeout configuration parameter, Lock Management
    DEALLOCATE, DEALLOCATE
    dearmor, armor(), dearmor()
    debug_assertions configuration parameter, Preset Options
    debug_deadlocks configuration parameter, Developer Options
    debug_pretty_print configuration parameter, What To Log
    debug_print_parse configuration parameter, What To Log
    debug_print_plan configuration parameter, What To Log
    debug_print_rewritten configuration parameter, What To Log
    decimal (see numeric)
    DECLARE, DECLARE
    decode, String Functions and Operators, Binary String Functions and Operators
    decode_bytea
    in PL/Perl, Utility Functions in PL/Perl
    decrypt, Raw Encryption Functions
    decrypt_iv, Raw Encryption Functions
    default value, Default Values
    changing, Changing a Column's Default Value
    default_statistics_target configuration parameter, Other Planner Options
    default_tablespace configuration parameter, Statement Behavior
    default_text_search_config configuration parameter, Locale and Formatting
    default_transaction_deferrable configuration parameter, Statement Behavior
    default_transaction_isolation configuration parameter, Statement Behavior
    default_transaction_read_only configuration parameter, Statement Behavior
    default_with_oids configuration parameter, Previous PostgreSQL Versions
    deferrable transaction
    setting, SET TRANSACTION
    setting default, Statement Behavior
    defined, hstore Operators and Functions
    degrees, Mathematical Functions and Operators
    delay, Delaying Execution
    DELETE, Deletions, Deleting Data, Returning Data From Modified Rows, DELETE
    RETURNING, Returning Data From Modified Rows
    delete, hstore Operators and Functions
    deleting, Deleting Data
    dense_rank, Window Functions
    hypothetical, Aggregate Functions
    diameter, Geometric Functions and Operators
    dict_int, dict_int
    dict_xsyn, dict_xsyn
    difference, Soundex
    digest, digest()
    dirty read, Transaction Isolation
    DISCARD, DISCARD
    disjunction, Logical Operators
    disk drive, WAL Internals
    disk space, Recovering Disk Space
    disk usage, Determining Disk Usage
    DISTINCT, Querying a Table, DISTINCT
    div, Mathematical Functions and Operators
    dmetaphone, Double Metaphone
    dmetaphone_alt, Double Metaphone
    DO, DO
    document, What Is a Document?
    text search, What Is a Document?
    dollar quoting, Dollar-quoted String Constants
    double precision, Floating-Point Types
    DROP ACCESS METHOD, DROP ACCESS METHOD
    DROP AGGREGATE, DROP AGGREGATE
    DROP CAST, DROP CAST
    DROP COLLATION, DROP COLLATION
    DROP CONVERSION, DROP CONVERSION
    DROP DATABASE, Destroying a Database, DROP DATABASE
    DROP DOMAIN, DROP DOMAIN
    DROP EVENT TRIGGER, DROP EVENT TRIGGER
    DROP EXTENSION, DROP EXTENSION
    DROP FOREIGN DATA WRAPPER, DROP FOREIGN DATA WRAPPER
    DROP FOREIGN TABLE, DROP FOREIGN TABLE
    DROP FUNCTION, DROP FUNCTION
    DROP GROUP, DROP GROUP
    DROP INDEX, DROP INDEX
    DROP LANGUAGE, DROP LANGUAGE
    DROP MATERIALIZED VIEW, DROP MATERIALIZED VIEW
    DROP OPERATOR, DROP OPERATOR
    DROP OPERATOR CLASS, DROP OPERATOR CLASS
    DROP OPERATOR FAMILY, DROP OPERATOR FAMILY
    DROP OWNED, DROP OWNED
    DROP POLICY, DROP POLICY
    DROP PUBLICATION, DROP PUBLICATION
    DROP ROLE, Database Roles, DROP ROLE
    DROP RULE, DROP RULE
    DROP SCHEMA, DROP SCHEMA
    DROP SEQUENCE, DROP SEQUENCE
    DROP SERVER, DROP SERVER
    DROP STATISTICS, DROP STATISTICS
    DROP SUBSCRIPTION, DROP SUBSCRIPTION
    DROP TABLE, Creating a New Table, DROP TABLE
    DROP TABLESPACE, DROP TABLESPACE
    DROP TEXT SEARCH CONFIGURATION, DROP TEXT SEARCH CONFIGURATION
    DROP TEXT SEARCH DICTIONARY, DROP TEXT SEARCH DICTIONARY
    DROP TEXT SEARCH PARSER, DROP TEXT SEARCH PARSER
    DROP TEXT SEARCH TEMPLATE, DROP TEXT SEARCH TEMPLATE
    DROP TRANSFORM, DROP TRANSFORM
    DROP TRIGGER, DROP TRIGGER
    DROP TYPE, DROP TYPE
    DROP USER, DROP USER
    DROP USER MAPPING, DROP USER MAPPING
    DROP VIEW, DROP VIEW
    dropdb, Destroying a Database, dropdb
    dropuser, Database Roles, dropuser
    DROP_REPLICATION_SLOT, Streaming Replication Protocol
    DTD, Creating XML Values
    DTrace, Installation Procedure, Dynamic Tracing
    duplicate, Querying a Table
    duplicates, DISTINCT
    dynamic loading, Other Defaults, Dynamic Loading
    dynamic_library_path, Dynamic Loading
    dynamic_library_path configuration parameter, Other Defaults
    dynamic_shared_memory_type configuration parameter, Memory

    E

    each, hstore Operators and Functions
    earth, Cube-based Earth Distances
    earthdistance, earthdistance
    earth_box, Cube-based Earth Distances
    earth_distance, Cube-based Earth Distances
    ECPG, ECPG - Embedded SQL in C
    ecpg, ecpg
    effective_cache_size configuration parameter, Planner Cost Constants
    effective_io_concurrency configuration parameter, Asynchronous Behavior
    elog, Reporting Errors Within the Server
    in PL/Perl, Utility Functions in PL/Perl
    in PL/Python, Utility Functions
    in PL/Tcl, Database Access from PL/Tcl
    embedded SQL, ECPG - Embedded SQL in C
    in C, ECPG - Embedded SQL in C
    enabled role, enabled_roles
    enable_bitmapscan configuration parameter, Planner Method Configuration
    enable_gathermerge configuration parameter, Planner Method Configuration
    enable_hashagg configuration parameter, Planner Method Configuration
    enable_hashjoin configuration parameter, Planner Method Configuration
    enable_indexonlyscan configuration parameter, Planner Method Configuration
    enable_indexscan configuration parameter, Planner Method Configuration
    enable_material configuration parameter, Planner Method Configuration
    enable_mergejoin configuration parameter, Planner Method Configuration
    enable_nestloop configuration parameter, Planner Method Configuration
    enable_seqscan configuration parameter, Planner Method Configuration
    enable_sort configuration parameter, Planner Method Configuration
    enable_tidscan configuration parameter, Planner Method Configuration
    encode, String Functions and Operators, Binary String Functions and Operators
    encode_array_constructor
    in PL/Perl, Utility Functions in PL/Perl
    encode_array_literal
    in PL/Perl, Utility Functions in PL/Perl
    encode_bytea
    in PL/Perl, Utility Functions in PL/Perl
    encode_typed_literal
    in PL/Perl, Utility Functions in PL/Perl
    encrypt, Raw Encryption Functions
    encryption, Encryption Options, pgcrypto
    for specific columns, pgcrypto
    encrypt_iv, Raw Encryption Functions
    END, END
    enumerated types, Enumerated Types
    enum_first, Enum Support Functions
    enum_last, Enum Support Functions
    enum_range, Enum Support Functions
    environment variable, Environment Variables
    ephemeral named relation
    registering with SPI, SPI_register_relation, SPI_register_trigger_data
    unregistering from SPI, SPI_unregister_relation
    ereport, Reporting Errors Within the Server
    error codes, PostgreSQL Error Codes
    libpq, Main Functions
    list of, PostgreSQL Error Codes
    error message, Connection Status Functions
    escape string syntax, String Constants with C-style Escapes
    escape_string_warning configuration parameter, Previous PostgreSQL Versions
    escaping strings, Escaping Strings for Inclusion in SQL Commands
    in libpq, Escaping Strings for Inclusion in SQL Commands
    event log, Registering Event Log on Windows
    event log, Registering Event Log on Windows
    event trigger, Event Triggers, Writing Event Trigger Functions in C
    in C, Writing Event Trigger Functions in C
    in PL/Tcl, Event Trigger Procedures in PL/Tcl
    event_source configuration parameter, Where To Log
    event_trigger, Pseudo-Types
    every, Aggregate Functions
    EXCEPT, Combining Queries
    exceptions
    in PL/pgSQL, Trapping Errors
    in PL/Tcl, Error Handling in PL/Tcl
    exclusion constraint, Exclusion Constraints
    EXECUTE, EXECUTE
    exist, hstore Operators and Functions
    EXISTS, Subquery Expressions
    EXIT
    in PL/pgSQL, EXIT
    exit_on_error configuration parameter, Error Handling
    exp, Mathematical Functions and Operators
    EXPLAIN, Using EXPLAIN, EXPLAIN
    expression, Value Expressions
    order of evaluation, Expression Evaluation Rules
    syntax, Value Expressions
    extending SQL, Extending SQL
    extension, Packaging Related Objects into an Extension
    externally maintained, Extensions
    external_pid_file configuration parameter, File Locations
    extract, Date/Time Functions and Operators, EXTRACT, date_part
    extra_float_digits configuration parameter, Locale and Formatting

    F

    factorial, Mathematical Functions and Operators
    failover, High Availability, Load Balancing, and Replication
    false, Boolean Type
    family, Network Address Functions and Operators
    fast path, The Fast-Path Interface
    fdw_handler, Pseudo-Types
    FETCH, FETCH
    field
    computed, Using Composite Types in Queries
    field selection, Field Selection
    file system mount points, Use of Secondary File Systems
    file_fdw, file_fdw
    FILTER, Aggregate Expressions
    first_value, Window Functions
    flex, Requirements
    float4 (see real)
    float8 (see double precision)
    floating point, Floating-Point Types
    floating-point
    display, Locale and Formatting
    floor, Mathematical Functions and Operators
    force_parallel_mode configuration parameter, Other Planner Options
    foreign data, Foreign Data
    foreign data wrapper, Writing A Foreign Data Wrapper
    handler for, Writing A Foreign Data Wrapper
    foreign key, Foreign Keys, Foreign Keys
    self-referential, Foreign Keys
    foreign table, Foreign Data
    format, String Functions and Operators, format
    use in PL/pgSQL, Executing Dynamic Commands
    formatting, Data Type Formatting Functions
    format_type, System Information Functions
    Free Space Map, Free Space Map
    FreeBSD
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    from_collapse_limit configuration parameter, Other Planner Options
    FSM (see Free Space Map)
    fsm_page_contents, General Functions
    fsync configuration parameter, Settings
    full text search, Text Search Types, Text Search Types, Full Text Search
    data types, Text Search Types
    functions and operators, Text Search Types
    full_page_writes configuration parameter, Settings
    function, Table Functions, Functions and Operators, Functions, Polymorphic Types, User-defined Functions, Query Language (SQL) Functions, Internal Functions, C-Language Functions
    default values for arguments, SQL Functions with Default Values for Arguments
    in the FROM clause, Table Functions
    internal, Internal Functions
    invocation, Function Calls
    mixed notation, Using Mixed Notation
    named argument, Arguments for SQL Functions
    named notation, Using Named Notation
    output parameter, SQL Functions with Output Parameters
    polymorphic, Polymorphic Types
    positional notation, Using Positional Notation
    RETURNS TABLE, SQL Functions Returning TABLE
    type resolution in an invocation, Functions
    user-defined, User-defined Functions, Query Language (SQL) Functions, C-Language Functions
    in C, C-Language Functions
    in SQL, Query Language (SQL) Functions
    variadic, SQL Functions with Variable Numbers of Arguments
    with SETOF, SQL Functions Returning Sets
    functional dependency, The GROUP BY and HAVING Clauses
    fuzzystrmatch, fuzzystrmatch

    G

    gc_to_sec, Cube-based Earth Distances
    generate_series, Set Returning Functions
    generate_subscripts, Set Returning Functions
    genetic query optimization, Genetic Query Optimizer
    gen_random_bytes, Random-Data Functions
    gen_random_uuid, Random-Data Functions
    gen_salt, gen_salt()
    GEQO (see genetic query optimization)
    geqo configuration parameter, Genetic Query Optimizer
    geqo_effort configuration parameter, Genetic Query Optimizer
    geqo_generations configuration parameter, Genetic Query Optimizer
    geqo_pool_size configuration parameter, Genetic Query Optimizer
    geqo_seed configuration parameter, Genetic Query Optimizer
    geqo_selection_bias configuration parameter, Genetic Query Optimizer
    geqo_threshold configuration parameter, Genetic Query Optimizer
    get_bit, Binary String Functions and Operators
    get_byte, Binary String Functions and Operators
    get_current_ts_config, Text Search Functions and Operators
    get_raw_page, General Functions
    GIN (see index)
    gin_clean_pending_list, Index Maintenance Functions
    gin_fuzzy_search_limit configuration parameter, Other Defaults
    gin_leafpage_items, GIN Functions
    gin_metapage_info, GIN Functions
    gin_page_opaque_info, GIN Functions
    gin_pending_list_limit configuration parameter, Statement Behavior
    GiST (see index)
    global data, Global Data in PL/Tcl
    in PL/Python, Sharing Data
    in PL/Tcl, Global Data in PL/Tcl
    GRANT, Privileges, GRANT
    GREATEST, GREATEST and LEAST, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    Gregorian calendar, History of Units
    GROUP BY, Aggregate Functions, The GROUP BY and HAVING Clauses
    grouping, The GROUP BY and HAVING Clauses
    GROUPING, Aggregate Functions
    GROUPING SETS, GROUPING SETS, CUBE, and ROLLUP
    GSSAPI, GSSAPI Authentication
    GUID, UUID Type

    H

    hash (see index)
    hash_bitmap_info, Hash Functions
    hash_metapage_info, Hash Functions
    hash_page_items, Hash Functions
    hash_page_stats, Hash Functions
    hash_page_type, Hash Functions
    has_any_column_privilege, System Information Functions
    has_column_privilege, System Information Functions
    has_database_privilege, System Information Functions
    has_foreign_data_wrapper_privilege, System Information Functions
    has_function_privilege, System Information Functions
    has_language_privilege, System Information Functions
    has_schema_privilege, System Information Functions
    has_sequence_privilege, System Information Functions
    has_server_privilege, System Information Functions
    has_tablespace_privilege, System Information Functions
    has_table_privilege, System Information Functions
    has_type_privilege, System Information Functions
    HAVING, Aggregate Functions, The GROUP BY and HAVING Clauses
    hba_file configuration parameter, File Locations
    heap_page_items, Heap Functions
    heap_page_item_attrs, Heap Functions
    height, Geometric Functions and Operators
    hierarchical database, Concepts
    high availability, High Availability, Load Balancing, and Replication
    history, A Brief History of PostgreSQL
    of PostgreSQL, A Brief History of PostgreSQL
    hmac, hmac()
    host, Network Address Functions and Operators
    host name, Parameter Key Words
    hostmask, Network Address Functions and Operators
    Hot Standby, High Availability, Load Balancing, and Replication
    hot_standby configuration parameter, Standby Servers
    hot_standby_feedback configuration parameter, Standby Servers
    HP-UX, HP-UX
    installation on, HP-UX
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    hstore, hstore, hstore Operators and Functions
    hstore_to_array, hstore Operators and Functions
    hstore_to_json, hstore Operators and Functions
    hstore_to_jsonb, hstore Operators and Functions
    hstore_to_jsonb_loose, hstore Operators and Functions
    hstore_to_json_loose, hstore Operators and Functions
    hstore_to_matrix, hstore Operators and Functions
    huge_pages configuration parameter, Memory
    hypothetical-set aggregate
    built-in, Aggregate Functions

    I

    icount, intarray Functions and Operators
    ICU, Installation Procedure, Managing Collations, Parameters
    ident, Ident Authentication
    identifier, Identifiers and Key Words
    length, Identifiers and Key Words
    syntax of, Identifiers and Key Words
    IDENTIFY_SYSTEM, Streaming Replication Protocol
    ident_file configuration parameter, File Locations
    idle_in_transaction_session_timeout configuration parameter, Statement Behavior
    idx, intarray Functions and Operators
    IFNULL, COALESCE
    ignore_checksum_failure configuration parameter, Developer Options
    ignore_system_indexes configuration parameter, Developer Options
    IMMUTABLE, Function Volatility Categories
    IMPORT FOREIGN SCHEMA, IMPORT FOREIGN SCHEMA
    IN, Subquery Expressions, Row and Array Comparisons
    include
    in configuration file, Managing Configuration File Contents
    include_dir
    in configuration file, Managing Configuration File Contents
    include_if_exists
    in configuration file, Managing Configuration File Contents
    index, Indexes, Multicolumn Indexes, Indexes and ORDER BY, Combining Multiple Indexes, Unique Indexes, Indexes on Expressions, Partial Indexes, Index-Only Scans, Examining Index Usage, GIN and GiST Index Types, GIN and GiST Index Types, Locking and Indexes, Interfacing Extensions To Indexes, Building Indexes Concurrently, Operators and Functions
    and ORDER BY, Indexes and ORDER BY
    B-tree, Index Types
    BRIN, Index Types, BRIN Indexes
    building concurrently, Building Indexes Concurrently
    combining multiple indexes, Combining Multiple Indexes
    examining usage, Examining Index Usage
    on expressions, Indexes on Expressions
    for user-defined data type, Interfacing Extensions To Indexes
    GIN, Index Types, GIN and GiST Index Types, GIN Indexes
    text search, GIN and GiST Index Types
    GiST, Index Types, GIN and GiST Index Types, GiST Indexes
    text search, GIN and GiST Index Types
    hash, Index Types
    index-only scans, Index-Only Scans
    locks, Locking and Indexes
    multicolumn, Multicolumn Indexes
    partial, Partial Indexes
    SP-GiST, Index Types, SP-GiST Indexes
    unique, Unique Indexes
    index scan, Planner Method Configuration
    index-only scan, Index-Only Scans
    index_am_handler, Pseudo-Types
    inet (data type), inet
    inet_client_addr, System Information Functions
    inet_client_port, System Information Functions
    inet_merge, Network Address Functions and Operators
    inet_same_family, Network Address Functions and Operators
    inet_server_addr, System Information Functions
    inet_server_port, System Information Functions
    information schema, The Information Schema
    inheritance, Inheritance, Inheritance
    initcap, String Functions and Operators
    initdb, Creating a Database Cluster, initdb
    Initialization Fork, The Initialization Fork
    input function, User-defined Types
    INSERT, Populating a Table With Rows, Inserting Data, Returning Data From Modified Rows, INSERT
    RETURNING, Returning Data From Modified Rows
    inserting, Inserting Data
    installation, Installation from Source Code
    on Windows, Installation from Source Code on Windows
    instr function, Appendix
    int2 (see smallint)
    int4 (see integer)
    int8 (see bigint)
    intagg, intagg
    intarray, intarray
    integer, Numeric Constants, Integer Types
    integer_datetimes configuration parameter, Preset Options
    interfaces
    externally maintained, Client Interfaces
    internal, Pseudo-Types
    INTERSECT, Combining Queries
    interval, Date/Time Types, Interval Input
    output format, Interval Output
    (see also formatting)
    IntervalStyle configuration parameter, Locale and Formatting
    intset, intarray Functions and Operators
    int_array_aggregate, Functions
    int_array_enum, Functions
    inverse distribution, Aggregate Functions
    IS DISTINCT FROM, Comparison Functions and Operators, Row and Array Comparisons
    IS DOCUMENT, IS DOCUMENT
    IS FALSE, Comparison Functions and Operators
    IS NOT DISTINCT FROM, Comparison Functions and Operators, Row and Array Comparisons
    IS NOT DOCUMENT, IS NOT DOCUMENT
    IS NOT FALSE, Comparison Functions and Operators
    IS NOT NULL, Comparison Functions and Operators
    IS NOT TRUE, Comparison Functions and Operators
    IS NOT UNKNOWN, Comparison Functions and Operators
    IS NULL, Comparison Functions and Operators, Platform and Client Compatibility
    IS TRUE, Comparison Functions and Operators
    IS UNKNOWN, Comparison Functions and Operators
    isclosed, Geometric Functions and Operators
    isempty, Range Functions and Operators
    isfinite, Date/Time Functions and Operators
    isn, isn
    ISNULL, Comparison Functions and Operators
    isn_weak, Functions and Operators
    isopen, Geometric Functions and Operators
    is_array_ref
    in PL/Perl, Utility Functions in PL/Perl
    is_valid, Functions and Operators

    J

    join, Joins Between Tables, Joined Tables, Controlling the Planner with Explicit JOIN Clauses
    controlling the order, Controlling the Planner with Explicit JOIN Clauses
    cross, Joined Tables
    left, Joined Tables
    natural, Joined Tables
    outer, Joins Between Tables, Joined Tables
    right, Joined Tables
    self, Joins Between Tables
    join_collapse_limit configuration parameter, Other Planner Options
    JSON, JSON Types, JSON Functions and Operators
    functions and operators, JSON Functions and Operators
    JSONB, JSON Types
    jsonb
    containment, jsonb Containment and Existence
    existence, jsonb Containment and Existence
    indexes on, jsonb Indexing
    jsonb_agg, Aggregate Functions
    jsonb_array_elements, JSON Functions and Operators
    jsonb_array_elements_text, JSON Functions and Operators
    jsonb_array_length, JSON Functions and Operators
    jsonb_build_array, JSON Functions and Operators
    jsonb_build_object, JSON Functions and Operators
    jsonb_each, JSON Functions and Operators
    jsonb_each_text, JSON Functions and Operators
    jsonb_extract_path, JSON Functions and Operators
    jsonb_extract_path_text, JSON Functions and Operators
    jsonb_insert, JSON Functions and Operators
    jsonb_object, JSON Functions and Operators
    jsonb_object_agg, Aggregate Functions
    jsonb_object_keys, JSON Functions and Operators
    jsonb_populate_record, JSON Functions and Operators
    jsonb_populate_recordset, JSON Functions and Operators
    jsonb_pretty, JSON Functions and Operators
    jsonb_set, JSON Functions and Operators
    jsonb_strip_nulls, JSON Functions and Operators
    jsonb_to_record, JSON Functions and Operators
    jsonb_to_recordset, JSON Functions and Operators
    jsonb_typeof, JSON Functions and Operators
    json_agg, Aggregate Functions
    json_array_elements, JSON Functions and Operators
    json_array_elements_text, JSON Functions and Operators
    json_array_length, JSON Functions and Operators
    json_build_array, JSON Functions and Operators
    json_build_object, JSON Functions and Operators
    json_each, JSON Functions and Operators
    json_each_text, JSON Functions and Operators
    json_extract_path, JSON Functions and Operators
    json_extract_path_text, JSON Functions and Operators
    json_object, JSON Functions and Operators
    json_object_agg, Aggregate Functions
    json_object_keys, JSON Functions and Operators
    json_populate_record, JSON Functions and Operators
    json_populate_recordset, JSON Functions and Operators
    json_strip_nulls, JSON Functions and Operators
    json_to_record, JSON Functions and Operators
    json_to_recordset, JSON Functions and Operators
    json_typeof, JSON Functions and Operators
    Julian date, Julian Dates
    justify_days, Date/Time Functions and Operators
    justify_hours, Date/Time Functions and Operators
    justify_interval, Date/Time Functions and Operators

    K

    key word, Identifiers and Key Words, SQL Key Words
    list of, SQL Key Words
    syntax of, Identifiers and Key Words
    krb_caseins_users configuration parameter, Security and Authentication
    krb_server_keyfile configuration parameter, Security and Authentication

    L

    label (see alias)
    lag, Window Functions
    language_handler, Pseudo-Types
    large object, Large Objects
    lastval, Sequence Manipulation Functions
    last_value, Window Functions
    LATERAL, LATERAL Subqueries
    in the FROM clause, LATERAL Subqueries
    latitude, Cube-based Earth Distances
    lca, Operators and Functions
    lc_collate configuration parameter, Preset Options
    lc_ctype configuration parameter, Preset Options
    lc_messages configuration parameter, Locale and Formatting
    lc_monetary configuration parameter, Locale and Formatting
    lc_numeric configuration parameter, Locale and Formatting
    lc_time configuration parameter, Locale and Formatting
    LDAP, Installation Procedure, LDAP Authentication
    LDAP connection parameter lookup, LDAP Lookup of Connection Parameters
    ldconfig, Shared Libraries
    lead, Window Functions
    LEAST, GREATEST and LEAST, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    left, String Functions and Operators
    left join, Joined Tables
    length, String Functions and Operators, Binary String Functions and Operators, Geometric Functions and Operators, Text Search Functions and Operators
    of a binary string (see binary strings, length)
    of a character string (see character string, length)
    length(tsvector), Manipulating Documents
    levenshtein, Levenshtein
    levenshtein_less_equal, Levenshtein
    lex, Requirements
    libedit, Requirements
    libperl, Requirements
    libpq, libpq - C Library, Retrieving Query Results Row-By-Row
    single-row mode, Retrieving Query Results Row-By-Row
    libpq-fe.h, libpq - C Library, Connection Status Functions
    libpq-int.h, Connection Status Functions
    libpython, Requirements
    library finalization function, Dynamic Loading
    library initialization function, Dynamic Loading
    LIKE, LIKE
    and locales, Behavior
    LIMIT, LIMIT and OFFSET
    line, Lines
    line segment, Line Segments
    linear regression, Aggregate Functions
    Linux
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    LISTEN, LISTEN
    listen_addresses configuration parameter, Connection Settings
    ll_to_earth, Cube-based Earth Distances
    ln, Mathematical Functions and Operators
    lo, lo
    LOAD, LOAD
    load balancing, High Availability, Load Balancing, and Replication
    locale, Creating a Database Cluster, Locale Support
    localtime, Date/Time Functions and Operators
    localtimestamp, Date/Time Functions and Operators
    local_preload_libraries configuration parameter, Shared Library Preloading
    lock, Explicit Locking, Advisory Locks, Viewing Locks
    advisory, Advisory Locks
    monitoring, Viewing Locks
    LOCK, Table-level Locks, LOCK
    lock_timeout configuration parameter, Statement Behavior
    log, Mathematical Functions and Operators
    log shipping, High Availability, Load Balancing, and Replication
    Logging
    current_logfiles file and the pg_current_logfile - function, System Information Functions
    pg_current_logfile function, System Information Functions
    logging_collector configuration parameter, Where To Log
    Logical Decoding, Logical Decoding, Logical Decoding
    login privilege, Role Attributes
    log_autovacuum_min_duration configuration parameter, Automatic Vacuuming
    log_btree_build_stats configuration parameter, Developer Options
    log_checkpoints configuration parameter, What To Log
    log_connections configuration parameter, What To Log
    log_destination configuration parameter, Where To Log
    log_directory configuration parameter, Where To Log
    log_disconnections configuration parameter, What To Log
    log_duration configuration parameter, What To Log
    log_error_verbosity configuration parameter, What To Log
    log_executor_stats configuration parameter, Statistics Monitoring
    log_filename configuration parameter, Where To Log
    log_file_mode configuration parameter, Where To Log
    log_hostname configuration parameter, What To Log
    log_line_prefix configuration parameter, What To Log
    log_lock_waits configuration parameter, What To Log
    log_min_duration_statement configuration parameter, When To Log
    log_min_error_statement configuration parameter, When To Log
    log_min_messages configuration parameter, When To Log
    log_parser_stats configuration parameter, Statistics Monitoring
    log_planner_stats configuration parameter, Statistics Monitoring
    log_replication_commands configuration parameter, What To Log
    log_rotation_age configuration parameter, Where To Log
    log_rotation_size configuration parameter, Where To Log
    log_statement configuration parameter, What To Log
    log_statement_stats configuration parameter, Statistics Monitoring
    log_temp_files configuration parameter, What To Log
    log_timezone configuration parameter, What To Log
    log_truncate_on_rotation configuration parameter, Where To Log
    longitude, Cube-based Earth Distances
    looks_like_number
    in PL/Perl, Utility Functions in PL/Perl
    loop, Simple Loops
    in PL/pgSQL, Simple Loops
    lower, String Functions and Operators, Range Functions and Operators
    and locales, Behavior
    lower_inc, Range Functions and Operators
    lower_inf, Range Functions and Operators
    lo_close, Closing a Large Object Descriptor
    lo_compat_privileges configuration parameter, Previous PostgreSQL Versions
    lo_creat, Creating a Large Object, Server-side Functions
    lo_create, Creating a Large Object
    lo_export, Exporting a Large Object, Server-side Functions
    lo_from_bytea, Server-side Functions
    lo_get, Server-side Functions
    lo_import, Importing a Large Object, Server-side Functions
    lo_import_with_oid, Importing a Large Object
    lo_lseek, Seeking in a Large Object
    lo_lseek64, Seeking in a Large Object
    lo_open, Opening an Existing Large Object
    lo_put, Server-side Functions
    lo_read, Reading Data from a Large Object
    lo_tell, Obtaining the Seek Position of a Large Object
    lo_tell64, Obtaining the Seek Position of a Large Object
    lo_truncate, Truncating a Large Object
    lo_truncate64, Truncating a Large Object
    lo_unlink, Removing a Large Object, Server-side Functions
    lo_write, Writing Data to a Large Object
    lpad, String Functions and Operators
    lseg, Line Segments, Geometric Functions and Operators
    LSN, WAL Internals
    ltree, ltree
    ltree2text, Operators and Functions
    ltrim, String Functions and Operators

    M

    MAC address (see macaddr)
    MAC address (EUI-64 format) (see macaddr)
    macaddr (data type), macaddr
    macaddr8 (data type), macaddr8
    macaddr8_set7bit, Network Address Functions and Operators
    macOS, macOS
    installation on, macOS
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    magic block, Dynamic Loading
    maintenance, Routine Database Maintenance Tasks
    maintenance_work_mem configuration parameter, Memory
    make, Requirements
    make_date, Date/Time Functions and Operators
    make_interval, Date/Time Functions and Operators
    make_time, Date/Time Functions and Operators
    make_timestamp, Date/Time Functions and Operators
    make_timestamptz, Date/Time Functions and Operators
    make_valid, Functions and Operators
    MANPATH, Environment Variables
    masklen, Network Address Functions and Operators
    materialized view, Materialized Views
    implementation through rules, Materialized Views
    materialized views, pg_matviews
    max, Aggregate Functions
    max_connections configuration parameter, Connection Settings
    max_files_per_process configuration parameter, Kernel Resource Usage
    max_function_args configuration parameter, Preset Options
    max_identifier_length configuration parameter, Preset Options
    max_index_keys configuration parameter, Preset Options
    max_locks_per_transaction configuration parameter, Lock Management
    max_logical_replication_workers configuration parameter, Subscribers
    max_parallel_workers configuration parameter, Asynchronous Behavior
    max_parallel_workers_per_gather configuration parameter, Asynchronous Behavior
    max_pred_locks_per_page configuration parameter, Lock Management
    max_pred_locks_per_relation configuration parameter, Lock Management
    max_pred_locks_per_transaction configuration parameter, Lock Management
    max_prepared_transactions configuration parameter, Memory
    max_replication_slots configuration parameter, Sending Server(s)
    max_stack_depth configuration parameter, Memory
    max_standby_archive_delay configuration parameter, Standby Servers
    max_standby_streaming_delay configuration parameter, Standby Servers
    max_sync_workers_per_subscription configuration parameter, Subscribers
    max_wal_senders configuration parameter, Sending Server(s)
    max_wal_size configuration parameter, Checkpoints
    max_worker_processes configuration parameter, Asynchronous Behavior
    md5, String Functions and Operators, Binary String Functions and Operators
    MD5, Password Authentication
    median, Aggregate Expressions
    (see also percentile)
    memory context
    in SPI, Memory Management
    memory overcommit, Linux Memory Overcommit
    metaphone, Metaphone
    min, Aggregate Functions
    MinGW, MinGW/Native Windows
    installation on, MinGW/Native Windows
    min_parallel_index_scan_size configuration parameter, Planner Cost Constants
    min_parallel_table_scan_size configuration parameter, Planner Cost Constants
    min_wal_size configuration parameter, Checkpoints
    mod, Mathematical Functions and Operators
    mode
    statistical, Aggregate Functions
    monitoring, Monitoring Database Activity
    database activity, Monitoring Database Activity
    MOVE, MOVE
    moving-aggregate mode, Moving-Aggregate Mode
    Multiversion Concurrency Control, Introduction
    MultiXactId, Multixacts and Wraparound
    MVCC, Introduction

    N

    name, Identifiers and Key Words
    qualified, Creating a Schema
    syntax of, Identifiers and Key Words
    unqualified, The Schema Search Path
    NaN (see not a number)
    natural join, Joined Tables
    negation, Logical Operators
    NetBSD
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    netmask, Network Address Functions and Operators
    network, Network Address Types, Network Address Functions and Operators
    data types, Network Address Types
    Network Attached Storage (NAS) (see Network File Systems)
    Network File Systems, Use of Network File Systems
    nextval, Sequence Manipulation Functions
    NFS (see Network File Systems)
    nlevel, Operators and Functions
    non-durable, Non-Durable Settings
    nonblocking connection, Database Connection Control Functions, Asynchronous Command Processing
    nonrepeatable read, Transaction Isolation
    normal_rand, normal_rand
    NOT (operator), Logical Operators
    not a number
    double precision, Floating-Point Types
    numeric (data type), Arbitrary Precision Numbers
    NOT IN, Subquery Expressions, Row and Array Comparisons
    not-null constraint, Not-Null Constraints
    notation, Calling Functions
    functions, Calling Functions
    notice processing, Notice Processing
    in libpq, Notice Processing
    notice processor, Notice Processing
    notice receiver, Notice Processing
    NOTIFY, Asynchronous Notification, NOTIFY
    in libpq, Asynchronous Notification
    NOTNULL, Comparison Functions and Operators
    now, Date/Time Functions and Operators
    npoints, Geometric Functions and Operators
    nth_value, Window Functions
    ntile, Window Functions
    null value
    with check constraints, Check Constraints
    comparing, Comparison Functions and Operators
    default value, Default Values
    in DISTINCT, DISTINCT
    in libpq, Retrieving Query Result Information
    in PL/Perl, PL/Perl Functions and Arguments
    in PL/Python, Null, None
    with unique constraints, Unique Constraints
    NULLIF, NULLIF
    number
    constant, Numeric Constants
    numeric, Numeric Constants
    numeric (data type), Arbitrary Precision Numbers
    numnode, Text Search Functions and Operators, Manipulating Queries
    num_nonnulls, Comparison Functions and Operators
    num_nulls, Comparison Functions and Operators
    NVL, COALESCE

    O

    object identifier, Object Identifier Types
    data type, Object Identifier Types
    object-oriented database, Concepts
    obj_description, System Information Functions
    octet_length, String Functions and Operators, Binary String Functions and Operators
    OFFSET, LIMIT and OFFSET
    OID
    column, System Columns
    in libpq, Retrieving Other Result Information
    oid, Object Identifier Types
    oid2name, oid2name
    old_snapshot_threshold configuration parameter, Asynchronous Behavior
    ON CONFLICT, INSERT
    ONLY, The FROM Clause
    OOM, Linux Memory Overcommit
    opaque, Pseudo-Types
    OpenBSD
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    OpenSSL, Installation Procedure
    (see also SSL)
    operator, Operators, Operator Precedence, Functions and Operators, Logical Operators, Operators, User-defined Operators
    invocation, Operator Invocations
    logical, Logical Operators
    precedence, Operator Precedence
    syntax, Operators
    type resolution in an invocation, Operators
    user-defined, User-defined Operators
    operator class, Operator Classes and Operator Families, Index Methods and Operator Classes
    operator family, Operator Classes and Operator Families, Operator Classes and Operator Families
    operator_precedence_warning configuration parameter, Previous PostgreSQL Versions
    OR (operator), Logical Operators
    Oracle, Porting from Oracle PL/SQL
    porting from PL/SQL to PL/pgSQL, Porting from Oracle PL/SQL
    ORDER BY, Querying a Table, Sorting Rows
    and locales, Behavior
    ordered-set aggregate, Aggregate Expressions
    built-in, Aggregate Functions
    ordering operator, System Dependencies on Operator Classes
    ordinality, Set Returning Functions
    outer join, Joined Tables
    output function, User-defined Types
    OVER clause, Window Function Calls
    overcommit, Linux Memory Overcommit
    OVERLAPS, Date/Time Functions and Operators
    overlay, String Functions and Operators, Binary String Functions and Operators
    overloading, Function Overloading
    functions, Function Overloading
    operators, User-defined Operators
    owner, Privileges

    P

    pageinspect, pageinspect
    page_checksum, General Functions
    page_header, General Functions
    palloc, Writing Code
    PAM, Installation Procedure, PAM Authentication
    parallel query, Parallel Query
    parallel_setup_cost configuration parameter, Planner Cost Constants
    parallel_tuple_cost configuration parameter, Planner Cost Constants
    parameter
    syntax, Positional Parameters
    parenthesis, Value Expressions
    parse_ident, String Functions and Operators
    partitioned table, Table Partitioning
    partitioning, Table Partitioning
    password, Role Attributes
    authentication, Password Authentication
    of the superuser, Creating a Database Cluster
    password file, The Password File
    passwordcheck, passwordcheck
    password_encryption configuration parameter, Security and Authentication
    path, Geometric Functions and Operators
    for schemas, Statement Behavior
    PATH, Environment Variables
    path (data type), Paths
    pattern matching, Pattern Matching
    patterns
    in psql and pg_dump, Patterns
    pclose, Geometric Functions and Operators
    peer, Peer Authentication
    percentile
    continuous, Aggregate Functions
    discrete, Aggregate Functions
    percent_rank, Window Functions
    hypothetical, Aggregate Functions
    performance, Performance Tips
    perl, Requirements
    Perl, PL/Perl - Perl Procedural Language
    permission (see privilege)
    pfree, Writing Code
    PGAPPNAME, Environment Variables
    pgbench, pgbench
    PGcancel, Canceling Queries in Progress
    PGCLIENTENCODING, Environment Variables
    PGconn, Database Connection Control Functions
    PGCONNECT_TIMEOUT, Environment Variables
    pgcrypto, pgcrypto
    PGDATA, Creating a Database Cluster
    PGDATABASE, Environment Variables
    PGDATESTYLE, Environment Variables
    PGEventProc, Event Callback Procedure
    PGGEQO, Environment Variables
    PGGSSLIB, Environment Variables
    PGHOST, Environment Variables
    PGHOSTADDR, Environment Variables
    PGKRBSRVNAME, Environment Variables
    PGLOCALEDIR, Environment Variables
    PGOPTIONS, Environment Variables
    PGPASSFILE, Environment Variables
    PGPASSWORD, Environment Variables
    PGPORT, Environment Variables
    pgp_armor_headers, pgp_armor_headers
    pgp_key_id, pgp_key_id()
    pgp_pub_decrypt, pgp_pub_decrypt()
    pgp_pub_decrypt_bytea, pgp_pub_decrypt()
    pgp_pub_encrypt, pgp_pub_encrypt()
    pgp_pub_encrypt_bytea, pgp_pub_encrypt()
    pgp_sym_decrypt, pgp_sym_decrypt()
    pgp_sym_decrypt_bytea, pgp_sym_decrypt()
    pgp_sym_encrypt, pgp_sym_encrypt()
    pgp_sym_encrypt_bytea, pgp_sym_encrypt()
    PGREQUIREPEER, Environment Variables
    PGREQUIRESSL, Environment Variables
    PGresult, Main Functions
    pgrowlocks, pgrowlocks, Overview
    PGSERVICE, Environment Variables
    PGSERVICEFILE, Environment Variables
    PGSSLCERT, Environment Variables
    PGSSLCOMPRESSION, Environment Variables
    PGSSLCRL, Environment Variables
    PGSSLKEY, Environment Variables
    PGSSLMODE, Environment Variables
    PGSSLROOTCERT, Environment Variables
    pgstatginindex, Functions
    pgstathashindex, Functions
    pgstatindex, Functions
    pgstattuple, pgstattuple, Functions
    pgstattuple_approx, Functions
    PGSYSCONFDIR, Environment Variables
    PGTARGETSESSIONATTRS, Environment Variables
    PGTZ, Environment Variables
    PGUSER, Environment Variables
    pgxs, Extension Building Infrastructure
    pg_advisory_lock, Advisory Lock Functions
    pg_advisory_lock_shared, Advisory Lock Functions
    pg_advisory_unlock, Advisory Lock Functions
    pg_advisory_unlock_all, Advisory Lock Functions
    pg_advisory_unlock_shared, Advisory Lock Functions
    pg_advisory_xact_lock, Advisory Lock Functions
    pg_advisory_xact_lock_shared, Advisory Lock Functions
    pg_aggregate, pg_aggregate
    pg_am, pg_am
    pg_amop, pg_amop
    pg_amproc, pg_amproc
    pg_archivecleanup, pg_archivecleanup
    pg_attrdef, pg_attrdef
    pg_attribute, pg_attribute
    pg_authid, pg_authid
    pg_auth_members, pg_auth_members
    pg_available_extensions, pg_available_extensions
    pg_available_extension_versions, pg_available_extension_versions
    pg_backend_pid, System Information Functions
    pg_backup_start_time, Backup Control Functions
    pg_basebackup, pg_basebackup
    pg_blocking_pids, System Information Functions
    pg_buffercache, pg_buffercache
    pg_buffercache_pages, pg_buffercache
    pg_cancel_backend, Server Signaling Functions
    pg_cast, pg_cast
    pg_class, pg_class
    pg_client_encoding, String Functions and Operators
    pg_collation, pg_collation
    pg_collation_actual_version, Database Object Management Functions
    pg_collation_is_visible, System Information Functions
    pg_column_size, Database Object Management Functions
    pg_config, pg_config, pg_config
    with - ecpg, Processing Embedded SQL Programs
    with libpq, Building libpq Programs
    with user-defined C functions, Writing Code
    pg_conf_load_time, System Information Functions
    pg_constraint, pg_constraint
    pg_controldata, pg_controldata
    pg_control_checkpoint, System Information Functions
    pg_control_init, System Information Functions
    pg_control_recovery, System Information Functions
    pg_control_system, System Information Functions
    pg_conversion, pg_conversion
    pg_conversion_is_visible, System Information Functions
    pg_create_logical_replication_slot, Replication Functions
    pg_create_physical_replication_slot, Replication Functions
    pg_create_restore_point, Backup Control Functions
    pg_ctl, Creating a Database Cluster, Starting the Database Server, pg_ctl
    pg_current_logfile, System Information Functions
    pg_current_wal_flush_lsn, Backup Control Functions
    pg_current_wal_insert_lsn, Backup Control Functions
    pg_current_wal_lsn, Backup Control Functions
    pg_cursors, pg_cursors
    pg_database, Template Databases, pg_database
    pg_database_size, Database Object Management Functions
    pg_db_role_setting, pg_db_role_setting
    pg_ddl_command, Pseudo-Types
    pg_default_acl, pg_default_acl
    pg_depend, pg_depend
    pg_describe_object, System Information Functions
    pg_description, pg_description
    pg_drop_replication_slot, Replication Functions
    pg_dump, pg_dump
    pg_dumpall, pg_dumpall
    use during upgrade, Upgrading Data via pg_dumpall
    pg_enum, pg_enum
    pg_event_trigger, pg_event_trigger
    pg_event_trigger_ddl_commands, Capturing Changes at Command End
    pg_event_trigger_dropped_objects, Processing Objects Dropped by a DDL Command
    pg_event_trigger_table_rewrite_oid, Handling a Table Rewrite Event
    pg_event_trigger_table_rewrite_reason, Handling a Table Rewrite Event
    pg_export_snapshot, Snapshot Synchronization Functions
    pg_extension, pg_extension
    pg_extension_config_dump, Extension Configuration Tables
    pg_filenode_relation, Database Object Management Functions
    pg_file_rename, adminpack
    pg_file_settings, pg_file_settings
    pg_file_unlink, adminpack
    pg_file_write, adminpack
    pg_foreign_data_wrapper, pg_foreign_data_wrapper
    pg_foreign_server, pg_foreign_server
    pg_foreign_table, pg_foreign_table
    pg_freespace, Functions
    pg_freespacemap, pg_freespacemap
    pg_function_is_visible, System Information Functions
    pg_get_constraintdef, System Information Functions
    pg_get_expr, System Information Functions
    pg_get_functiondef, System Information Functions
    pg_get_function_arguments, System Information Functions
    pg_get_function_identity_arguments, System Information Functions
    pg_get_function_result, System Information Functions
    pg_get_indexdef, System Information Functions
    pg_get_keywords, System Information Functions
    pg_get_object_address, System Information Functions
    pg_get_ruledef, System Information Functions
    pg_get_serial_sequence, System Information Functions
    pg_get_statisticsobjdef, System Information Functions
    pg_get_triggerdef, System Information Functions
    pg_get_userbyid, System Information Functions
    pg_get_viewdef, System Information Functions
    pg_group, pg_group
    pg_has_role, System Information Functions
    pg_hba.conf, The pg_hba.conf File
    pg_hba_file_rules, pg_hba_file_rules
    pg_ident.conf, User Name Maps
    pg_identify_object, System Information Functions
    pg_identify_object_as_address, System Information Functions
    pg_import_system_collations, Database Object Management Functions
    pg_index, pg_index
    pg_indexam_has_property, System Information Functions
    pg_indexes, pg_indexes
    pg_indexes_size, Database Object Management Functions
    pg_index_column_has_property, System Information Functions
    pg_index_has_property, System Information Functions
    pg_inherits, pg_inherits
    pg_init_privs, pg_init_privs
    pg_isready, pg_isready
    pg_is_in_backup, Backup Control Functions
    pg_is_in_recovery, Recovery Control Functions
    pg_is_other_temp_schema, System Information Functions
    pg_is_wal_replay_paused, Recovery Control Functions
    pg_language, pg_language
    pg_largeobject, pg_largeobject
    pg_largeobject_metadata, pg_largeobject_metadata
    pg_last_committed_xact, System Information Functions
    pg_last_wal_receive_lsn, Recovery Control Functions
    pg_last_wal_replay_lsn, Recovery Control Functions
    pg_last_xact_replay_timestamp, Recovery Control Functions
    pg_listening_channels, System Information Functions
    pg_locks, pg_locks
    pg_logdir_ls, adminpack
    pg_logical_emit_message, Replication Functions
    pg_logical_slot_get_binary_changes, Replication Functions
    pg_logical_slot_get_changes, Replication Functions
    pg_logical_slot_peek_binary_changes, Replication Functions
    pg_logical_slot_peek_changes, Replication Functions
    pg_lsn, pg_lsn Type
    pg_ls_dir, Generic File Access Functions
    pg_ls_logdir, Generic File Access Functions
    pg_ls_waldir, Generic File Access Functions
    pg_matviews, pg_matviews
    pg_my_temp_schema, System Information Functions
    pg_namespace, pg_namespace
    pg_notification_queue_usage, System Information Functions
    pg_notify, pg_notify
    pg_opclass, pg_opclass
    pg_opclass_is_visible, System Information Functions
    pg_operator, pg_operator
    pg_operator_is_visible, System Information Functions
    pg_opfamily, pg_opfamily
    pg_opfamily_is_visible, System Information Functions
    pg_options_to_table, System Information Functions
    pg_partitioned_table, pg_partitioned_table
    pg_pltemplate, pg_pltemplate
    pg_policies, pg_policies
    pg_policy, pg_policy
    pg_postmaster_start_time, System Information Functions
    pg_prepared_statements, pg_prepared_statements
    pg_prepared_xacts, pg_prepared_xacts
    pg_prewarm, pg_prewarm
    pg_proc, pg_proc
    pg_publication, pg_publication
    pg_publication_rel, pg_publication_rel
    pg_publication_tables, pg_publication_tables
    pg_range, pg_range
    pg_read_binary_file, Generic File Access Functions
    pg_read_file, Generic File Access Functions
    pg_receivewal, pg_receivewal
    pg_receivexlog, pg_receivexlog renamed to pg_receivewal (see pg_receivewal)
    pg_recvlogical, pg_recvlogical
    pg_relation_filenode, Database Object Management Functions
    pg_relation_filepath, Database Object Management Functions
    pg_relation_size, Database Object Management Functions
    pg_reload_conf, Server Signaling Functions
    pg_relpages, Functions
    pg_replication_origin, pg_replication_origin
    pg_replication_origin_advance, Replication Functions
    pg_replication_origin_create, Replication Functions
    pg_replication_origin_drop, Replication Functions
    pg_replication_origin_oid, Replication Functions
    pg_replication_origin_progress, Replication Functions
    pg_replication_origin_session_is_setup, Replication Functions
    pg_replication_origin_session_progress, Replication Functions
    pg_replication_origin_session_reset, Replication Functions
    pg_replication_origin_session_setup, Replication Functions
    pg_replication_origin_status, pg_replication_origin_status
    pg_replication_origin_xact_reset, Replication Functions
    pg_replication_origin_xact_setup, Replication Functions
    pg_replication_slots, pg_replication_slots
    pg_resetwal, pg_resetwal
    pg_resetxlog, pg_resetxlog renamed to pg_resetwal (see pg_resetwal)
    pg_restore, pg_restore
    pg_rewind, pg_rewind
    pg_rewrite, pg_rewrite
    pg_roles, pg_roles
    pg_rotate_logfile, Server Signaling Functions
    pg_rules, pg_rules
    pg_safe_snapshot_blocking_pids, System Information Functions
    pg_seclabel, pg_seclabel
    pg_seclabels, pg_seclabels
    pg_sequence, pg_sequence
    pg_sequences, pg_sequences
    pg_service.conf, The Connection Service File
    pg_settings, pg_settings
    pg_shadow, pg_shadow
    pg_shdepend, pg_shdepend
    pg_shdescription, pg_shdescription
    pg_shseclabel, pg_shseclabel
    pg_size_bytes, Database Object Management Functions
    pg_size_pretty, Database Object Management Functions
    pg_sleep, Delaying Execution
    pg_sleep_for, Delaying Execution
    pg_sleep_until, Delaying Execution
    pg_standby, pg_standby
    pg_start_backup, Backup Control Functions
    pg_statio_all_indexes, Viewing Statistics
    pg_statio_all_sequences, Viewing Statistics
    pg_statio_all_tables, Viewing Statistics
    pg_statio_sys_indexes, Viewing Statistics
    pg_statio_sys_sequences, Viewing Statistics
    pg_statio_sys_tables, Viewing Statistics
    pg_statio_user_indexes, Viewing Statistics
    pg_statio_user_sequences, Viewing Statistics
    pg_statio_user_tables, Viewing Statistics
    pg_statistic, Single-Column Statistics, pg_statistic
    pg_statistics_obj_is_visible, System Information Functions
    pg_statistic_ext, Extended Statistics, pg_statistic_ext
    pg_stats, Single-Column Statistics, pg_stats
    pg_stat_activity, Viewing Statistics
    pg_stat_all_indexes, Viewing Statistics
    pg_stat_all_tables, Viewing Statistics
    pg_stat_archiver, Viewing Statistics
    pg_stat_bgwriter, Viewing Statistics
    pg_stat_clear_snapshot, Statistics Functions
    pg_stat_database, Viewing Statistics
    pg_stat_database_conflicts, Viewing Statistics
    pg_stat_file, Generic File Access Functions
    pg_stat_get_activity, Statistics Functions
    pg_stat_get_snapshot_timestamp, Statistics Functions
    pg_stat_progress_vacuum, Viewing Statistics
    pg_stat_replication, Viewing Statistics
    pg_stat_reset, Statistics Functions
    pg_stat_reset_shared, Statistics Functions
    pg_stat_reset_single_function_counters, Statistics Functions
    pg_stat_reset_single_table_counters, Statistics Functions
    pg_stat_ssl, Viewing Statistics
    pg_stat_statements, pg_stat_statements
    function, Functions
    pg_stat_statements_reset, Functions
    pg_stat_subscription, Viewing Statistics
    pg_stat_sys_indexes, Viewing Statistics
    pg_stat_sys_tables, Viewing Statistics
    pg_stat_user_functions, Viewing Statistics
    pg_stat_user_indexes, Viewing Statistics
    pg_stat_user_tables, Viewing Statistics
    pg_stat_wal_receiver, Viewing Statistics
    pg_stat_xact_all_tables, Viewing Statistics
    pg_stat_xact_sys_tables, Viewing Statistics
    pg_stat_xact_user_functions, Viewing Statistics
    pg_stat_xact_user_tables, Viewing Statistics
    pg_stop_backup, Backup Control Functions
    pg_subscription, pg_subscription
    pg_subscription_rel, pg_subscription_rel
    pg_switch_wal, Backup Control Functions
    pg_tables, pg_tables
    pg_tablespace, pg_tablespace
    pg_tablespace_databases, System Information Functions
    pg_tablespace_location, System Information Functions
    pg_tablespace_size, Database Object Management Functions
    pg_table_is_visible, System Information Functions
    pg_table_size, Database Object Management Functions
    pg_temp, Statement Behavior
    securing functions, Writing SECURITY DEFINER Functions Safely
    pg_terminate_backend, Server Signaling Functions
    pg_test_fsync, pg_test_fsync
    pg_test_timing, pg_test_timing
    pg_timezone_abbrevs, pg_timezone_abbrevs
    pg_timezone_names, pg_timezone_names
    pg_total_relation_size, Database Object Management Functions
    pg_transform, pg_transform
    pg_trgm, pg_trgm
    pg_trgm.similarity_threshold configuration parameter, GUC Parameters
    pg_trgm.word_similarity_threshold configuration parameter - , GUC Parameters
    pg_trigger, pg_trigger
    pg_try_advisory_lock, Advisory Lock Functions
    pg_try_advisory_lock_shared, Advisory Lock Functions
    pg_try_advisory_xact_lock, Advisory Lock Functions
    pg_try_advisory_xact_lock_shared, Advisory Lock Functions
    pg_ts_config, pg_ts_config
    pg_ts_config_is_visible, System Information Functions
    pg_ts_config_map, pg_ts_config_map
    pg_ts_dict, pg_ts_dict
    pg_ts_dict_is_visible, System Information Functions
    pg_ts_parser, pg_ts_parser
    pg_ts_parser_is_visible, System Information Functions
    pg_ts_template, pg_ts_template
    pg_ts_template_is_visible, System Information Functions
    pg_type, pg_type
    pg_typeof, System Information Functions
    pg_type_is_visible, System Information Functions
    pg_upgrade, pg_upgrade
    pg_user, pg_user
    pg_user_mapping, pg_user_mapping
    pg_user_mappings, pg_user_mappings
    pg_views, pg_views
    pg_visibility, pg_visibility
    pg_waldump, pg_waldump
    pg_walfile_name, Backup Control Functions
    pg_walfile_name_offset, Backup Control Functions
    pg_wal_lsn_diff, Backup Control Functions
    pg_wal_replay_pause, Recovery Control Functions
    pg_wal_replay_resume, Recovery Control Functions
    pg_xact_commit_timestamp, System Information Functions
    pg_xlogdump, pg_xlogdump renamed to pg_waldump (see pg_waldump)
    phantom read, Transaction Isolation
    phraseto_tsquery, Text Search Functions and Operators, Parsing Queries
    pi, Mathematical Functions and Operators
    PIC, Compiling and Linking Dynamically-loaded Functions
    PID
    determining PID of server process
    in libpq, Connection Status Functions
    PITR, Backup and Restore
    PITR standby, High Availability, Load Balancing, and Replication
    pkg-config, Installation Procedure
    with + Z

    A

    abbrev, Network Address Functions and Operators
    ABORT, ABORT
    abs, Mathematical Functions and Operators
    acos, Mathematical Functions and Operators
    acosd, Mathematical Functions and Operators
    administration tools
    externally maintained, Administration Tools
    adminpack, adminpack
    advisory lock, Advisory Locks
    age, Date/Time Functions and Operators
    aggregate function, Aggregate Functions, Aggregate Expressions, Aggregate Functions, User-defined Aggregates
    built-in, Aggregate Functions
    invocation, Aggregate Expressions
    moving aggregate, Moving-Aggregate Mode
    ordered set, Ordered-Set Aggregates
    partial aggregation, Partial Aggregation
    polymorphic, Polymorphic and Variadic Aggregates
    support functions for, Support Functions for Aggregates
    user-defined, User-defined Aggregates
    variadic, Polymorphic and Variadic Aggregates
    AIX, AIX
    installation on, AIX
    IPC configuration, Shared Memory and Semaphores
    akeys, hstore Operators and Functions
    alias, Table and Column Aliases, Column Labels
    for table name in query, Joins Between Tables
    in the FROM clause, Table and Column Aliases
    in the select list, Column Labels
    ALL, Subquery Expressions, Row and Array Comparisons
    allow_system_table_mods configuration parameter, Developer Options
    ALTER AGGREGATE, ALTER AGGREGATE
    ALTER COLLATION, ALTER COLLATION
    ALTER CONVERSION, ALTER CONVERSION
    ALTER DATABASE, ALTER DATABASE
    ALTER DEFAULT PRIVILEGES, ALTER DEFAULT PRIVILEGES
    ALTER DOMAIN, ALTER DOMAIN
    ALTER EVENT TRIGGER, ALTER EVENT TRIGGER
    ALTER EXTENSION, ALTER EXTENSION
    ALTER FOREIGN DATA WRAPPER, ALTER FOREIGN DATA WRAPPER
    ALTER FOREIGN TABLE, ALTER FOREIGN TABLE
    ALTER FUNCTION, ALTER FUNCTION
    ALTER GROUP, ALTER GROUP
    ALTER INDEX, ALTER INDEX
    ALTER LANGUAGE, ALTER LANGUAGE
    ALTER LARGE OBJECT, ALTER LARGE OBJECT
    ALTER MATERIALIZED VIEW, ALTER MATERIALIZED VIEW
    ALTER OPERATOR, ALTER OPERATOR
    ALTER OPERATOR CLASS, ALTER OPERATOR CLASS
    ALTER OPERATOR FAMILY, ALTER OPERATOR FAMILY
    ALTER POLICY, ALTER POLICY
    ALTER PUBLICATION, ALTER PUBLICATION
    ALTER ROLE, Role Attributes, ALTER ROLE
    ALTER RULE, ALTER RULE
    ALTER SCHEMA, ALTER SCHEMA
    ALTER SEQUENCE, ALTER SEQUENCE
    ALTER SERVER, ALTER SERVER
    ALTER STATISTICS, ALTER STATISTICS
    ALTER SUBSCRIPTION, ALTER SUBSCRIPTION
    ALTER SYSTEM, ALTER SYSTEM
    ALTER TABLE, ALTER TABLE
    ALTER TABLESPACE, ALTER TABLESPACE
    ALTER TEXT SEARCH CONFIGURATION, ALTER TEXT SEARCH CONFIGURATION
    ALTER TEXT SEARCH DICTIONARY, ALTER TEXT SEARCH DICTIONARY
    ALTER TEXT SEARCH PARSER, ALTER TEXT SEARCH PARSER
    ALTER TEXT SEARCH TEMPLATE, ALTER TEXT SEARCH TEMPLATE
    ALTER TRIGGER, ALTER TRIGGER
    ALTER TYPE, ALTER TYPE
    ALTER USER, ALTER USER
    ALTER USER MAPPING, ALTER USER MAPPING
    ALTER VIEW, ALTER VIEW
    amcheck, amcheck
    ANALYZE, Updating Planner Statistics, ANALYZE
    AND (operator), Logical Operators
    anonymous code blocks, DO
    any, Pseudo-Types
    ANY, Aggregate Functions, Subquery Expressions, Row and Array Comparisons
    anyarray, Pseudo-Types
    anyelement, Pseudo-Types
    anyenum, Pseudo-Types
    anynonarray, Pseudo-Types
    anyrange, Pseudo-Types
    applicable role, applicable_roles
    application_name configuration parameter, What To Log
    arbitrary precision numbers, Arbitrary Precision Numbers
    archive_cleanup_command recovery parameter, Archive Recovery Settings
    archive_command configuration parameter, Archiving
    archive_mode configuration parameter, Archiving
    archive_timeout configuration parameter, Archiving
    area, Geometric Functions and Operators
    armor, armor(), dearmor()
    array, Arrays
    accessing, Accessing Arrays
    constant, Array Value Input
    constructor, Array Constructors
    declaration, Declaration of Array Types
    I/O, Array Input and Output Syntax
    modifying, Modifying Arrays
    of user-defined type, User-defined Types
    searching, Searching in Arrays
    ARRAY, Array Constructors, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    array_agg, Aggregate Functions, Functions
    array_append, Array Functions and Operators
    array_cat, Array Functions and Operators
    array_dims, Array Functions and Operators
    array_fill, Array Functions and Operators
    array_length, Array Functions and Operators
    array_lower, Array Functions and Operators
    array_ndims, Array Functions and Operators
    array_nulls configuration parameter, Previous PostgreSQL Versions
    array_position, Array Functions and Operators
    array_positions, Array Functions and Operators
    array_prepend, Array Functions and Operators
    array_remove, Array Functions and Operators
    array_replace, Array Functions and Operators
    array_to_json, JSON Functions and Operators
    array_to_string, Array Functions and Operators
    array_to_tsvector, Text Search Functions and Operators
    array_upper, Array Functions and Operators
    ascii, String Functions and Operators
    asin, Mathematical Functions and Operators
    asind, Mathematical Functions and Operators
    ASSERT
    in PL/pgSQL, Checking Assertions
    assertions
    in PL/pgSQL, Checking Assertions
    asynchronous commit, Asynchronous Commit
    AT TIME ZONE, AT TIME ZONE
    atan, Mathematical Functions and Operators
    atan2, Mathematical Functions and Operators
    atan2d, Mathematical Functions and Operators
    atand, Mathematical Functions and Operators
    authentication_timeout configuration parameter, Security and Authentication
    auth_delay, auth_delay
    auth_delay.milliseconds configuration parameter, Configuration Parameters
    auto-increment (see serial)
    autocommit
    bulk-loading data, Disable Autocommit
    psql, Variables
    autovacuum
    configuration parameters, Automatic Vacuuming
    general information, The Autovacuum Daemon
    autovacuum configuration parameter, Automatic Vacuuming
    autovacuum_analyze_scale_factor configuration parameter, Automatic Vacuuming
    autovacuum_analyze_threshold configuration parameter, Automatic Vacuuming
    autovacuum_freeze_max_age configuration parameter, Automatic Vacuuming
    autovacuum_max_workers configuration parameter, Automatic Vacuuming
    autovacuum_multixact_freeze_max_age configuration parameter, Automatic Vacuuming
    autovacuum_naptime configuration parameter, Automatic Vacuuming
    autovacuum_vacuum_cost_delay configuration parameter, Automatic Vacuuming
    autovacuum_vacuum_cost_limit configuration parameter, Automatic Vacuuming
    autovacuum_vacuum_scale_factor configuration parameter, Automatic Vacuuming
    autovacuum_vacuum_threshold configuration parameter, Automatic Vacuuming
    autovacuum_work_mem configuration parameter, Memory
    auto_explain, auto_explain
    auto_explain.log_analyze configuration parameter, Configuration Parameters
    auto_explain.log_buffers configuration parameter, Configuration Parameters
    auto_explain.log_format configuration parameter, Configuration Parameters
    auto_explain.log_min_duration configuration parameter, Configuration Parameters
    auto_explain.log_nested_statements configuration parameter, Configuration Parameters
    auto_explain.log_timing configuration parameter, Configuration Parameters
    auto_explain.log_triggers configuration parameter, Configuration Parameters
    auto_explain.log_verbose configuration parameter, Configuration Parameters
    auto_explain.sample_rate configuration parameter, Configuration Parameters
    avals, hstore Operators and Functions
    average, Aggregate Functions
    avg, Aggregate Functions

    B

    B-tree (see index)
    backend_flush_after configuration parameter, Asynchronous Behavior
    Background workers, Background Worker Processes
    backslash escapes, String Constants with C-style Escapes
    backslash_quote configuration parameter, Previous PostgreSQL Versions
    backup, Backup Control Functions, Backup and Restore
    base type, The PostgreSQL Type System
    BASE_BACKUP, Streaming Replication Protocol
    BEGIN, BEGIN
    BETWEEN, Comparison Functions and Operators
    BETWEEN SYMMETRIC, Comparison Functions and Operators
    BGWORKER_BACKEND_DATABASE_CONNECTION, Background Worker Processes
    BGWORKER_SHMEM_ACCESS, Background Worker Processes
    bgwriter_delay configuration parameter, Background Writer
    bgwriter_flush_after configuration parameter, Background Writer
    bgwriter_lru_maxpages configuration parameter, Background Writer
    bgwriter_lru_multiplier configuration parameter, Background Writer
    bigint, Numeric Constants, Integer Types
    bigserial, Serial Types
    binary data, Binary Data Types, Binary String Functions and Operators
    functions, Binary String Functions and Operators
    binary string
    concatenation, Binary String Functions and Operators
    length, Binary String Functions and Operators
    bison, Requirements
    bit string, Bit-string Constants, Bit String Types
    constant, Bit-string Constants
    data type, Bit String Types
    bit strings, Bit String Functions and Operators
    functions, Bit String Functions and Operators
    bitmap scan, Combining Multiple Indexes, Planner Method Configuration
    bit_and, Aggregate Functions
    bit_length, String Functions and Operators
    bit_or, Aggregate Functions
    BLOB (see large object)
    block_size configuration parameter, Preset Options
    bloom, bloom
    bonjour configuration parameter, Connection Settings
    bonjour_name configuration parameter, Connection Settings
    Boolean, Boolean Type
    data type, Boolean Type
    operators (see operators, logical)
    bool_and, Aggregate Functions
    bool_or, Aggregate Functions
    booting
    starting the server during, Starting the Database Server
    box, Geometric Functions and Operators
    box (data type), Boxes
    BRIN (see index)
    brin_desummarize_range, Index Maintenance Functions
    brin_metapage_info, BRIN Functions
    brin_page_items, BRIN Functions
    brin_page_type, BRIN Functions
    brin_revmap_data, BRIN Functions
    brin_summarize_new_values, Index Maintenance Functions
    brin_summarize_range, Index Maintenance Functions
    broadcast, Network Address Functions and Operators
    BSD Authentication, BSD Authentication
    btree_gin, btree_gin
    btree_gist, btree_gist
    btrim, String Functions and Operators, Binary String Functions and Operators
    bt_index_check, Functions
    bt_index_parent_check, Functions
    bt_metap, B-tree Functions
    bt_page_items, B-tree Functions
    bt_page_stats, B-tree Functions
    bytea, Binary Data Types
    bytea_output configuration parameter, Statement Behavior

    C

    C, libpq - C Library, ECPG - Embedded SQL in C
    C++, Using C++ for Extensibility
    canceling, Canceling Queries in Progress
    SQL command, Canceling Queries in Progress
    cardinality, Array Functions and Operators
    CASCADE, Dependency Tracking
    with DROP, Dependency Tracking
    foreign key action, Foreign Keys
    Cascading Replication, High Availability, Load Balancing, and Replication
    CASE, Conditional Expressions, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    case sensitivity
    of SQL commands, Identifiers and Key Words
    cast, CREATE CAST
    I/O conversion, CREATE CAST
    cbrt, Mathematical Functions and Operators
    ceil, Mathematical Functions and Operators
    ceiling, Mathematical Functions and Operators
    center, Geometric Functions and Operators
    Certificate, Certificate Authentication
    char, Character Types
    character, Character Types
    character set, Locale and Formatting, Preset Options, Character Set Support
    character string, String Constants, Character Types
    concatenation, String Functions and Operators
    constant, String Constants
    data types, Character Types
    length, String Functions and Operators
    character varying, Character Types
    char_length, String Functions and Operators
    check constraint, Check Constraints
    CHECK OPTION, CREATE VIEW
    checkpoint, WAL Configuration
    CHECKPOINT, CHECKPOINT
    checkpoint_completion_target configuration parameter, Checkpoints
    checkpoint_flush_after configuration parameter, Checkpoints
    checkpoint_timeout configuration parameter, Checkpoints
    checkpoint_warning configuration parameter, Checkpoints
    check_function_bodies configuration parameter, Statement Behavior
    chkpass, chkpass
    chr, String Functions and Operators
    cid, Object Identifier Types
    cidr, cidr
    circle, Circles, Geometric Functions and Operators
    citext, citext
    client authentication, Client Authentication
    timeout during, Security and Authentication
    client_encoding configuration parameter, Locale and Formatting
    client_min_messages configuration parameter, Statement Behavior
    clock_timestamp, Date/Time Functions and Operators
    CLOSE, CLOSE
    cluster
    of databases (see database cluster)
    CLUSTER, CLUSTER
    clusterdb, clusterdb
    clustering, High Availability, Load Balancing, and Replication
    cluster_name configuration parameter, Process Title
    cmax, System Columns
    cmin, System Columns
    COALESCE, COALESCE
    COLLATE, Collation Expressions
    collation, Collation Support
    in PL/pgSQL, Collation of PL/pgSQL Variables
    in SQL functions, SQL Functions with Collations
    collation for, System Information Functions
    column, Concepts, Table Basics
    adding, Adding a Column
    removing, Removing a Column
    renaming, Renaming a Column
    system column, System Columns
    column data type
    changing, Changing a Column's Data Type
    column reference, Column References
    col_description, System Information Functions
    comment, Comments
    about database objects, System Information Functions
    in SQL, Comments
    COMMENT, COMMENT
    COMMIT, COMMIT
    COMMIT PREPARED, COMMIT PREPARED
    commit_delay configuration parameter, Settings
    commit_siblings configuration parameter, Settings
    common table expression (see WITH)
    comparison, Comparison Functions and Operators, Subquery Expressions
    composite type, Row and Array Comparisons
    operators, Comparison Functions and Operators
    row constructor, Row and Array Comparisons
    subquery result row, Subquery Expressions
    compiling, Building libpq Programs
    libpq applications, Building libpq Programs
    composite type, Composite Types, The PostgreSQL Type System
    comparison, Row and Array Comparisons
    constant, Constructing Composite Values
    constructor, Row Constructors
    computed field, Using Composite Types in Queries
    concat, String Functions and Operators
    concat_ws, String Functions and Operators
    concurrency, Concurrency Control
    conditional expression, Conditional Expressions
    configuration
    of recovery
    of a standby server, Recovery Configuration
    of the server, Server Configuration
    of the server
    functions, Configuration Settings Functions
    configure, Installation Procedure
    config_file configuration parameter, File Locations
    conjunction, Logical Operators
    connectby, Functions Provided, connectby
    connection service file, The Connection Service File
    conninfo, Connection Strings
    constant, Constants
    constraint, Constraints
    adding, Adding a Constraint
    check, Check Constraints
    exclusion, Exclusion Constraints
    foreign key, Foreign Keys
    name, Check Constraints
    NOT NULL, Not-Null Constraints
    primary key, Primary Keys
    removing, Removing a Constraint
    unique, Unique Constraints
    constraint exclusion, Partitioning and Constraint Exclusion, Other Planner Options
    constraint_exclusion configuration parameter, Other Planner Options
    CONTINUE
    in PL/pgSQL, CONTINUE
    continuous archiving, Backup and Restore
    in standby, Continuous archiving in standby
    control file, Extension Files
    convert, String Functions and Operators
    convert_from, String Functions and Operators
    convert_to, String Functions and Operators
    COPY, Populating a Table With Rows, Functions Associated with the COPY Command, COPY
    with libpq, Functions Associated with the COPY Command
    corr, Aggregate Functions
    correlation, Aggregate Functions
    in the query planner, Extended Statistics
    cos, Mathematical Functions and Operators
    cosd, Mathematical Functions and Operators
    cot, Mathematical Functions and Operators
    cotd, Mathematical Functions and Operators
    count, Aggregate Functions
    covariance
    population, Aggregate Functions
    sample, Aggregate Functions
    covar_pop, Aggregate Functions
    covar_samp, Aggregate Functions
    cpu_index_tuple_cost configuration parameter, Planner Cost Constants
    cpu_operator_cost configuration parameter, Planner Cost Constants
    cpu_tuple_cost configuration parameter, Planner Cost Constants
    CREATE ACCESS METHOD, CREATE ACCESS METHOD
    CREATE AGGREGATE, CREATE AGGREGATE
    CREATE CAST, CREATE CAST
    CREATE COLLATION, CREATE COLLATION
    CREATE CONVERSION, CREATE CONVERSION
    CREATE DATABASE, Creating a Database, CREATE DATABASE
    CREATE DOMAIN, CREATE DOMAIN
    CREATE EVENT TRIGGER, CREATE EVENT TRIGGER
    CREATE EXTENSION, CREATE EXTENSION
    CREATE FOREIGN DATA WRAPPER, CREATE FOREIGN DATA WRAPPER
    CREATE FOREIGN TABLE, CREATE FOREIGN TABLE
    CREATE FUNCTION, CREATE FUNCTION
    CREATE GROUP, CREATE GROUP
    CREATE INDEX, CREATE INDEX
    CREATE LANGUAGE, CREATE LANGUAGE
    CREATE MATERIALIZED VIEW, CREATE MATERIALIZED VIEW
    CREATE OPERATOR, CREATE OPERATOR
    CREATE OPERATOR CLASS, CREATE OPERATOR CLASS
    CREATE OPERATOR FAMILY, CREATE OPERATOR FAMILY
    CREATE POLICY, CREATE POLICY
    CREATE PUBLICATION, CREATE PUBLICATION
    CREATE ROLE, Database Roles, CREATE ROLE
    CREATE RULE, CREATE RULE
    CREATE SCHEMA, CREATE SCHEMA
    CREATE SEQUENCE, CREATE SEQUENCE
    CREATE SERVER, CREATE SERVER
    CREATE STATISTICS, CREATE STATISTICS
    CREATE SUBSCRIPTION, CREATE SUBSCRIPTION
    CREATE TABLE, Creating a New Table, CREATE TABLE
    CREATE TABLE AS, CREATE TABLE AS
    CREATE TABLESPACE, Tablespaces, CREATE TABLESPACE
    CREATE TEXT SEARCH CONFIGURATION, CREATE TEXT SEARCH CONFIGURATION
    CREATE TEXT SEARCH DICTIONARY, CREATE TEXT SEARCH DICTIONARY
    CREATE TEXT SEARCH PARSER, CREATE TEXT SEARCH PARSER
    CREATE TEXT SEARCH TEMPLATE, CREATE TEXT SEARCH TEMPLATE
    CREATE TRANSFORM, CREATE TRANSFORM
    CREATE TRIGGER, CREATE TRIGGER
    CREATE TYPE, CREATE TYPE
    CREATE USER, CREATE USER
    CREATE USER MAPPING, CREATE USER MAPPING
    CREATE VIEW, CREATE VIEW
    createdb, Creating a Database, Creating a Database, createdb
    createuser, Database Roles, createuser
    CREATE_REPLICATION_SLOT, Streaming Replication Protocol
    cross compilation, Installation Procedure
    cross join, Joined Tables
    crosstab, crosstab(text), crosstabN(text), crosstab(text, text)
    crypt, crypt()
    cstring, Pseudo-Types
    ctid, System Columns
    CTID, View Rules in Non-SELECT Statements
    CUBE, GROUPING SETS, CUBE, and ROLLUP
    cube (extension), cube
    cume_dist, Window Functions
    hypothetical, Aggregate Functions
    current_catalog, System Information Functions
    current_database, System Information Functions
    current_date, Date/Time Functions and Operators
    current_logfiles
    and the log_destination configuration parameter, Where To Log
    and the pg_current_logfile function, System Information Functions
    current_query, System Information Functions
    current_role, System Information Functions
    current_schema, System Information Functions
    current_schemas, System Information Functions
    current_setting, Configuration Settings Functions
    current_time, Date/Time Functions and Operators
    current_timestamp, Date/Time Functions and Operators
    current_user, System Information Functions
    currval, Sequence Manipulation Functions
    cursor, Cursors, CLOSE, DECLARE, EXPLAIN, FETCH, MOVE
    CLOSE, CLOSE
    DECLARE, DECLARE
    FETCH, FETCH
    in PL/pgSQL, Cursors
    MOVE, MOVE
    showing the query plan, EXPLAIN
    cursor_tuple_fraction configuration parameter, Other Planner Options
    custom scan provider, Writing A Custom Scan Provider
    handler for, Writing A Custom Scan Provider
    Cygwin, Cygwin
    installation on, Cygwin

    D

    data area (see database cluster)
    data partitioning, High Availability, Load Balancing, and Replication
    data type, Data Types, Numeric Types, Enumerated Types, Type Conversion, The PostgreSQL Type System, The PostgreSQL Type System, Base Types in C-Language Functions, User-defined Types
    base, The PostgreSQL Type System
    category, Overview
    composite, The PostgreSQL Type System
    constant, Constants of Other Types
    conversion, Type Conversion
    enumerated (enum), Enumerated Types
    internal organization, Base Types in C-Language Functions
    numeric, Numeric Types
    type cast, Type Casts
    user-defined, User-defined Types
    database, Creating a Database, Managing Databases
    creating, Creating a Database
    privilege to create, Role Attributes
    database activity, Monitoring Database Activity
    monitoring, Monitoring Database Activity
    database cluster, Concepts, Creating a Database Cluster
    data_checksums configuration parameter, Preset Options
    data_directory configuration parameter, File Locations
    data_sync_retry configuration parameter, Error Handling
    date, Date/Time Types, Dates
    constants, Special Values
    current, Current Date/Time
    output format, Date/Time Output
    (see also formatting)
    DateStyle configuration parameter, Locale and Formatting
    date_part, Date/Time Functions and Operators, EXTRACT, date_part
    date_trunc, Date/Time Functions and Operators, date_trunc
    dblink, dblink, dblink
    dblink_build_sql_delete, dblink_build_sql_delete
    dblink_build_sql_insert, dblink_build_sql_insert
    dblink_build_sql_update, dblink_build_sql_update
    dblink_cancel_query, dblink_cancel_query
    dblink_close, dblink_close
    dblink_connect, dblink_connect
    dblink_connect_u, dblink_connect_u
    dblink_disconnect, dblink_disconnect
    dblink_error_message, dblink_error_message
    dblink_exec, dblink_exec
    dblink_fetch, dblink_fetch
    dblink_get_connections, dblink_get_connections
    dblink_get_notify, dblink_get_notify
    dblink_get_pkey, dblink_get_pkey
    dblink_get_result, dblink_get_result
    dblink_is_busy, dblink_is_busy
    dblink_open, dblink_open
    dblink_send_query, dblink_send_query
    db_user_namespace configuration parameter, Security and Authentication
    deadlock, Deadlocks
    timeout during, Lock Management
    deadlock_timeout configuration parameter, Lock Management
    DEALLOCATE, DEALLOCATE
    dearmor, armor(), dearmor()
    debug_assertions configuration parameter, Preset Options
    debug_deadlocks configuration parameter, Developer Options
    debug_pretty_print configuration parameter, What To Log
    debug_print_parse configuration parameter, What To Log
    debug_print_plan configuration parameter, What To Log
    debug_print_rewritten configuration parameter, What To Log
    decimal (see numeric)
    DECLARE, DECLARE
    decode, String Functions and Operators, Binary String Functions and Operators
    decode_bytea
    in PL/Perl, Utility Functions in PL/Perl
    decrypt, Raw Encryption Functions
    decrypt_iv, Raw Encryption Functions
    default value, Default Values
    changing, Changing a Column's Default Value
    default_statistics_target configuration parameter, Other Planner Options
    default_tablespace configuration parameter, Statement Behavior
    default_text_search_config configuration parameter, Locale and Formatting
    default_transaction_deferrable configuration parameter, Statement Behavior
    default_transaction_isolation configuration parameter, Statement Behavior
    default_transaction_read_only configuration parameter, Statement Behavior
    default_with_oids configuration parameter, Previous PostgreSQL Versions
    deferrable transaction, Statement Behavior
    setting, SET TRANSACTION
    setting default, Statement Behavior
    defined, hstore Operators and Functions
    degrees, Mathematical Functions and Operators
    delay, Delaying Execution
    DELETE, Deletions, Deleting Data, Returning Data From Modified Rows, DELETE
    RETURNING, Returning Data From Modified Rows
    delete, hstore Operators and Functions
    deleting, Deleting Data
    dense_rank, Window Functions
    hypothetical, Aggregate Functions
    diameter, Geometric Functions and Operators
    dict_int, dict_int
    dict_xsyn, dict_xsyn
    difference, Soundex
    digest, digest()
    dirty read, Transaction Isolation
    DISCARD, DISCARD
    disjunction, Logical Operators
    disk drive, WAL Internals
    disk space, Recovering Disk Space
    disk usage, Determining Disk Usage
    DISTINCT, Querying a Table, DISTINCT
    div, Mathematical Functions and Operators
    dmetaphone, Double Metaphone
    dmetaphone_alt, Double Metaphone
    DO, DO
    document, What Is a Document?
    text search, What Is a Document?
    dollar quoting, Dollar-quoted String Constants
    double precision, Floating-Point Types
    DROP ACCESS METHOD, DROP ACCESS METHOD
    DROP AGGREGATE, DROP AGGREGATE
    DROP CAST, DROP CAST
    DROP COLLATION, DROP COLLATION
    DROP CONVERSION, DROP CONVERSION
    DROP DATABASE, Destroying a Database, DROP DATABASE
    DROP DOMAIN, DROP DOMAIN
    DROP EVENT TRIGGER, DROP EVENT TRIGGER
    DROP EXTENSION, DROP EXTENSION
    DROP FOREIGN DATA WRAPPER, DROP FOREIGN DATA WRAPPER
    DROP FOREIGN TABLE, DROP FOREIGN TABLE
    DROP FUNCTION, DROP FUNCTION
    DROP GROUP, DROP GROUP
    DROP INDEX, DROP INDEX
    DROP LANGUAGE, DROP LANGUAGE
    DROP MATERIALIZED VIEW, DROP MATERIALIZED VIEW
    DROP OPERATOR, DROP OPERATOR
    DROP OPERATOR CLASS, DROP OPERATOR CLASS
    DROP OPERATOR FAMILY, DROP OPERATOR FAMILY
    DROP OWNED, DROP OWNED
    DROP POLICY, DROP POLICY
    DROP PUBLICATION, DROP PUBLICATION
    DROP ROLE, Database Roles, DROP ROLE
    DROP RULE, DROP RULE
    DROP SCHEMA, DROP SCHEMA
    DROP SEQUENCE, DROP SEQUENCE
    DROP SERVER, DROP SERVER
    DROP STATISTICS, DROP STATISTICS
    DROP SUBSCRIPTION, DROP SUBSCRIPTION
    DROP TABLE, Creating a New Table, DROP TABLE
    DROP TABLESPACE, DROP TABLESPACE
    DROP TEXT SEARCH CONFIGURATION, DROP TEXT SEARCH CONFIGURATION
    DROP TEXT SEARCH DICTIONARY, DROP TEXT SEARCH DICTIONARY
    DROP TEXT SEARCH PARSER, DROP TEXT SEARCH PARSER
    DROP TEXT SEARCH TEMPLATE, DROP TEXT SEARCH TEMPLATE
    DROP TRANSFORM, DROP TRANSFORM
    DROP TRIGGER, DROP TRIGGER
    DROP TYPE, DROP TYPE
    DROP USER, DROP USER
    DROP USER MAPPING, DROP USER MAPPING
    DROP VIEW, DROP VIEW
    dropdb, Destroying a Database, dropdb
    dropuser, Database Roles, dropuser
    DROP_REPLICATION_SLOT, Streaming Replication Protocol
    DTD, Creating XML Values
    DTrace, Installation Procedure, Dynamic Tracing
    duplicate, Querying a Table
    duplicates, DISTINCT
    dynamic loading, Other Defaults, Dynamic Loading
    dynamic_library_path, Dynamic Loading
    dynamic_library_path configuration parameter, Other Defaults
    dynamic_shared_memory_type configuration parameter, Memory

    E

    each, hstore Operators and Functions
    earth, Cube-based Earth Distances
    earthdistance, earthdistance
    earth_box, Cube-based Earth Distances
    earth_distance, Cube-based Earth Distances
    ECPG, ECPG - Embedded SQL in C
    ecpg, ecpg
    effective_cache_size configuration parameter, Planner Cost Constants
    effective_io_concurrency configuration parameter, Asynchronous Behavior
    elog, Reporting Errors Within the Server
    in PL/Perl, Utility Functions in PL/Perl
    in PL/Python, Utility Functions
    in PL/Tcl, Database Access from PL/Tcl
    embedded SQL, ECPG - Embedded SQL in C
    in C, ECPG - Embedded SQL in C
    enabled role, enabled_roles
    enable_bitmapscan configuration parameter, Planner Method Configuration
    enable_gathermerge configuration parameter, Planner Method Configuration
    enable_hashagg configuration parameter, Planner Method Configuration
    enable_hashjoin configuration parameter, Planner Method Configuration
    enable_indexonlyscan configuration parameter, Planner Method Configuration
    enable_indexscan configuration parameter, Planner Method Configuration
    enable_material configuration parameter, Planner Method Configuration
    enable_mergejoin configuration parameter, Planner Method Configuration
    enable_nestloop configuration parameter, Planner Method Configuration
    enable_seqscan configuration parameter, Planner Method Configuration
    enable_sort configuration parameter, Planner Method Configuration
    enable_tidscan configuration parameter, Planner Method Configuration
    encode, String Functions and Operators, Binary String Functions and Operators
    encode_array_constructor
    in PL/Perl, Utility Functions in PL/Perl
    encode_array_literal
    in PL/Perl, Utility Functions in PL/Perl
    encode_bytea
    in PL/Perl, Utility Functions in PL/Perl
    encode_typed_literal
    in PL/Perl, Utility Functions in PL/Perl
    encrypt, Raw Encryption Functions
    encryption, Encryption Options, pgcrypto
    for specific columns, pgcrypto
    encrypt_iv, Raw Encryption Functions
    END, END
    enumerated types, Enumerated Types
    enum_first, Enum Support Functions
    enum_last, Enum Support Functions
    enum_range, Enum Support Functions
    environment variable, Environment Variables
    ephemeral named relation
    registering with SPI, SPI_register_relation, SPI_register_trigger_data
    unregistering from SPI, SPI_unregister_relation
    ereport, Reporting Errors Within the Server
    error codes, PostgreSQL Error Codes
    libpq, Main Functions
    list of, PostgreSQL Error Codes
    error message, Connection Status Functions
    escape string syntax, String Constants with C-style Escapes
    escape_string_warning configuration parameter, Previous PostgreSQL Versions
    escaping strings, Escaping Strings for Inclusion in SQL Commands
    in libpq, Escaping Strings for Inclusion in SQL Commands
    event log, Registering Event Log on Windows
    event log, Registering Event Log on Windows
    event trigger, Event Triggers, Writing Event Trigger Functions in C
    in C, Writing Event Trigger Functions in C
    in PL/Tcl, Event Trigger Procedures in PL/Tcl
    event_source configuration parameter, Where To Log
    event_trigger, Pseudo-Types
    every, Aggregate Functions
    EXCEPT, Combining Queries
    exceptions
    in PL/pgSQL, Trapping Errors
    in PL/Tcl, Error Handling in PL/Tcl
    exclusion constraint, Exclusion Constraints
    EXECUTE, EXECUTE
    exist, hstore Operators and Functions
    EXISTS, Subquery Expressions
    EXIT
    in PL/pgSQL, EXIT
    exit_on_error configuration parameter, Error Handling
    exp, Mathematical Functions and Operators
    EXPLAIN, Using EXPLAIN, EXPLAIN
    expression, Value Expressions
    order of evaluation, Expression Evaluation Rules
    syntax, Value Expressions
    extending SQL, Extending SQL
    extension, Packaging Related Objects into an Extension
    externally maintained, Extensions
    external_pid_file configuration parameter, File Locations
    extract, Date/Time Functions and Operators, EXTRACT, date_part
    extra_float_digits configuration parameter, Locale and Formatting

    F

    factorial, Mathematical Functions and Operators
    failover, High Availability, Load Balancing, and Replication
    false, Boolean Type
    family, Network Address Functions and Operators
    fast path, The Fast-Path Interface
    fdw_handler, Pseudo-Types
    FETCH, FETCH
    field
    computed, Using Composite Types in Queries
    field selection, Field Selection
    file system mount points, Use of Secondary File Systems
    file_fdw, file_fdw
    FILTER, Aggregate Expressions
    first_value, Window Functions
    flex, Requirements
    float4 (see real)
    float8 (see double precision)
    floating point, Floating-Point Types
    floating-point
    display, Locale and Formatting
    floor, Mathematical Functions and Operators
    force_parallel_mode configuration parameter, Other Planner Options
    foreign data, Foreign Data
    foreign data wrapper, Writing A Foreign Data Wrapper
    handler for, Writing A Foreign Data Wrapper
    foreign key, Foreign Keys, Foreign Keys
    self-referential, Foreign Keys
    foreign table, Foreign Data
    format, String Functions and Operators, format
    use in PL/pgSQL, Executing Dynamic Commands
    formatting, Data Type Formatting Functions
    format_type, System Information Functions
    Free Space Map, Free Space Map
    FreeBSD
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    from_collapse_limit configuration parameter, Other Planner Options
    FSM (see Free Space Map)
    fsm_page_contents, General Functions
    fsync configuration parameter, Settings
    full text search, Text Search Types, Text Search Types, Full Text Search
    data types, Text Search Types
    functions and operators, Text Search Types
    full_page_writes configuration parameter, Settings
    function, Table Functions, Functions and Operators, Functions, Polymorphic Types, User-defined Functions, Query Language (SQL) Functions, Internal Functions, C-Language Functions
    default values for arguments, SQL Functions with Default Values for Arguments
    in the FROM clause, Table Functions
    internal, Internal Functions
    invocation, Function Calls
    mixed notation, Using Mixed Notation
    named argument, Arguments for SQL Functions
    named notation, Using Named Notation
    output parameter, SQL Functions with Output Parameters
    polymorphic, Polymorphic Types
    positional notation, Using Positional Notation
    RETURNS TABLE, SQL Functions Returning TABLE
    type resolution in an invocation, Functions
    user-defined, User-defined Functions, Query Language (SQL) Functions, C-Language Functions
    in C, C-Language Functions
    in SQL, Query Language (SQL) Functions
    variadic, SQL Functions with Variable Numbers of Arguments
    with SETOF, SQL Functions Returning Sets
    functional dependency, The GROUP BY and HAVING Clauses
    fuzzystrmatch, fuzzystrmatch

    G

    gc_to_sec, Cube-based Earth Distances
    generate_series, Set Returning Functions
    generate_subscripts, Set Returning Functions
    genetic query optimization, Genetic Query Optimizer
    gen_random_bytes, Random-Data Functions
    gen_random_uuid, Random-Data Functions
    gen_salt, gen_salt()
    GEQO (see genetic query optimization)
    geqo configuration parameter, Genetic Query Optimizer
    geqo_effort configuration parameter, Genetic Query Optimizer
    geqo_generations configuration parameter, Genetic Query Optimizer
    geqo_pool_size configuration parameter, Genetic Query Optimizer
    geqo_seed configuration parameter, Genetic Query Optimizer
    geqo_selection_bias configuration parameter, Genetic Query Optimizer
    geqo_threshold configuration parameter, Genetic Query Optimizer
    get_bit, Binary String Functions and Operators
    get_byte, Binary String Functions and Operators
    get_current_ts_config, Text Search Functions and Operators
    get_raw_page, General Functions
    GIN (see index)
    gin_clean_pending_list, Index Maintenance Functions
    gin_fuzzy_search_limit configuration parameter, Other Defaults
    gin_leafpage_items, GIN Functions
    gin_metapage_info, GIN Functions
    gin_page_opaque_info, GIN Functions
    gin_pending_list_limit configuration parameter, Statement Behavior
    GiST (see index)
    global data, Global Data in PL/Tcl
    in PL/Python, Sharing Data
    in PL/Tcl, Global Data in PL/Tcl
    GRANT, Privileges, GRANT
    GREATEST, GREATEST and LEAST, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    Gregorian calendar, History of Units
    GROUP BY, Aggregate Functions, The GROUP BY and HAVING Clauses
    grouping, The GROUP BY and HAVING Clauses
    GROUPING, Aggregate Functions
    GROUPING SETS, GROUPING SETS, CUBE, and ROLLUP
    GSSAPI, GSSAPI Authentication
    GUID, UUID Type

    H

    hash (see index)
    hash_bitmap_info, Hash Functions
    hash_metapage_info, Hash Functions
    hash_page_items, Hash Functions
    hash_page_stats, Hash Functions
    hash_page_type, Hash Functions
    has_any_column_privilege, System Information Functions
    has_column_privilege, System Information Functions
    has_database_privilege, System Information Functions
    has_foreign_data_wrapper_privilege, System Information Functions
    has_function_privilege, System Information Functions
    has_language_privilege, System Information Functions
    has_schema_privilege, System Information Functions
    has_sequence_privilege, System Information Functions
    has_server_privilege, System Information Functions
    has_tablespace_privilege, System Information Functions
    has_table_privilege, System Information Functions
    has_type_privilege, System Information Functions
    HAVING, Aggregate Functions, The GROUP BY and HAVING Clauses
    hba_file configuration parameter, File Locations
    heap_page_items, Heap Functions
    heap_page_item_attrs, Heap Functions
    height, Geometric Functions and Operators
    hierarchical database, Concepts
    high availability, High Availability, Load Balancing, and Replication
    history, A Brief History of PostgreSQL
    of PostgreSQL, A Brief History of PostgreSQL
    hmac, hmac()
    host, Network Address Functions and Operators
    host name, Parameter Key Words
    hostmask, Network Address Functions and Operators
    Hot Standby, High Availability, Load Balancing, and Replication
    hot_standby configuration parameter, Standby Servers
    hot_standby_feedback configuration parameter, Standby Servers
    HP-UX, HP-UX
    installation on, HP-UX
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    hstore, hstore, hstore Operators and Functions
    hstore_to_array, hstore Operators and Functions
    hstore_to_json, hstore Operators and Functions
    hstore_to_jsonb, hstore Operators and Functions
    hstore_to_jsonb_loose, hstore Operators and Functions
    hstore_to_json_loose, hstore Operators and Functions
    hstore_to_matrix, hstore Operators and Functions
    huge_pages configuration parameter, Memory
    hypothetical-set aggregate
    built-in, Aggregate Functions

    I

    icount, intarray Functions and Operators
    ICU, Installation Procedure, Managing Collations, Parameters
    ident, Ident Authentication
    identifier, Identifiers and Key Words
    length, Identifiers and Key Words
    syntax of, Identifiers and Key Words
    IDENTIFY_SYSTEM, Streaming Replication Protocol
    ident_file configuration parameter, File Locations
    idle_in_transaction_session_timeout configuration parameter, Statement Behavior
    idx, intarray Functions and Operators
    IFNULL, COALESCE
    ignore_checksum_failure configuration parameter, Developer Options
    ignore_system_indexes configuration parameter, Developer Options
    IMMUTABLE, Function Volatility Categories
    IMPORT FOREIGN SCHEMA, IMPORT FOREIGN SCHEMA
    IN, Subquery Expressions, Row and Array Comparisons
    include
    in configuration file, Managing Configuration File Contents
    include_dir
    in configuration file, Managing Configuration File Contents
    include_if_exists
    in configuration file, Managing Configuration File Contents
    index, Indexes, Multicolumn Indexes, Indexes and ORDER BY, Combining Multiple Indexes, Unique Indexes, Indexes on Expressions, Partial Indexes, Index-Only Scans, Examining Index Usage, GIN and GiST Index Types, GIN and GiST Index Types, Locking and Indexes, Interfacing Extensions To Indexes, Building Indexes Concurrently, Operators and Functions
    and ORDER BY, Indexes and ORDER BY
    B-tree, Index Types
    BRIN, Index Types, BRIN Indexes
    building concurrently, Building Indexes Concurrently
    combining multiple indexes, Combining Multiple Indexes
    examining usage, Examining Index Usage
    on expressions, Indexes on Expressions
    for user-defined data type, Interfacing Extensions To Indexes
    GIN, Index Types, GIN and GiST Index Types, GIN Indexes
    text search, GIN and GiST Index Types
    GiST, Index Types, GIN and GiST Index Types, GiST Indexes
    text search, GIN and GiST Index Types
    hash, Index Types
    Hash, Hash Indexes
    index-only scans, Index-Only Scans
    locks, Locking and Indexes
    multicolumn, Multicolumn Indexes
    partial, Partial Indexes
    SP-GiST, Index Types, SP-GiST Indexes
    unique, Unique Indexes
    index scan, Planner Method Configuration
    index-only scan, Index-Only Scans
    index_am_handler, Pseudo-Types
    inet (data type), inet
    inet_client_addr, System Information Functions
    inet_client_port, System Information Functions
    inet_merge, Network Address Functions and Operators
    inet_same_family, Network Address Functions and Operators
    inet_server_addr, System Information Functions
    inet_server_port, System Information Functions
    information schema, The Information Schema
    inheritance, Inheritance, Inheritance
    initcap, String Functions and Operators
    initdb, Creating a Database Cluster, initdb
    Initialization Fork, The Initialization Fork
    input function, User-defined Types
    INSERT, Populating a Table With Rows, Inserting Data, Returning Data From Modified Rows, INSERT
    RETURNING, Returning Data From Modified Rows
    inserting, Inserting Data
    installation, Installation from Source Code
    on Windows, Installation from Source Code on Windows
    instr function, Appendix
    int2 (see smallint)
    int4 (see integer)
    int8 (see bigint)
    intagg, intagg
    intarray, intarray
    integer, Numeric Constants, Integer Types
    integer_datetimes configuration parameter, Preset Options
    interfaces
    externally maintained, Client Interfaces
    internal, Pseudo-Types
    INTERSECT, Combining Queries
    interval, Date/Time Types, Interval Input
    output format, Interval Output
    (see also formatting)
    IntervalStyle configuration parameter, Locale and Formatting
    intset, intarray Functions and Operators
    int_array_aggregate, Functions
    int_array_enum, Functions
    inverse distribution, Aggregate Functions
    IS DISTINCT FROM, Comparison Functions and Operators, Row and Array Comparisons
    IS DOCUMENT, IS DOCUMENT
    IS FALSE, Comparison Functions and Operators
    IS NOT DISTINCT FROM, Comparison Functions and Operators, Row and Array Comparisons
    IS NOT DOCUMENT, IS NOT DOCUMENT
    IS NOT FALSE, Comparison Functions and Operators
    IS NOT NULL, Comparison Functions and Operators
    IS NOT TRUE, Comparison Functions and Operators
    IS NOT UNKNOWN, Comparison Functions and Operators
    IS NULL, Comparison Functions and Operators, Platform and Client Compatibility
    IS TRUE, Comparison Functions and Operators
    IS UNKNOWN, Comparison Functions and Operators
    isclosed, Geometric Functions and Operators
    isempty, Range Functions and Operators
    isfinite, Date/Time Functions and Operators
    isn, isn
    ISNULL, Comparison Functions and Operators
    isn_weak, Functions and Operators
    isopen, Geometric Functions and Operators
    is_array_ref
    in PL/Perl, Utility Functions in PL/Perl
    is_valid, Functions and Operators

    J

    join, Joins Between Tables, Joined Tables, Controlling the Planner with Explicit JOIN Clauses
    controlling the order, Controlling the Planner with Explicit JOIN Clauses
    cross, Joined Tables
    left, Joined Tables
    natural, Joined Tables
    outer, Joins Between Tables, Joined Tables
    right, Joined Tables
    self, Joins Between Tables
    join_collapse_limit configuration parameter, Other Planner Options
    JSON, JSON Types, JSON Functions and Operators
    functions and operators, JSON Functions and Operators
    JSONB, JSON Types
    jsonb
    containment, jsonb Containment and Existence
    existence, jsonb Containment and Existence
    indexes on, jsonb Indexing
    jsonb_agg, Aggregate Functions
    jsonb_array_elements, JSON Functions and Operators
    jsonb_array_elements_text, JSON Functions and Operators
    jsonb_array_length, JSON Functions and Operators
    jsonb_build_array, JSON Functions and Operators
    jsonb_build_object, JSON Functions and Operators
    jsonb_each, JSON Functions and Operators
    jsonb_each_text, JSON Functions and Operators
    jsonb_extract_path, JSON Functions and Operators
    jsonb_extract_path_text, JSON Functions and Operators
    jsonb_insert, JSON Functions and Operators
    jsonb_object, JSON Functions and Operators
    jsonb_object_agg, Aggregate Functions
    jsonb_object_keys, JSON Functions and Operators
    jsonb_populate_record, JSON Functions and Operators
    jsonb_populate_recordset, JSON Functions and Operators
    jsonb_pretty, JSON Functions and Operators
    jsonb_set, JSON Functions and Operators
    jsonb_strip_nulls, JSON Functions and Operators
    jsonb_to_record, JSON Functions and Operators
    jsonb_to_recordset, JSON Functions and Operators
    jsonb_typeof, JSON Functions and Operators
    json_agg, Aggregate Functions
    json_array_elements, JSON Functions and Operators
    json_array_elements_text, JSON Functions and Operators
    json_array_length, JSON Functions and Operators
    json_build_array, JSON Functions and Operators
    json_build_object, JSON Functions and Operators
    json_each, JSON Functions and Operators
    json_each_text, JSON Functions and Operators
    json_extract_path, JSON Functions and Operators
    json_extract_path_text, JSON Functions and Operators
    json_object, JSON Functions and Operators
    json_object_agg, Aggregate Functions
    json_object_keys, JSON Functions and Operators
    json_populate_record, JSON Functions and Operators
    json_populate_recordset, JSON Functions and Operators
    json_strip_nulls, JSON Functions and Operators
    json_to_record, JSON Functions and Operators
    json_to_recordset, JSON Functions and Operators
    json_typeof, JSON Functions and Operators
    Julian date, Julian Dates
    justify_days, Date/Time Functions and Operators
    justify_hours, Date/Time Functions and Operators
    justify_interval, Date/Time Functions and Operators

    K

    key word, Identifiers and Key Words, SQL Key Words
    list of, SQL Key Words
    syntax of, Identifiers and Key Words
    krb_caseins_users configuration parameter, Security and Authentication
    krb_server_keyfile configuration parameter, Security and Authentication

    L

    label (see alias)
    lag, Window Functions
    language_handler, Pseudo-Types
    large object, Large Objects
    lastval, Sequence Manipulation Functions
    last_value, Window Functions
    LATERAL, LATERAL Subqueries
    in the FROM clause, LATERAL Subqueries
    latitude, Cube-based Earth Distances
    lca, Operators and Functions
    lc_collate configuration parameter, Preset Options
    lc_ctype configuration parameter, Preset Options
    lc_messages configuration parameter, Locale and Formatting
    lc_monetary configuration parameter, Locale and Formatting
    lc_numeric configuration parameter, Locale and Formatting
    lc_time configuration parameter, Locale and Formatting
    LDAP, Installation Procedure, LDAP Authentication
    LDAP connection parameter lookup, LDAP Lookup of Connection Parameters
    ldconfig, Shared Libraries
    lead, Window Functions
    LEAST, GREATEST and LEAST, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    left, String Functions and Operators
    left join, Joined Tables
    length, String Functions and Operators, Binary String Functions and Operators, Geometric Functions and Operators, Text Search Functions and Operators
    of a binary string (see binary strings, length)
    of a character string (see character string, length)
    length(tsvector), Manipulating Documents
    levenshtein, Levenshtein
    levenshtein_less_equal, Levenshtein
    lex, Requirements
    libedit, Requirements
    libperl, Requirements
    libpq, libpq - C Library, Retrieving Query Results Row-By-Row
    single-row mode, Retrieving Query Results Row-By-Row
    libpq-fe.h, libpq - C Library, Connection Status Functions
    libpq-int.h, Connection Status Functions
    libpython, Requirements
    library finalization function, Dynamic Loading
    library initialization function, Dynamic Loading
    LIKE, LIKE
    and locales, Behavior
    LIMIT, LIMIT and OFFSET
    line, Lines
    line segment, Line Segments
    linear regression, Aggregate Functions
    Linux
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    LISTEN, LISTEN
    listen_addresses configuration parameter, Connection Settings
    ll_to_earth, Cube-based Earth Distances
    ln, Mathematical Functions and Operators
    lo, lo
    LOAD, LOAD
    load balancing, High Availability, Load Balancing, and Replication
    locale, Creating a Database Cluster, Locale Support
    localtime, Date/Time Functions and Operators
    localtimestamp, Date/Time Functions and Operators
    local_preload_libraries configuration parameter, Shared Library Preloading
    lock, Explicit Locking, Advisory Locks, Viewing Locks
    advisory, Advisory Locks
    monitoring, Viewing Locks
    LOCK, Table-level Locks, LOCK
    lock_timeout configuration parameter, Statement Behavior
    log, Mathematical Functions and Operators
    log shipping, High Availability, Load Balancing, and Replication
    Logging
    current_logfiles file and the pg_current_logfile + function, System Information Functions
    pg_current_logfile function, System Information Functions
    logging_collector configuration parameter, Where To Log
    Logical Decoding, Logical Decoding, Logical Decoding
    login privilege, Role Attributes
    log_autovacuum_min_duration configuration parameter, Automatic Vacuuming
    log_btree_build_stats configuration parameter, Developer Options
    log_checkpoints configuration parameter, What To Log
    log_connections configuration parameter, What To Log
    log_destination configuration parameter, Where To Log
    log_directory configuration parameter, Where To Log
    log_disconnections configuration parameter, What To Log
    log_duration configuration parameter, What To Log
    log_error_verbosity configuration parameter, What To Log
    log_executor_stats configuration parameter, Statistics Monitoring
    log_filename configuration parameter, Where To Log
    log_file_mode configuration parameter, Where To Log
    log_hostname configuration parameter, What To Log
    log_line_prefix configuration parameter, What To Log
    log_lock_waits configuration parameter, What To Log
    log_min_duration_statement configuration parameter, When To Log
    log_min_error_statement configuration parameter, When To Log
    log_min_messages configuration parameter, When To Log
    log_parser_stats configuration parameter, Statistics Monitoring
    log_planner_stats configuration parameter, Statistics Monitoring
    log_replication_commands configuration parameter, What To Log
    log_rotation_age configuration parameter, Where To Log
    log_rotation_size configuration parameter, Where To Log
    log_statement configuration parameter, What To Log
    log_statement_stats configuration parameter, Statistics Monitoring
    log_temp_files configuration parameter, What To Log
    log_timezone configuration parameter, What To Log
    log_truncate_on_rotation configuration parameter, Where To Log
    longitude, Cube-based Earth Distances
    looks_like_number
    in PL/Perl, Utility Functions in PL/Perl
    loop, Simple Loops
    in PL/pgSQL, Simple Loops
    lower, String Functions and Operators, Range Functions and Operators
    and locales, Behavior
    lower_inc, Range Functions and Operators
    lower_inf, Range Functions and Operators
    lo_close, Closing a Large Object Descriptor
    lo_compat_privileges configuration parameter, Previous PostgreSQL Versions
    lo_creat, Creating a Large Object, Server-side Functions
    lo_create, Creating a Large Object
    lo_export, Exporting a Large Object, Server-side Functions
    lo_from_bytea, Server-side Functions
    lo_get, Server-side Functions
    lo_import, Importing a Large Object, Server-side Functions
    lo_import_with_oid, Importing a Large Object
    lo_lseek, Seeking in a Large Object
    lo_lseek64, Seeking in a Large Object
    lo_open, Opening an Existing Large Object
    lo_put, Server-side Functions
    lo_read, Reading Data from a Large Object
    lo_tell, Obtaining the Seek Position of a Large Object
    lo_tell64, Obtaining the Seek Position of a Large Object
    lo_truncate, Truncating a Large Object
    lo_truncate64, Truncating a Large Object
    lo_unlink, Removing a Large Object, Server-side Functions
    lo_write, Writing Data to a Large Object
    lpad, String Functions and Operators
    lseg, Line Segments, Geometric Functions and Operators
    LSN, WAL Internals
    ltree, ltree
    ltree2text, Operators and Functions
    ltrim, String Functions and Operators

    M

    MAC address (see macaddr)
    MAC address (EUI-64 format) (see macaddr)
    macaddr (data type), macaddr
    macaddr8 (data type), macaddr8
    macaddr8_set7bit, Network Address Functions and Operators
    macOS, macOS
    installation on, macOS
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    magic block, Dynamic Loading
    maintenance, Routine Database Maintenance Tasks
    maintenance_work_mem configuration parameter, Memory
    make, Requirements
    make_date, Date/Time Functions and Operators
    make_interval, Date/Time Functions and Operators
    make_time, Date/Time Functions and Operators
    make_timestamp, Date/Time Functions and Operators
    make_timestamptz, Date/Time Functions and Operators
    make_valid, Functions and Operators
    MANPATH, Environment Variables
    masklen, Network Address Functions and Operators
    materialized view, Materialized Views
    implementation through rules, Materialized Views
    materialized views, pg_matviews
    max, Aggregate Functions
    max_connections configuration parameter, Connection Settings
    max_files_per_process configuration parameter, Kernel Resource Usage
    max_function_args configuration parameter, Preset Options
    max_identifier_length configuration parameter, Preset Options
    max_index_keys configuration parameter, Preset Options
    max_locks_per_transaction configuration parameter, Lock Management
    max_logical_replication_workers configuration parameter, Subscribers
    max_parallel_workers configuration parameter, Asynchronous Behavior
    max_parallel_workers_per_gather configuration parameter, Asynchronous Behavior
    max_pred_locks_per_page configuration parameter, Lock Management
    max_pred_locks_per_relation configuration parameter, Lock Management
    max_pred_locks_per_transaction configuration parameter, Lock Management
    max_prepared_transactions configuration parameter, Memory
    max_replication_slots configuration parameter, Sending Server(s)
    max_stack_depth configuration parameter, Memory
    max_standby_archive_delay configuration parameter, Standby Servers
    max_standby_streaming_delay configuration parameter, Standby Servers
    max_sync_workers_per_subscription configuration parameter, Subscribers
    max_wal_senders configuration parameter, Sending Server(s)
    max_wal_size configuration parameter, Checkpoints
    max_worker_processes configuration parameter, Asynchronous Behavior
    md5, String Functions and Operators, Binary String Functions and Operators
    MD5, Password Authentication
    median, Aggregate Expressions
    (see also percentile)
    memory context
    in SPI, Memory Management
    memory overcommit, Linux Memory Overcommit
    metaphone, Metaphone
    min, Aggregate Functions
    MinGW, MinGW/Native Windows
    installation on, MinGW/Native Windows
    min_parallel_index_scan_size configuration parameter, Planner Cost Constants
    min_parallel_table_scan_size configuration parameter, Planner Cost Constants
    min_wal_size configuration parameter, Checkpoints
    mod, Mathematical Functions and Operators
    mode
    statistical, Aggregate Functions
    monitoring, Monitoring Database Activity
    database activity, Monitoring Database Activity
    MOVE, MOVE
    moving-aggregate mode, Moving-Aggregate Mode
    Multiversion Concurrency Control, Introduction
    MultiXactId, Multixacts and Wraparound
    MVCC, Introduction

    N

    name, Identifiers and Key Words
    qualified, Creating a Schema
    syntax of, Identifiers and Key Words
    unqualified, The Schema Search Path
    NaN (see not a number)
    natural join, Joined Tables
    negation, Logical Operators
    NetBSD
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    netmask, Network Address Functions and Operators
    network, Network Address Types, Network Address Functions and Operators
    data types, Network Address Types
    Network Attached Storage (NAS) (see Network File Systems)
    Network File Systems, Use of Network File Systems
    nextval, Sequence Manipulation Functions
    NFS (see Network File Systems)
    nlevel, Operators and Functions
    non-durable, Non-Durable Settings
    nonblocking connection, Database Connection Control Functions, Asynchronous Command Processing
    nonrepeatable read, Transaction Isolation
    normal_rand, normal_rand
    NOT (operator), Logical Operators
    not a number
    double precision, Floating-Point Types
    numeric (data type), Arbitrary Precision Numbers
    NOT IN, Subquery Expressions, Row and Array Comparisons
    not-null constraint, Not-Null Constraints
    notation, Calling Functions
    functions, Calling Functions
    notice processing, Notice Processing
    in libpq, Notice Processing
    notice processor, Notice Processing
    notice receiver, Notice Processing
    NOTIFY, Asynchronous Notification, NOTIFY
    in libpq, Asynchronous Notification
    NOTNULL, Comparison Functions and Operators
    now, Date/Time Functions and Operators
    npoints, Geometric Functions and Operators
    nth_value, Window Functions
    ntile, Window Functions
    null value
    with check constraints, Check Constraints
    comparing, Comparison Functions and Operators
    default value, Default Values
    in DISTINCT, DISTINCT
    in libpq, Retrieving Query Result Information
    in PL/Perl, PL/Perl Functions and Arguments
    in PL/Python, Null, None
    with unique constraints, Unique Constraints
    NULLIF, NULLIF
    number
    constant, Numeric Constants
    numeric, Numeric Constants
    numeric (data type), Arbitrary Precision Numbers
    numnode, Text Search Functions and Operators, Manipulating Queries
    num_nonnulls, Comparison Functions and Operators
    num_nulls, Comparison Functions and Operators
    NVL, COALESCE

    O

    object identifier, Object Identifier Types
    data type, Object Identifier Types
    object-oriented database, Concepts
    obj_description, System Information Functions
    octet_length, String Functions and Operators, Binary String Functions and Operators
    OFFSET, LIMIT and OFFSET
    OID
    column, System Columns
    in libpq, Retrieving Other Result Information
    oid, Object Identifier Types
    oid2name, oid2name
    old_snapshot_threshold configuration parameter, Asynchronous Behavior
    ON CONFLICT, INSERT
    ONLY, The FROM Clause
    OOM, Linux Memory Overcommit
    opaque, Pseudo-Types
    OpenBSD
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    OpenSSL, Installation Procedure
    (see also SSL)
    operator, Operators, Operator Precedence, Functions and Operators, Logical Operators, Operators, User-defined Operators
    invocation, Operator Invocations
    logical, Logical Operators
    precedence, Operator Precedence
    syntax, Operators
    type resolution in an invocation, Operators
    user-defined, User-defined Operators
    operator class, Operator Classes and Operator Families, Index Methods and Operator Classes
    operator family, Operator Classes and Operator Families, Operator Classes and Operator Families
    operator_precedence_warning configuration parameter, Previous PostgreSQL Versions
    OR (operator), Logical Operators
    Oracle, Porting from Oracle PL/SQL
    porting from PL/SQL to PL/pgSQL, Porting from Oracle PL/SQL
    ORDER BY, Querying a Table, Sorting Rows
    and locales, Behavior
    ordered-set aggregate, Aggregate Expressions
    built-in, Aggregate Functions
    ordering operator, System Dependencies on Operator Classes
    ordinality, Set Returning Functions
    outer join, Joined Tables
    output function, User-defined Types
    OVER clause, Window Function Calls
    overcommit, Linux Memory Overcommit
    OVERLAPS, Date/Time Functions and Operators
    overlay, String Functions and Operators, Binary String Functions and Operators
    overloading, Function Overloading
    functions, Function Overloading
    operators, User-defined Operators
    owner, Privileges

    P

    pageinspect, pageinspect
    page_checksum, General Functions
    page_header, General Functions
    palloc, Writing Code
    PAM, Installation Procedure, PAM Authentication
    parallel query, Parallel Query
    parallel_setup_cost configuration parameter, Planner Cost Constants
    parallel_tuple_cost configuration parameter, Planner Cost Constants
    parameter
    syntax, Positional Parameters
    parenthesis, Value Expressions
    parse_ident, String Functions and Operators
    partitioned table, Table Partitioning
    partitioning, Table Partitioning
    password, Role Attributes
    authentication, Password Authentication
    of the superuser, Creating a Database Cluster
    password file, The Password File
    passwordcheck, passwordcheck
    password_encryption configuration parameter, Security and Authentication
    path, Geometric Functions and Operators
    for schemas, Statement Behavior
    PATH, Environment Variables
    path (data type), Paths
    pattern matching, Pattern Matching
    patterns
    in psql and pg_dump, Patterns
    pclose, Geometric Functions and Operators
    peer, Peer Authentication
    percentile
    continuous, Aggregate Functions
    discrete, Aggregate Functions
    percent_rank, Window Functions
    hypothetical, Aggregate Functions
    performance, Performance Tips
    perl, Requirements
    Perl, PL/Perl - Perl Procedural Language
    permission (see privilege)
    pfree, Writing Code
    PGAPPNAME, Environment Variables
    pgbench, pgbench
    PGcancel, Canceling Queries in Progress
    PGCLIENTENCODING, Environment Variables
    PGconn, Database Connection Control Functions
    PGCONNECT_TIMEOUT, Environment Variables
    pgcrypto, pgcrypto
    PGDATA, Creating a Database Cluster
    PGDATABASE, Environment Variables
    PGDATESTYLE, Environment Variables
    PGEventProc, Event Callback Procedure
    PGGEQO, Environment Variables
    PGGSSLIB, Environment Variables
    PGHOST, Environment Variables
    PGHOSTADDR, Environment Variables
    PGKRBSRVNAME, Environment Variables
    PGLOCALEDIR, Environment Variables
    PGOPTIONS, Environment Variables
    PGPASSFILE, Environment Variables
    PGPASSWORD, Environment Variables
    PGPORT, Environment Variables
    pgp_armor_headers, pgp_armor_headers
    pgp_key_id, pgp_key_id()
    pgp_pub_decrypt, pgp_pub_decrypt()
    pgp_pub_decrypt_bytea, pgp_pub_decrypt()
    pgp_pub_encrypt, pgp_pub_encrypt()
    pgp_pub_encrypt_bytea, pgp_pub_encrypt()
    pgp_sym_decrypt, pgp_sym_decrypt()
    pgp_sym_decrypt_bytea, pgp_sym_decrypt()
    pgp_sym_encrypt, pgp_sym_encrypt()
    pgp_sym_encrypt_bytea, pgp_sym_encrypt()
    PGREQUIREPEER, Environment Variables
    PGREQUIRESSL, Environment Variables
    PGresult, Main Functions
    pgrowlocks, pgrowlocks, Overview
    PGSERVICE, Environment Variables
    PGSERVICEFILE, Environment Variables
    PGSSLCERT, Environment Variables
    PGSSLCOMPRESSION, Environment Variables
    PGSSLCRL, Environment Variables
    PGSSLKEY, Environment Variables
    PGSSLMODE, Environment Variables
    PGSSLROOTCERT, Environment Variables
    pgstatginindex, Functions
    pgstathashindex, Functions
    pgstatindex, Functions
    pgstattuple, pgstattuple, Functions
    pgstattuple_approx, Functions
    PGSYSCONFDIR, Environment Variables
    PGTARGETSESSIONATTRS, Environment Variables
    PGTZ, Environment Variables
    PGUSER, Environment Variables
    pgxs, Extension Building Infrastructure
    pg_advisory_lock, Advisory Lock Functions
    pg_advisory_lock_shared, Advisory Lock Functions
    pg_advisory_unlock, Advisory Lock Functions
    pg_advisory_unlock_all, Advisory Lock Functions
    pg_advisory_unlock_shared, Advisory Lock Functions
    pg_advisory_xact_lock, Advisory Lock Functions
    pg_advisory_xact_lock_shared, Advisory Lock Functions
    pg_aggregate, pg_aggregate
    pg_am, pg_am
    pg_amop, pg_amop
    pg_amproc, pg_amproc
    pg_archivecleanup, pg_archivecleanup
    pg_attrdef, pg_attrdef
    pg_attribute, pg_attribute
    pg_authid, pg_authid
    pg_auth_members, pg_auth_members
    pg_available_extensions, pg_available_extensions
    pg_available_extension_versions, pg_available_extension_versions
    pg_backend_pid, System Information Functions
    pg_backup_start_time, Backup Control Functions
    pg_basebackup, pg_basebackup
    pg_blocking_pids, System Information Functions
    pg_buffercache, pg_buffercache
    pg_buffercache_pages, pg_buffercache
    pg_cancel_backend, Server Signaling Functions
    pg_cast, pg_cast
    pg_class, pg_class
    pg_client_encoding, String Functions and Operators
    pg_collation, pg_collation
    pg_collation_actual_version, Database Object Management Functions
    pg_collation_is_visible, System Information Functions
    pg_column_size, Database Object Management Functions
    pg_config, pg_config, pg_config
    with + ecpg, Processing Embedded SQL Programs
    with libpq, Building libpq Programs
    with user-defined C functions, Writing Code
    pg_conf_load_time, System Information Functions
    pg_constraint, pg_constraint
    pg_controldata, pg_controldata
    pg_control_checkpoint, System Information Functions
    pg_control_init, System Information Functions
    pg_control_recovery, System Information Functions
    pg_control_system, System Information Functions
    pg_conversion, pg_conversion
    pg_conversion_is_visible, System Information Functions
    pg_create_logical_replication_slot, Replication Functions
    pg_create_physical_replication_slot, Replication Functions
    pg_create_restore_point, Backup Control Functions
    pg_ctl, Creating a Database Cluster, Starting the Database Server, pg_ctl
    pg_current_logfile, System Information Functions
    pg_current_wal_flush_lsn, Backup Control Functions
    pg_current_wal_insert_lsn, Backup Control Functions
    pg_current_wal_lsn, Backup Control Functions
    pg_cursors, pg_cursors
    pg_database, Template Databases, pg_database
    pg_database_size, Database Object Management Functions
    pg_db_role_setting, pg_db_role_setting
    pg_ddl_command, Pseudo-Types
    pg_default_acl, pg_default_acl
    pg_depend, pg_depend
    pg_describe_object, System Information Functions
    pg_description, pg_description
    pg_drop_replication_slot, Replication Functions
    pg_dump, pg_dump
    pg_dumpall, pg_dumpall
    use during upgrade, Upgrading Data via pg_dumpall
    pg_enum, pg_enum
    pg_event_trigger, pg_event_trigger
    pg_event_trigger_ddl_commands, Capturing Changes at Command End
    pg_event_trigger_dropped_objects, Processing Objects Dropped by a DDL Command
    pg_event_trigger_table_rewrite_oid, Handling a Table Rewrite Event
    pg_event_trigger_table_rewrite_reason, Handling a Table Rewrite Event
    pg_export_snapshot, Snapshot Synchronization Functions
    pg_extension, pg_extension
    pg_extension_config_dump, Extension Configuration Tables
    pg_filenode_relation, Database Object Management Functions
    pg_file_rename, adminpack
    pg_file_settings, pg_file_settings
    pg_file_unlink, adminpack
    pg_file_write, adminpack
    pg_foreign_data_wrapper, pg_foreign_data_wrapper
    pg_foreign_server, pg_foreign_server
    pg_foreign_table, pg_foreign_table
    pg_freespace, Functions
    pg_freespacemap, pg_freespacemap
    pg_function_is_visible, System Information Functions
    pg_get_constraintdef, System Information Functions
    pg_get_expr, System Information Functions
    pg_get_functiondef, System Information Functions
    pg_get_function_arguments, System Information Functions
    pg_get_function_identity_arguments, System Information Functions
    pg_get_function_result, System Information Functions
    pg_get_indexdef, System Information Functions
    pg_get_keywords, System Information Functions
    pg_get_object_address, System Information Functions
    pg_get_ruledef, System Information Functions
    pg_get_serial_sequence, System Information Functions
    pg_get_statisticsobjdef, System Information Functions
    pg_get_triggerdef, System Information Functions
    pg_get_userbyid, System Information Functions
    pg_get_viewdef, System Information Functions
    pg_group, pg_group
    pg_has_role, System Information Functions
    pg_hba.conf, The pg_hba.conf File
    pg_hba_file_rules, pg_hba_file_rules
    pg_ident.conf, User Name Maps
    pg_identify_object, System Information Functions
    pg_identify_object_as_address, System Information Functions
    pg_import_system_collations, Database Object Management Functions
    pg_index, pg_index
    pg_indexam_has_property, System Information Functions
    pg_indexes, pg_indexes
    pg_indexes_size, Database Object Management Functions
    pg_index_column_has_property, System Information Functions
    pg_index_has_property, System Information Functions
    pg_inherits, pg_inherits
    pg_init_privs, pg_init_privs
    pg_isready, pg_isready
    pg_is_in_backup, Backup Control Functions
    pg_is_in_recovery, Recovery Control Functions
    pg_is_other_temp_schema, System Information Functions
    pg_is_wal_replay_paused, Recovery Control Functions
    pg_language, pg_language
    pg_largeobject, pg_largeobject
    pg_largeobject_metadata, pg_largeobject_metadata
    pg_last_committed_xact, System Information Functions
    pg_last_wal_receive_lsn, Recovery Control Functions
    pg_last_wal_replay_lsn, Recovery Control Functions
    pg_last_xact_replay_timestamp, Recovery Control Functions
    pg_listening_channels, System Information Functions
    pg_locks, pg_locks
    pg_logdir_ls, adminpack
    pg_logical_emit_message, Replication Functions
    pg_logical_slot_get_binary_changes, Replication Functions
    pg_logical_slot_get_changes, Replication Functions
    pg_logical_slot_peek_binary_changes, Replication Functions
    pg_logical_slot_peek_changes, Replication Functions
    pg_lsn, pg_lsn Type
    pg_ls_dir, Generic File Access Functions
    pg_ls_logdir, Generic File Access Functions
    pg_ls_waldir, Generic File Access Functions
    pg_matviews, pg_matviews
    pg_my_temp_schema, System Information Functions
    pg_namespace, pg_namespace
    pg_notification_queue_usage, System Information Functions
    pg_notify, pg_notify
    pg_opclass, pg_opclass
    pg_opclass_is_visible, System Information Functions
    pg_operator, pg_operator
    pg_operator_is_visible, System Information Functions
    pg_opfamily, pg_opfamily
    pg_opfamily_is_visible, System Information Functions
    pg_options_to_table, System Information Functions
    pg_partitioned_table, pg_partitioned_table
    pg_pltemplate, pg_pltemplate
    pg_policies, pg_policies
    pg_policy, pg_policy
    pg_postmaster_start_time, System Information Functions
    pg_prepared_statements, pg_prepared_statements
    pg_prepared_xacts, pg_prepared_xacts
    pg_prewarm, pg_prewarm
    pg_proc, pg_proc
    pg_publication, pg_publication
    pg_publication_rel, pg_publication_rel
    pg_publication_tables, pg_publication_tables
    pg_range, pg_range
    pg_read_binary_file, Generic File Access Functions
    pg_read_file, Generic File Access Functions
    pg_receivewal, pg_receivewal
    pg_receivexlog, pg_receivexlog renamed to pg_receivewal (see pg_receivewal)
    pg_recvlogical, pg_recvlogical
    pg_relation_filenode, Database Object Management Functions
    pg_relation_filepath, Database Object Management Functions
    pg_relation_size, Database Object Management Functions
    pg_reload_conf, Server Signaling Functions
    pg_relpages, Functions
    pg_replication_origin, pg_replication_origin
    pg_replication_origin_advance, Replication Functions
    pg_replication_origin_create, Replication Functions
    pg_replication_origin_drop, Replication Functions
    pg_replication_origin_oid, Replication Functions
    pg_replication_origin_progress, Replication Functions
    pg_replication_origin_session_is_setup, Replication Functions
    pg_replication_origin_session_progress, Replication Functions
    pg_replication_origin_session_reset, Replication Functions
    pg_replication_origin_session_setup, Replication Functions
    pg_replication_origin_status, pg_replication_origin_status
    pg_replication_origin_xact_reset, Replication Functions
    pg_replication_origin_xact_setup, Replication Functions
    pg_replication_slots, pg_replication_slots
    pg_resetwal, pg_resetwal
    pg_resetxlog, pg_resetxlog renamed to pg_resetwal (see pg_resetwal)
    pg_restore, pg_restore
    pg_rewind, pg_rewind
    pg_rewrite, pg_rewrite
    pg_roles, pg_roles
    pg_rotate_logfile, Server Signaling Functions
    pg_rules, pg_rules
    pg_safe_snapshot_blocking_pids, System Information Functions
    pg_seclabel, pg_seclabel
    pg_seclabels, pg_seclabels
    pg_sequence, pg_sequence
    pg_sequences, pg_sequences
    pg_service.conf, The Connection Service File
    pg_settings, pg_settings
    pg_shadow, pg_shadow
    pg_shdepend, pg_shdepend
    pg_shdescription, pg_shdescription
    pg_shseclabel, pg_shseclabel
    pg_size_bytes, Database Object Management Functions
    pg_size_pretty, Database Object Management Functions
    pg_sleep, Delaying Execution
    pg_sleep_for, Delaying Execution
    pg_sleep_until, Delaying Execution
    pg_standby, pg_standby
    pg_start_backup, Backup Control Functions
    pg_statio_all_indexes, Viewing Statistics
    pg_statio_all_sequences, Viewing Statistics
    pg_statio_all_tables, Viewing Statistics
    pg_statio_sys_indexes, Viewing Statistics
    pg_statio_sys_sequences, Viewing Statistics
    pg_statio_sys_tables, Viewing Statistics
    pg_statio_user_indexes, Viewing Statistics
    pg_statio_user_sequences, Viewing Statistics
    pg_statio_user_tables, Viewing Statistics
    pg_statistic, Single-Column Statistics, pg_statistic
    pg_statistics_obj_is_visible, System Information Functions
    pg_statistic_ext, Extended Statistics, pg_statistic_ext
    pg_stats, Single-Column Statistics, pg_stats
    pg_stat_activity, Viewing Statistics
    pg_stat_all_indexes, Viewing Statistics
    pg_stat_all_tables, Viewing Statistics
    pg_stat_archiver, Viewing Statistics
    pg_stat_bgwriter, Viewing Statistics
    pg_stat_clear_snapshot, Statistics Functions
    pg_stat_database, Viewing Statistics
    pg_stat_database_conflicts, Viewing Statistics
    pg_stat_file, Generic File Access Functions
    pg_stat_get_activity, Statistics Functions
    pg_stat_get_snapshot_timestamp, Statistics Functions
    pg_stat_progress_vacuum, Viewing Statistics
    pg_stat_replication, Viewing Statistics
    pg_stat_reset, Statistics Functions
    pg_stat_reset_shared, Statistics Functions
    pg_stat_reset_single_function_counters, Statistics Functions
    pg_stat_reset_single_table_counters, Statistics Functions
    pg_stat_ssl, Viewing Statistics
    pg_stat_statements, pg_stat_statements
    function, Functions
    pg_stat_statements_reset, Functions
    pg_stat_subscription, Viewing Statistics
    pg_stat_sys_indexes, Viewing Statistics
    pg_stat_sys_tables, Viewing Statistics
    pg_stat_user_functions, Viewing Statistics
    pg_stat_user_indexes, Viewing Statistics
    pg_stat_user_tables, Viewing Statistics
    pg_stat_wal_receiver, Viewing Statistics
    pg_stat_xact_all_tables, Viewing Statistics
    pg_stat_xact_sys_tables, Viewing Statistics
    pg_stat_xact_user_functions, Viewing Statistics
    pg_stat_xact_user_tables, Viewing Statistics
    pg_stop_backup, Backup Control Functions
    pg_subscription, pg_subscription
    pg_subscription_rel, pg_subscription_rel
    pg_switch_wal, Backup Control Functions
    pg_tables, pg_tables
    pg_tablespace, pg_tablespace
    pg_tablespace_databases, System Information Functions
    pg_tablespace_location, System Information Functions
    pg_tablespace_size, Database Object Management Functions
    pg_table_is_visible, System Information Functions
    pg_table_size, Database Object Management Functions
    pg_temp, Statement Behavior
    securing functions, Writing SECURITY DEFINER Functions Safely
    pg_terminate_backend, Server Signaling Functions
    pg_test_fsync, pg_test_fsync
    pg_test_timing, pg_test_timing
    pg_timezone_abbrevs, pg_timezone_abbrevs
    pg_timezone_names, pg_timezone_names
    pg_total_relation_size, Database Object Management Functions
    pg_transform, pg_transform
    pg_trgm, pg_trgm
    pg_trgm.similarity_threshold configuration parameter, GUC Parameters
    pg_trgm.word_similarity_threshold configuration parameter + , GUC Parameters
    pg_trigger, pg_trigger
    pg_try_advisory_lock, Advisory Lock Functions
    pg_try_advisory_lock_shared, Advisory Lock Functions
    pg_try_advisory_xact_lock, Advisory Lock Functions
    pg_try_advisory_xact_lock_shared, Advisory Lock Functions
    pg_ts_config, pg_ts_config
    pg_ts_config_is_visible, System Information Functions
    pg_ts_config_map, pg_ts_config_map
    pg_ts_dict, pg_ts_dict
    pg_ts_dict_is_visible, System Information Functions
    pg_ts_parser, pg_ts_parser
    pg_ts_parser_is_visible, System Information Functions
    pg_ts_template, pg_ts_template
    pg_ts_template_is_visible, System Information Functions
    pg_type, pg_type
    pg_typeof, System Information Functions
    pg_type_is_visible, System Information Functions
    pg_upgrade, pg_upgrade
    pg_user, pg_user
    pg_user_mapping, pg_user_mapping
    pg_user_mappings, pg_user_mappings
    pg_views, pg_views
    pg_visibility, pg_visibility
    pg_waldump, pg_waldump
    pg_walfile_name, Backup Control Functions
    pg_walfile_name_offset, Backup Control Functions
    pg_wal_lsn_diff, Backup Control Functions
    pg_wal_replay_pause, Recovery Control Functions
    pg_wal_replay_resume, Recovery Control Functions
    pg_xact_commit_timestamp, System Information Functions
    pg_xlogdump, pg_xlogdump renamed to pg_waldump (see pg_waldump)
    phantom read, Transaction Isolation
    phraseto_tsquery, Text Search Functions and Operators, Parsing Queries
    pi, Mathematical Functions and Operators
    PIC, Compiling and Linking Dynamically-loaded Functions
    PID
    determining PID of server process
    in libpq, Connection Status Functions
    PITR, Backup and Restore
    PITR standby, High Availability, Load Balancing, and Replication
    pkg-config, Installation Procedure
    with ecpg, Processing Embedded SQL Programs
    with - libpq, Building libpq Programs
    PL/Perl, PL/Perl - Perl Procedural Language
    PL/PerlU, Trusted and Untrusted PL/Perl
    PL/pgSQL, PL/pgSQL - SQL Procedural Language
    PL/Python, PL/Python - Python Procedural Language
    PL/SQL (Oracle), Porting from Oracle PL/SQL
    porting to PL/pgSQL, Porting from Oracle PL/SQL
    PL/Tcl, PL/Tcl - Tcl Procedural Language
    plainto_tsquery, Text Search Functions and Operators, Parsing Queries
    plperl.on_init configuration parameter, Configuration
    plperl.on_plperlu_init configuration parameter, Configuration
    plperl.on_plperl_init configuration parameter, Configuration
    plperl.use_strict configuration parameter, Configuration
    plpgsql.check_asserts configuration parameter, Checking Assertions
    plpgsql.variable_conflict configuration parameter, Variable Substitution
    pltcl.start_proc configuration parameter, PL/Tcl Configuration
    pltclu.start_proc configuration parameter, PL/Tcl Configuration
    point, Points, Geometric Functions and Operators
    point-in-time recovery, Backup and Restore
    policy, Row Security Policies
    polygon, Polygons, Geometric Functions and Operators
    polymorphic function, Polymorphic Types
    polymorphic type, Polymorphic Types
    popen, Geometric Functions and Operators
    populate_record, hstore Operators and Functions
    port, Parameter Key Words
    port configuration parameter, Connection Settings
    position, String Functions and Operators, Binary String Functions and Operators
    POSTGRES, The Berkeley POSTGRES Project
    postgres, Architectural Fundamentals, Starting the Database Server, Creating a Database, postgres
    postgres user, The PostgreSQL User Account
    Postgres95, Postgres95
    postgresql.auto.conf, Parameter Interaction via the Configuration File
    postgresql.conf, Parameter Interaction via the Configuration File
    postgres_fdw, postgres_fdw
    postmaster, postmaster
    post_auth_delay configuration parameter, Developer Options
    power, Mathematical Functions and Operators
    PQbackendPID, Connection Status Functions
    PQbinaryTuples, Retrieving Query Result Information
    with COPY, Functions Associated with the COPY Command
    PQcancel, Canceling Queries in Progress
    PQclear, Main Functions
    PQclientEncoding, Control Functions
    PQcmdStatus, Retrieving Other Result Information
    PQcmdTuples, Retrieving Other Result Information
    PQconndefaults, Database Connection Control Functions
    PQconnectdb, Database Connection Control Functions
    PQconnectdbParams, Database Connection Control Functions
    PQconnectionNeedsPassword, Connection Status Functions
    PQconnectionUsedPassword, Connection Status Functions
    PQconnectPoll, Database Connection Control Functions
    PQconnectStart, Database Connection Control Functions
    PQconnectStartParams, Database Connection Control Functions
    PQconninfo, Database Connection Control Functions
    PQconninfoFree, Miscellaneous Functions
    PQconninfoParse, Database Connection Control Functions
    PQconsumeInput, Asynchronous Command Processing
    PQcopyResult, Miscellaneous Functions
    PQdb, Connection Status Functions
    PQdescribePortal, Main Functions
    PQdescribePrepared, Main Functions
    PQencryptPassword, Miscellaneous Functions
    PQencryptPasswordConn, Miscellaneous Functions
    PQendcopy, Obsolete Functions for COPY
    PQerrorMessage, Connection Status Functions
    PQescapeBytea, Escaping Strings for Inclusion in SQL Commands
    PQescapeByteaConn, Escaping Strings for Inclusion in SQL Commands
    PQescapeIdentifier, Escaping Strings for Inclusion in SQL Commands
    PQescapeLiteral, Escaping Strings for Inclusion in SQL Commands
    PQescapeString, Escaping Strings for Inclusion in SQL Commands
    PQescapeStringConn, Escaping Strings for Inclusion in SQL Commands
    PQexec, Main Functions
    PQexecParams, Main Functions
    PQexecPrepared, Main Functions
    PQfformat, Retrieving Query Result Information
    with COPY, Functions Associated with the COPY Command
    PQfinish, Database Connection Control Functions
    PQfireResultCreateEvents, Miscellaneous Functions
    PQflush, Asynchronous Command Processing
    PQfmod, Retrieving Query Result Information
    PQfn, The Fast-Path Interface
    PQfname, Retrieving Query Result Information
    PQfnumber, Retrieving Query Result Information
    PQfreeCancel, Canceling Queries in Progress
    PQfreemem, Miscellaneous Functions
    PQfsize, Retrieving Query Result Information
    PQftable, Retrieving Query Result Information
    PQftablecol, Retrieving Query Result Information
    PQftype, Retrieving Query Result Information
    PQgetCancel, Canceling Queries in Progress
    PQgetCopyData, Functions for Receiving COPY Data
    PQgetisnull, Retrieving Query Result Information
    PQgetlength, Retrieving Query Result Information
    PQgetline, Obsolete Functions for COPY
    PQgetlineAsync, Obsolete Functions for COPY
    PQgetResult, Asynchronous Command Processing
    PQgetssl, Connection Status Functions
    PQgetvalue, Retrieving Query Result Information
    PQhost, Connection Status Functions
    PQinitOpenSSL, SSL Library Initialization
    PQinitSSL, SSL Library Initialization
    PQinstanceData, Event Support Functions
    PQisBusy, Asynchronous Command Processing
    PQisnonblocking, Asynchronous Command Processing
    PQisthreadsafe, Behavior in Threaded Programs
    PQlibVersion, Miscellaneous Functions
    (see also PQserverVersion)
    PQmakeEmptyPGresult, Miscellaneous Functions
    PQnfields, Retrieving Query Result Information
    with COPY, Functions Associated with the COPY Command
    PQnotifies, Asynchronous Notification
    PQnparams, Retrieving Query Result Information
    PQntuples, Retrieving Query Result Information
    PQoidStatus, Retrieving Other Result Information
    PQoidValue, Retrieving Other Result Information
    PQoptions, Connection Status Functions
    PQparameterStatus, Connection Status Functions
    PQparamtype, Retrieving Query Result Information
    PQpass, Connection Status Functions
    PQping, Database Connection Control Functions
    PQpingParams, Database Connection Control Functions
    PQport, Connection Status Functions
    PQprepare, Main Functions
    PQprint, Retrieving Query Result Information
    PQprotocolVersion, Connection Status Functions
    PQputCopyData, Functions for Sending COPY Data
    PQputCopyEnd, Functions for Sending COPY Data
    PQputline, Obsolete Functions for COPY
    PQputnbytes, Obsolete Functions for COPY
    PQregisterEventProc, Event Support Functions
    PQrequestCancel, Canceling Queries in Progress
    PQreset, Database Connection Control Functions
    PQresetPoll, Database Connection Control Functions
    PQresetStart, Database Connection Control Functions
    PQresStatus, Main Functions
    PQresultAlloc, Miscellaneous Functions
    PQresultErrorField, Main Functions
    PQresultErrorMessage, Main Functions
    PQresultInstanceData, Event Support Functions
    PQresultSetInstanceData, Event Support Functions
    PQresultStatus, Main Functions
    PQresultVerboseErrorMessage, Main Functions
    PQsendDescribePortal, Asynchronous Command Processing
    PQsendDescribePrepared, Asynchronous Command Processing
    PQsendPrepare, Asynchronous Command Processing
    PQsendQuery, Asynchronous Command Processing
    PQsendQueryParams, Asynchronous Command Processing
    PQsendQueryPrepared, Asynchronous Command Processing
    PQserverVersion, Connection Status Functions
    PQsetClientEncoding, Control Functions
    PQsetdb, Database Connection Control Functions
    PQsetdbLogin, Database Connection Control Functions
    PQsetErrorContextVisibility, Control Functions
    PQsetErrorVerbosity, Control Functions
    PQsetInstanceData, Event Support Functions
    PQsetnonblocking, Asynchronous Command Processing
    PQsetNoticeProcessor, Notice Processing
    PQsetNoticeReceiver, Notice Processing
    PQsetResultAttrs, Miscellaneous Functions
    PQsetSingleRowMode, Retrieving Query Results Row-By-Row
    PQsetvalue, Miscellaneous Functions
    PQsocket, Connection Status Functions
    PQsslAttribute, Connection Status Functions
    PQsslAttributeNames, Connection Status Functions
    PQsslInUse, Connection Status Functions
    PQsslStruct, Connection Status Functions
    PQstatus, Connection Status Functions
    PQtrace, Control Functions
    PQtransactionStatus, Connection Status Functions
    PQtty, Connection Status Functions
    PQunescapeBytea, Escaping Strings for Inclusion in SQL Commands
    PQuntrace, Control Functions
    PQuser, Connection Status Functions
    predicate locking, Serializable Isolation Level
    PREPARE, PREPARE
    PREPARE TRANSACTION, PREPARE TRANSACTION
    prepared statements, DEALLOCATE, EXECUTE, EXPLAIN, PREPARE
    creating, PREPARE
    executing, EXECUTE
    removing, DEALLOCATE
    showing the query plan, EXPLAIN
    preparing a query
    in PL/pgSQL, Plan Caching
    in PL/Python, Database Access Functions
    in PL/Tcl, Database Access from PL/Tcl
    pre_auth_delay configuration parameter, Developer Options
    primary key, Primary Keys
    primary_conninfo recovery parameter, Standby Server Settings
    primary_slot_name recovery parameter, Standby Server Settings
    privilege, Privileges, Schemas and Privileges, Rules and Privileges, Rules and Privileges
    querying, System Information Functions
    with rules, Rules and Privileges
    for schemas, Schemas and Privileges
    with views, Rules and Privileges
    procedural language, Procedural Languages, Writing A Procedural Language Handler
    externally maintained, Procedural Languages
    handler for, Writing A Procedural Language Handler
    protocol, Frontend/Backend Protocol
    frontend-backend, Frontend/Backend Protocol
    ps, Standard Unix Tools
    to monitor activity, Standard Unix Tools
    psql, Accessing a Database, psql
    Python, PL/Python - Python Procedural Language

    R

    radians, Mathematical Functions and Operators
    radius, Geometric Functions and Operators
    RADIUS, RADIUS Authentication
    RAISE
    in PL/pgSQL, Reporting Errors and Messages
    random, Mathematical Functions and Operators
    random_page_cost configuration parameter, Planner Cost Constants
    range table, The Query Tree
    range type, Range Types
    exclude, Constraints on Ranges
    indexes on, Indexing
    rank, Window Functions
    hypothetical, Aggregate Functions
    read committed, Read Committed Isolation Level
    read-only transaction
    setting, SET TRANSACTION
    setting default, Statement Behavior
    readline, Requirements
    real, Floating-Point Types
    REASSIGN OWNED, REASSIGN OWNED
    record, Pseudo-Types
    recovery.conf, Recovery Configuration
    recovery_end_command recovery parameter, Archive Recovery Settings
    recovery_min_apply_delay recovery parameter, Standby Server Settings
    recovery_target recovery parameter, Recovery Target Settings
    recovery_target_action recovery parameter, Recovery Target Settings
    recovery_target_inclusive recovery parameter, Recovery Target Settings
    recovery_target_lsn recovery parameter, Recovery Target Settings
    recovery_target_name recovery parameter, Recovery Target Settings
    recovery_target_time recovery parameter, Recovery Target Settings
    recovery_target_timeline recovery parameter, Recovery Target Settings
    recovery_target_xid recovery parameter, Recovery Target Settings
    rectangle, Boxes
    referential integrity, Foreign Keys, Foreign Keys
    REFRESH MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW
    regclass, Object Identifier Types
    regconfig, Object Identifier Types
    regdictionary, Object Identifier Types
    regexp_match, String Functions and Operators, POSIX Regular Expressions
    regexp_matches, String Functions and Operators, POSIX Regular Expressions
    regexp_replace, String Functions and Operators, POSIX Regular Expressions
    regexp_split_to_array, String Functions and Operators, POSIX Regular Expressions
    regexp_split_to_table, String Functions and Operators, POSIX Regular Expressions
    regoper, Object Identifier Types
    regoperator, Object Identifier Types
    regproc, Object Identifier Types
    regprocedure, Object Identifier Types
    regression intercept, Aggregate Functions
    regression slope, Aggregate Functions
    regression test, Installation Procedure
    regression tests, Regression Tests
    regr_avgx, Aggregate Functions
    regr_avgy, Aggregate Functions
    regr_count, Aggregate Functions
    regr_intercept, Aggregate Functions
    regr_r2, Aggregate Functions
    regr_slope, Aggregate Functions
    regr_sxx, Aggregate Functions
    regr_sxy, Aggregate Functions
    regr_syy, Aggregate Functions
    regtype, Object Identifier Types
    regular expression, SIMILAR TO Regular Expressions, POSIX Regular Expressions
    (see also pattern matching)
    regular expressions
    and locales, Behavior
    reindex, Routine Reindexing
    REINDEX, REINDEX
    reindexdb, reindexdb
    relation, Concepts
    relational database, Concepts
    RELEASE SAVEPOINT, RELEASE SAVEPOINT
    repeat, String Functions and Operators
    repeatable read, Repeatable Read Isolation Level
    replace, String Functions and Operators
    replacement_sort_tuples configuration parameter, Memory
    replication, High Availability, Load Balancing, and Replication
    Replication Origins, Replication Progress Tracking
    Replication Progress Tracking, Replication Progress Tracking
    replication slot
    logical replication, Replication Slots
    streaming replication, Replication Slots
    reporting errors
    in PL/pgSQL, Reporting Errors and Messages
    RESET, RESET
    restartpoint, WAL Configuration
    restart_after_crash configuration parameter, Error Handling
    restore_command recovery parameter, Archive Recovery Settings
    RESTRICT, Dependency Tracking
    with DROP, Dependency Tracking
    foreign key action, Foreign Keys
    RETURN NEXT
    in PL/pgSQL, RETURN NEXT and RETURN QUERY
    RETURN QUERY
    in PL/pgSQL, RETURN NEXT and RETURN QUERY
    RETURNING, Returning Data From Modified Rows
    RETURNING INTO, Executing a Query with a Single-row Result
    in PL/pgSQL, Executing a Query with a Single-row Result
    reverse, String Functions and Operators
    REVOKE, Privileges, REVOKE
    right, String Functions and Operators
    right join, Joined Tables
    role, Database Roles, Role Membership, Default Roles
    applicable, applicable_roles
    enabled, enabled_roles
    membership in, Role Membership
    privilege to create, Role Attributes
    privilege to initiate replication, Role Attributes
    ROLLBACK, ROLLBACK
    rollback
    psql, Variables
    ROLLBACK PREPARED, ROLLBACK PREPARED
    ROLLBACK TO SAVEPOINT, ROLLBACK TO SAVEPOINT
    ROLLUP, GROUPING SETS, CUBE, and ROLLUP
    round, Mathematical Functions and Operators
    routine maintenance, Routine Database Maintenance Tasks
    row, Concepts, Table Basics
    ROW, Row Constructors
    row estimation, Row Estimation Examples
    multivariate, Multivariate Statistics Examples
    planner, Row Estimation Examples
    row type, Composite Types
    constructor, Row Constructors
    row-level security, Row Security Policies
    row-wise comparison, Row and Array Comparisons
    row_number, Window Functions
    row_security configuration parameter, Statement Behavior
    row_security_active, System Information Functions
    row_to_json, JSON Functions and Operators
    rpad, String Functions and Operators
    rtrim, String Functions and Operators
    rule, The Rule System, Views and the Rule System, How SELECT Rules Work, Materialized Views, Rules on INSERT, UPDATE, and DELETE, Rules on INSERT, UPDATE, and DELETE, Rules on INSERT, UPDATE, and DELETE, Rules Versus Triggers
    and materialized views, Materialized Views
    and views, Views and the Rule System
    for DELETE, Rules on INSERT, UPDATE, and DELETE
    for INSERT, Rules on INSERT, UPDATE, and DELETE
    for SELECT, How SELECT Rules Work
    compared with triggers, Rules Versus Triggers
    for UPDATE, Rules on INSERT, UPDATE, and DELETE

    S

    SAVEPOINT, SAVEPOINT
    savepoints, RELEASE SAVEPOINT, ROLLBACK TO SAVEPOINT, SAVEPOINT
    defining, SAVEPOINT
    releasing, RELEASE SAVEPOINT
    rolling back, ROLLBACK TO SAVEPOINT
    scalar (see expression)
    scale, Mathematical Functions and Operators
    schema, Schemas, Creating a Schema, The Public Schema, Overview
    creating, Creating a Schema
    current, The Schema Search Path, System Information Functions
    public, The Public Schema
    removing, Creating a Schema
    SCRAM, Password Authentication
    search path, The Schema Search Path
    current, System Information Functions
    object visibility, System Information Functions
    search_path configuration parameter, The Schema Search Path, Statement Behavior
    use in securing functions, Writing SECURITY DEFINER Functions Safely
    SECURITY LABEL, SECURITY LABEL
    sec_to_gc, Cube-based Earth Distances
    seg, seg
    segment_size configuration parameter, Preset Options
    SELECT, Querying a Table, Queries, SELECT Output Columns, SELECT
    determination of result type, SELECT Output Columns
    select list, Select Lists
    SELECT INTO, Executing a Query with a Single-row Result, SELECT INTO
    in PL/pgSQL, Executing a Query with a Single-row Result
    semaphores, Shared Memory and Semaphores
    sepgsql, sepgsql
    sepgsql.debug_audit configuration parameter, GUC Parameters
    sepgsql.permissive configuration parameter, GUC Parameters
    sequence, Sequence Manipulation Functions
    and serial type, Serial Types
    sequential scan, Planner Method Configuration
    seq_page_cost configuration parameter, Planner Cost Constants
    serial, Serial Types
    serial2, Serial Types
    serial4, Serial Types
    serial8, Serial Types
    serializable, Serializable Isolation Level
    Serializable Snapshot Isolation, Introduction
    serialization anomaly, Transaction Isolation, Serializable Isolation Level
    server log, Error Reporting and Logging, Log File Maintenance
    log file maintenance, Log File Maintenance
    server spoofing, Preventing Server Spoofing
    server_encoding configuration parameter, Preset Options
    server_version configuration parameter, Preset Options
    server_version_num configuration parameter, Preset Options
    session_preload_libraries configuration parameter, Shared Library Preloading
    session_replication_role configuration parameter, Statement Behavior
    session_user, System Information Functions
    SET, Configuration Settings Functions, SET
    SET CONSTRAINTS, SET CONSTRAINTS
    set difference, Combining Queries
    set intersection, Combining Queries
    set operation, Combining Queries
    set returning functions, Set Returning Functions
    functions, Set Returning Functions
    SET ROLE, SET ROLE
    SET SESSION AUTHORIZATION, SET SESSION AUTHORIZATION
    SET TRANSACTION, SET TRANSACTION
    set union, Combining Queries
    SET XML OPTION, Statement Behavior
    setseed, Mathematical Functions and Operators
    setval, Sequence Manipulation Functions
    setweight, Text Search Functions and Operators, Manipulating Documents
    setweight for specific lexeme(s), Text Search Functions and Operators
    set_bit, Binary String Functions and Operators
    set_byte, Binary String Functions and Operators
    set_config, Configuration Settings Functions
    set_limit, Functions and Operators
    set_masklen, Network Address Functions and Operators
    shared library, Shared Libraries, Compiling and Linking Dynamically-loaded Functions
    shared memory, Shared Memory and Semaphores
    shared_buffers configuration parameter, Memory
    shared_preload_libraries, Shared Memory and LWLocks
    shared_preload_libraries configuration parameter, Shared Library Preloading
    shobj_description, System Information Functions
    SHOW, Configuration Settings Functions, SHOW, Streaming Replication Protocol
    show_limit, Functions and Operators
    show_trgm, Functions and Operators
    shutdown, Shutting Down the Server
    SIGHUP, Parameter Interaction via the Configuration File, The pg_hba.conf File, User Name Maps
    SIGINT, Shutting Down the Server
    sign, Mathematical Functions and Operators
    signal
    backend processes, Server Signaling Functions
    significant digits, Locale and Formatting
    SIGQUIT, Shutting Down the Server
    SIGTERM, Shutting Down the Server
    SIMILAR TO, SIMILAR TO Regular Expressions
    similarity, Functions and Operators
    sin, Mathematical Functions and Operators
    sind, Mathematical Functions and Operators
    single-user mode, Options for Single-User Mode
    skeys, hstore Operators and Functions
    sleep, Delaying Execution
    slice, hstore Operators and Functions
    sliced bread (see TOAST)
    smallint, Integer Types
    smallserial, Serial Types
    Solaris, Solaris
    installation on, Solaris
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    SOME, Aggregate Functions, Subquery Expressions, Row and Array Comparisons
    sort, intarray Functions and Operators
    sorting, Sorting Rows
    sort_asc, intarray Functions and Operators
    sort_desc, intarray Functions and Operators
    soundex, Soundex
    SP-GiST (see index)
    SPI, Server Programming Interface, spi
    examples, spi
    SPI_connect, SPI_connect
    SPI_copytuple, SPI_copytuple
    spi_cursor_close
    in PL/Perl, Database Access from PL/Perl
    SPI_cursor_close, SPI_cursor_close
    SPI_cursor_fetch, SPI_cursor_fetch
    SPI_cursor_find, SPI_cursor_find
    SPI_cursor_move, SPI_cursor_move
    SPI_cursor_open, SPI_cursor_open
    SPI_cursor_open_with_args, SPI_cursor_open_with_args
    SPI_cursor_open_with_paramlist, SPI_cursor_open_with_paramlist
    SPI_exec, SPI_exec
    SPI_execp, SPI_execp
    SPI_execute, SPI_execute
    SPI_execute_plan, SPI_execute_plan
    SPI_execute_plan_with_paramlist, SPI_execute_plan_with_paramlist
    SPI_execute_with_args, SPI_execute_with_args
    spi_exec_prepared
    in PL/Perl, Database Access from PL/Perl
    spi_exec_query
    in PL/Perl, Database Access from PL/Perl
    spi_fetchrow
    in PL/Perl, Database Access from PL/Perl
    SPI_finish, SPI_finish
    SPI_fname, SPI_fname
    SPI_fnumber, SPI_fnumber
    spi_freeplan
    in PL/Perl, Database Access from PL/Perl
    SPI_freeplan, SPI_freeplan
    SPI_freetuple, SPI_freetuple
    SPI_freetuptable, SPI_freetuptable
    SPI_getargcount, SPI_getargcount
    SPI_getargtypeid, SPI_getargtypeid
    SPI_getbinval, SPI_getbinval
    SPI_getnspname, SPI_getnspname
    SPI_getrelname, SPI_getrelname
    SPI_gettype, SPI_gettype
    SPI_gettypeid, SPI_gettypeid
    SPI_getvalue, SPI_getvalue
    SPI_is_cursor_plan, SPI_is_cursor_plan
    SPI_keepplan, SPI_keepplan
    spi_lastoid
    in PL/Tcl, Database Access from PL/Tcl
    SPI_modifytuple, SPI_modifytuple
    SPI_palloc, SPI_palloc
    SPI_pfree, SPI_pfree
    spi_prepare
    in PL/Perl, Database Access from PL/Perl
    SPI_prepare, SPI_prepare
    SPI_prepare_cursor, SPI_prepare_cursor
    SPI_prepare_params, SPI_prepare_params
    spi_query
    in PL/Perl, Database Access from PL/Perl
    spi_query_prepared
    in PL/Perl, Database Access from PL/Perl
    SPI_register_relation, SPI_register_relation
    SPI_register_trigger_data, SPI_register_trigger_data
    SPI_repalloc, SPI_repalloc
    SPI_returntuple, SPI_returntuple
    SPI_saveplan, SPI_saveplan
    SPI_scroll_cursor_fetch, SPI_scroll_cursor_fetch
    SPI_scroll_cursor_move, SPI_scroll_cursor_move
    SPI_unregister_relation, SPI_unregister_relation
    split_part, String Functions and Operators
    SQL/CLI, SQL Conformance
    SQL/Foundation, SQL Conformance
    SQL/Framework, SQL Conformance
    SQL/JRT, SQL Conformance
    SQL/MED, SQL Conformance
    SQL/OLB, SQL Conformance
    SQL/PSM, SQL Conformance
    SQL/Schemata, SQL Conformance
    SQL/XML, SQL Conformance
    limits and conformance, XML Limits and Conformance to SQL/XML
    sqrt, Mathematical Functions and Operators
    ssh, Secure TCP/IP Connections with SSH Tunnels
    SSI, Introduction
    SSL, Secure TCP/IP Connections with SSL, SSL Support
    in libpq, Connection Status Functions
    with libpq, Parameter Key Words
    ssl configuration parameter, Security and Authentication
    sslinfo, sslinfo
    ssl_ca_file configuration parameter, Security and Authentication
    ssl_cert_file configuration parameter, Security and Authentication
    ssl_cipher, Functions Provided
    ssl_ciphers configuration parameter, Security and Authentication
    ssl_client_cert_present, Functions Provided
    ssl_client_dn, Functions Provided
    ssl_client_dn_field, Functions Provided
    ssl_client_serial, Functions Provided
    ssl_crl_file configuration parameter, Security and Authentication
    ssl_dh_params_file configuration parameter, Security and Authentication
    ssl_ecdh_curve configuration parameter, Security and Authentication
    ssl_extension_info, Functions Provided
    ssl_issuer_dn, Functions Provided
    ssl_issuer_field, Functions Provided
    ssl_is_used, Functions Provided
    ssl_key_file configuration parameter, Security and Authentication
    ssl_prefer_server_ciphers configuration parameter, Security and Authentication
    ssl_version, Functions Provided
    SSPI, SSPI Authentication
    STABLE, Function Volatility Categories
    standard deviation, Aggregate Functions
    population, Aggregate Functions
    sample, Aggregate Functions
    standard_conforming_strings configuration parameter, Previous PostgreSQL Versions
    standby server, High Availability, Load Balancing, and Replication
    standby_mode recovery parameter, Standby Server Settings
    START TRANSACTION, START TRANSACTION
    START_REPLICATION, Streaming Replication Protocol
    statement_timeout configuration parameter, Statement Behavior
    statement_timestamp, Date/Time Functions and Operators
    statistics, Aggregate Functions, Statistics Used by the Planner, Extended Statistics, Updating Planner Statistics, The Statistics Collector
    of the planner, Statistics Used by the Planner, Extended Statistics, Updating Planner Statistics
    stats_temp_directory configuration parameter, Query and Index Statistics Collector
    stddev, Aggregate Functions
    stddev_pop, Aggregate Functions
    stddev_samp, Aggregate Functions
    STONITH, High Availability, Load Balancing, and Replication
    storage parameters, Storage Parameters
    Streaming Replication, High Availability, Load Balancing, and Replication
    string (see character string)
    strings
    backslash quotes, Previous PostgreSQL Versions
    escape warning, Previous PostgreSQL Versions
    standard conforming, Previous PostgreSQL Versions
    string_agg, Aggregate Functions
    string_to_array, Array Functions and Operators
    strip, Text Search Functions and Operators, Manipulating Documents
    strpos, String Functions and Operators
    subarray, intarray Functions and Operators
    subltree, Operators and Functions
    subpath, Operators and Functions
    subquery, Aggregate Functions, Scalar Subqueries, Subqueries, Subquery Expressions
    subscript, Subscripts
    substr, String Functions and Operators
    substring, String Functions and Operators, Binary String Functions and Operators, SIMILAR TO Regular Expressions, POSIX Regular Expressions
    subtransactions
    in PL/Tcl, Explicit Subtransactions in PL/Tcl
    sum, Aggregate Functions
    superuser, Accessing a Database, Role Attributes
    superuser_reserved_connections configuration parameter, Connection Settings
    suppress_redundant_updates_trigger, Trigger Functions
    svals, hstore Operators and Functions
    synchronize_seqscans configuration parameter, Previous PostgreSQL Versions
    synchronous commit, Asynchronous Commit
    Synchronous Replication, High Availability, Load Balancing, and Replication
    synchronous_commit configuration parameter, Settings
    synchronous_standby_names configuration parameter, Master Server
    syntax, SQL Syntax
    SQL, SQL Syntax
    syslog_facility configuration parameter, Where To Log
    syslog_ident configuration parameter, Where To Log
    syslog_sequence_numbers configuration parameter, Where To Log
    syslog_split_messages configuration parameter, Where To Log
    system catalog, The System Catalog Schema
    schema, The System Catalog Schema
    systemd, Installation Procedure, Starting the Database Server
    RemoveIPC, systemd RemoveIPC

    T

    table, Concepts, Table Basics, Modifying Tables
    creating, Table Basics
    inheritance, Inheritance
    modifying, Modifying Tables
    partitioning, Table Partitioning
    removing, Table Basics
    renaming, Renaming a Table
    TABLE command, SELECT
    table expression, Table Expressions
    table function, Table Functions, xmltable
    XMLTABLE, xmltable
    table sampling method, Writing A Table Sampling Method
    tablefunc, tablefunc
    tableoid, System Columns
    TABLESAMPLE method, Writing A Table Sampling Method
    tablespace, Tablespaces
    default, Statement Behavior
    temporary, Statement Behavior
    tan, Mathematical Functions and Operators
    tand, Mathematical Functions and Operators
    target list, The Query Tree
    Tcl, PL/Tcl - Tcl Procedural Language
    tcn, tcn
    tcp_keepalives_count configuration parameter, Connection Settings
    tcp_keepalives_idle configuration parameter, Connection Settings
    tcp_keepalives_interval configuration parameter, Connection Settings
    template0, Template Databases
    template1, Creating a Database, Template Databases
    temp_buffers configuration parameter, Memory
    temp_file_limit configuration parameter, Disk
    temp_tablespaces configuration parameter, Statement Behavior
    test, Regression Tests
    test_decoding, test_decoding
    text, Character Types, Network Address Functions and Operators
    text search, Text Search Types, Text Search Types, Full Text Search, GIN and GiST Index Types
    data types, Text Search Types
    functions and operators, Text Search Types
    indexes, GIN and GiST Index Types
    text2ltree, Operators and Functions
    threads, Behavior in Threaded Programs
    with libpq, Behavior in Threaded Programs
    tid, Object Identifier Types
    time, Date/Time Types, Times
    constants, Special Values
    current, Current Date/Time
    output format, Date/Time Output
    (see also formatting)
    time span, Date/Time Types
    time with time zone, Date/Time Types, Times
    time without time zone, Date/Time Types, Times
    time zone, Time Zones, Locale and Formatting, POSIX Time Zone Specifications
    conversion, AT TIME ZONE
    input abbreviations, Date/Time Configuration Files
    POSIX-style specification, POSIX Time Zone Specifications
    time zone data, Installation Procedure
    time zone names, Locale and Formatting
    timelines, Backup and Restore
    TIMELINE_HISTORY, Streaming Replication Protocol
    timeofday, Date/Time Functions and Operators
    timeout
    client authentication, Security and Authentication
    deadlock, Lock Management
    timestamp, Date/Time Types, Time Stamps
    timestamp with time zone, Date/Time Types, Time Stamps
    timestamp without time zone, Date/Time Types, Time Stamps
    timestamptz, Date/Time Types
    TimeZone configuration parameter, Locale and Formatting
    timezone_abbreviations configuration parameter, Locale and Formatting
    TOAST, TOAST
    and user-defined types, TOAST Considerations
    per-column storage settings, Description
    versus large objects, Introduction
    token, Lexical Structure
    to_ascii, String Functions and Operators
    to_char, Data Type Formatting Functions
    and locales, Behavior
    to_date, Data Type Formatting Functions
    to_hex, String Functions and Operators
    to_json, JSON Functions and Operators
    to_jsonb, JSON Functions and Operators
    to_number, Data Type Formatting Functions
    to_regclass, System Information Functions
    to_regnamespace, System Information Functions
    to_regoper, System Information Functions
    to_regoperator, System Information Functions
    to_regproc, System Information Functions
    to_regprocedure, System Information Functions
    to_regrole, System Information Functions
    to_regtype, System Information Functions
    to_timestamp, Data Type Formatting Functions, Date/Time Functions and Operators
    to_tsquery, Text Search Functions and Operators, Parsing Queries
    to_tsvector, Text Search Functions and Operators, Parsing Documents
    trace_locks configuration parameter, Developer Options
    trace_lock_oidmin configuration parameter, Developer Options
    trace_lock_table configuration parameter, Developer Options
    trace_lwlocks configuration parameter, Developer Options
    trace_notify configuration parameter, Developer Options
    trace_recovery_messages configuration parameter, Developer Options
    trace_sort configuration parameter, Developer Options
    trace_userlocks configuration parameter, Developer Options
    track_activities configuration parameter, Query and Index Statistics Collector
    track_activity_query_size configuration parameter, Query and Index Statistics Collector
    track_commit_timestamp configuration parameter, Sending Server(s)
    track_counts configuration parameter, Query and Index Statistics Collector
    track_functions configuration parameter, Query and Index Statistics Collector
    track_io_timing configuration parameter, Query and Index Statistics Collector
    transaction, Transactions
    transaction ID, Preventing Transaction ID Wraparound Failures
    wraparound, Preventing Transaction ID Wraparound Failures
    transaction isolation, Transaction Isolation
    transaction isolation level, Transaction Isolation
    read committed, Read Committed Isolation Level
    repeatable read, Repeatable Read Isolation Level
    serializable, Serializable Isolation Level
    setting, SET TRANSACTION
    setting default, Statement Behavior
    transaction log (see WAL)
    transaction_timestamp, Date/Time Functions and Operators
    transform_null_equals configuration parameter, Platform and Client Compatibility
    transition tables, CREATE TRIGGER
    (see also ephemeral named relation)
    implementation in PLs, SPI_register_trigger_data
    referencing from C trigger, Writing Trigger Functions in C
    translate, String Functions and Operators
    trigger, Pseudo-Types, Triggers, Writing Trigger Functions in C, Rules Versus Triggers, Trigger Procedures, Trigger Functions
    arguments for trigger functions, Overview of Trigger Behavior
    for updating a derived tsvector column, Triggers for Automatic Updates
    in C, Writing Trigger Functions in C
    in PL/pgSQL, Trigger Procedures
    in PL/Python, Trigger Functions
    in PL/Tcl, Trigger Procedures in PL/Tcl
    compared with rules, Rules Versus Triggers
    triggered_change_notification, tcn
    trigger_file recovery parameter, Standby Server Settings
    trim, String Functions and Operators, Binary String Functions and Operators
    true, Boolean Type
    trunc, Mathematical Functions and Operators, Network Address Functions and Operators
    TRUNCATE, TRUNCATE
    trusted, Trusted and Untrusted PL/Perl
    PL/Perl, Trusted and Untrusted PL/Perl
    tsm_handler, Pseudo-Types
    tsm_system_rows, tsm_system_rows
    tsm_system_time, tsm_system_time
    tsquery (data type), tsquery
    tsquery_phrase, Text Search Functions and Operators, Manipulating Queries
    tsvector (data type), tsvector
    tsvector concatenation, Manipulating Documents
    tsvector_to_array, Text Search Functions and Operators
    tsvector_update_trigger, Text Search Functions and Operators
    tsvector_update_trigger_column, Text Search Functions and Operators
    ts_debug, Text Search Functions and Operators, Configuration Testing
    ts_delete, Text Search Functions and Operators
    ts_filter, Text Search Functions and Operators
    ts_headline, Text Search Functions and Operators, Highlighting Results
    ts_lexize, Text Search Functions and Operators, Dictionary Testing
    ts_parse, Text Search Functions and Operators, Parser Testing
    ts_rank, Text Search Functions and Operators, Ranking Search Results
    ts_rank_cd, Text Search Functions and Operators, Ranking Search Results
    ts_rewrite, Text Search Functions and Operators, Query Rewriting
    ts_stat, Text Search Functions and Operators, Gathering Document Statistics
    ts_token_type, Text Search Functions and Operators, Parser Testing
    tuple_data_split, Heap Functions
    txid_current, System Information Functions
    txid_current_if_assigned, System Information Functions
    txid_current_snapshot, System Information Functions
    txid_snapshot_xip, System Information Functions
    txid_snapshot_xmax, System Information Functions
    txid_snapshot_xmin, System Information Functions
    txid_status, System Information Functions
    txid_visible_in_snapshot, System Information Functions
    type, Polymorphic Types (see data type)
    polymorphic, Polymorphic Types
    type cast, Numeric Constants, Type Casts

    U

    UESCAPE, Identifiers and Key Words, String Constants with Unicode Escapes
    unaccent, unaccent, Functions
    Unicode escape, String Constants with Unicode Escapes
    in identifiers, Identifiers and Key Words
    in string constants, String Constants with Unicode Escapes
    UNION, Combining Queries, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    uniq, intarray Functions and Operators
    unique constraint, Unique Constraints
    Unix domain socket, Parameter Key Words
    unix_socket_directories configuration parameter, Connection Settings
    unix_socket_group configuration parameter, Connection Settings
    unix_socket_permissions configuration parameter, Connection Settings
    unknown, Pseudo-Types
    UNLISTEN, UNLISTEN
    unnest, Array Functions and Operators
    for tsvector, Text Search Functions and Operators
    unqualified name, The Schema Search Path
    updatable views, Updatable Views
    UPDATE, Updates, Updating Data, Returning Data From Modified Rows, UPDATE
    RETURNING, Returning Data From Modified Rows
    update_process_title configuration parameter, Process Title
    updating, Updating Data
    upgrading, Upgrading a PostgreSQL Cluster
    upper, String Functions and Operators, Range Functions and Operators
    and locales, Behavior
    upper_inc, Range Functions and Operators
    upper_inf, Range Functions and Operators
    UPSERT, INSERT
    URI, Connection Strings
    user, System Information Functions, Database Roles
    current, System Information Functions
    user mapping, Foreign Data
    User name maps, User Name Maps
    UUID, UUID Type, Installation Procedure
    uuid-ossp, uuid-ossp
    uuid_generate_v1, uuid-ossp Functions
    uuid_generate_v1mc, uuid-ossp Functions
    uuid_generate_v3, uuid-ossp Functions

    V

    vacuum, Routine Vacuuming
    VACUUM, VACUUM
    vacuumdb, vacuumdb
    vacuumlo, vacuumlo
    vacuum_cost_delay configuration parameter, Cost-based Vacuum Delay
    vacuum_cost_limit configuration parameter, Cost-based Vacuum Delay
    vacuum_cost_page_dirty configuration parameter, Cost-based Vacuum Delay
    vacuum_cost_page_hit configuration parameter, Cost-based Vacuum Delay
    vacuum_cost_page_miss configuration parameter, Cost-based Vacuum Delay
    vacuum_defer_cleanup_age configuration parameter, Master Server
    vacuum_freeze_min_age configuration parameter, Statement Behavior
    vacuum_freeze_table_age configuration parameter, Statement Behavior
    vacuum_multixact_freeze_min_age configuration parameter, Statement Behavior
    vacuum_multixact_freeze_table_age configuration parameter, Statement Behavior
    value expression, Value Expressions
    VALUES, VALUES Lists, UNION, CASE, and Related Constructs, VALUES
    determination of result type, UNION, CASE, and Related Constructs
    varchar, Character Types
    variadic function, SQL Functions with Variable Numbers of Arguments
    variance, Aggregate Functions
    population, Aggregate Functions
    sample, Aggregate Functions
    var_pop, Aggregate Functions
    var_samp, Aggregate Functions
    version, Accessing a Database, System Information Functions, Upgrading a PostgreSQL Cluster
    compatibility, Upgrading a PostgreSQL Cluster
    view, Views, Views and the Rule System, Materialized Views, Cooperation with Views
    implementation through rules, Views and the Rule System
    materialized, Materialized Views
    updating, Cooperation with Views
    Visibility Map, Visibility Map
    VM (see Visibility Map)
    void, Pseudo-Types
    VOLATILE, Function Volatility Categories
    volatility, Function Volatility Categories
    functions, Function Volatility Categories
    VPATH, Installation Procedure, Extension Building Infrastructure

    W

    WAL, Reliability and the Write-Ahead Log
    wal_block_size configuration parameter, Preset Options
    wal_buffers configuration parameter, Settings
    wal_compression configuration parameter, Settings
    wal_consistency_checking configuration parameter, Developer Options
    wal_debug configuration parameter, Developer Options
    wal_keep_segments configuration parameter, Sending Server(s)
    wal_level configuration parameter, Settings
    wal_log_hints configuration parameter, Settings
    wal_receiver_status_interval configuration parameter, Standby Servers
    wal_receiver_timeout configuration parameter, Standby Servers
    wal_retrieve_retry_interval configuration parameter, Standby Servers
    wal_segment_size configuration parameter, Preset Options
    wal_sender_timeout configuration parameter, Sending Server(s)
    wal_sync_method configuration parameter, Settings
    wal_writer_delay configuration parameter, Settings
    wal_writer_flush_after configuration parameter, Settings
    warm standby, High Availability, Load Balancing, and Replication
    WHERE, The WHERE Clause
    where to log, Where To Log
    WHILE
    in PL/pgSQL, WHILE
    width, Geometric Functions and Operators
    width_bucket, Mathematical Functions and Operators
    window function, Window Functions, Window Function Calls, Window Function Processing, Window Functions
    built-in, Window Functions
    invocation, Window Function Calls
    order of execution, Window Function Processing
    WITH, WITH Queries (Common Table Expressions), SELECT
    in SELECT, WITH Queries (Common Table Expressions), SELECT
    WITH CHECK OPTION, CREATE VIEW
    WITHIN GROUP, Aggregate Expressions
    witness server, High Availability, Load Balancing, and Replication
    word_similarity, Functions and Operators
    work_mem configuration parameter, Memory
    wraparound
    of multixact IDs, Multixacts and Wraparound
    of transaction IDs, Preventing Transaction ID Wraparound Failures

    X

    xid, Object Identifier Types
    xmax, System Columns
    xmin, System Columns
    XML, XML Type
    XML export, Mapping Tables to XML
    XML Functions, XML Functions
    XML option, Creating XML Values, Statement Behavior
    xml2, xml2
    xmlagg, xmlagg, Aggregate Functions
    xmlbinary configuration parameter, Statement Behavior
    xmlcomment, xmlcomment
    xmlconcat, xmlconcat
    xmlelement, xmlelement
    XMLEXISTS, XMLEXISTS
    xmlforest, xmlforest
    xmloption configuration parameter, Statement Behavior
    xmlparse, Creating XML Values
    xmlpi, xmlpi
    xmlroot, xmlroot
    xmlserialize, Creating XML Values
    xmltable, xmltable
    xml_is_well_formed, xml_is_well_formed
    xml_is_well_formed_content, xml_is_well_formed
    xml_is_well_formed_document, xml_is_well_formed
    XPath, xpath
    xpath_exists, xpath_exists
    xpath_table, xpath_table
    xslt_process, xslt_process

    Z

    zero_damaged_pages configuration parameter, Developer Options
    zlib, Requirements, Installation Procedure
    \ No newline at end of file + libpq, Building libpq Programs
    PL/Perl, PL/Perl - Perl Procedural Language
    PL/PerlU, Trusted and Untrusted PL/Perl
    PL/pgSQL, PL/pgSQL - SQL Procedural Language
    PL/Python, PL/Python - Python Procedural Language
    PL/SQL (Oracle), Porting from Oracle PL/SQL
    porting to PL/pgSQL, Porting from Oracle PL/SQL
    PL/Tcl, PL/Tcl - Tcl Procedural Language
    plainto_tsquery, Text Search Functions and Operators, Parsing Queries
    plperl.on_init configuration parameter, Configuration
    plperl.on_plperlu_init configuration parameter, Configuration
    plperl.on_plperl_init configuration parameter, Configuration
    plperl.use_strict configuration parameter, Configuration
    plpgsql.check_asserts configuration parameter, Checking Assertions
    plpgsql.variable_conflict configuration parameter, Variable Substitution
    pltcl.start_proc configuration parameter, PL/Tcl Configuration
    pltclu.start_proc configuration parameter, PL/Tcl Configuration
    point, Points, Geometric Functions and Operators
    point-in-time recovery, Backup and Restore
    policy, Row Security Policies
    polygon, Polygons, Geometric Functions and Operators
    polymorphic function, Polymorphic Types
    polymorphic type, Polymorphic Types
    popen, Geometric Functions and Operators
    populate_record, hstore Operators and Functions
    port, Parameter Key Words
    port configuration parameter, Connection Settings
    position, String Functions and Operators, Binary String Functions and Operators
    POSTGRES, The Berkeley POSTGRES Project
    postgres, Architectural Fundamentals, Starting the Database Server, Creating a Database, postgres
    postgres user, The PostgreSQL User Account
    Postgres95, Postgres95
    postgresql.auto.conf, Parameter Interaction via the Configuration File
    postgresql.conf, Parameter Interaction via the Configuration File
    postgres_fdw, postgres_fdw
    postmaster, postmaster
    post_auth_delay configuration parameter, Developer Options
    power, Mathematical Functions and Operators
    PQbackendPID, Connection Status Functions
    PQbinaryTuples, Retrieving Query Result Information
    with COPY, Functions Associated with the COPY Command
    PQcancel, Canceling Queries in Progress
    PQclear, Main Functions
    PQclientEncoding, Control Functions
    PQcmdStatus, Retrieving Other Result Information
    PQcmdTuples, Retrieving Other Result Information
    PQconndefaults, Database Connection Control Functions
    PQconnectdb, Database Connection Control Functions
    PQconnectdbParams, Database Connection Control Functions
    PQconnectionNeedsPassword, Connection Status Functions
    PQconnectionUsedPassword, Connection Status Functions
    PQconnectPoll, Database Connection Control Functions
    PQconnectStart, Database Connection Control Functions
    PQconnectStartParams, Database Connection Control Functions
    PQconninfo, Database Connection Control Functions
    PQconninfoFree, Miscellaneous Functions
    PQconninfoParse, Database Connection Control Functions
    PQconsumeInput, Asynchronous Command Processing
    PQcopyResult, Miscellaneous Functions
    PQdb, Connection Status Functions
    PQdescribePortal, Main Functions
    PQdescribePrepared, Main Functions
    PQencryptPassword, Miscellaneous Functions
    PQencryptPasswordConn, Miscellaneous Functions
    PQendcopy, Obsolete Functions for COPY
    PQerrorMessage, Connection Status Functions
    PQescapeBytea, Escaping Strings for Inclusion in SQL Commands
    PQescapeByteaConn, Escaping Strings for Inclusion in SQL Commands
    PQescapeIdentifier, Escaping Strings for Inclusion in SQL Commands
    PQescapeLiteral, Escaping Strings for Inclusion in SQL Commands
    PQescapeString, Escaping Strings for Inclusion in SQL Commands
    PQescapeStringConn, Escaping Strings for Inclusion in SQL Commands
    PQexec, Main Functions
    PQexecParams, Main Functions
    PQexecPrepared, Main Functions
    PQfformat, Retrieving Query Result Information
    with COPY, Functions Associated with the COPY Command
    PQfinish, Database Connection Control Functions
    PQfireResultCreateEvents, Miscellaneous Functions
    PQflush, Asynchronous Command Processing
    PQfmod, Retrieving Query Result Information
    PQfn, The Fast-Path Interface
    PQfname, Retrieving Query Result Information
    PQfnumber, Retrieving Query Result Information
    PQfreeCancel, Canceling Queries in Progress
    PQfreemem, Miscellaneous Functions
    PQfsize, Retrieving Query Result Information
    PQftable, Retrieving Query Result Information
    PQftablecol, Retrieving Query Result Information
    PQftype, Retrieving Query Result Information
    PQgetCancel, Canceling Queries in Progress
    PQgetCopyData, Functions for Receiving COPY Data
    PQgetisnull, Retrieving Query Result Information
    PQgetlength, Retrieving Query Result Information
    PQgetline, Obsolete Functions for COPY
    PQgetlineAsync, Obsolete Functions for COPY
    PQgetResult, Asynchronous Command Processing
    PQgetssl, Connection Status Functions
    PQgetvalue, Retrieving Query Result Information
    PQhost, Connection Status Functions
    PQinitOpenSSL, SSL Library Initialization
    PQinitSSL, SSL Library Initialization
    PQinstanceData, Event Support Functions
    PQisBusy, Asynchronous Command Processing
    PQisnonblocking, Asynchronous Command Processing
    PQisthreadsafe, Behavior in Threaded Programs
    PQlibVersion, Miscellaneous Functions
    (see also PQserverVersion)
    PQmakeEmptyPGresult, Miscellaneous Functions
    PQnfields, Retrieving Query Result Information
    with COPY, Functions Associated with the COPY Command
    PQnotifies, Asynchronous Notification
    PQnparams, Retrieving Query Result Information
    PQntuples, Retrieving Query Result Information
    PQoidStatus, Retrieving Other Result Information
    PQoidValue, Retrieving Other Result Information
    PQoptions, Connection Status Functions
    PQparameterStatus, Connection Status Functions
    PQparamtype, Retrieving Query Result Information
    PQpass, Connection Status Functions
    PQping, Database Connection Control Functions
    PQpingParams, Database Connection Control Functions
    PQport, Connection Status Functions
    PQprepare, Main Functions
    PQprint, Retrieving Query Result Information
    PQprotocolVersion, Connection Status Functions
    PQputCopyData, Functions for Sending COPY Data
    PQputCopyEnd, Functions for Sending COPY Data
    PQputline, Obsolete Functions for COPY
    PQputnbytes, Obsolete Functions for COPY
    PQregisterEventProc, Event Support Functions
    PQrequestCancel, Canceling Queries in Progress
    PQreset, Database Connection Control Functions
    PQresetPoll, Database Connection Control Functions
    PQresetStart, Database Connection Control Functions
    PQresStatus, Main Functions
    PQresultAlloc, Miscellaneous Functions
    PQresultErrorField, Main Functions
    PQresultErrorMessage, Main Functions
    PQresultInstanceData, Event Support Functions
    PQresultSetInstanceData, Event Support Functions
    PQresultStatus, Main Functions
    PQresultVerboseErrorMessage, Main Functions
    PQsendDescribePortal, Asynchronous Command Processing
    PQsendDescribePrepared, Asynchronous Command Processing
    PQsendPrepare, Asynchronous Command Processing
    PQsendQuery, Asynchronous Command Processing
    PQsendQueryParams, Asynchronous Command Processing
    PQsendQueryPrepared, Asynchronous Command Processing
    PQserverVersion, Connection Status Functions
    PQsetClientEncoding, Control Functions
    PQsetdb, Database Connection Control Functions
    PQsetdbLogin, Database Connection Control Functions
    PQsetErrorContextVisibility, Control Functions
    PQsetErrorVerbosity, Control Functions
    PQsetInstanceData, Event Support Functions
    PQsetnonblocking, Asynchronous Command Processing
    PQsetNoticeProcessor, Notice Processing
    PQsetNoticeReceiver, Notice Processing
    PQsetResultAttrs, Miscellaneous Functions
    PQsetSingleRowMode, Retrieving Query Results Row-By-Row
    PQsetvalue, Miscellaneous Functions
    PQsocket, Connection Status Functions
    PQsslAttribute, Connection Status Functions
    PQsslAttributeNames, Connection Status Functions
    PQsslInUse, Connection Status Functions
    PQsslStruct, Connection Status Functions
    PQstatus, Connection Status Functions
    PQtrace, Control Functions
    PQtransactionStatus, Connection Status Functions
    PQtty, Connection Status Functions
    PQunescapeBytea, Escaping Strings for Inclusion in SQL Commands
    PQuntrace, Control Functions
    PQuser, Connection Status Functions
    predicate locking, Serializable Isolation Level
    PREPARE, PREPARE
    PREPARE TRANSACTION, PREPARE TRANSACTION
    prepared statements, DEALLOCATE, EXECUTE, EXPLAIN, PREPARE
    creating, PREPARE
    executing, EXECUTE
    removing, DEALLOCATE
    showing the query plan, EXPLAIN
    preparing a query
    in PL/pgSQL, Plan Caching
    in PL/Python, Database Access Functions
    in PL/Tcl, Database Access from PL/Tcl
    pre_auth_delay configuration parameter, Developer Options
    primary key, Primary Keys
    primary_conninfo recovery parameter, Standby Server Settings
    primary_slot_name recovery parameter, Standby Server Settings
    privilege, Privileges, Schemas and Privileges, Rules and Privileges, Rules and Privileges
    querying, System Information Functions
    with rules, Rules and Privileges
    for schemas, Schemas and Privileges
    with views, Rules and Privileges
    procedural language, Procedural Languages, Writing A Procedural Language Handler
    externally maintained, Procedural Languages
    handler for, Writing A Procedural Language Handler
    protocol, Frontend/Backend Protocol
    frontend-backend, Frontend/Backend Protocol
    ps, Standard Unix Tools
    to monitor activity, Standard Unix Tools
    psql, Accessing a Database, psql
    Python, PL/Python - Python Procedural Language

    R

    radians, Mathematical Functions and Operators
    radius, Geometric Functions and Operators
    RADIUS, RADIUS Authentication
    RAISE
    in PL/pgSQL, Reporting Errors and Messages
    random, Mathematical Functions and Operators
    random_page_cost configuration parameter, Planner Cost Constants
    range table, The Query Tree
    range type, Range Types
    exclude, Constraints on Ranges
    indexes on, Indexing
    rank, Window Functions
    hypothetical, Aggregate Functions
    read committed, Read Committed Isolation Level
    read-only transaction, Statement Behavior
    setting, SET TRANSACTION
    setting default, Statement Behavior
    readline, Requirements
    real, Floating-Point Types
    REASSIGN OWNED, REASSIGN OWNED
    record, Pseudo-Types
    recovery.conf, Recovery Configuration
    recovery_end_command recovery parameter, Archive Recovery Settings
    recovery_min_apply_delay recovery parameter, Standby Server Settings
    recovery_target recovery parameter, Recovery Target Settings
    recovery_target_action recovery parameter, Recovery Target Settings
    recovery_target_inclusive recovery parameter, Recovery Target Settings
    recovery_target_lsn recovery parameter, Recovery Target Settings
    recovery_target_name recovery parameter, Recovery Target Settings
    recovery_target_time recovery parameter, Recovery Target Settings
    recovery_target_timeline recovery parameter, Recovery Target Settings
    recovery_target_xid recovery parameter, Recovery Target Settings
    rectangle, Boxes
    referential integrity, Foreign Keys, Foreign Keys
    REFRESH MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW
    regclass, Object Identifier Types
    regconfig, Object Identifier Types
    regdictionary, Object Identifier Types
    regexp_match, String Functions and Operators, POSIX Regular Expressions
    regexp_matches, String Functions and Operators, POSIX Regular Expressions
    regexp_replace, String Functions and Operators, POSIX Regular Expressions
    regexp_split_to_array, String Functions and Operators, POSIX Regular Expressions
    regexp_split_to_table, String Functions and Operators, POSIX Regular Expressions
    regoper, Object Identifier Types
    regoperator, Object Identifier Types
    regproc, Object Identifier Types
    regprocedure, Object Identifier Types
    regression intercept, Aggregate Functions
    regression slope, Aggregate Functions
    regression test, Installation Procedure
    regression tests, Regression Tests
    regr_avgx, Aggregate Functions
    regr_avgy, Aggregate Functions
    regr_count, Aggregate Functions
    regr_intercept, Aggregate Functions
    regr_r2, Aggregate Functions
    regr_slope, Aggregate Functions
    regr_sxx, Aggregate Functions
    regr_sxy, Aggregate Functions
    regr_syy, Aggregate Functions
    regtype, Object Identifier Types
    regular expression, SIMILAR TO Regular Expressions, POSIX Regular Expressions
    (see also pattern matching)
    regular expressions
    and locales, Behavior
    reindex, Routine Reindexing
    REINDEX, REINDEX
    reindexdb, reindexdb
    relation, Concepts
    relational database, Concepts
    RELEASE SAVEPOINT, RELEASE SAVEPOINT
    repeat, String Functions and Operators
    repeatable read, Repeatable Read Isolation Level
    replace, String Functions and Operators
    replacement_sort_tuples configuration parameter, Memory
    replication, High Availability, Load Balancing, and Replication
    Replication Origins, Replication Progress Tracking
    Replication Progress Tracking, Replication Progress Tracking
    replication slot
    logical replication, Replication Slots
    streaming replication, Replication Slots
    reporting errors
    in PL/pgSQL, Reporting Errors and Messages
    RESET, RESET
    restartpoint, WAL Configuration
    restart_after_crash configuration parameter, Error Handling
    restore_command recovery parameter, Archive Recovery Settings
    RESTRICT, Dependency Tracking
    with DROP, Dependency Tracking
    foreign key action, Foreign Keys
    RETURN NEXT
    in PL/pgSQL, RETURN NEXT and RETURN QUERY
    RETURN QUERY
    in PL/pgSQL, RETURN NEXT and RETURN QUERY
    RETURNING, Returning Data From Modified Rows
    RETURNING INTO, Executing a Query with a Single-row Result
    in PL/pgSQL, Executing a Query with a Single-row Result
    reverse, String Functions and Operators
    REVOKE, Privileges, REVOKE
    right, String Functions and Operators
    right join, Joined Tables
    role, Database Roles, Role Membership, Default Roles
    applicable, applicable_roles
    enabled, enabled_roles
    membership in, Role Membership
    privilege to create, Role Attributes
    privilege to initiate replication, Role Attributes
    ROLLBACK, ROLLBACK
    rollback
    psql, Variables
    ROLLBACK PREPARED, ROLLBACK PREPARED
    ROLLBACK TO SAVEPOINT, ROLLBACK TO SAVEPOINT
    ROLLUP, GROUPING SETS, CUBE, and ROLLUP
    round, Mathematical Functions and Operators
    routine maintenance, Routine Database Maintenance Tasks
    row, Concepts, Table Basics
    ROW, Row Constructors
    row estimation, Row Estimation Examples
    multivariate, Multivariate Statistics Examples
    planner, Row Estimation Examples
    row type, Composite Types
    constructor, Row Constructors
    row-level security, Row Security Policies
    row-wise comparison, Row and Array Comparisons
    row_number, Window Functions
    row_security configuration parameter, Statement Behavior
    row_security_active, System Information Functions
    row_to_json, JSON Functions and Operators
    rpad, String Functions and Operators
    rtrim, String Functions and Operators
    rule, The Rule System, Views and the Rule System, How SELECT Rules Work, Materialized Views, Rules on INSERT, UPDATE, and DELETE, Rules on INSERT, UPDATE, and DELETE, Rules on INSERT, UPDATE, and DELETE, Rules Versus Triggers
    and materialized views, Materialized Views
    and views, Views and the Rule System
    for DELETE, Rules on INSERT, UPDATE, and DELETE
    for INSERT, Rules on INSERT, UPDATE, and DELETE
    for SELECT, How SELECT Rules Work
    compared with triggers, Rules Versus Triggers
    for UPDATE, Rules on INSERT, UPDATE, and DELETE

    S

    SAVEPOINT, SAVEPOINT
    savepoints, RELEASE SAVEPOINT, ROLLBACK TO SAVEPOINT, SAVEPOINT
    defining, SAVEPOINT
    releasing, RELEASE SAVEPOINT
    rolling back, ROLLBACK TO SAVEPOINT
    scalar (see expression)
    scale, Mathematical Functions and Operators
    schema, Schemas, Creating a Schema, The Public Schema, Overview
    creating, Creating a Schema
    current, The Schema Search Path, System Information Functions
    public, The Public Schema
    removing, Creating a Schema
    SCRAM, Password Authentication
    search path, The Schema Search Path
    current, System Information Functions
    object visibility, System Information Functions
    search_path configuration parameter, The Schema Search Path, Statement Behavior
    use in securing functions, Writing SECURITY DEFINER Functions Safely
    SECURITY LABEL, SECURITY LABEL
    sec_to_gc, Cube-based Earth Distances
    seg, seg
    segment_size configuration parameter, Preset Options
    SELECT, Querying a Table, Queries, SELECT Output Columns, SELECT
    determination of result type, SELECT Output Columns
    select list, Select Lists
    SELECT INTO, Executing a Query with a Single-row Result, SELECT INTO
    in PL/pgSQL, Executing a Query with a Single-row Result
    semaphores, Shared Memory and Semaphores
    sepgsql, sepgsql
    sepgsql.debug_audit configuration parameter, GUC Parameters
    sepgsql.permissive configuration parameter, GUC Parameters
    sequence, Sequence Manipulation Functions
    and serial type, Serial Types
    sequential scan, Planner Method Configuration
    seq_page_cost configuration parameter, Planner Cost Constants
    serial, Serial Types
    serial2, Serial Types
    serial4, Serial Types
    serial8, Serial Types
    serializable, Serializable Isolation Level
    Serializable Snapshot Isolation, Introduction
    serialization anomaly, Transaction Isolation, Serializable Isolation Level
    server log, Error Reporting and Logging, Log File Maintenance
    log file maintenance, Log File Maintenance
    server spoofing, Preventing Server Spoofing
    server_encoding configuration parameter, Preset Options
    server_version configuration parameter, Preset Options
    server_version_num configuration parameter, Preset Options
    session_preload_libraries configuration parameter, Shared Library Preloading
    session_replication_role configuration parameter, Statement Behavior
    session_user, System Information Functions
    SET, Configuration Settings Functions, SET
    SET CONSTRAINTS, SET CONSTRAINTS
    set difference, Combining Queries
    set intersection, Combining Queries
    set operation, Combining Queries
    set returning functions, Set Returning Functions
    functions, Set Returning Functions
    SET ROLE, SET ROLE
    SET SESSION AUTHORIZATION, SET SESSION AUTHORIZATION
    SET TRANSACTION, SET TRANSACTION
    set union, Combining Queries
    SET XML OPTION, Statement Behavior
    setseed, Mathematical Functions and Operators
    setval, Sequence Manipulation Functions
    setweight, Text Search Functions and Operators, Manipulating Documents
    setweight for specific lexeme(s), Text Search Functions and Operators
    set_bit, Binary String Functions and Operators
    set_byte, Binary String Functions and Operators
    set_config, Configuration Settings Functions
    set_limit, Functions and Operators
    set_masklen, Network Address Functions and Operators
    shared library, Shared Libraries, Compiling and Linking Dynamically-loaded Functions
    shared memory, Shared Memory and Semaphores
    shared_buffers configuration parameter, Memory
    shared_preload_libraries, Shared Memory and LWLocks
    shared_preload_libraries configuration parameter, Shared Library Preloading
    shobj_description, System Information Functions
    SHOW, Configuration Settings Functions, SHOW, Streaming Replication Protocol
    show_limit, Functions and Operators
    show_trgm, Functions and Operators
    shutdown, Shutting Down the Server
    SIGHUP, Parameter Interaction via the Configuration File, The pg_hba.conf File, User Name Maps
    SIGINT, Shutting Down the Server
    sign, Mathematical Functions and Operators
    signal
    backend processes, Server Signaling Functions
    significant digits, Locale and Formatting
    SIGQUIT, Shutting Down the Server
    SIGTERM, Shutting Down the Server
    SIMILAR TO, SIMILAR TO Regular Expressions
    similarity, Functions and Operators
    sin, Mathematical Functions and Operators
    sind, Mathematical Functions and Operators
    single-user mode, Options for Single-User Mode
    skeys, hstore Operators and Functions
    sleep, Delaying Execution
    slice, hstore Operators and Functions
    sliced bread (see TOAST)
    smallint, Integer Types
    smallserial, Serial Types
    Solaris, Solaris
    installation on, Solaris
    IPC configuration, Shared Memory and Semaphores
    shared library, Compiling and Linking Dynamically-loaded Functions
    start script, Starting the Database Server
    SOME, Aggregate Functions, Subquery Expressions, Row and Array Comparisons
    sort, intarray Functions and Operators
    sorting, Sorting Rows
    sort_asc, intarray Functions and Operators
    sort_desc, intarray Functions and Operators
    soundex, Soundex
    SP-GiST (see index)
    SPI, Server Programming Interface, spi
    examples, spi
    SPI_connect, SPI_connect
    SPI_copytuple, SPI_copytuple
    spi_cursor_close
    in PL/Perl, Database Access from PL/Perl
    SPI_cursor_close, SPI_cursor_close
    SPI_cursor_fetch, SPI_cursor_fetch
    SPI_cursor_find, SPI_cursor_find
    SPI_cursor_move, SPI_cursor_move
    SPI_cursor_open, SPI_cursor_open
    SPI_cursor_open_with_args, SPI_cursor_open_with_args
    SPI_cursor_open_with_paramlist, SPI_cursor_open_with_paramlist
    SPI_exec, SPI_exec
    SPI_execp, SPI_execp
    SPI_execute, SPI_execute
    SPI_execute_plan, SPI_execute_plan
    SPI_execute_plan_with_paramlist, SPI_execute_plan_with_paramlist
    SPI_execute_with_args, SPI_execute_with_args
    spi_exec_prepared
    in PL/Perl, Database Access from PL/Perl
    spi_exec_query
    in PL/Perl, Database Access from PL/Perl
    spi_fetchrow
    in PL/Perl, Database Access from PL/Perl
    SPI_finish, SPI_finish
    SPI_fname, SPI_fname
    SPI_fnumber, SPI_fnumber
    spi_freeplan
    in PL/Perl, Database Access from PL/Perl
    SPI_freeplan, SPI_freeplan
    SPI_freetuple, SPI_freetuple
    SPI_freetuptable, SPI_freetuptable
    SPI_getargcount, SPI_getargcount
    SPI_getargtypeid, SPI_getargtypeid
    SPI_getbinval, SPI_getbinval
    SPI_getnspname, SPI_getnspname
    SPI_getrelname, SPI_getrelname
    SPI_gettype, SPI_gettype
    SPI_gettypeid, SPI_gettypeid
    SPI_getvalue, SPI_getvalue
    SPI_is_cursor_plan, SPI_is_cursor_plan
    SPI_keepplan, SPI_keepplan
    spi_lastoid
    in PL/Tcl, Database Access from PL/Tcl
    SPI_modifytuple, SPI_modifytuple
    SPI_palloc, SPI_palloc
    SPI_pfree, SPI_pfree
    spi_prepare
    in PL/Perl, Database Access from PL/Perl
    SPI_prepare, SPI_prepare
    SPI_prepare_cursor, SPI_prepare_cursor
    SPI_prepare_params, SPI_prepare_params
    spi_query
    in PL/Perl, Database Access from PL/Perl
    spi_query_prepared
    in PL/Perl, Database Access from PL/Perl
    SPI_register_relation, SPI_register_relation
    SPI_register_trigger_data, SPI_register_trigger_data
    SPI_repalloc, SPI_repalloc
    SPI_returntuple, SPI_returntuple
    SPI_saveplan, SPI_saveplan
    SPI_scroll_cursor_fetch, SPI_scroll_cursor_fetch
    SPI_scroll_cursor_move, SPI_scroll_cursor_move
    SPI_unregister_relation, SPI_unregister_relation
    split_part, String Functions and Operators
    SQL/CLI, SQL Conformance
    SQL/Foundation, SQL Conformance
    SQL/Framework, SQL Conformance
    SQL/JRT, SQL Conformance
    SQL/MED, SQL Conformance
    SQL/OLB, SQL Conformance
    SQL/PSM, SQL Conformance
    SQL/Schemata, SQL Conformance
    SQL/XML, SQL Conformance
    limits and conformance, XML Limits and Conformance to SQL/XML
    sqrt, Mathematical Functions and Operators
    ssh, Secure TCP/IP Connections with SSH Tunnels
    SSI, Introduction
    SSL, Secure TCP/IP Connections with SSL, SSL Support
    in libpq, Connection Status Functions
    with libpq, Parameter Key Words
    ssl configuration parameter, Security and Authentication
    sslinfo, sslinfo
    ssl_ca_file configuration parameter, Security and Authentication
    ssl_cert_file configuration parameter, Security and Authentication
    ssl_cipher, Functions Provided
    ssl_ciphers configuration parameter, Security and Authentication
    ssl_client_cert_present, Functions Provided
    ssl_client_dn, Functions Provided
    ssl_client_dn_field, Functions Provided
    ssl_client_serial, Functions Provided
    ssl_crl_file configuration parameter, Security and Authentication
    ssl_dh_params_file configuration parameter, Security and Authentication
    ssl_ecdh_curve configuration parameter, Security and Authentication
    ssl_extension_info, Functions Provided
    ssl_issuer_dn, Functions Provided
    ssl_issuer_field, Functions Provided
    ssl_is_used, Functions Provided
    ssl_key_file configuration parameter, Security and Authentication
    ssl_prefer_server_ciphers configuration parameter, Security and Authentication
    ssl_version, Functions Provided
    SSPI, SSPI Authentication
    STABLE, Function Volatility Categories
    standard deviation, Aggregate Functions
    population, Aggregate Functions
    sample, Aggregate Functions
    standard_conforming_strings configuration parameter, Previous PostgreSQL Versions
    standby server, High Availability, Load Balancing, and Replication
    standby_mode recovery parameter, Standby Server Settings
    START TRANSACTION, START TRANSACTION
    START_REPLICATION, Streaming Replication Protocol
    statement_timeout configuration parameter, Statement Behavior
    statement_timestamp, Date/Time Functions and Operators
    statistics, Aggregate Functions, Statistics Used by the Planner, Extended Statistics, Updating Planner Statistics, The Statistics Collector
    of the planner, Statistics Used by the Planner, Extended Statistics, Updating Planner Statistics
    stats_temp_directory configuration parameter, Query and Index Statistics Collector
    stddev, Aggregate Functions
    stddev_pop, Aggregate Functions
    stddev_samp, Aggregate Functions
    STONITH, High Availability, Load Balancing, and Replication
    storage parameters, Storage Parameters
    Streaming Replication, High Availability, Load Balancing, and Replication
    string (see character string)
    strings
    backslash quotes, Previous PostgreSQL Versions
    escape warning, Previous PostgreSQL Versions
    standard conforming, Previous PostgreSQL Versions
    string_agg, Aggregate Functions
    string_to_array, Array Functions and Operators
    strip, Text Search Functions and Operators, Manipulating Documents
    strpos, String Functions and Operators
    subarray, intarray Functions and Operators
    subltree, Operators and Functions
    subpath, Operators and Functions
    subquery, Aggregate Functions, Scalar Subqueries, Subqueries, Subquery Expressions
    subscript, Subscripts
    substr, String Functions and Operators
    substring, String Functions and Operators, Binary String Functions and Operators, SIMILAR TO Regular Expressions, POSIX Regular Expressions
    subtransactions
    in PL/Tcl, Explicit Subtransactions in PL/Tcl
    sum, Aggregate Functions
    superuser, Accessing a Database, Role Attributes
    superuser_reserved_connections configuration parameter, Connection Settings
    suppress_redundant_updates_trigger, Trigger Functions
    svals, hstore Operators and Functions
    synchronize_seqscans configuration parameter, Previous PostgreSQL Versions
    synchronous commit, Asynchronous Commit
    Synchronous Replication, High Availability, Load Balancing, and Replication
    synchronous_commit configuration parameter, Settings
    synchronous_standby_names configuration parameter, Master Server
    syntax, SQL Syntax
    SQL, SQL Syntax
    syslog_facility configuration parameter, Where To Log
    syslog_ident configuration parameter, Where To Log
    syslog_sequence_numbers configuration parameter, Where To Log
    syslog_split_messages configuration parameter, Where To Log
    system catalog, The System Catalog Schema
    schema, The System Catalog Schema
    systemd, Installation Procedure, Starting the Database Server
    RemoveIPC, systemd RemoveIPC

    T

    table, Concepts, Table Basics, Modifying Tables
    creating, Table Basics
    inheritance, Inheritance
    modifying, Modifying Tables
    partitioning, Table Partitioning
    removing, Table Basics
    renaming, Renaming a Table
    TABLE command, SELECT
    table expression, Table Expressions
    table function, Table Functions, xmltable
    XMLTABLE, xmltable
    table sampling method, Writing A Table Sampling Method
    tablefunc, tablefunc
    tableoid, System Columns
    TABLESAMPLE method, Writing A Table Sampling Method
    tablespace, Tablespaces
    default, Statement Behavior
    temporary, Statement Behavior
    tan, Mathematical Functions and Operators
    tand, Mathematical Functions and Operators
    target list, The Query Tree
    Tcl, PL/Tcl - Tcl Procedural Language
    tcn, tcn
    tcp_keepalives_count configuration parameter, Connection Settings
    tcp_keepalives_idle configuration parameter, Connection Settings
    tcp_keepalives_interval configuration parameter, Connection Settings
    template0, Template Databases
    template1, Creating a Database, Template Databases
    temp_buffers configuration parameter, Memory
    temp_file_limit configuration parameter, Disk
    temp_tablespaces configuration parameter, Statement Behavior
    test, Regression Tests
    test_decoding, test_decoding
    text, Character Types, Network Address Functions and Operators
    text search, Text Search Types, Text Search Types, Full Text Search, GIN and GiST Index Types
    data types, Text Search Types
    functions and operators, Text Search Types
    indexes, GIN and GiST Index Types
    text2ltree, Operators and Functions
    threads, Behavior in Threaded Programs
    with libpq, Behavior in Threaded Programs
    tid, Object Identifier Types
    time, Date/Time Types, Times
    constants, Special Values
    current, Current Date/Time
    output format, Date/Time Output
    (see also formatting)
    time span, Date/Time Types
    time with time zone, Date/Time Types, Times
    time without time zone, Date/Time Types, Times
    time zone, Time Zones, Locale and Formatting, POSIX Time Zone Specifications
    conversion, AT TIME ZONE
    input abbreviations, Date/Time Configuration Files
    POSIX-style specification, POSIX Time Zone Specifications
    time zone data, Installation Procedure
    time zone names, Locale and Formatting
    timelines, Backup and Restore
    TIMELINE_HISTORY, Streaming Replication Protocol
    timeofday, Date/Time Functions and Operators
    timeout
    client authentication, Security and Authentication
    deadlock, Lock Management
    timestamp, Date/Time Types, Time Stamps
    timestamp with time zone, Date/Time Types, Time Stamps
    timestamp without time zone, Date/Time Types, Time Stamps
    timestamptz, Date/Time Types
    TimeZone configuration parameter, Locale and Formatting
    timezone_abbreviations configuration parameter, Locale and Formatting
    TOAST, TOAST
    and user-defined types, TOAST Considerations
    per-column storage settings, Description
    versus large objects, Introduction
    token, Lexical Structure
    to_ascii, String Functions and Operators
    to_char, Data Type Formatting Functions
    and locales, Behavior
    to_date, Data Type Formatting Functions
    to_hex, String Functions and Operators
    to_json, JSON Functions and Operators
    to_jsonb, JSON Functions and Operators
    to_number, Data Type Formatting Functions
    to_regclass, System Information Functions
    to_regnamespace, System Information Functions
    to_regoper, System Information Functions
    to_regoperator, System Information Functions
    to_regproc, System Information Functions
    to_regprocedure, System Information Functions
    to_regrole, System Information Functions
    to_regtype, System Information Functions
    to_timestamp, Data Type Formatting Functions, Date/Time Functions and Operators
    to_tsquery, Text Search Functions and Operators, Parsing Queries
    to_tsvector, Text Search Functions and Operators, Parsing Documents
    trace_locks configuration parameter, Developer Options
    trace_lock_oidmin configuration parameter, Developer Options
    trace_lock_table configuration parameter, Developer Options
    trace_lwlocks configuration parameter, Developer Options
    trace_notify configuration parameter, Developer Options
    trace_recovery_messages configuration parameter, Developer Options
    trace_sort configuration parameter, Developer Options
    trace_userlocks configuration parameter, Developer Options
    track_activities configuration parameter, Query and Index Statistics Collector
    track_activity_query_size configuration parameter, Query and Index Statistics Collector
    track_commit_timestamp configuration parameter, Sending Server(s)
    track_counts configuration parameter, Query and Index Statistics Collector
    track_functions configuration parameter, Query and Index Statistics Collector
    track_io_timing configuration parameter, Query and Index Statistics Collector
    transaction, Transactions
    transaction ID, Preventing Transaction ID Wraparound Failures
    wraparound, Preventing Transaction ID Wraparound Failures
    transaction isolation, Transaction Isolation
    transaction isolation level, Transaction Isolation, Statement Behavior
    read committed, Read Committed Isolation Level
    repeatable read, Repeatable Read Isolation Level
    serializable, Serializable Isolation Level
    setting, SET TRANSACTION
    setting default, Statement Behavior
    transaction log (see WAL)
    transaction_deferrable configuration parameter, Statement Behavior
    transaction_isolation configuration parameter, Statement Behavior
    transaction_read_only configuration parameter, Statement Behavior
    transaction_timestamp, Date/Time Functions and Operators
    transform_null_equals configuration parameter, Platform and Client Compatibility
    transition tables, CREATE TRIGGER
    (see also ephemeral named relation)
    implementation in PLs, SPI_register_trigger_data
    referencing from C trigger, Writing Trigger Functions in C
    translate, String Functions and Operators
    trigger, Pseudo-Types, Triggers, Writing Trigger Functions in C, Rules Versus Triggers, Trigger Procedures, Trigger Functions
    arguments for trigger functions, Overview of Trigger Behavior
    for updating a derived tsvector column, Triggers for Automatic Updates
    in C, Writing Trigger Functions in C
    in PL/pgSQL, Trigger Procedures
    in PL/Python, Trigger Functions
    in PL/Tcl, Trigger Procedures in PL/Tcl
    compared with rules, Rules Versus Triggers
    triggered_change_notification, tcn
    trigger_file recovery parameter, Standby Server Settings
    trim, String Functions and Operators, Binary String Functions and Operators
    true, Boolean Type
    trunc, Mathematical Functions and Operators, Network Address Functions and Operators
    TRUNCATE, TRUNCATE
    trusted, Trusted and Untrusted PL/Perl
    PL/Perl, Trusted and Untrusted PL/Perl
    tsm_handler, Pseudo-Types
    tsm_system_rows, tsm_system_rows
    tsm_system_time, tsm_system_time
    tsquery (data type), tsquery
    tsquery_phrase, Text Search Functions and Operators, Manipulating Queries
    tsvector (data type), tsvector
    tsvector concatenation, Manipulating Documents
    tsvector_to_array, Text Search Functions and Operators
    tsvector_update_trigger, Text Search Functions and Operators
    tsvector_update_trigger_column, Text Search Functions and Operators
    ts_debug, Text Search Functions and Operators, Configuration Testing
    ts_delete, Text Search Functions and Operators
    ts_filter, Text Search Functions and Operators
    ts_headline, Text Search Functions and Operators, Highlighting Results
    ts_lexize, Text Search Functions and Operators, Dictionary Testing
    ts_parse, Text Search Functions and Operators, Parser Testing
    ts_rank, Text Search Functions and Operators, Ranking Search Results
    ts_rank_cd, Text Search Functions and Operators, Ranking Search Results
    ts_rewrite, Text Search Functions and Operators, Query Rewriting
    ts_stat, Text Search Functions and Operators, Gathering Document Statistics
    ts_token_type, Text Search Functions and Operators, Parser Testing
    tuple_data_split, Heap Functions
    txid_current, System Information Functions
    txid_current_if_assigned, System Information Functions
    txid_current_snapshot, System Information Functions
    txid_snapshot_xip, System Information Functions
    txid_snapshot_xmax, System Information Functions
    txid_snapshot_xmin, System Information Functions
    txid_status, System Information Functions
    txid_visible_in_snapshot, System Information Functions
    type, Polymorphic Types (see data type)
    polymorphic, Polymorphic Types
    type cast, Numeric Constants, Type Casts

    U

    UESCAPE, Identifiers and Key Words, String Constants with Unicode Escapes
    unaccent, unaccent, Functions
    Unicode escape, String Constants with Unicode Escapes
    in identifiers, Identifiers and Key Words
    in string constants, String Constants with Unicode Escapes
    UNION, Combining Queries, UNION, CASE, and Related Constructs
    determination of result type, UNION, CASE, and Related Constructs
    uniq, intarray Functions and Operators
    unique constraint, Unique Constraints
    Unix domain socket, Parameter Key Words
    unix_socket_directories configuration parameter, Connection Settings
    unix_socket_group configuration parameter, Connection Settings
    unix_socket_permissions configuration parameter, Connection Settings
    unknown, Pseudo-Types
    UNLISTEN, UNLISTEN
    unnest, Array Functions and Operators
    for tsvector, Text Search Functions and Operators
    unqualified name, The Schema Search Path
    updatable views, Updatable Views
    UPDATE, Updates, Updating Data, Returning Data From Modified Rows, UPDATE
    RETURNING, Returning Data From Modified Rows
    update_process_title configuration parameter, Process Title
    updating, Updating Data
    upgrading, Upgrading a PostgreSQL Cluster
    upper, String Functions and Operators, Range Functions and Operators
    and locales, Behavior
    upper_inc, Range Functions and Operators
    upper_inf, Range Functions and Operators
    UPSERT, INSERT
    URI, Connection Strings
    user, System Information Functions, Database Roles
    current, System Information Functions
    user mapping, Foreign Data
    User name maps, User Name Maps
    UUID, UUID Type, Installation Procedure
    uuid-ossp, uuid-ossp
    uuid_generate_v1, uuid-ossp Functions
    uuid_generate_v1mc, uuid-ossp Functions
    uuid_generate_v3, uuid-ossp Functions

    V

    vacuum, Routine Vacuuming
    VACUUM, VACUUM
    vacuumdb, vacuumdb
    vacuumlo, vacuumlo
    vacuum_cost_delay configuration parameter, Cost-based Vacuum Delay
    vacuum_cost_limit configuration parameter, Cost-based Vacuum Delay
    vacuum_cost_page_dirty configuration parameter, Cost-based Vacuum Delay
    vacuum_cost_page_hit configuration parameter, Cost-based Vacuum Delay
    vacuum_cost_page_miss configuration parameter, Cost-based Vacuum Delay
    vacuum_defer_cleanup_age configuration parameter, Master Server
    vacuum_freeze_min_age configuration parameter, Statement Behavior
    vacuum_freeze_table_age configuration parameter, Statement Behavior
    vacuum_multixact_freeze_min_age configuration parameter, Statement Behavior
    vacuum_multixact_freeze_table_age configuration parameter, Statement Behavior
    value expression, Value Expressions
    VALUES, VALUES Lists, UNION, CASE, and Related Constructs, VALUES
    determination of result type, UNION, CASE, and Related Constructs
    varchar, Character Types
    variadic function, SQL Functions with Variable Numbers of Arguments
    variance, Aggregate Functions
    population, Aggregate Functions
    sample, Aggregate Functions
    var_pop, Aggregate Functions
    var_samp, Aggregate Functions
    version, Accessing a Database, System Information Functions, Upgrading a PostgreSQL Cluster
    compatibility, Upgrading a PostgreSQL Cluster
    view, Views, Views and the Rule System, Materialized Views, Cooperation with Views
    implementation through rules, Views and the Rule System
    materialized, Materialized Views
    updating, Cooperation with Views
    Visibility Map, Visibility Map
    VM (see Visibility Map)
    void, Pseudo-Types
    VOLATILE, Function Volatility Categories
    volatility, Function Volatility Categories
    functions, Function Volatility Categories
    VPATH, Installation Procedure, Extension Building Infrastructure

    W

    WAL, Reliability and the Write-Ahead Log
    wal_block_size configuration parameter, Preset Options
    wal_buffers configuration parameter, Settings
    wal_compression configuration parameter, Settings
    wal_consistency_checking configuration parameter, Developer Options
    wal_debug configuration parameter, Developer Options
    wal_keep_segments configuration parameter, Sending Server(s)
    wal_level configuration parameter, Settings
    wal_log_hints configuration parameter, Settings
    wal_receiver_status_interval configuration parameter, Standby Servers
    wal_receiver_timeout configuration parameter, Standby Servers
    wal_retrieve_retry_interval configuration parameter, Standby Servers
    wal_segment_size configuration parameter, Preset Options
    wal_sender_timeout configuration parameter, Sending Server(s)
    wal_sync_method configuration parameter, Settings
    wal_writer_delay configuration parameter, Settings
    wal_writer_flush_after configuration parameter, Settings
    warm standby, High Availability, Load Balancing, and Replication
    WHERE, The WHERE Clause
    where to log, Where To Log
    WHILE
    in PL/pgSQL, WHILE
    width, Geometric Functions and Operators
    width_bucket, Mathematical Functions and Operators
    window function, Window Functions, Window Function Calls, Window Function Processing, Window Functions
    built-in, Window Functions
    invocation, Window Function Calls
    order of execution, Window Function Processing
    WITH, WITH Queries (Common Table Expressions), SELECT
    in SELECT, WITH Queries (Common Table Expressions), SELECT
    WITH CHECK OPTION, CREATE VIEW
    WITHIN GROUP, Aggregate Expressions
    witness server, High Availability, Load Balancing, and Replication
    word_similarity, Functions and Operators
    work_mem configuration parameter, Memory
    wraparound
    of multixact IDs, Multixacts and Wraparound
    of transaction IDs, Preventing Transaction ID Wraparound Failures

    X

    xid, Object Identifier Types
    xmax, System Columns
    xmin, System Columns
    XML, XML Type
    XML export, Mapping Tables to XML
    XML Functions, XML Functions
    XML option, Creating XML Values, Statement Behavior
    xml2, xml2
    xmlagg, xmlagg, Aggregate Functions
    xmlbinary configuration parameter, Statement Behavior
    xmlcomment, xmlcomment
    xmlconcat, xmlconcat
    xmlelement, xmlelement
    XMLEXISTS, XMLEXISTS
    xmlforest, xmlforest
    xmloption configuration parameter, Statement Behavior
    xmlparse, Creating XML Values
    xmlpi, xmlpi
    xmlroot, xmlroot
    xmlserialize, Creating XML Values
    xmltable, xmltable
    xml_is_well_formed, xml_is_well_formed
    xml_is_well_formed_content, xml_is_well_formed
    xml_is_well_formed_document, xml_is_well_formed
    XPath, xpath
    xpath_exists, xpath_exists
    xpath_table, xpath_table
    xslt_process, xslt_process

    Z

    zero_damaged_pages configuration parameter, Developer Options
    zlib, Requirements, Installation Procedure
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/brin-builtin-opclasses.html postgresql-10-10.19/doc/src/sgml/html/brin-builtin-opclasses.html --- postgresql-10-10.17/doc/src/sgml/html/brin-builtin-opclasses.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/brin-builtin-opclasses.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -65.2. Built-in Operator Classes

    65.2. Built-in Operator Classes

    The core PostgreSQL distribution +65.2. Built-in Operator Classes

    65.2. Built-in Operator Classes

    The core PostgreSQL distribution includes the BRIN operator classes shown in Table 65.1.

    The minmax @@ -179,4 +179,4 @@ = >= > -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/brin-extensibility.html postgresql-10-10.19/doc/src/sgml/html/brin-extensibility.html --- postgresql-10-10.17/doc/src/sgml/html/brin-extensibility.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/brin-extensibility.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -65.3. Extensibility

    65.3. Extensibility

    The BRIN interface has a high level of abstraction, +65.3. Extensibility

    65.3. Extensibility

    The BRIN interface has a high level of abstraction, requiring the access method implementer only to implement the semantics of the data type being accessed. The BRIN layer itself takes care of concurrency, logging and searching the index structure. @@ -100,4 +100,4 @@ right-hand-side argument of the supported operator. See float4_minmax_ops as an example of minmax, and box_inclusion_ops as an example of inclusion. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/brin.html postgresql-10-10.19/doc/src/sgml/html/brin.html --- postgresql-10-10.17/doc/src/sgml/html/brin.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/brin.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 65. BRIN Indexes \ No newline at end of file +Chapter 65. BRIN Indexes \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/brin-intro.html postgresql-10-10.19/doc/src/sgml/html/brin-intro.html --- postgresql-10-10.17/doc/src/sgml/html/brin-intro.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/brin-intro.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -65.1. Introduction

    65.1. Introduction

    BRIN stands for Block Range Index. +65.1. Introduction

    65.1. Introduction

    BRIN stands for Block Range Index. BRIN is designed for handling very large tables in which certain columns have some natural correlation with their physical location within the table. @@ -64,4 +64,4 @@

    LOG:  request for BRIN range summarization for index "brin_wi_idx" page 128 was not recorded

    When this happens, the range will be summarized normally during the next regular vacuum of the table. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/btree-gin.html postgresql-10-10.19/doc/src/sgml/html/btree-gin.html --- postgresql-10-10.17/doc/src/sgml/html/btree-gin.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/btree-gin.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.6. btree_gin

    F.6. btree_gin

    btree_gin provides sample GIN operator classes that +F.6. btree_gin

    F.6. btree_gin

    btree_gin provides sample GIN operator classes that implement B-tree equivalent behavior for the data types int2, int4, int8, float4, float8, timestamp with time zone, @@ -25,4 +25,4 @@ Oleg Bartunov (). See http://www.sai.msu.su/~megera/oddmuse/index.cgi/Gin for additional information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/btree-gist.html postgresql-10-10.19/doc/src/sgml/html/btree-gist.html --- postgresql-10-10.17/doc/src/sgml/html/btree-gist.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/btree-gist.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.7. btree_gist

    F.7. btree_gist

    btree_gist provides GiST index operator classes that +F.7. btree_gist

    F.7. btree_gist

    btree_gist provides GiST index operator classes that implement B-tree equivalent behavior for the data types int2, int4, int8, float4, float8, numeric, timestamp with time zone, @@ -62,4 +62,4 @@ Paul Jungwirth (). See http://www.sai.msu.su/~megera/postgres/gist/ for additional information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/bug-reporting.html postgresql-10-10.19/doc/src/sgml/html/bug-reporting.html --- postgresql-10-10.17/doc/src/sgml/html/bug-reporting.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/bug-reporting.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5. Bug Reporting Guidelines

    5. Bug Reporting Guidelines

    When you find a bug in PostgreSQL we want to +5. Bug Reporting Guidelines

    5. Bug Reporting Guidelines

    When you find a bug in PostgreSQL we want to hear about it. Your bug reports play an important part in making PostgreSQL more reliable because even the utmost care cannot guarantee that every part of @@ -130,7 +130,7 @@ If you run a prepackaged version, such as RPMs, say so, including any subversion the package might have. If you are talking about a Git snapshot, mention that, including the commit hash. -

    If your version is older than 10.17 we will almost certainly +

    If your version is older than 10.19 we will almost certainly tell you to upgrade. There are many bug fixes and improvements in each new release, so it is quite possible that a bug you have encountered in an older release of PostgreSQL @@ -209,4 +209,4 @@ will be some delay before the email is delivered. If you wish to subscribe to the lists, please visit https://lists.postgresql.org/ for instructions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-aggregate.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-aggregate.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-aggregate.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-aggregate.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.2. pg_aggregate

    51.2. pg_aggregate

    The catalog pg_aggregate stores information about +51.2. pg_aggregate

    51.2. pg_aggregate

    The catalog pg_aggregate stores information about aggregate functions. An aggregate function is a function that operates on a set of values (typically one column from each row that matches a query condition) and returns a single value computed @@ -34,4 +34,4 @@ command. See Section 37.10 for more information about writing aggregate functions and the meaning of the transition functions, etc. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-am.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-am.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-am.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-am.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.3. pg_am

    51.3. pg_am

    The catalog pg_am stores information about +51.3. pg_am

    51.3. pg_am

    The catalog pg_am stores information about relation access methods. There is one row for each access method supported by the system. Currently, only indexes have access methods. The requirements for index @@ -14,4 +14,4 @@ However, pg_index_column_has_property() and related functions have been added to allow SQL queries to inspect index access method properties; see Table 9.63. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-amop.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-amop.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-amop.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-amop.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.4. pg_amop

    51.4. pg_amop

    The catalog pg_amop stores information about +51.4. pg_amop

    51.4. pg_amop

    The catalog pg_amop stores information about operators associated with access method operator families. There is one row for each operator that is a member of an operator family. A family member can be either a search operator or an @@ -40,4 +40,4 @@ amoplefttype and amoprighttype must match the oprleft and oprright fields of the referenced pg_operator entry. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-amproc.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-amproc.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-amproc.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-amproc.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.5. pg_amproc

    51.5. pg_amproc

    The catalog pg_amproc stores information about +51.5. pg_amproc

    51.5. pg_amproc

    The catalog pg_amproc stores information about support procedures associated with access method operator families. There is one row for each support procedure belonging to an operator family.

    Table 51.5. pg_amproc Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    amprocfamilyoidpg_opfamily.oidThe operator family this entry is for
    amproclefttypeoidpg_type.oidLeft-hand input data type of associated operator
    amprocrighttypeoidpg_type.oidRight-hand input data type of associated operator
    amprocnumint2 Support procedure number
    amprocregprocpg_proc.oidOID of the procedure

    The usual interpretation of the @@ -11,4 +11,4 @@ an index, which are those with amproclefttype and amprocrighttype both equal to the index operator class's opcintype. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-attrdef.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-attrdef.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-attrdef.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-attrdef.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.6. pg_attrdef

    51.6. pg_attrdef

    The catalog pg_attrdef stores column default values. The main information +51.6. pg_attrdef

    51.6. pg_attrdef

    The catalog pg_attrdef stores column default values. The main information about columns is stored in pg_attribute (see below). Only columns that explicitly specify a default value (when the table is created or the column is added) will have an @@ -9,4 +9,4 @@ the representation of the default value. Reverse-compiling the adbin field (with pg_get_expr for example) is a better way to display the default value. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-attribute.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-attribute.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-attribute.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-attribute.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.7. pg_attribute

    51.7. pg_attribute

    The catalog pg_attribute stores information about +51.7. pg_attribute

    51.7. pg_attribute

    The catalog pg_attribute stores information about table columns. There will be exactly one pg_attribute row for every column in every table in the database. (There will also be attribute entries for @@ -65,4 +65,4 @@ later dropped, and so there is no pg_type row anymore. attlen and the other fields can be used to interpret the contents of a row of the table. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-authid.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-authid.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-authid.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-authid.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.8. pg_authid

    51.8. pg_authid

    The catalog pg_authid contains information about +51.8. pg_authid

    51.8. pg_authid

    The catalog pg_authid contains information about database authorization identifiers (roles). A role subsumes the concepts of users and groups. A user is essentially just a role with the rolcanlogin flag set. Any role (with or @@ -41,4 +41,4 @@ the same as that specified by RFC 5803.

    A password that does not follow either of those formats is assumed to be unencrypted. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-auth-members.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-auth-members.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-auth-members.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-auth-members.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.9. pg_auth_members

    51.9. pg_auth_members

    The catalog pg_auth_members shows the membership +51.9. pg_auth_members

    51.9. pg_auth_members

    The catalog pg_auth_members shows the membership relations between roles. Any non-circular set of relationships is allowed.

    Because user identities are cluster-wide, pg_auth_members @@ -7,4 +7,4 @@ copy of pg_auth_members per cluster, not one per database.

    Table 51.9. pg_auth_members Columns

    NameTypeReferencesDescription
    roleidoidpg_authid.oidID of a role that has a member
    memberoidpg_authid.oidID of a role that is a member of roleid
    grantoroidpg_authid.oidID of the role that granted this membership
    admin_optionbool True if member can grant membership in - roleid to others

    \ No newline at end of file + roleid to others

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-cast.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-cast.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-cast.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-cast.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.10. pg_cast

    51.10. pg_cast

    The catalog pg_cast stores data type conversion +51.10. pg_cast

    51.10. pg_cast

    The catalog pg_cast stores data type conversion paths, both built-in and user-defined.

    It should be noted that pg_cast does not represent every type conversion that the system knows how to perform; only those that @@ -43,4 +43,4 @@ coercion in a single step. When no such entry is available, coercion to a type that uses a type modifier involves two steps, one to convert between data types and a second to apply the modifier. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-class.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-class.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-class.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-class.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.11. pg_class

    51.11. pg_class

    The catalog pg_class catalogs tables and most +51.11. pg_class

    51.11. pg_class

    The catalog pg_class catalogs tables and most everything else that has columns or is otherwise similar to a table. This includes indexes (but see also pg_index), sequences (but see also @@ -99,4 +99,4 @@ DROP INDEX. Instead, VACUUM clears relhasindex if it finds the table has no indexes. This arrangement avoids race conditions and improves concurrency. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-collation.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-collation.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-collation.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-collation.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.12. pg_collation

    51.12. pg_collation

    The catalog pg_collation describes the +51.12. pg_collation

    51.12. pg_collation

    The catalog pg_collation describes the available collations, which are essentially mappings from an SQL name to operating system locale categories. See Section 23.2 for more information. @@ -27,4 +27,4 @@ collations whose encoding does not match the database encoding, since they could match the encodings of databases later cloned from template0. This would currently have to be done manually. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-constraint.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-constraint.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-constraint.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-constraint.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -51.13. pg_constraint

    51.13. pg_constraint

    The catalog pg_constraint stores check, primary +51.13. pg_constraint

    51.13. pg_constraint

    The catalog pg_constraint stores check, primary key, unique, foreign key, and exclusion constraints on tables. (Column constraints are not treated specially. Every column constraint is equivalent to some table constraint.) @@ -55,4 +55,4 @@

    Note

    pg_class.relchecks needs to agree with the number of check-constraint entries found in this table for each relation. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-conversion.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-conversion.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-conversion.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-conversion.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,6 +1,6 @@ -51.14. pg_conversion

    51.14. pg_conversion

    The catalog pg_conversion describes +51.14. pg_conversion

    51.14. pg_conversion

    The catalog pg_conversion describes encoding conversion procedures. See CREATE CONVERSION for more information.

    Table 51.14. pg_conversion Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    connamename Conversion name (unique within a namespace)
    connamespaceoidpg_namespace.oid The OID of the namespace that contains this conversion -
    conowneroidpg_authid.oidOwner of the conversion
    conforencodingint4 Source encoding ID
    contoencodingint4 Destination encoding ID
    conprocregprocpg_proc.oidConversion procedure
    condefaultbool True if this is the default conversion

    \ No newline at end of file + conowneroidpg_authid.oidOwner of the conversionconforencodingint4 Source encoding IDcontoencodingint4 Destination encoding IDconprocregprocpg_proc.oidConversion procedurecondefaultbool True if this is the default conversion

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-database.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-database.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-database.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-database.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.15. pg_database

    51.15. pg_database

    The catalog pg_database stores information about +51.15. pg_database

    51.15. pg_database

    The catalog pg_database stores information about the available databases. Databases are created with the CREATE DATABASE command. Consult Chapter 22 for details about the meaning of some of the parameters. @@ -40,4 +40,4 @@ GRANT and REVOKE for details -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-db-role-setting.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-db-role-setting.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-db-role-setting.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-db-role-setting.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,9 +1,9 @@ -51.16. pg_db_role_setting

    51.16. pg_db_role_setting

    The catalog pg_db_role_setting records the default +51.16. pg_db_role_setting

    51.16. pg_db_role_setting

    The catalog pg_db_role_setting records the default values that have been set for run-time configuration variables, for each role and database combination.

    Unlike most system catalogs, pg_db_role_setting is shared across all databases of a cluster: there is only one copy of pg_db_role_setting per cluster, not one per database. -

    Table 51.16. pg_db_role_setting Columns

    NameTypeReferencesDescription
    setdatabaseoidpg_database.oidThe OID of the database the setting is applicable to, or zero if not database-specific
    setroleoidpg_authid.oidThe OID of the role the setting is applicable to, or zero if not role-specific
    setconfigtext[] Defaults for run-time configuration variables

    \ No newline at end of file +

    Table 51.16. pg_db_role_setting Columns

    NameTypeReferencesDescription
    setdatabaseoidpg_database.oidThe OID of the database the setting is applicable to, or zero if not database-specific
    setroleoidpg_authid.oidThe OID of the role the setting is applicable to, or zero if not role-specific
    setconfigtext[] Defaults for run-time configuration variables

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-default-acl.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-default-acl.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-default-acl.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-default-acl.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.17. pg_default_acl

    51.17. pg_default_acl

    The catalog pg_default_acl stores initial +51.17. pg_default_acl

    51.17. pg_default_acl

    The catalog pg_default_acl stores initial privileges to be assigned to newly created objects.

    Table 51.17. pg_default_acl Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    defaclroleoidpg_authid.oidThe OID of the role associated with this entry
    defaclnamespaceoidpg_namespace.oidThe OID of the namespace associated with this entry, or 0 if none
    defaclobjtypechar  Type of object this entry is for: @@ -22,4 +22,4 @@ not whatever might be in pg_default_acl at the moment. pg_default_acl is only consulted during object creation. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-depend.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-depend.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-depend.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-depend.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.18. pg_depend

    51.18. pg_depend

    The catalog pg_depend records the dependency +51.18. pg_depend

    51.18. pg_depend

    The catalog pg_depend records the dependency relationships between database objects. This information allows DROP commands to find which other objects must be dropped by DROP CASCADE or prevent dropping in the DROP @@ -64,4 +64,4 @@

    Other dependency flavors might be needed in future. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-description.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-description.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-description.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-description.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.19. pg_description

    51.19. pg_description

    The catalog pg_description stores optional descriptions +51.19. pg_description

    51.19. pg_description

    The catalog pg_description stores optional descriptions (comments) for each database object. Descriptions can be manipulated with the COMMENT command and viewed with psql's \d commands. @@ -12,4 +12,4 @@ objoid and classoid refer to the table itself). For all other object types, this column is zero. -

    descriptiontext Arbitrary text that serves as the description of this object

    \ No newline at end of file + descriptiontext Arbitrary text that serves as the description of this object

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-enum.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-enum.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-enum.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-enum.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.20. pg_enum

    51.20. pg_enum

    The pg_enum catalog contains entries +51.20. pg_enum

    51.20. pg_enum

    The pg_enum catalog contains entries showing the values and labels for each enum type. The internal representation of a given enum value is actually the OID of its associated row in pg_enum. @@ -17,4 +17,4 @@ negative or fractional values of enumsortorder. The only requirement on these values is that they be correctly ordered and unique within each enum type. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-event-trigger.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-event-trigger.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-event-trigger.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-event-trigger.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.21. pg_event_trigger

    51.21. pg_event_trigger

    The catalog pg_event_trigger stores event triggers. +51.21. pg_event_trigger

    51.21. pg_event_trigger

    The catalog pg_event_trigger stores event triggers. See Chapter 39 for more information.

    Table 51.21. pg_event_trigger Columns

    NameTypeReferencesDescription
    evtnamename Trigger name (must be unique)
    evteventname Identifies the event for which this trigger fires
    evtowneroidpg_authid.oidOwner of the event trigger
    evtfoidoidpg_proc.oidThe function to be called
    evtenabledchar  Controls in which session_replication_role modes the event trigger fires. @@ -9,4 +9,4 @@ A = trigger fires always.
    evttagstext[]  Command tags for which this trigger will fire. If NULL, the firing of this trigger is not restricted on the basis of the command tag. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-extension.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-extension.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-extension.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-extension.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.22. pg_extension

    51.22. pg_extension

    The catalog pg_extension stores information +51.22. pg_extension

    51.22. pg_extension

    The catalog pg_extension stores information about the installed extensions. See Section 37.15 for details about extensions.

    Table 51.22. pg_extension Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    extnamename Name of the extension
    extowneroidpg_authid.oidOwner of the extension
    extnamespaceoidpg_namespace.oidSchema containing the extension's exported objects
    extrelocatablebool True if extension can be relocated to another schema
    extversiontext Version name for the extension
    extconfigoid[]pg_class.oidArray of regclass OIDs for the extension's configuration @@ -12,4 +12,4 @@ objects. If extrelocatable is true, then this schema must in fact contain all schema-qualifiable objects belonging to the extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-foreign-data-wrapper.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-foreign-data-wrapper.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-foreign-data-wrapper.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-foreign-data-wrapper.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.23. pg_foreign_data_wrapper

    51.23. pg_foreign_data_wrapper

    The catalog pg_foreign_data_wrapper stores +51.23. pg_foreign_data_wrapper

    51.23. pg_foreign_data_wrapper

    The catalog pg_foreign_data_wrapper stores foreign-data wrapper definitions. A foreign-data wrapper is the mechanism by which external data, residing on foreign servers, is accessed. @@ -16,4 +16,4 @@ REVOKE for details

    fdwoptionstext[]  Foreign-data wrapper specific options, as keyword=value strings -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-foreign-server.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-foreign-server.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-foreign-server.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-foreign-server.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.24. pg_foreign_server

    51.24. pg_foreign_server

    The catalog pg_foreign_server stores +51.24. pg_foreign_server

    51.24. pg_foreign_server

    The catalog pg_foreign_server stores foreign server definitions. A foreign server describes a source of external data, such as a remote server. Foreign servers are accessed via foreign-data wrappers. @@ -8,4 +8,4 @@ REVOKE for details srvoptionstext[]  Foreign server specific options, as keyword=value strings -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-foreign-table.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-foreign-table.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-foreign-table.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-foreign-table.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,9 +1,9 @@ -51.25. pg_foreign_table

    51.25. pg_foreign_table

    The catalog pg_foreign_table contains +51.25. pg_foreign_table

    51.25. pg_foreign_table

    The catalog pg_foreign_table contains auxiliary information about foreign tables. A foreign table is primarily represented by a pg_class entry, just like a regular table. Its pg_foreign_table entry contains the information that is pertinent only to foreign tables and not any other kind of relation.

    Table 51.25. pg_foreign_table Columns

    NameTypeReferencesDescription
    ftrelidoidpg_class.oidOID of the pg_class entry for this foreign table
    ftserveroidpg_foreign_server.oidOID of the foreign server for this foreign table
    ftoptionstext[]  Foreign table options, as keyword=value strings -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-index.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-index.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-index.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-index.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.26. pg_index

    51.26. pg_index

    The catalog pg_index contains part of the information +51.26. pg_index

    51.26. pg_index

    The catalog pg_index contains part of the information about indexes. The rest is mostly in pg_class.

    Table 51.26. pg_index Columns

    NameTypeReferencesDescription
    indexrelidoidpg_class.oidThe OID of the pg_class entry for this index
    indrelidoidpg_class.oidThe OID of the pg_class entry for the table this index is for
    indnattsint2 The number of columns in the index (duplicates @@ -46,4 +46,4 @@
    indpredpg_node_tree  Expression tree (in nodeToString() representation) for partial index predicate. Null if not a partial index. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-inherits.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-inherits.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-inherits.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-inherits.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.27. pg_inherits

    51.27. pg_inherits

    The catalog pg_inherits records information about +51.27. pg_inherits

    51.27. pg_inherits

    The catalog pg_inherits records information about table inheritance hierarchies. There is one entry for each direct child table in the database. (Indirect inheritance can be determined by following chains of entries.) @@ -8,4 +8,4 @@ inhseqnoint4  If there is more than one direct parent for a child table (multiple inheritance), this number tells the order in which the inherited columns are to be arranged. The count starts at 1. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-init-privs.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-init-privs.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-init-privs.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-init-privs.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.28. pg_init_privs

    51.28. pg_init_privs

    The catalog pg_init_privs records information about +51.28. pg_init_privs

    51.28. pg_init_privs

    The catalog pg_init_privs records information about the initial privileges of objects in the system. There is one entry for each object in the database which has a non-default (non-NULL) initial set of privileges. @@ -28,4 +28,4 @@ GRANT and REVOKE for details -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-language.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-language.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-language.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-language.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.29. pg_language

    51.29. pg_language

    The catalog pg_language registers +51.29. pg_language

    51.29. pg_language

    The catalog pg_language registers languages in which you can write functions or stored procedures. See CREATE LANGUAGE and Chapter 41 for more information about language handlers. @@ -27,4 +27,4 @@ GRANT and REVOKE for details -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-largeobject.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-largeobject.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-largeobject.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-largeobject.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.30. pg_largeobject

    51.30. pg_largeobject

    The catalog pg_largeobject holds the data making up +51.30. pg_largeobject

    51.30. pg_largeobject

    The catalog pg_largeobject holds the data making up large objects. A large object is identified by an OID assigned when it is created. Each large object is broken into segments or pages small enough to be conveniently stored as rows @@ -22,4 +22,4 @@ allows sparse storage: pages might be missing, and might be shorter than LOBLKSIZE bytes even if they are not the last page of the object. Missing regions within a large object read as zeroes. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-largeobject-metadata.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-largeobject-metadata.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-largeobject-metadata.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-largeobject-metadata.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.31. pg_largeobject_metadata

    51.31. pg_largeobject_metadata

    The catalog pg_largeobject_metadata +51.31. pg_largeobject_metadata

    51.31. pg_largeobject_metadata

    The catalog pg_largeobject_metadata holds metadata associated with large objects. The actual large object data is stored in pg_largeobject. @@ -7,4 +7,4 @@ GRANT and REVOKE for details -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-namespace.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-namespace.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-namespace.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-namespace.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.32. pg_namespace

    51.32. pg_namespace

    The catalog pg_namespace stores namespaces. +51.32. pg_namespace

    51.32. pg_namespace

    The catalog pg_namespace stores namespaces. A namespace is the structure underlying SQL schemas: each namespace can have a separate collection of relations, types, etc. without name conflicts. @@ -7,4 +7,4 @@ GRANT and REVOKE for details -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-opclass.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-opclass.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-opclass.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-opclass.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.33. pg_opclass

    51.33. pg_opclass

    The catalog pg_opclass defines +51.33. pg_opclass

    51.33. pg_opclass

    The catalog pg_opclass defines index access method operator classes. Each operator class defines semantics for index columns of a particular data type and a particular index access method. An operator class essentially specifies that a @@ -13,4 +13,4 @@ Also, there must be no more than one pg_opclass row having opcdefault true for any given combination of opcmethod and opcintype. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-operator.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-operator.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-operator.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-operator.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,10 +1,10 @@ -51.34. pg_operator

    51.34. pg_operator

    The catalog pg_operator stores information about operators. +51.34. pg_operator

    51.34. pg_operator

    The catalog pg_operator stores information about operators. See CREATE OPERATOR and Section 37.12 for more information.

    Table 51.34. pg_operator Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    oprnamename Name of the operator
    oprnamespaceoidpg_namespace.oid The OID of the namespace that contains this operator
    oprowneroidpg_authid.oidOwner of the operator
    oprkindchar  b = infix (both), l = prefix (left), r = postfix (right) -
    oprcanmergebool This operator supports merge joins
    oprcanhashbool This operator supports hash joins
    oprleftoidpg_type.oidType of the left operand
    oprrightoidpg_type.oidType of the right operand
    oprresultoidpg_type.oidType of the result
    oprcomoidpg_operator.oidCommutator of this operator, if any
    oprnegateoidpg_operator.oidNegator of this operator, if any
    oprcoderegprocpg_proc.oidFunction that implements this operator
    oprrestregprocpg_proc.oidRestriction selectivity estimation function for this operator
    oprjoinregprocpg_proc.oidJoin selectivity estimation function for this operator

    Unused column contain zeroes. For example, oprleft + oprcanmergebool This operator supports merge joinsoprcanhashbool This operator supports hash joinsoprleftoidpg_type.oidType of the left operandoprrightoidpg_type.oidType of the right operandoprresultoidpg_type.oidType of the resultoprcomoidpg_operator.oidCommutator of this operator, if anyoprnegateoidpg_operator.oidNegator of this operator, if anyoprcoderegprocpg_proc.oidFunction that implements this operatoroprrestregprocpg_proc.oidRestriction selectivity estimation function for this operatoroprjoinregprocpg_proc.oidJoin selectivity estimation function for this operator


    Unused columns contain zeroes. For example, oprleft is zero for a prefix operator. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-opfamily.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-opfamily.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-opfamily.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-opfamily.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.35. pg_opfamily

    51.35. pg_opfamily

    The catalog pg_opfamily defines operator families. +51.35. pg_opfamily

    51.35. pg_opfamily

    The catalog pg_opfamily defines operator families. Each operator family is a collection of operators and associated support routines that implement the semantics specified for a particular index access method. Furthermore, the operators in a family are all @@ -14,4 +14,4 @@ pg_amproc, and pg_opclass. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-partitioned-table.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-partitioned-table.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-partitioned-table.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-partitioned-table.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.36. pg_partitioned_table

    51.36. pg_partitioned_table

    The catalog pg_partitioned_table stores +51.36. pg_partitioned_table

    51.36. pg_partitioned_table

    The catalog pg_partitioned_table stores information about how tables are partitioned.

    Table 51.36. pg_partitioned_table Columns

    NameTypeReferencesDescription
    partrelidoidpg_class.oidThe OID of the pg_class entry for this partitioned table
    partstratchar  Partitioning strategy; l = list partitioned table, r = range partitioned table @@ -20,4 +20,4 @@ references. This is a list with one element for each zero entry in partattrs. Null if all partition key columns are simple references. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-pltemplate.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-pltemplate.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-pltemplate.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-pltemplate.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.37. pg_pltemplate

    51.37. pg_pltemplate

    The catalog pg_pltemplate stores +51.37. pg_pltemplate

    51.37. pg_pltemplate

    The catalog pg_pltemplate stores template information for procedural languages. A template for a language allows the language to be created in a particular database by a simple CREATE LANGUAGE command, @@ -17,4 +17,4 @@ future release of PostgreSQL, in favor of keeping this knowledge about procedural languages in their respective extension installation scripts. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-policy.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-policy.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-policy.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-policy.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.38. pg_policy

    51.38. pg_policy

    The catalog pg_policy stores row level +51.38. pg_policy

    51.38. pg_policy

    The catalog pg_policy stores row level security policies for tables. A policy includes the kind of command that it applies to (possibly all commands), the roles that it applies to, the expression to be added as a security-barrier @@ -14,4 +14,4 @@ or * for allpolpermissiveboolean Is the policy permissive or restrictive?polrolesoid[]pg_authid.oidThe roles to which the policy is appliedpolqualpg_node_tree The expression tree to be added to the security barrier qualifications for queries that use the tablepolwithcheckpg_node_tree The expression tree to be added to the WITH CHECK qualifications for queries that attempt to add rows to the table


    Note

    Policies stored in pg_policy are applied only when pg_class.relrowsecurity is set for their table. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-proc.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-proc.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-proc.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-proc.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.39. pg_proc

    51.39. pg_proc

    The catalog pg_proc stores information about functions (or procedures). +51.39. pg_proc

    51.39. pg_proc

    The catalog pg_proc stores information about functions (or procedures). See CREATE FUNCTION and Section 37.3 for more information.

    The table contains data for aggregate functions as well as plain functions. @@ -89,4 +89,4 @@ text. probin is unused except for dynamically-loaded C functions, for which it gives the name of the shared library file containing the function. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-publication.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-publication.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-publication.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-publication.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.40. pg_publication

    51.40. pg_publication

    The catalog pg_publication contains all +51.40. pg_publication

    51.40. pg_publication

    The catalog pg_publication contains all publications created in the database. For more on publications see Section 31.1.

    Table 51.40. pg_publication Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    pubnamename Name of the publication
    pubowneroidpg_authid.oidOwner of the publication
    puballtablesbool If true, this publication automatically includes all tables @@ -7,4 +7,4 @@
    pubinsertbool If true, INSERT operations are replicated for tables in the publication.
    pubupdatebool If true, UPDATE operations are replicated for tables in the publication.
    pubdeletebool If true, DELETE operations are replicated for - tables in the publication.

    \ No newline at end of file + tables in the publication.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-publication-rel.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-publication-rel.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-publication-rel.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-publication-rel.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,6 +1,6 @@ -51.41. pg_publication_rel

    51.41. pg_publication_rel

    The catalog pg_publication_rel contains the +51.41. pg_publication_rel

    51.41. pg_publication_rel

    The catalog pg_publication_rel contains the mapping between relations and publications in the database. This is a many-to-many mapping. See also Section 51.78 for a more user-friendly view of this information. -

    Table 51.41. pg_publication_rel Columns

    NameTypeReferencesDescription
    prpubidoidpg_publication.oidReference to publication
    prrelidoidpg_class.oidReference to relation

    \ No newline at end of file +

    Table 51.41. pg_publication_rel Columns

    NameTypeReferencesDescription
    prpubidoidpg_publication.oidReference to publication
    prrelidoidpg_class.oidReference to relation

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-range.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-range.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-range.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-range.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.42. pg_range

    51.42. pg_range

    The catalog pg_range stores information about +51.42. pg_range

    51.42. pg_range

    The catalog pg_range stores information about range types. This is in addition to the types' entries in pg_type.

    Table 51.42. pg_range Columns

    NameTypeReferencesDescription
    rngtypidoidpg_type.oidOID of the range type
    rngsubtypeoidpg_type.oidOID of the element type (subtype) of this range type
    rngcollationoidpg_collation.oidOID of the collation used for range comparisons, or 0 if none
    rngsubopcoidpg_opclass.oidOID of the subtype's operator class used for range comparisons
    rngcanonicalregprocpg_proc.oidOID of the function to convert a range value into canonical form, @@ -9,4 +9,4 @@ type. rngcanonical is used when the element type is discrete. rngsubdiff is optional but should be supplied to improve performance of GiST indexes on the range type. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-replication-origin.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-replication-origin.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-replication-origin.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-replication-origin.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,7 +1,7 @@ -51.43. pg_replication_origin

    51.43. pg_replication_origin

    The pg_replication_origin catalog contains +51.43. pg_replication_origin

    51.43. pg_replication_origin

    The pg_replication_origin catalog contains all replication origins created. For more on replication origins see Chapter 49.

    Table 51.43. pg_replication_origin Columns

    NameTypeReferencesDescription
    roidentOid A unique, cluster-wide identifier for the replication origin. Should never leave the system.
    ronametext The external, user defined, name of a replication - origin.

    \ No newline at end of file + origin.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-rewrite.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-rewrite.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-rewrite.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-rewrite.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.44. pg_rewrite

    51.44. pg_rewrite

    The catalog pg_rewrite stores rewrite rules for tables and views. +51.44. pg_rewrite

    51.44. pg_rewrite

    The catalog pg_rewrite stores rewrite rules for tables and views.

    Table 51.44. pg_rewrite Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    rulenamename Rule name
    ev_classoidpg_class.oidThe table this rule is for
    ev_typechar  Event type that the rule is for: 1 = SELECT, 2 = UPDATE, 3 = INSERT, 4 = DELETE @@ -17,4 +17,4 @@ rule's action

    Note

    pg_class.relhasrules must be true if a table has any rules in this catalog. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-seclabel.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-seclabel.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-seclabel.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-seclabel.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.45. pg_seclabel

    51.45. pg_seclabel

    The catalog pg_seclabel stores security +51.45. pg_seclabel

    51.45. pg_seclabel

    The catalog pg_seclabel stores security labels on database objects. Security labels can be manipulated with the SECURITY LABEL command. For an easier way to view security labels, see Section 51.83. @@ -10,4 +10,4 @@ objoid and classoid refer to the table itself). For all other object types, this column is zero. - providertext The label provider associated with this label.labeltext The security label applied to this object.


    \ No newline at end of file + providertext The label provider associated with this label.labeltext The security label applied to this object.
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-sequence.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-sequence.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-sequence.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-sequence.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.46. pg_sequence

    51.46. pg_sequence

    The catalog pg_sequence contains information about +51.46. pg_sequence

    51.46. pg_sequence

    The catalog pg_sequence contains information about sequences. Some of the information about sequences, such as the name and the schema, is in pg_class. -

    Table 51.46. pg_sequence Columns

    NameTypeReferencesDescription
    seqrelidoidpg_class.oidThe OID of the pg_class entry for this sequence
    seqtypidoidpg_type.oidData type of the sequence
    seqstartint8 Start value of the sequence
    seqincrementint8 Increment value of the sequence
    seqmaxint8 Maximum value of the sequence
    seqminint8 Minimum value of the sequence
    seqcacheint8 Cache size of the sequence
    seqcyclebool Whether the sequence cycles

    \ No newline at end of file +

    Table 51.46. pg_sequence Columns

    NameTypeReferencesDescription
    seqrelidoidpg_class.oidThe OID of the pg_class entry for this sequence
    seqtypidoidpg_type.oidData type of the sequence
    seqstartint8 Start value of the sequence
    seqincrementint8 Increment value of the sequence
    seqmaxint8 Maximum value of the sequence
    seqminint8 Minimum value of the sequence
    seqcacheint8 Cache size of the sequence
    seqcyclebool Whether the sequence cycles

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-shdepend.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-shdepend.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-shdepend.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-shdepend.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.47. pg_shdepend

    51.47. pg_shdepend

    The catalog pg_shdepend records the +51.47. pg_shdepend

    51.47. pg_shdepend

    The catalog pg_shdepend records the dependency relationships between database objects and shared objects, such as roles. This information allows PostgreSQL to ensure that those objects are @@ -40,4 +40,4 @@ Other dependency flavors might be needed in future. Note in particular that the current definition only supports roles as referenced objects. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-shdescription.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-shdescription.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-shdescription.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-shdescription.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.48. pg_shdescription

    51.48. pg_shdescription

    The catalog pg_shdescription stores optional +51.48. pg_shdescription

    51.48. pg_shdescription

    The catalog pg_shdescription stores optional descriptions (comments) for shared database objects. Descriptions can be manipulated with the COMMENT command and viewed with psql's \d commands. @@ -10,4 +10,4 @@ is shared across all databases of a cluster: there is only one copy of pg_shdescription per cluster, not one per database. -

    Table 51.48. pg_shdescription Columns

    NameTypeReferencesDescription
    objoidoidany OID columnThe OID of the object this description pertains to
    classoidoidpg_class.oidThe OID of the system catalog this object appears in
    descriptiontext Arbitrary text that serves as the description of this object

    \ No newline at end of file +

    Table 51.48. pg_shdescription Columns

    NameTypeReferencesDescription
    objoidoidany OID columnThe OID of the object this description pertains to
    classoidoidpg_class.oidThe OID of the system catalog this object appears in
    descriptiontext Arbitrary text that serves as the description of this object

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-shseclabel.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-shseclabel.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-shseclabel.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-shseclabel.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.49. pg_shseclabel

    51.49. pg_shseclabel

    The catalog pg_shseclabel stores security +51.49. pg_shseclabel

    51.49. pg_shseclabel

    The catalog pg_shseclabel stores security labels on shared database objects. Security labels can be manipulated with the SECURITY LABEL command. For an easier way to view security labels, see Section 51.83. @@ -10,4 +10,4 @@ is shared across all databases of a cluster: there is only one copy of pg_shseclabel per cluster, not one per database. -

    Table 51.49. pg_shseclabel Columns

    NameTypeReferencesDescription
    objoidoidany OID columnThe OID of the object this security label pertains to
    classoidoidpg_class.oidThe OID of the system catalog this object appears in
    providertext The label provider associated with this label.
    labeltext The security label applied to this object.

    \ No newline at end of file +

    Table 51.49. pg_shseclabel Columns

    NameTypeReferencesDescription
    objoidoidany OID columnThe OID of the object this security label pertains to
    classoidoidpg_class.oidThe OID of the system catalog this object appears in
    providertext The label provider associated with this label.
    labeltext The security label applied to this object.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-statistic-ext.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-statistic-ext.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-statistic-ext.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-statistic-ext.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.51. pg_statistic_ext

    51.51. pg_statistic_ext

    The catalog pg_statistic_ext +51.51. pg_statistic_ext

    51.51. pg_statistic_ext

    The catalog pg_statistic_ext holds extended planner statistics. Each row in this catalog corresponds to a statistics object created with CREATE STATISTICS. @@ -19,4 +19,4 @@ statistics object, indicating which statistic type(s) are desired. The fields after it are initially NULL and are filled only when the corresponding statistic has been computed by ANALYZE. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-statistic.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-statistic.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-statistic.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-statistic.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.50. pg_statistic

    51.50. pg_statistic

    The catalog pg_statistic stores +51.50. pg_statistic

    51.50. pg_statistic

    The catalog pg_statistic stores statistical data about the contents of the database. Entries are created by ANALYZE and subsequently used by the query planner. Note that all the @@ -63,4 +63,4 @@ values are actually of the specific column's data type, or a related type such as an array's element type, so there is no way to define these columns' type more specifically than anyarray. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-subscription.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-subscription.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-subscription.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-subscription.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.52. pg_subscription

    51.52. pg_subscription

    The catalog pg_subscription contains all existing +51.52. pg_subscription

    51.52. pg_subscription

    The catalog pg_subscription contains all existing logical replication subscriptions. For more information about logical replication see Chapter 31.

    Unlike most system catalogs, pg_subscription is @@ -15,4 +15,4 @@ null represents NONEsubpublicationstext[] Array of subscribed publication names. These reference the publications on the publisher server. For more on publications see Section 31.1. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-subscription-rel.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-subscription-rel.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-subscription-rel.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-subscription-rel.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.53. pg_subscription_rel

    51.53. pg_subscription_rel

    The catalog pg_subscription_rel contains the +51.53. pg_subscription_rel

    51.53. pg_subscription_rel

    The catalog pg_subscription_rel contains the state for each replicated relation in each subscription. This is a many-to-many mapping.

    This catalog only contains tables known to the subscription after running @@ -13,4 +13,4 @@ srsublsnpg_lsn  Remote LSN of the state change used for synchronization coordination when in s or r states, otherwise null -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-tablespace.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-tablespace.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-tablespace.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-tablespace.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.54. pg_tablespace

    51.54. pg_tablespace

    The catalog pg_tablespace stores information +51.54. pg_tablespace

    51.54. pg_tablespace

    The catalog pg_tablespace stores information about the available tablespaces. Tables can be placed in particular tablespaces to aid administration of disk layout.

    Unlike most system catalogs, pg_tablespace @@ -11,4 +11,4 @@ REVOKE for details spcoptionstext[]  Tablespace-level options, as keyword=value strings -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-transform.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-transform.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-transform.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-transform.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.55. pg_transform

    51.55. pg_transform

    The catalog pg_transform stores information about +51.55. pg_transform

    51.55. pg_transform

    The catalog pg_transform stores information about transforms, which are a mechanism to adapt data types to procedural languages. See CREATE TRANSFORM for more information.

    Table 51.55. pg_transform Columns

    NameTypeReferencesDescription
    trftypeoidpg_type.oidOID of the data type this transform is for
    trflangoidpg_language.oidOID of the language this transform is for
    trffromsqlregprocpg_proc.oid The OID of the function to use when converting the data type for input @@ -8,4 +8,4 @@
    trftosqlregprocpg_proc.oid The OID of the function to use when converting output from the procedural language (e.g., return values) to the data type. Zero is stored if this operation is not supported. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-trigger.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-trigger.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-trigger.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-trigger.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.56. pg_trigger

    51.56. pg_trigger

    The catalog pg_trigger stores triggers on tables +51.56. pg_trigger

    51.56. pg_trigger

    The catalog pg_trigger stores triggers on tables and views. See CREATE TRIGGER for more information. @@ -30,4 +30,4 @@ deferrable and some non-deferrable triggers.

    Note

    pg_class.relhastriggers must be true if a relation has any triggers in this catalog. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-config.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-config.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-config.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-config.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.57. pg_ts_config

    51.57. pg_ts_config

    The pg_ts_config catalog contains entries +51.57. pg_ts_config

    51.57. pg_ts_config

    The pg_ts_config catalog contains entries representing text search configurations. A configuration specifies a particular text search parser and a list of dictionaries to use for each of the parser's output token types. The parser is shown @@ -8,4 +8,4 @@

    PostgreSQL's text search features are described at length in Chapter 12.

    Table 51.57. pg_ts_config Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    cfgnamename Text search configuration name
    cfgnamespaceoidpg_namespace.oid The OID of the namespace that contains this configuration -
    cfgowneroidpg_authid.oidOwner of the configuration
    cfgparseroidpg_ts_parser.oidThe OID of the text search parser for this configuration

    \ No newline at end of file + cfgowneroidpg_authid.oidOwner of the configurationcfgparseroidpg_ts_parser.oidThe OID of the text search parser for this configuration

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-config-map.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-config-map.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-config-map.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-config-map.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,9 +1,9 @@ -51.58. pg_ts_config_map

    51.58. pg_ts_config_map

    The pg_ts_config_map catalog contains entries +51.58. pg_ts_config_map

    51.58. pg_ts_config_map

    The pg_ts_config_map catalog contains entries showing which text search dictionaries should be consulted, and in what order, for each output token type of each text search configuration's parser.

    PostgreSQL's text search features are described at length in Chapter 12.

    Table 51.58. pg_ts_config_map Columns

    NameTypeReferencesDescription
    mapcfgoidpg_ts_config.oidThe OID of the pg_ts_config entry owning this map entry
    maptokentypeinteger A token type emitted by the configuration's parser
    mapseqnointeger Order in which to consult this entry (lower - mapseqnos first)
    mapdictoidpg_ts_dict.oidThe OID of the text search dictionary to consult

    \ No newline at end of file + mapseqnos first)mapdictoidpg_ts_dict.oidThe OID of the text search dictionary to consult

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-dict.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-dict.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-dict.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-dict.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.59. pg_ts_dict

    51.59. pg_ts_dict

    The pg_ts_dict catalog contains entries +51.59. pg_ts_dict

    51.59. pg_ts_dict

    The pg_ts_dict catalog contains entries defining text search dictionaries. A dictionary depends on a text search template, which specifies all the implementation functions needed; the dictionary itself provides values for the user-settable @@ -10,4 +10,4 @@

    PostgreSQL's text search features are described at length in Chapter 12.

    Table 51.59. pg_ts_dict Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    dictnamename Text search dictionary name
    dictnamespaceoidpg_namespace.oid The OID of the namespace that contains this dictionary -
    dictowneroidpg_authid.oidOwner of the dictionary
    dicttemplateoidpg_ts_template.oidThe OID of the text search template for this dictionary
    dictinitoptiontext Initialization option string for the template

    \ No newline at end of file + dictowneroidpg_authid.oidOwner of the dictionarydicttemplateoidpg_ts_template.oidThe OID of the text search template for this dictionarydictinitoptiontext Initialization option string for the template

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-parser.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-parser.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-parser.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-parser.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.60. pg_ts_parser

    51.60. pg_ts_parser

    The pg_ts_parser catalog contains entries +51.60. pg_ts_parser

    51.60. pg_ts_parser

    The pg_ts_parser catalog contains entries defining text search parsers. A parser is responsible for splitting input text into lexemes and assigning a token type to each lexeme. Since a parser must be implemented by C-language-level functions, @@ -7,4 +7,4 @@

    PostgreSQL's text search features are described at length in Chapter 12.

    Table 51.60. pg_ts_parser Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    prsnamename Text search parser name
    prsnamespaceoidpg_namespace.oid The OID of the namespace that contains this parser -
    prsstartregprocpg_proc.oidOID of the parser's startup function
    prstokenregprocpg_proc.oidOID of the parser's next-token function
    prsendregprocpg_proc.oidOID of the parser's shutdown function
    prsheadlineregprocpg_proc.oidOID of the parser's headline function
    prslextyperegprocpg_proc.oidOID of the parser's lextype function

    \ No newline at end of file + prsstartregprocpg_proc.oidOID of the parser's startup functionprstokenregprocpg_proc.oidOID of the parser's next-token functionprsendregprocpg_proc.oidOID of the parser's shutdown functionprsheadlineregprocpg_proc.oidOID of the parser's headline functionprslextyperegprocpg_proc.oidOID of the parser's lextype function

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-template.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-template.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-ts-template.html 2021-05-10 20:58:23.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-ts-template.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.61. pg_ts_template

    51.61. pg_ts_template

    The pg_ts_template catalog contains entries +51.61. pg_ts_template

    51.61. pg_ts_template

    The pg_ts_template catalog contains entries defining text search templates. A template is the implementation skeleton for a class of text search dictionaries. Since a template must be implemented by C-language-level functions, @@ -7,4 +7,4 @@

    PostgreSQL's text search features are described at length in Chapter 12.

    Table 51.61. pg_ts_template Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    tmplnamename Text search template name
    tmplnamespaceoidpg_namespace.oid The OID of the namespace that contains this template -
    tmplinitregprocpg_proc.oidOID of the template's initialization function
    tmpllexizeregprocpg_proc.oidOID of the template's lexize function

    \ No newline at end of file + tmplinitregprocpg_proc.oidOID of the template's initialization functiontmpllexizeregprocpg_proc.oidOID of the template's lexize function

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-type.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-type.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-type.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-type.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.62. pg_type

    51.62. pg_type

    The catalog pg_type stores information about data +51.62. pg_type

    51.62. pg_type

    The catalog pg_type stores information about data types. Base types and enum types (scalar types) are created with CREATE TYPE, and domains with @@ -136,4 +136,4 @@ of typcategory. Any future additions to this list will also be upper-case ASCII letters. All other ASCII characters are reserved for user-defined categories. -

    Table 51.63. typcategory Codes

    CodeCategory
    AArray types
    BBoolean types
    CComposite types
    DDate/time types
    EEnum types
    GGeometric types
    INetwork address types
    NNumeric types
    PPseudo-types
    RRange types
    SString types
    TTimespan types
    UUser-defined types
    VBit-string types
    Xunknown type

    \ No newline at end of file +

    Table 51.63. typcategory Codes

    CodeCategory
    AArray types
    BBoolean types
    CComposite types
    DDate/time types
    EEnum types
    GGeometric types
    INetwork address types
    NNumeric types
    PPseudo-types
    RRange types
    SString types
    TTimespan types
    UUser-defined types
    VBit-string types
    Xunknown type

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalog-pg-user-mapping.html postgresql-10-10.19/doc/src/sgml/html/catalog-pg-user-mapping.html --- postgresql-10-10.17/doc/src/sgml/html/catalog-pg-user-mapping.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalog-pg-user-mapping.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,9 +1,9 @@ -51.63. pg_user_mapping

    51.63. pg_user_mapping

    The catalog pg_user_mapping stores +51.63. pg_user_mapping

    51.63. pg_user_mapping

    The catalog pg_user_mapping stores the mappings from local user to remote. Access to this catalog is restricted from normal users, use the view pg_user_mappings instead.

    Table 51.64. pg_user_mapping Columns

    NameTypeReferencesDescription
    oidoid Row identifier (hidden attribute; must be explicitly selected)
    umuseroidpg_authid.oidOID of the local role being mapped, 0 if the user mapping is public
    umserveroidpg_foreign_server.oid The OID of the foreign server that contains this mapping
    umoptionstext[]  User mapping specific options, as keyword=value strings -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalogs.html postgresql-10-10.19/doc/src/sgml/html/catalogs.html --- postgresql-10-10.17/doc/src/sgml/html/catalogs.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalogs.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 51. System Catalogs

    Chapter 51. System Catalogs

    Table of Contents

    51.1. Overview
    51.2. pg_aggregate
    51.3. pg_am
    51.4. pg_amop
    51.5. pg_amproc
    51.6. pg_attrdef
    51.7. pg_attribute
    51.8. pg_authid
    51.9. pg_auth_members
    51.10. pg_cast
    51.11. pg_class
    51.12. pg_collation
    51.13. pg_constraint
    51.14. pg_conversion
    51.15. pg_database
    51.16. pg_db_role_setting
    51.17. pg_default_acl
    51.18. pg_depend
    51.19. pg_description
    51.20. pg_enum
    51.21. pg_event_trigger
    51.22. pg_extension
    51.23. pg_foreign_data_wrapper
    51.24. pg_foreign_server
    51.25. pg_foreign_table
    51.26. pg_index
    51.27. pg_inherits
    51.28. pg_init_privs
    51.29. pg_language
    51.30. pg_largeobject
    51.31. pg_largeobject_metadata
    51.32. pg_namespace
    51.33. pg_opclass
    51.34. pg_operator
    51.35. pg_opfamily
    51.36. pg_partitioned_table
    51.37. pg_pltemplate
    51.38. pg_policy
    51.39. pg_proc
    51.40. pg_publication
    51.41. pg_publication_rel
    51.42. pg_range
    51.43. pg_replication_origin
    51.44. pg_rewrite
    51.45. pg_seclabel
    51.46. pg_sequence
    51.47. pg_shdepend
    51.48. pg_shdescription
    51.49. pg_shseclabel
    51.50. pg_statistic
    51.51. pg_statistic_ext
    51.52. pg_subscription
    51.53. pg_subscription_rel
    51.54. pg_tablespace
    51.55. pg_transform
    51.56. pg_trigger
    51.57. pg_ts_config
    51.58. pg_ts_config_map
    51.59. pg_ts_dict
    51.60. pg_ts_parser
    51.61. pg_ts_template
    51.62. pg_type
    51.63. pg_user_mapping
    51.64. System Views
    51.65. pg_available_extensions
    51.66. pg_available_extension_versions
    51.67. pg_config
    51.68. pg_cursors
    51.69. pg_file_settings
    51.70. pg_group
    51.71. pg_hba_file_rules
    51.72. pg_indexes
    51.73. pg_locks
    51.74. pg_matviews
    51.75. pg_policies
    51.76. pg_prepared_statements
    51.77. pg_prepared_xacts
    51.78. pg_publication_tables
    51.79. pg_replication_origin_status
    51.80. pg_replication_slots
    51.81. pg_roles
    51.82. pg_rules
    51.83. pg_seclabels
    51.84. pg_sequences
    51.85. pg_settings
    51.86. pg_shadow
    51.87. pg_stats
    51.88. pg_tables
    51.89. pg_timezone_abbrevs
    51.90. pg_timezone_names
    51.91. pg_user
    51.92. pg_user_mappings
    51.93. pg_views

    The system catalogs are the place where a relational database +Chapter 51. System Catalogs

    Chapter 51. System Catalogs

    Table of Contents

    51.1. Overview
    51.2. pg_aggregate
    51.3. pg_am
    51.4. pg_amop
    51.5. pg_amproc
    51.6. pg_attrdef
    51.7. pg_attribute
    51.8. pg_authid
    51.9. pg_auth_members
    51.10. pg_cast
    51.11. pg_class
    51.12. pg_collation
    51.13. pg_constraint
    51.14. pg_conversion
    51.15. pg_database
    51.16. pg_db_role_setting
    51.17. pg_default_acl
    51.18. pg_depend
    51.19. pg_description
    51.20. pg_enum
    51.21. pg_event_trigger
    51.22. pg_extension
    51.23. pg_foreign_data_wrapper
    51.24. pg_foreign_server
    51.25. pg_foreign_table
    51.26. pg_index
    51.27. pg_inherits
    51.28. pg_init_privs
    51.29. pg_language
    51.30. pg_largeobject
    51.31. pg_largeobject_metadata
    51.32. pg_namespace
    51.33. pg_opclass
    51.34. pg_operator
    51.35. pg_opfamily
    51.36. pg_partitioned_table
    51.37. pg_pltemplate
    51.38. pg_policy
    51.39. pg_proc
    51.40. pg_publication
    51.41. pg_publication_rel
    51.42. pg_range
    51.43. pg_replication_origin
    51.44. pg_rewrite
    51.45. pg_seclabel
    51.46. pg_sequence
    51.47. pg_shdepend
    51.48. pg_shdescription
    51.49. pg_shseclabel
    51.50. pg_statistic
    51.51. pg_statistic_ext
    51.52. pg_subscription
    51.53. pg_subscription_rel
    51.54. pg_tablespace
    51.55. pg_transform
    51.56. pg_trigger
    51.57. pg_ts_config
    51.58. pg_ts_config_map
    51.59. pg_ts_dict
    51.60. pg_ts_parser
    51.61. pg_ts_template
    51.62. pg_type
    51.63. pg_user_mapping
    51.64. System Views
    51.65. pg_available_extensions
    51.66. pg_available_extension_versions
    51.67. pg_config
    51.68. pg_cursors
    51.69. pg_file_settings
    51.70. pg_group
    51.71. pg_hba_file_rules
    51.72. pg_indexes
    51.73. pg_locks
    51.74. pg_matviews
    51.75. pg_policies
    51.76. pg_prepared_statements
    51.77. pg_prepared_xacts
    51.78. pg_publication_tables
    51.79. pg_replication_origin_status
    51.80. pg_replication_slots
    51.81. pg_roles
    51.82. pg_rules
    51.83. pg_seclabels
    51.84. pg_sequences
    51.85. pg_settings
    51.86. pg_shadow
    51.87. pg_stats
    51.88. pg_tables
    51.89. pg_timezone_abbrevs
    51.90. pg_timezone_names
    51.91. pg_user
    51.92. pg_user_mappings
    51.93. pg_views

    The system catalogs are the place where a relational database management system stores schema metadata, such as information about tables and columns, and internal bookkeeping information. PostgreSQL's system catalogs are regular @@ -13,4 +13,4 @@ particularly esoteric operations, but many of those have been made available as SQL commands over time, and so the need for direct manipulation of the system catalogs is ever decreasing. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/catalogs-overview.html postgresql-10-10.19/doc/src/sgml/html/catalogs-overview.html --- postgresql-10-10.17/doc/src/sgml/html/catalogs-overview.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/catalogs-overview.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,8 +1,8 @@ -51.1. Overview

    51.1. Overview

    Table 51.1 lists the system catalogs. +51.1. Overview

    51.1. Overview

    Table 51.1 lists the system catalogs. More detailed documentation of each catalog follows below.

    Most system catalogs are copied from the template database during database creation and are thereafter database-specific. A few catalogs are physically shared across all databases in a cluster; these are noted in the descriptions of the individual catalogs. -

    Table 51.1. System Catalogs

    Catalog NamePurpose
    pg_aggregateaggregate functions
    pg_amindex access methods
    pg_amopaccess method operators
    pg_amprocaccess method support procedures
    pg_attrdefcolumn default values
    pg_attributetable columns (attributes)
    pg_authidauthorization identifiers (roles)
    pg_auth_membersauthorization identifier membership relationships
    pg_castcasts (data type conversions)
    pg_classtables, indexes, sequences, views (relations)
    pg_collationcollations (locale information)
    pg_constraintcheck constraints, unique constraints, primary key constraints, foreign key constraints
    pg_conversionencoding conversion information
    pg_databasedatabases within this database cluster
    pg_db_role_settingper-role and per-database settings
    pg_default_acldefault privileges for object types
    pg_dependdependencies between database objects
    pg_descriptiondescriptions or comments on database objects
    pg_enumenum label and value definitions
    pg_event_triggerevent triggers
    pg_extensioninstalled extensions
    pg_foreign_data_wrapperforeign-data wrapper definitions
    pg_foreign_serverforeign server definitions
    pg_foreign_tableadditional foreign table information
    pg_indexadditional index information
    pg_inheritstable inheritance hierarchy
    pg_init_privsobject initial privileges
    pg_languagelanguages for writing functions
    pg_largeobjectdata pages for large objects
    pg_largeobject_metadatametadata for large objects
    pg_namespaceschemas
    pg_opclassaccess method operator classes
    pg_operatoroperators
    pg_opfamilyaccess method operator families
    pg_partitioned_tableinformation about partition key of tables
    pg_pltemplatetemplate data for procedural languages
    pg_policyrow-security policies
    pg_procfunctions and procedures
    pg_publicationpublications for logical replication
    pg_publication_relrelation to publication mapping
    pg_rangeinformation about range types
    pg_replication_originregistered replication origins
    pg_rewritequery rewrite rules
    pg_seclabelsecurity labels on database objects
    pg_sequenceinformation about sequences
    pg_shdependdependencies on shared objects
    pg_shdescriptioncomments on shared objects
    pg_shseclabelsecurity labels on shared database objects
    pg_statisticplanner statistics
    pg_statistic_extextended planner statistics
    pg_subscriptionlogical replication subscriptions
    pg_subscription_relrelation state for subscriptions
    pg_tablespacetablespaces within this database cluster
    pg_transformtransforms (data type to procedural language conversions)
    pg_triggertriggers
    pg_ts_configtext search configurations
    pg_ts_config_maptext search configurations' token mappings
    pg_ts_dicttext search dictionaries
    pg_ts_parsertext search parsers
    pg_ts_templatetext search templates
    pg_typedata types
    pg_user_mappingmappings of users to foreign servers

    \ No newline at end of file +

    Table 51.1. System Catalogs

    Catalog NamePurpose
    pg_aggregateaggregate functions
    pg_amindex access methods
    pg_amopaccess method operators
    pg_amprocaccess method support procedures
    pg_attrdefcolumn default values
    pg_attributetable columns (attributes)
    pg_authidauthorization identifiers (roles)
    pg_auth_membersauthorization identifier membership relationships
    pg_castcasts (data type conversions)
    pg_classtables, indexes, sequences, views (relations)
    pg_collationcollations (locale information)
    pg_constraintcheck constraints, unique constraints, primary key constraints, foreign key constraints
    pg_conversionencoding conversion information
    pg_databasedatabases within this database cluster
    pg_db_role_settingper-role and per-database settings
    pg_default_acldefault privileges for object types
    pg_dependdependencies between database objects
    pg_descriptiondescriptions or comments on database objects
    pg_enumenum label and value definitions
    pg_event_triggerevent triggers
    pg_extensioninstalled extensions
    pg_foreign_data_wrapperforeign-data wrapper definitions
    pg_foreign_serverforeign server definitions
    pg_foreign_tableadditional foreign table information
    pg_indexadditional index information
    pg_inheritstable inheritance hierarchy
    pg_init_privsobject initial privileges
    pg_languagelanguages for writing functions
    pg_largeobjectdata pages for large objects
    pg_largeobject_metadatametadata for large objects
    pg_namespaceschemas
    pg_opclassaccess method operator classes
    pg_operatoroperators
    pg_opfamilyaccess method operator families
    pg_partitioned_tableinformation about partition key of tables
    pg_pltemplatetemplate data for procedural languages
    pg_policyrow-security policies
    pg_procfunctions and procedures
    pg_publicationpublications for logical replication
    pg_publication_relrelation to publication mapping
    pg_rangeinformation about range types
    pg_replication_originregistered replication origins
    pg_rewritequery rewrite rules
    pg_seclabelsecurity labels on database objects
    pg_sequenceinformation about sequences
    pg_shdependdependencies on shared objects
    pg_shdescriptioncomments on shared objects
    pg_shseclabelsecurity labels on shared database objects
    pg_statisticplanner statistics
    pg_statistic_extextended planner statistics
    pg_subscriptionlogical replication subscriptions
    pg_subscription_relrelation state for subscriptions
    pg_tablespacetablespaces within this database cluster
    pg_transformtransforms (data type to procedural language conversions)
    pg_triggertriggers
    pg_ts_configtext search configurations
    pg_ts_config_maptext search configurations' token mappings
    pg_ts_dicttext search dictionaries
    pg_ts_parsertext search parsers
    pg_ts_templatetext search templates
    pg_typedata types
    pg_user_mappingmappings of users to foreign servers

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/charset.html postgresql-10-10.19/doc/src/sgml/html/charset.html --- postgresql-10-10.17/doc/src/sgml/html/charset.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/charset.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 23. Localization

    Chapter 23. Localization

    This chapter describes the available localization features from the +Chapter 23. Localization

    Chapter 23. Localization

    This chapter describes the available localization features from the point of view of the administrator. PostgreSQL supports two localization facilities: @@ -14,4 +14,4 @@ between client and server. This is covered in Section 23.3.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/chkpass.html postgresql-10-10.19/doc/src/sgml/html/chkpass.html --- postgresql-10-10.17/doc/src/sgml/html/chkpass.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/chkpass.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.8. chkpass

    F.8. chkpass

    This module implements a data type chkpass that is +F.8. chkpass

    F.8. chkpass

    This module implements a data type chkpass that is designed for storing encrypted passwords. Each password is automatically converted to encrypted form upon entry, and is always stored encrypted. To compare, simply compare against a clear @@ -49,4 +49,4 @@ ---------- f (1 row)

    F.8.1. Author

    D'Arcy J.M. Cain () -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/citext.html postgresql-10-10.19/doc/src/sgml/html/citext.html --- postgresql-10-10.17/doc/src/sgml/html/citext.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/citext.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.9. citext

    F.9. citext

    The citext module provides a case-insensitive +F.9. citext

    F.9. citext

    The citext module provides a case-insensitive character string type, citext. Essentially, it internally calls lower when comparing values. Otherwise, it behaves almost exactly like text. @@ -113,4 +113,4 @@ will be invoked instead.

    F.9.5. Author

    David E. Wheeler

    Inspired by the original citext module by Donald Fraser. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/client-authentication.html postgresql-10-10.19/doc/src/sgml/html/client-authentication.html --- postgresql-10-10.17/doc/src/sgml/html/client-authentication.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/client-authentication.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 20. Client Authentication

    Chapter 20. Client Authentication

    When a client application connects to the database server, it +Chapter 20. Client Authentication

    Chapter 20. Client Authentication

    When a client application connects to the database server, it specifies which PostgreSQL database user name it wants to connect as, much the same way one logs into a Unix computer as a particular user. Within the SQL environment the active database @@ -29,4 +29,4 @@ operating system account, and in such cases there need be no connection between database user names and OS user names. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/client-authentication-problems.html postgresql-10-10.19/doc/src/sgml/html/client-authentication-problems.html --- postgresql-10-10.17/doc/src/sgml/html/client-authentication-problems.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/client-authentication-problems.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -20.4. Authentication Problems

    20.4. Authentication Problems

    Authentication failures and related problems generally +20.4. Authentication Problems

    20.4. Authentication Problems

    Authentication failures and related problems generally manifest themselves through error messages like the following:

    FATAL:  no pg_hba.conf entry for host "123.123.123.123", user "andym", database "testdb"

    This is what you are most likely to get if you succeed in contacting @@ -23,4 +23,4 @@

    Tip

    The server log might contain more information about an authentication failure than is reported to the client. If you are confused about the reason for a failure, check the server log. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/client-interfaces.html postgresql-10-10.19/doc/src/sgml/html/client-interfaces.html --- postgresql-10-10.17/doc/src/sgml/html/client-interfaces.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/client-interfaces.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -Part IV. Client Interfaces

    Part IV. Client Interfaces

    This part describes the client programming interfaces distributed +Part IV. Client Interfaces

    Part IV. Client Interfaces

    This part describes the client programming interfaces distributed with PostgreSQL. Each of these chapters can be read independently. Note that there are many other programming interfaces for client programs that are distributed separately and @@ -8,4 +8,4 @@ familiar with using SQL commands to manipulate and query the database (see Part II) and of course with the programming language that the interface uses. -

    Table of Contents

    33. libpq - C Library
    33.1. Database Connection Control Functions
    33.2. Connection Status Functions
    33.3. Command Execution Functions
    33.4. Asynchronous Command Processing
    33.5. Retrieving Query Results Row-By-Row
    33.6. Canceling Queries in Progress
    33.7. The Fast-Path Interface
    33.8. Asynchronous Notification
    33.9. Functions Associated with the COPY Command
    33.10. Control Functions
    33.11. Miscellaneous Functions
    33.12. Notice Processing
    33.13. Event System
    33.14. Environment Variables
    33.15. The Password File
    33.16. The Connection Service File
    33.17. LDAP Lookup of Connection Parameters
    33.18. SSL Support
    33.19. Behavior in Threaded Programs
    33.20. Building libpq Programs
    33.21. Example Programs
    34. Large Objects
    34.1. Introduction
    34.2. Implementation Features
    34.3. Client Interfaces
    34.4. Server-side Functions
    34.5. Example Program
    35. ECPG - Embedded SQL in C
    35.1. The Concept
    35.2. Managing Database Connections
    35.3. Running SQL Commands
    35.4. Using Host Variables
    35.5. Dynamic SQL
    35.6. pgtypes Library
    35.7. Using Descriptor Areas
    35.8. Error Handling
    35.9. Preprocessor Directives
    35.10. Processing Embedded SQL Programs
    35.11. Library Functions
    35.12. Large Objects
    35.13. C++ Applications
    35.14. Embedded SQL Commands
    35.15. Informix Compatibility Mode
    35.16. Internals
    36. The Information Schema
    36.1. The Schema
    36.2. Data Types
    36.3. information_schema_catalog_name
    36.4. administrable_role_authorizations
    36.5. applicable_roles
    36.6. attributes
    36.7. character_sets
    36.8. check_constraint_routine_usage
    36.9. check_constraints
    36.10. collations
    36.11. collation_character_set_applicability
    36.12. column_domain_usage
    36.13. column_options
    36.14. column_privileges
    36.15. column_udt_usage
    36.16. columns
    36.17. constraint_column_usage
    36.18. constraint_table_usage
    36.19. data_type_privileges
    36.20. domain_constraints
    36.21. domain_udt_usage
    36.22. domains
    36.23. element_types
    36.24. enabled_roles
    36.25. foreign_data_wrapper_options
    36.26. foreign_data_wrappers
    36.27. foreign_server_options
    36.28. foreign_servers
    36.29. foreign_table_options
    36.30. foreign_tables
    36.31. key_column_usage
    36.32. parameters
    36.33. referential_constraints
    36.34. role_column_grants
    36.35. role_routine_grants
    36.36. role_table_grants
    36.37. role_udt_grants
    36.38. role_usage_grants
    36.39. routine_privileges
    36.40. routines
    36.41. schemata
    36.42. sequences
    36.43. sql_features
    36.44. sql_implementation_info
    36.45. sql_languages
    36.46. sql_packages
    36.47. sql_parts
    36.48. sql_sizing
    36.49. sql_sizing_profiles
    36.50. table_constraints
    36.51. table_privileges
    36.52. tables
    36.53. transforms
    36.54. triggered_update_columns
    36.55. triggers
    36.56. udt_privileges
    36.57. usage_privileges
    36.58. user_defined_types
    36.59. user_mapping_options
    36.60. user_mappings
    36.61. view_column_usage
    36.62. view_routine_usage
    36.63. view_table_usage
    36.64. views
    \ No newline at end of file +

    Table of Contents

    33. libpq - C Library
    33.1. Database Connection Control Functions
    33.2. Connection Status Functions
    33.3. Command Execution Functions
    33.4. Asynchronous Command Processing
    33.5. Retrieving Query Results Row-By-Row
    33.6. Canceling Queries in Progress
    33.7. The Fast-Path Interface
    33.8. Asynchronous Notification
    33.9. Functions Associated with the COPY Command
    33.10. Control Functions
    33.11. Miscellaneous Functions
    33.12. Notice Processing
    33.13. Event System
    33.14. Environment Variables
    33.15. The Password File
    33.16. The Connection Service File
    33.17. LDAP Lookup of Connection Parameters
    33.18. SSL Support
    33.19. Behavior in Threaded Programs
    33.20. Building libpq Programs
    33.21. Example Programs
    34. Large Objects
    34.1. Introduction
    34.2. Implementation Features
    34.3. Client Interfaces
    34.4. Server-side Functions
    34.5. Example Program
    35. ECPG - Embedded SQL in C
    35.1. The Concept
    35.2. Managing Database Connections
    35.3. Running SQL Commands
    35.4. Using Host Variables
    35.5. Dynamic SQL
    35.6. pgtypes Library
    35.7. Using Descriptor Areas
    35.8. Error Handling
    35.9. Preprocessor Directives
    35.10. Processing Embedded SQL Programs
    35.11. Library Functions
    35.12. Large Objects
    35.13. C++ Applications
    35.14. Embedded SQL Commands
    35.15. Informix Compatibility Mode
    35.16. Internals
    36. The Information Schema
    36.1. The Schema
    36.2. Data Types
    36.3. information_schema_catalog_name
    36.4. administrable_role_authorizations
    36.5. applicable_roles
    36.6. attributes
    36.7. character_sets
    36.8. check_constraint_routine_usage
    36.9. check_constraints
    36.10. collations
    36.11. collation_character_set_applicability
    36.12. column_domain_usage
    36.13. column_options
    36.14. column_privileges
    36.15. column_udt_usage
    36.16. columns
    36.17. constraint_column_usage
    36.18. constraint_table_usage
    36.19. data_type_privileges
    36.20. domain_constraints
    36.21. domain_udt_usage
    36.22. domains
    36.23. element_types
    36.24. enabled_roles
    36.25. foreign_data_wrapper_options
    36.26. foreign_data_wrappers
    36.27. foreign_server_options
    36.28. foreign_servers
    36.29. foreign_table_options
    36.30. foreign_tables
    36.31. key_column_usage
    36.32. parameters
    36.33. referential_constraints
    36.34. role_column_grants
    36.35. role_routine_grants
    36.36. role_table_grants
    36.37. role_udt_grants
    36.38. role_usage_grants
    36.39. routine_privileges
    36.40. routines
    36.41. schemata
    36.42. sequences
    36.43. sql_features
    36.44. sql_implementation_info
    36.45. sql_languages
    36.46. sql_packages
    36.47. sql_parts
    36.48. sql_sizing
    36.49. sql_sizing_profiles
    36.50. table_constraints
    36.51. table_privileges
    36.52. tables
    36.53. transforms
    36.54. triggered_update_columns
    36.55. triggers
    36.56. udt_privileges
    36.57. usage_privileges
    36.58. user_defined_types
    36.59. user_mapping_options
    36.60. user_mappings
    36.61. view_column_usage
    36.62. view_routine_usage
    36.63. view_table_usage
    36.64. views
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/collation.html postgresql-10-10.19/doc/src/sgml/html/collation.html --- postgresql-10-10.17/doc/src/sgml/html/collation.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/collation.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -23.2. Collation Support

    23.2. Collation Support

    The collation feature allows specifying the sort order and character +23.2. Collation Support

    23.2. Collation Support

    The collation feature allows specifying the sort order and character classification behavior of data per-column, or even per-operation. This alleviates the restriction that the LC_COLLATE and LC_CTYPE settings @@ -243,8 +243,8 @@ set that is preloaded by initdb. Users are encouraged to define their own collation objects that make use of these facilities to suit the sorting behavior to their requirements. - See http://userguide.icu-project.org/locale - and http://userguide.icu-project.org/collation/api for + See https://unicode-org.github.io/icu/userguide/locale/ + and https://unicode-org.github.io/icu/userguide/collation/api.html for information on ICU locale naming. The set of acceptable names and attributes depends on the particular ICU version.

    Here are some examples: @@ -274,12 +274,8 @@ and BCP 47 for details. The list of possible collation types (co subtag) can be found in - the CLDR + the CLDR repository. - The ICU Locale - Explorer can be used to check the details of a particular locale - definition. The examples using the k* subtags require - at least ICU version 54.

    Note that while this system allows creating collations that ignore case or ignore accents or similar (using the ks key), PostgreSQL does not at the moment allow @@ -300,4 +296,4 @@ under a more readable name. For example:

    CREATE COLLATION german FROM "de_DE";
     CREATE COLLATION french FROM "fr-x-icu";

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/config-setting.html postgresql-10-10.19/doc/src/sgml/html/config-setting.html --- postgresql-10-10.17/doc/src/sgml/html/config-setting.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/config-setting.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.1. Setting Parameters

    19.1. Setting Parameters

    19.1.1. Parameter Names and Values

    All parameter names are case-insensitive. Every parameter takes a +19.1. Setting Parameters

    19.1. Setting Parameters

    19.1.1. Parameter Names and Values

    All parameter names are case-insensitive. Every parameter takes a value of one of five types: boolean, string, integer, floating point, or enumerated (enum). The type determines the syntax for setting the parameter: @@ -254,4 +254,4 @@ their configurations all stored in one place, such as in a version control repository. (Storing database configuration files under version control is another good practice to consider.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/connect-estab.html postgresql-10-10.19/doc/src/sgml/html/connect-estab.html --- postgresql-10-10.17/doc/src/sgml/html/connect-estab.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/connect-estab.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -50.2. How Connections are Established

    50.2. How Connections are Established

    PostgreSQL is implemented using a +50.2. How Connections are Established

    50.2. How Connections are Established

    PostgreSQL is implemented using a simple process per user client/server model. In this model there is one client process connected to exactly one server process. As we do not @@ -25,4 +25,4 @@ server parses the query, creates an execution plan, executes the plan and returns the retrieved rows to the client by transmitting them over the established connection. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/continuous-archiving.html postgresql-10-10.19/doc/src/sgml/html/continuous-archiving.html --- postgresql-10-10.17/doc/src/sgml/html/continuous-archiving.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/continuous-archiving.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -25.3. Continuous Archiving and Point-in-Time Recovery (PITR)

    25.3. Continuous Archiving and Point-in-Time Recovery (PITR)

    At all times, PostgreSQL maintains a +25.3. Continuous Archiving and Point-in-Time Recovery (PITR)

    25.3. Continuous Archiving and Point-in-Time Recovery (PITR)

    At all times, PostgreSQL maintains a write ahead log (WAL) in the pg_wal/ subdirectory of the cluster's data directory. The log records every change made to the database's data files. This log exists @@ -735,4 +735,4 @@ on. In the meantime, administrators might wish to reduce the number of page snapshots included in WAL by increasing the checkpoint interval parameters as much as feasible. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-build-sql-delete.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-build-sql-delete.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-build-sql-delete.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-build-sql-delete.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_build_sql_delete \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-build-sql-insert.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-build-sql-insert.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-build-sql-insert.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-build-sql-insert.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_build_sql_insert \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-build-sql-update.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-build-sql-update.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-build-sql-update.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-build-sql-update.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_build_sql_update \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-cancel-query.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-cancel-query.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-cancel-query.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-cancel-query.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_cancel_query \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-close.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-close.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-close.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-close.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_close \ No newline at end of file +(1 row) \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-connect.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-connect.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-connect.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-connect.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_connect \ No newline at end of file +DROP SERVER fdtest; \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-connect-u.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-connect-u.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-connect-u.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-connect-u.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_connect_u \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-disconnect.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-disconnect.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-disconnect.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-disconnect.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_disconnect \ No newline at end of file +(1 row) \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-error-message.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-error-message.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-error-message.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-error-message.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_error_message \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-exec.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-exec.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-exec.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-exec.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_exec \ No newline at end of file +(1 row) \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-fetch.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-fetch.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-fetch.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-fetch.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_fetch \ No newline at end of file +(0 rows) \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-function.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-function.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-function.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-function.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink \ No newline at end of file +(14 rows) \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-get-connections.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-get-connections.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-get-connections.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-get-connections.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,4 +1,4 @@ -dblink_get_connections \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-get-notify.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-get-notify.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-get-notify.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-get-notify.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_get_notify \ No newline at end of file +(1 row) \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-get-pkey.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-get-pkey.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-get-pkey.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-get-pkey.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_get_pkey \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-get-result.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-get-result.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-get-result.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-get-result.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_get_result \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-is-busy.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-is-busy.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-is-busy.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-is-busy.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,7 +1,7 @@ -dblink_is_busy \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-open.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-open.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-open.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-open.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_open \ No newline at end of file +(1 row) \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-send-query.html postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-send-query.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-dblink-send-query.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-dblink-send-query.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -dblink_send_query

    Examples

    SELECT dblink_send_query('dtest1', 'SELECT * FROM foo WHERE f1 < 3');
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib.html postgresql-10-10.19/doc/src/sgml/html/contrib.html --- postgresql-10-10.17/doc/src/sgml/html/contrib.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix F. Additional Supplied Modules

    Appendix F. Additional Supplied Modules

    Table of Contents

    F.1. adminpack
    F.2. amcheck
    F.2.1. Functions
    F.2.2. Using amcheck effectively
    F.2.3. Repairing corruption
    F.3. auth_delay
    F.3.1. Configuration Parameters
    F.3.2. Author
    F.4. auto_explain
    F.4.1. Configuration Parameters
    F.4.2. Example
    F.4.3. Author
    F.5. bloom
    F.5.1. Parameters
    F.5.2. Examples
    F.5.3. Operator Class Interface
    F.5.4. Limitations
    F.5.5. Authors
    F.6. btree_gin
    F.6.1. Example Usage
    F.6.2. Authors
    F.7. btree_gist
    F.7.1. Example Usage
    F.7.2. Authors
    F.8. chkpass
    F.8.1. Author
    F.9. citext
    F.9.1. Rationale
    F.9.2. How to Use It
    F.9.3. String Comparison Behavior
    F.9.4. Limitations
    F.9.5. Author
    F.10. cube
    F.10.1. Syntax
    F.10.2. Precision
    F.10.3. Usage
    F.10.4. Defaults
    F.10.5. Notes
    F.10.6. Credits
    F.11. dblink
    dblink_connect — opens a persistent connection to a remote database
    dblink_connect_u — opens a persistent connection to a remote database, insecurely
    dblink_disconnect — closes a persistent connection to a remote database
    dblink — executes a query in a remote database
    dblink_exec — executes a command in a remote database
    dblink_open — opens a cursor in a remote database
    dblink_fetch — returns rows from an open cursor in a remote database
    dblink_close — closes a cursor in a remote database
    dblink_get_connections — returns the names of all open named dblink connections
    dblink_error_message — gets last error message on the named connection
    dblink_send_query — sends an async query to a remote database
    dblink_is_busy — checks if connection is busy with an async query
    dblink_get_notify — retrieve async notifications on a connection
    dblink_get_result — gets an async query result
    dblink_cancel_query — cancels any active query on the named connection
    dblink_get_pkey — returns the positions and field names of a relation's +Appendix F. Additional Supplied Modules

    Appendix F. Additional Supplied Modules

    Table of Contents

    F.1. adminpack
    F.2. amcheck
    F.2.1. Functions
    F.2.2. Using amcheck effectively
    F.2.3. Repairing corruption
    F.3. auth_delay
    F.3.1. Configuration Parameters
    F.3.2. Author
    F.4. auto_explain
    F.4.1. Configuration Parameters
    F.4.2. Example
    F.4.3. Author
    F.5. bloom
    F.5.1. Parameters
    F.5.2. Examples
    F.5.3. Operator Class Interface
    F.5.4. Limitations
    F.5.5. Authors
    F.6. btree_gin
    F.6.1. Example Usage
    F.6.2. Authors
    F.7. btree_gist
    F.7.1. Example Usage
    F.7.2. Authors
    F.8. chkpass
    F.8.1. Author
    F.9. citext
    F.9.1. Rationale
    F.9.2. How to Use It
    F.9.3. String Comparison Behavior
    F.9.4. Limitations
    F.9.5. Author
    F.10. cube
    F.10.1. Syntax
    F.10.2. Precision
    F.10.3. Usage
    F.10.4. Defaults
    F.10.5. Notes
    F.10.6. Credits
    F.11. dblink
    dblink_connect — opens a persistent connection to a remote database
    dblink_connect_u — opens a persistent connection to a remote database, insecurely
    dblink_disconnect — closes a persistent connection to a remote database
    dblink — executes a query in a remote database
    dblink_exec — executes a command in a remote database
    dblink_open — opens a cursor in a remote database
    dblink_fetch — returns rows from an open cursor in a remote database
    dblink_close — closes a cursor in a remote database
    dblink_get_connections — returns the names of all open named dblink connections
    dblink_error_message — gets last error message on the named connection
    dblink_send_query — sends an async query to a remote database
    dblink_is_busy — checks if connection is busy with an async query
    dblink_get_notify — retrieve async notifications on a connection
    dblink_get_result — gets an async query result
    dblink_cancel_query — cancels any active query on the named connection
    dblink_get_pkey — returns the positions and field names of a relation's primary key fields
    dblink_build_sql_insert — builds an INSERT statement using a local tuple, replacing the primary key field values with alternative supplied values @@ -72,4 +72,4 @@ by way of shared_preload_libraries. See the documentation of each module for details. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-prog-client.html postgresql-10-10.19/doc/src/sgml/html/contrib-prog-client.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-prog-client.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-prog-client.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,8 +1,8 @@ -G.1. Client Applications

    G.1. Client Applications

    oid2name — resolve OIDs and file nodes in a PostgreSQL data directory
    vacuumlo — remove orphaned large objects from a PostgreSQL database

    This section covers PostgreSQL client +G.1. Client Applications

    G.1. Client Applications

    oid2name — resolve OIDs and file nodes in a PostgreSQL data directory
    vacuumlo — remove orphaned large objects from a PostgreSQL database

    This section covers PostgreSQL client applications in contrib. They can be run from anywhere, independent of where the database server resides. See also PostgreSQL Client Applications for information about client applications are that part of the core PostgreSQL distribution. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-prog.html postgresql-10-10.19/doc/src/sgml/html/contrib-prog.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-prog.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-prog.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix G. Additional Supplied Programs

    Appendix G. Additional Supplied Programs

    Table of Contents

    G.1. Client Applications
    oid2name — resolve OIDs and file nodes in a PostgreSQL data directory
    vacuumlo — remove orphaned large objects from a PostgreSQL database
    G.2. Server Applications
    pg_standby — supports the creation of a PostgreSQL warm standby server

    This appendix and the previous one contain information regarding the modules that +Appendix G. Additional Supplied Programs

    Appendix G. Additional Supplied Programs

    Table of Contents

    G.1. Client Applications
    oid2name — resolve OIDs and file nodes in a PostgreSQL data directory
    vacuumlo — remove orphaned large objects from a PostgreSQL database
    G.2. Server Applications
    pg_standby — supports the creation of a PostgreSQL warm standby server

    This appendix and the previous one contain information regarding the modules that can be found in the contrib directory of the PostgreSQL distribution. See Appendix F for more information about the contrib section in general and @@ -10,4 +10,4 @@ the bin directory of the PostgreSQL installation and can be used like any other program. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-prog-server.html postgresql-10-10.19/doc/src/sgml/html/contrib-prog-server.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-prog-server.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-prog-server.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,6 +1,6 @@ -G.2. Server Applications

    G.2. Server Applications

    pg_standby — supports the creation of a PostgreSQL warm standby server

    This section covers PostgreSQL server-related +G.2. Server Applications

    G.2. Server Applications

    pg_standby — supports the creation of a PostgreSQL warm standby server

    This section covers PostgreSQL server-related applications in contrib. They are typically run on the host where the database server resides. See also PostgreSQL Server Applications for information about server applications that are part of the core PostgreSQL distribution. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/contrib-spi.html postgresql-10-10.19/doc/src/sgml/html/contrib-spi.html --- postgresql-10-10.17/doc/src/sgml/html/contrib-spi.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/contrib-spi.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.37. spi \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/creating-cluster.html postgresql-10-10.19/doc/src/sgml/html/creating-cluster.html --- postgresql-10-10.17/doc/src/sgml/html/creating-cluster.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/creating-cluster.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.2. Creating a Database Cluster

    18.2. Creating a Database Cluster

    Before you can do anything, you must initialize a database storage +18.2. Creating a Database Cluster

    18.2. Creating a Database Cluster

    Before you can do anything, you must initialize a database storage area on disk. We call this a database cluster. (The SQL standard uses the term catalog cluster.) A database cluster is a collection of databases that is managed by a @@ -129,4 +129,4 @@ documentation concerning data consistency guarantees. PostgreSQL cannot be more reliable than the file system it's using. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/cube.html postgresql-10-10.19/doc/src/sgml/html/cube.html --- postgresql-10-10.17/doc/src/sgml/html/cube.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/cube.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.10. cube

    F.10. cube

    This module implements a data type cube for +F.10. cube

    F.10. cube

    This module implements a data type cube for representing multidimensional cubes.

    F.10.1. Syntax

    Table F.3 shows the valid external representations for the cube @@ -166,4 +166,4 @@ July 2006. These include cube(float8[], float8[]) and cleaning up the code to use the V1 call protocol instead of the deprecated V0 protocol. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/custom-scan-execution.html postgresql-10-10.19/doc/src/sgml/html/custom-scan-execution.html --- postgresql-10-10.17/doc/src/sgml/html/custom-scan-execution.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/custom-scan-execution.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -58.3. Executing Custom Scans

    58.3. Executing Custom Scans

    When a CustomScan is executed, its execution state is +58.3. Executing Custom Scans

    58.3. Executing Custom Scans

    When a CustomScan is executed, its execution state is represented by a CustomScanState, which is declared as follows:

    typedef struct CustomScanState
    @@ -96,4 +96,4 @@
         ScanState, such as the target list and scan relation, will
         be shown even without this callback, but the callback allows the display
         of additional, private state.
    -   

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/custom-scan.html postgresql-10-10.19/doc/src/sgml/html/custom-scan.html --- postgresql-10-10.17/doc/src/sgml/html/custom-scan.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/custom-scan.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 58. Writing A Custom Scan Provider

    Chapter 58. Writing A Custom Scan Provider

    PostgreSQL supports a set of experimental facilities which +Chapter 58. Writing A Custom Scan Provider

    Chapter 58. Writing A Custom Scan Provider

    PostgreSQL supports a set of experimental facilities which are intended to allow extension modules to add new scan types to the system. Unlike a foreign data wrapper, which is only responsible for knowing how to scan its own foreign tables, a custom scan @@ -16,4 +16,4 @@ Finally, it must be possible to execute the plan and generate the same results that would have been generated for any other access path targeting the same relation. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/custom-scan-path.html postgresql-10-10.19/doc/src/sgml/html/custom-scan-path.html --- postgresql-10-10.17/doc/src/sgml/html/custom-scan-path.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/custom-scan-path.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -58.1. Creating Custom Scan Paths

    58.1. Creating Custom Scan Paths

    A custom scan provider will typically add paths for a base relation by +58.1. Creating Custom Scan Paths

    58.1. Creating Custom Scan Paths

    A custom scan provider will typically add paths for a base relation by setting the following hook, which is called after the core code has generated all the access paths it can for the relation (except for Gather paths, which are made after this call so that they can use @@ -63,4 +63,4 @@ Convert a custom path to a finished plan. The return value will generally be a CustomScan object, which the callback must allocate and initialize. See Section 58.2 for more details. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/custom-scan-plan.html postgresql-10-10.19/doc/src/sgml/html/custom-scan-plan.html --- postgresql-10-10.17/doc/src/sgml/html/custom-scan-plan.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/custom-scan-plan.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -58.2. Creating Custom Scan Plans

    58.2. Creating Custom Scan Plans

    A custom scan is represented in a finished plan tree using the following +58.2. Creating Custom Scan Plans

    58.2. Creating Custom Scan Plans

    A custom scan is represented in a finished plan tree using the following structure:

    typedef struct CustomScan
     {
    @@ -55,4 +55,4 @@
         stage; after ExecInitCustomScan performs basic initialization,
         the BeginCustomScan callback will be invoked to give the
         custom scan provider a chance to do whatever else is needed.
    -   

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/database-roles.html postgresql-10-10.19/doc/src/sgml/html/database-roles.html --- postgresql-10-10.17/doc/src/sgml/html/database-roles.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/database-roles.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -21.1. Database Roles

    21.1. Database Roles

    Database roles are conceptually completely separate from +21.1. Database Roles

    21.1. Database Roles

    Database roles are conceptually completely separate from operating system users. In practice it might be convenient to maintain a correspondence, but this is not required. Database roles are global across a database cluster installation (and not @@ -53,4 +53,4 @@ identity determines the set of privileges available to a connected client, it is important to carefully configure privileges when setting up a multiuser environment. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-binary.html postgresql-10-10.19/doc/src/sgml/html/datatype-binary.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-binary.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-binary.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.4. Binary Data Types

    8.4. Binary Data Types

    The bytea data type allows storage of binary strings; +8.4. Binary Data Types

    8.4. Binary Data Types

    The bytea data type allows storage of binary strings; see Table 8.6.

    Table 8.6. Binary Data Types

    NameStorage SizeDescription
    bytea1 or 4 bytes plus the actual binary stringvariable-length binary string

    A binary string is a sequence of octets (or bytes). Binary strings are distinguished from character strings in two @@ -107,4 +107,4 @@ unescaping bytea strings. For example, you might also have to escape line feeds and carriage returns if your interface automatically translates these. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-bit.html postgresql-10-10.19/doc/src/sgml/html/datatype-bit.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-bit.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-bit.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.10. Bit String Types

    8.10. Bit String Types

    Bit strings are strings of 1's and 0's. They can be used to store +8.10. Bit String Types

    8.10. Bit String Types

    Bit strings are strings of 1's and 0's. They can be used to store or visualize bit masks. There are two SQL bit types: bit(n) and bit varying(n), where @@ -35,4 +35,4 @@ 5 or 8 bytes overhead depending on the length of the string (but long values may be compressed or moved out-of-line, as explained in Section 8.3 for character strings). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-boolean.html postgresql-10-10.19/doc/src/sgml/html/datatype-boolean.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-boolean.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-boolean.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.6. Boolean Type

    8.6. Boolean Type

    PostgreSQL provides the +8.6. Boolean Type

    8.6. Boolean Type

    PostgreSQL provides the standard SQL type boolean; see Table 8.19. The boolean type can have several states: @@ -47,4 +47,4 @@ example NULL::boolean. Conversely, the cast can be omitted from a string-literal Boolean value in contexts where the parser can deduce that the literal must be of type boolean. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-character.html postgresql-10-10.19/doc/src/sgml/html/datatype-character.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-character.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-character.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.3. Character Types

    8.3. Character Types

    Table 8.4. Character Types

    NameDescription
    character varying(n), varchar(n)variable-length with limit
    character(n), char(n)fixed-length, blank padded
    textvariable unlimited length

    Table 8.4 shows the +8.3. Character Types

    8.3. Character Types

    Table 8.4. Character Types

    NameDescription
    character varying(n), varchar(n)variable-length with limit
    character(n), char(n)fixed-length, blank padded
    textvariable unlimited length

    Table 8.4 shows the general-purpose character types available in PostgreSQL.

    SQL defines two primary character types: @@ -117,4 +117,4 @@ (note the quotes) is different from char(1) in that it only uses one byte of storage. It is internally used in the system catalogs as a simplistic enumeration type. -

    Table 8.5. Special Character Types

    NameStorage SizeDescription
    "char"1 bytesingle-byte internal type
    name64 bytesinternal type for object names

    \ No newline at end of file +

    Table 8.5. Special Character Types

    NameStorage SizeDescription
    "char"1 bytesingle-byte internal type
    name64 bytesinternal type for object names

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-datetime.html postgresql-10-10.19/doc/src/sgml/html/datatype-datetime.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-datetime.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-datetime.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.5. Date/Time Types

    8.5. Date/Time Types

    PostgreSQL supports the full set of +8.5. Date/Time Types

    8.5. Date/Time Types

    PostgreSQL supports the full set of SQL date and time types, shown in Table 8.9. The operations available on these data types are described in Section 9.9. @@ -102,7 +102,7 @@ is required in order to determine whether standard or daylight-savings time applies. The appropriate time zone offset is recorded in the time with time zone value. -

    Table 8.11. Time Input

    ExampleDescription
    04:05:06.789ISO 8601
    04:05:06ISO 8601
    04:05ISO 8601
    040506ISO 8601
    04:05 AMsame as 04:05; AM does not affect value
    04:05 PMsame as 16:05; input hour must be <= 12
    04:05:06.789-8ISO 8601
    04:05:06-08:00ISO 8601
    04:05-08:00ISO 8601
    040506-08ISO 8601
    04:05:06 PSTtime zone specified by abbreviation
    2003-04-12 04:05:06 America/New_Yorktime zone specified by full name

    Table 8.12. Time Zone Input

    ExampleDescription
    PSTAbbreviation (for Pacific Standard Time)
    America/New_YorkFull time zone name
    PST8PDTPOSIX-style time zone specification
    -8:00ISO-8601 offset for PST
    -800ISO-8601 offset for PST
    -8ISO-8601 offset for PST
    zuluMilitary abbreviation for UTC
    zShort form of zulu

    Refer to Section 8.5.3 for more information on how +

    Table 8.11. Time Input

    ExampleDescription
    04:05:06.789ISO 8601
    04:05:06ISO 8601
    04:05ISO 8601
    040506ISO 8601
    04:05 AMsame as 04:05; AM does not affect value
    04:05 PMsame as 16:05; input hour must be <= 12
    04:05:06.789-8ISO 8601, with time zone as UTC offset
    04:05:06-08:00ISO 8601, with time zone as UTC offset
    04:05-08:00ISO 8601, with time zone as UTC offset
    040506-08ISO 8601, with time zone as UTC offset
    040506+0730ISO 8601, with fractional-hour time zone as UTC offset
    040506+07:30:00UTC offset specified to seconds (not allowed in ISO 8601)
    04:05:06 PSTtime zone specified by abbreviation
    2003-04-12 04:05:06 America/New_Yorktime zone specified by full name

    Table 8.12. Time Zone Input

    ExampleDescription
    PSTAbbreviation (for Pacific Standard Time)
    America/New_YorkFull time zone name
    PST8PDTPOSIX-style time zone specification
    -8:00:00UTC offset for PST
    -8:00UTC offset for PST (ISO 8601 extended format)
    -800UTC offset for PST (ISO 8601 basic format)
    -8UTC offset for PST (ISO 8601 basic format)
    zuluMilitary abbreviation for UTC
    zShort form of zulu (also in ISO 8601)

    Refer to Section 8.5.3 for more information on how to specify time zones.

    8.5.1.3. Time Stamps

    Valid input for the time stamp types consists of the concatenation of a date and a time, followed by an optional time zone, @@ -217,7 +217,22 @@ (See Section 8.5.1 for how this setting also affects interpretation of input values.) Table 8.15 shows examples. -

    Table 8.15. Date Order Conventions

    datestyle SettingInput OrderingExample Output
    SQL, DMYday/month/year17/12/1997 15:37:16.00 CET
    SQL, MDYmonth/day/year12/17/1997 07:37:16.00 PST
    Postgres, DMYday/month/yearWed 17 Dec 07:37:16 1997 PST

    The date/time style can be selected by the user using the +

    Table 8.15. Date Order Conventions

    datestyle SettingInput OrderingExample Output
    SQL, DMYday/month/year17/12/1997 15:37:16.00 CET
    SQL, MDYmonth/day/year12/17/1997 07:37:16.00 PST
    Postgres, DMYday/month/yearWed 17 Dec 07:37:16 1997 PST

    In the ISO style, the time zone is always shown as + a signed numeric offset from UTC, with positive sign used for zones + east of Greenwich. The offset will be shown + as hh (hours only) if it is an integral + number of hours, else + as hh:mm if it + is an integral number of minutes, else as + hh:mm:ss. + (The third case is not possible with any modern time zone standard, + but it can appear when working with timestamps that predate the + adoption of standardized time zones.) + In the other date styles, the time zone is shown as an alphabetic + abbreviation if one is in common use in the current zone. Otherwise + it appears as a signed numeric offset in ISO 8601 basic format + (hh or hhmm). +

    The date/time style can be selected by the user using the SET datestyle command, the DateStyle parameter in the postgresql.conf configuration file, or the PGDATESTYLE environment variable on the server or @@ -396,22 +411,25 @@ Otherwise the traditional PostgreSQL interpretation is used. To avoid ambiguity, it's recommended to attach an explicit sign to each field if any field is negative. -

    In the verbose input format, and in some fields of the more compact - input formats, field values can have fractional parts; for example - '1.5 week' or '01:02:03.45'. Such input is - converted to the appropriate number of months, days, and seconds - for storage. When this would result in a fractional number of - months or days, the fraction is added to the lower-order fields - using the conversion factors 1 month = 30 days and 1 day = 24 hours. - For example, '1.5 month' becomes 1 month and 15 days. - Only seconds will ever be shown as fractional on output. +

    Field values can have fractional parts: for example, '1.5 + weeks' or '01:02:03.45'. However, + because interval internally stores only three integer units (months, + days, microseconds), fractional units must be spilled to smaller + units. Fractional parts of units greater than months are truncated to + be an integer number of months, e.g. '1.5 years' + becomes '1 year 6 mons'. Fractional parts of + weeks and days are computed to be an integer number of days and + microseconds, assuming 30 days per month and 24 hours per day, e.g., + '1.75 months' becomes 1 mon 22 days + 12:00:00. Only seconds will ever be shown as fractional + on output.

    Table 8.17 shows some examples of valid interval input.

    Table 8.17. Interval Input

    ExampleDescription
    1-2SQL standard format: 1 year 2 months
    3 4:05:06SQL standard format: 3 days 4 hours 5 minutes 6 seconds
    1 year 2 months 3 days 4 hours 5 minutes 6 secondsTraditional Postgres format: 1 year 2 months 3 days 4 hours 5 minutes 6 seconds
    P1Y2M3DT4H5M6SISO 8601 format with designators: same meaning as above
    P0001-02-03T04:05:06ISO 8601 alternative format: same meaning as above

    Internally interval values are stored as months, days, - and seconds. This is done because the number of days in a month + and microseconds. This is done because the number of days in a month varies, and a day can have 23 or 25 hours if a daylight savings time adjustment is involved. The months and days fields are integers - while the seconds field can store fractions. Because intervals are + while the microseconds field can store fractional seconds. Because intervals are usually created from constant strings or timestamp subtraction, this storage method works well in most cases, but can cause unexpected results: @@ -452,4 +470,4 @@

    The output of the iso_8601 style matches the format with designators described in section 4.4.3.2 of the ISO 8601 standard. -

    Table 8.18. Interval Output Style Examples

    Style SpecificationYear-Month IntervalDay-Time IntervalMixed Interval
    sql_standard1-23 4:05:06-1-2 +3 -4:05:06
    postgres1 year 2 mons3 days 04:05:06-1 year -2 mons +3 days -04:05:06
    postgres_verbose@ 1 year 2 mons@ 3 days 4 hours 5 mins 6 secs@ 1 year 2 mons -3 days 4 hours 5 mins 6 secs ago
    iso_8601P1Y2MP3DT4H5M6SP-1Y-2M3DT-4H-5M-6S

    \ No newline at end of file +

    Table 8.18. Interval Output Style Examples

    Style SpecificationYear-Month IntervalDay-Time IntervalMixed Interval
    sql_standard1-23 4:05:06-1-2 +3 -4:05:06
    postgres1 year 2 mons3 days 04:05:06-1 year -2 mons +3 days -04:05:06
    postgres_verbose@ 1 year 2 mons@ 3 days 4 hours 5 mins 6 secs@ 1 year 2 mons -3 days 4 hours 5 mins 6 secs ago
    iso_8601P1Y2MP3DT4H5M6SP-1Y-2M3DT-4H-5M-6S

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-enum.html postgresql-10-10.19/doc/src/sgml/html/datatype-enum.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-enum.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-enum.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.7. Enumerated Types

    8.7. Enumerated Types

    Enumerated (enum) types are data types that +8.7. Enumerated Types

    8.7. Enumerated Types

    Enumerated (enum) types are data types that comprise a static, ordered set of values. They are equivalent to the enum types supported in a number of programming languages. An example of an enum @@ -93,4 +93,4 @@ kept in the system catalog pg_enum. Querying this catalog directly can be useful. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-geometric.html postgresql-10-10.19/doc/src/sgml/html/datatype-geometric.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-geometric.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-geometric.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.8. Geometric Types

    8.8. Geometric Types

    Geometric data types represent two-dimensional spatial +8.8. Geometric Types

    8.8. Geometric Types

    Geometric data types represent two-dimensional spatial objects. Table 8.20 shows the geometric types available in PostgreSQL.

    Table 8.20. Geometric Types

    NameStorage SizeDescriptionRepresentation
    point16 bytesPoint on a plane(x,y)
    line32 bytesInfinite line{A,B,C}
    lseg32 bytesFinite line segment((x1,y1),(x2,y2))
    box32 bytesRectangular box((x1,y1),(x2,y2))
    path16+16n bytesClosed path (similar to polygon)((x1,y1),...)
    path16+16n bytesOpen path[(x1,y1),...]
    polygon40+16n bytesPolygon (similar to closed path)((x1,y1),...)
    circle24 bytesCircle<(x,y),r> (center point and radius)

    A rich set of functions and operators is available to perform various geometric @@ -114,4 +114,4 @@ is the center point and r is the radius of the circle.

    Circles are output using the first syntax. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype.html postgresql-10-10.19/doc/src/sgml/html/datatype.html --- postgresql-10-10.17/doc/src/sgml/html/datatype.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 8. Data Types

    Chapter 8. Data Types

    Table of Contents

    8.1. Numeric Types
    8.1.1. Integer Types
    8.1.2. Arbitrary Precision Numbers
    8.1.3. Floating-Point Types
    8.1.4. Serial Types
    8.2. Monetary Types
    8.3. Character Types
    8.4. Binary Data Types
    8.4.1. bytea Hex Format
    8.4.2. bytea Escape Format
    8.5. Date/Time Types
    8.5.1. Date/Time Input
    8.5.2. Date/Time Output
    8.5.3. Time Zones
    8.5.4. Interval Input
    8.5.5. Interval Output
    8.6. Boolean Type
    8.7. Enumerated Types
    8.7.1. Declaration of Enumerated Types
    8.7.2. Ordering
    8.7.3. Type Safety
    8.7.4. Implementation Details
    8.8. Geometric Types
    8.8.1. Points
    8.8.2. Lines
    8.8.3. Line Segments
    8.8.4. Boxes
    8.8.5. Paths
    8.8.6. Polygons
    8.8.7. Circles
    8.9. Network Address Types
    8.9.1. inet
    8.9.2. cidr
    8.9.3. inet vs. cidr
    8.9.4. macaddr
    8.9.5. macaddr8
    8.10. Bit String Types
    8.11. Text Search Types
    8.11.1. tsvector
    8.11.2. tsquery
    8.12. UUID Type
    8.13. XML Type
    8.13.1. Creating XML Values
    8.13.2. Encoding Handling
    8.13.3. Accessing XML Values
    8.14. JSON Types
    8.14.1. JSON Input and Output Syntax
    8.14.2. Designing JSON documents effectively
    8.14.3. jsonb Containment and Existence
    8.14.4. jsonb Indexing
    8.15. Arrays
    8.15.1. Declaration of Array Types
    8.15.2. Array Value Input
    8.15.3. Accessing Arrays
    8.15.4. Modifying Arrays
    8.15.5. Searching in Arrays
    8.15.6. Array Input and Output Syntax
    8.16. Composite Types
    8.16.1. Declaration of Composite Types
    8.16.2. Constructing Composite Values
    8.16.3. Accessing Composite Types
    8.16.4. Modifying Composite Types
    8.16.5. Using Composite Types in Queries
    8.16.6. Composite Type Input and Output Syntax
    8.17. Range Types
    8.17.1. Built-in Range Types
    8.17.2. Examples
    8.17.3. Inclusive and Exclusive Bounds
    8.17.4. Infinite (Unbounded) Ranges
    8.17.5. Range Input/Output
    8.17.6. Constructing Ranges
    8.17.7. Discrete Range Types
    8.17.8. Defining New Range Types
    8.17.9. Indexing
    8.17.10. Constraints on Ranges
    8.18. Object Identifier Types
    8.19. pg_lsn Type
    8.20. Pseudo-Types

    PostgreSQL has a rich set of native data +Chapter 8. Data Types

    Chapter 8. Data Types

    Table of Contents

    8.1. Numeric Types
    8.1.1. Integer Types
    8.1.2. Arbitrary Precision Numbers
    8.1.3. Floating-Point Types
    8.1.4. Serial Types
    8.2. Monetary Types
    8.3. Character Types
    8.4. Binary Data Types
    8.4.1. bytea Hex Format
    8.4.2. bytea Escape Format
    8.5. Date/Time Types
    8.5.1. Date/Time Input
    8.5.2. Date/Time Output
    8.5.3. Time Zones
    8.5.4. Interval Input
    8.5.5. Interval Output
    8.6. Boolean Type
    8.7. Enumerated Types
    8.7.1. Declaration of Enumerated Types
    8.7.2. Ordering
    8.7.3. Type Safety
    8.7.4. Implementation Details
    8.8. Geometric Types
    8.8.1. Points
    8.8.2. Lines
    8.8.3. Line Segments
    8.8.4. Boxes
    8.8.5. Paths
    8.8.6. Polygons
    8.8.7. Circles
    8.9. Network Address Types
    8.9.1. inet
    8.9.2. cidr
    8.9.3. inet vs. cidr
    8.9.4. macaddr
    8.9.5. macaddr8
    8.10. Bit String Types
    8.11. Text Search Types
    8.11.1. tsvector
    8.11.2. tsquery
    8.12. UUID Type
    8.13. XML Type
    8.13.1. Creating XML Values
    8.13.2. Encoding Handling
    8.13.3. Accessing XML Values
    8.14. JSON Types
    8.14.1. JSON Input and Output Syntax
    8.14.2. Designing JSON documents effectively
    8.14.3. jsonb Containment and Existence
    8.14.4. jsonb Indexing
    8.15. Arrays
    8.15.1. Declaration of Array Types
    8.15.2. Array Value Input
    8.15.3. Accessing Arrays
    8.15.4. Modifying Arrays
    8.15.5. Searching in Arrays
    8.15.6. Array Input and Output Syntax
    8.16. Composite Types
    8.16.1. Declaration of Composite Types
    8.16.2. Constructing Composite Values
    8.16.3. Accessing Composite Types
    8.16.4. Modifying Composite Types
    8.16.5. Using Composite Types in Queries
    8.16.6. Composite Type Input and Output Syntax
    8.17. Range Types
    8.17.1. Built-in Range Types
    8.17.2. Examples
    8.17.3. Inclusive and Exclusive Bounds
    8.17.4. Infinite (Unbounded) Ranges
    8.17.5. Range Input/Output
    8.17.6. Constructing Ranges
    8.17.7. Discrete Range Types
    8.17.8. Defining New Range Types
    8.17.9. Indexing
    8.17.10. Constraints on Ranges
    8.18. Object Identifier Types
    8.19. pg_lsn Type
    8.20. Pseudo-Types

    PostgreSQL has a rich set of native data types available to users. Users can add new types to PostgreSQL using the CREATE TYPE command.

    Table 8.1 shows all the built-in general-purpose data @@ -29,4 +29,4 @@ Some of the input and output functions are not invertible, i.e., the result of an output function might lose accuracy when compared to the original input. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-json.html postgresql-10-10.19/doc/src/sgml/html/datatype-json.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-json.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-json.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.14. JSON Types

    8.14. JSON Types

    JSON data types are for storing JSON (JavaScript Object Notation) +8.14. JSON Types

    8.14. JSON Types

    JSON data types are for storing JSON (JavaScript Object Notation) data, as specified in RFC 7159. Such data can also be stored as text, but the JSON data types have the advantage of enforcing that each @@ -363,4 +363,4 @@



    [6] For this purpose, the term value includes array elements, though JSON terminology sometimes considers array elements distinct from values within objects. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-money.html postgresql-10-10.19/doc/src/sgml/html/datatype-money.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-money.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-money.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.2. Monetary Types

    8.2. Monetary Types

    The money type stores a currency amount with a fixed +8.2. Monetary Types

    8.2. Monetary Types

    The money type stores a currency amount with a fixed fractional precision; see Table 8.3. The fractional precision is determined by the database's lc_monetary setting. The range shown in the table assumes there are two fractional digits. @@ -32,4 +32,4 @@ When a money value is divided by another money value, the result is double precision (i.e., a pure number, not money); the currency units cancel each other out in the division. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-net-types.html postgresql-10-10.19/doc/src/sgml/html/datatype-net-types.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-net-types.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-net-types.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.9. Network Address Types

    8.9. Network Address Types

    PostgreSQL offers data types to store IPv4, IPv6, and MAC +8.9. Network Address Types

    8.9. Network Address Types

    PostgreSQL offers data types to store IPv4, IPv6, and MAC addresses, as shown in Table 8.21. It is better to use these types instead of plain text types to store network addresses, because @@ -112,4 +112,4 @@ 0a:00:2b:ff:fe:01:02:03 (1 row)

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-numeric.html postgresql-10-10.19/doc/src/sgml/html/datatype-numeric.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-numeric.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-numeric.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.1. Numeric Types

    8.1. Numeric Types

    Numeric types consist of two-, four-, and eight-byte integers, +8.1. Numeric Types

    8.1. Numeric Types

    Numeric types consist of two-, four-, and eight-byte integers, four- and eight-byte floating-point numbers, and selectable-precision decimals. Table 8.2 lists the available types. @@ -244,4 +244,4 @@ automatically dropped when the owning column is dropped. You can drop the sequence without dropping the column, but this will force removal of the column default expression. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-oid.html postgresql-10-10.19/doc/src/sgml/html/datatype-oid.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-oid.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-oid.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.18. Object Identifier Types

    8.18. Object Identifier Types

    Object identifiers (OIDs) are used internally by +8.18. Object Identifier Types

    8.18. Object Identifier Types

    Object identifiers (OIDs) are used internally by PostgreSQL as primary keys for various system tables. OIDs are not added to user-created tables, unless WITH OIDS is specified when the table is @@ -77,4 +77,4 @@ (block number, tuple index within block) that identifies the physical location of the row within its table.

    (The system columns are further explained in Section 5.4.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-pg-lsn.html postgresql-10-10.19/doc/src/sgml/html/datatype-pg-lsn.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-pg-lsn.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-pg-lsn.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.19. pg_lsn Type

    8.19. pg_lsn Type

    The pg_lsn data type can be used to store LSN (Log Sequence +8.19. pg_lsn Type

    8.19. pg_lsn Type

    The pg_lsn data type can be used to store LSN (Log Sequence Number) data which is a pointer to a location in the WAL. This type is a representation of XLogRecPtr and an internal system type of PostgreSQL. @@ -11,4 +11,4 @@ >. Two LSNs can be subtracted using the - operator; the result is the number of bytes separating those write-ahead log locations. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-pseudo.html postgresql-10-10.19/doc/src/sgml/html/datatype-pseudo.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-pseudo.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-pseudo.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.20. Pseudo-Types

    8.20. Pseudo-Types

    The PostgreSQL type system contains a +8.20. Pseudo-Types

    8.20. Pseudo-Types

    The PostgreSQL type system contains a number of special-purpose entries that are collectively called pseudo-types. A pseudo-type cannot be used as a column data type, but it can be used to declare a function's @@ -40,4 +40,4 @@ follow this coding rule: do not create any function that is declared to return internal unless it has at least one internal argument. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-textsearch.html postgresql-10-10.19/doc/src/sgml/html/datatype-textsearch.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-textsearch.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-textsearch.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.11. Text Search Types

    8.11. Text Search Types

    PostgreSQL provides two data types that +8.11. Text Search Types

    8.11. Text Search Types

    PostgreSQL provides two data types that are designed to support full text search, which is the activity of searching through a collection of natural-language documents to locate those that best match a query. @@ -157,4 +157,4 @@ ---------------+------------ 'postgradu':1 | 'postgr':*

    which will match the stemmed form of postgraduate. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-uuid.html postgresql-10-10.19/doc/src/sgml/html/datatype-uuid.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-uuid.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-uuid.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.12. UUID Type

    8.12. UUID Type

    The data type uuid stores Universally Unique Identifiers +8.12. UUID Type

    8.12. UUID Type

    The data type uuid stores Universally Unique Identifiers (UUID) as defined by RFC 4122, ISO/IEC 9834-8:2005, and related standards. (Some systems refer to this data type as a globally unique identifier, or GUID, instead.) This @@ -35,4 +35,4 @@ function for random UUIDs. Alternatively, UUIDs could be generated by client applications or other libraries invoked through a server-side function. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datatype-xml.html postgresql-10-10.19/doc/src/sgml/html/datatype-xml.html --- postgresql-10-10.17/doc/src/sgml/html/datatype-xml.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datatype-xml.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.13. XML Type

    8.13. XML Type

    The xml data type can be used to store XML data. Its +8.13. XML Type

    8.13. XML Type

    The xml data type can be used to store XML data. Its advantage over storing XML data in a text field is that it checks the input values for well-formedness, and there are support functions to perform type-safe operations on it; see Section 9.14. Use of this data type requires the @@ -122,4 +122,4 @@ up full-document searches of XML data. The necessary preprocessing support is, however, not yet available in the PostgreSQL distribution. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datetime-appendix.html postgresql-10-10.19/doc/src/sgml/html/datetime-appendix.html --- postgresql-10-10.17/doc/src/sgml/html/datetime-appendix.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datetime-appendix.html 2021-11-08 22:25:09.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix B. Date/Time Support

    Appendix B. Date/Time Support

    PostgreSQL uses an internal heuristic +Appendix B. Date/Time Support

    Appendix B. Date/Time Support

    PostgreSQL uses an internal heuristic parser for all date/time input support. Dates and times are input as strings, and are broken up into distinct fields with a preliminary determination of what kind of information can be in the @@ -10,4 +10,4 @@

    This appendix includes information on the content of these lookup tables and describes the steps used by the parser to decode dates and times. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datetime-config-files.html postgresql-10-10.19/doc/src/sgml/html/datetime-config-files.html --- postgresql-10-10.17/doc/src/sgml/html/datetime-config-files.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datetime-config-files.html 2021-11-08 22:25:09.000000000 +0000 @@ -1,5 +1,5 @@ -B.4. Date/Time Configuration Files

    B.4. Date/Time Configuration Files

    Since timezone abbreviations are not well standardized, +B.4. Date/Time Configuration Files

    B.4. Date/Time Configuration Files

    Since timezone abbreviations are not well standardized, PostgreSQL provides a means to customize the set of abbreviations accepted by the server. The timezone_abbreviations run-time parameter @@ -80,4 +80,4 @@

    Caution

    If you modify files in .../share/timezonesets/, it is up to you to make backups — a normal database dump will not include this directory. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datetime-input-rules.html postgresql-10-10.19/doc/src/sgml/html/datetime-input-rules.html --- postgresql-10-10.17/doc/src/sgml/html/datetime-input-rules.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datetime-input-rules.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -B.1. Date/Time Input Interpretation

    B.1. Date/Time Input Interpretation

    Date/time input strings are decoded using the following procedure. +B.1. Date/Time Input Interpretation

    B.1. Date/Time Input Interpretation

    Date/time input strings are decoded using the following procedure.

    1. Break the input string into tokens and categorize each token as a string, time, time zone, or number.

      1. If the numeric token contains a colon (:), this is @@ -52,4 +52,4 @@

        Tip

        Gregorian years AD 1-99 can be entered by using 4 digits with leading zeros (e.g., 0099 is AD 99).

        -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datetime-invalid-input.html postgresql-10-10.19/doc/src/sgml/html/datetime-invalid-input.html --- postgresql-10-10.17/doc/src/sgml/html/datetime-invalid-input.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datetime-invalid-input.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -B.2. Handling of Invalid or Ambiguous Timestamps

    B.2. Handling of Invalid or Ambiguous Timestamps

    Ordinarily, if a date/time string is syntactically valid but contains +B.2. Handling of Invalid or Ambiguous Timestamps

    B.2. Handling of Invalid or Ambiguous Timestamps

    Ordinarily, if a date/time string is syntactically valid but contains out-of-range field values, an error will be thrown. For example, input specifying the 31st of February will be rejected.

    During a daylight-savings-time transition, it is possible for a @@ -50,4 +50,4 @@ abbreviation that corresponds to a fixed UTC offset. The rule just given applies only when it is necessary to infer a UTC offset for a time zone in which the offset varies. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datetime-julian-dates.html postgresql-10-10.19/doc/src/sgml/html/datetime-julian-dates.html --- postgresql-10-10.17/doc/src/sgml/html/datetime-julian-dates.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datetime-julian-dates.html 2021-11-08 22:25:09.000000000 +0000 @@ -1,5 +1,5 @@ -B.7. Julian Dates

    B.7. Julian Dates

    The Julian Date system is a method for +B.7. Julian Dates

    B.7. Julian Dates

    The Julian Date system is a method for numbering days. It is unrelated to the Julian calendar, though it is confusingly named similarly to that calendar. @@ -39,4 +39,4 @@ ----------- 2459389 (1 row)

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datetime-keywords.html postgresql-10-10.19/doc/src/sgml/html/datetime-keywords.html --- postgresql-10-10.17/doc/src/sgml/html/datetime-keywords.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datetime-keywords.html 2021-11-08 22:25:09.000000000 +0000 @@ -1,8 +1,8 @@ -B.3. Date/Time Key Words

    B.3. Date/Time Key Words

    Table B.1 shows the tokens that are +B.3. Date/Time Key Words

    B.3. Date/Time Key Words

    Table B.1 shows the tokens that are recognized as names of months.

    Table B.1. Month Names

    MonthAbbreviations
    JanuaryJan
    FebruaryFeb
    MarchMar
    AprilApr
    May 
    JuneJun
    JulyJul
    AugustAug
    SeptemberSep, Sept
    OctoberOct
    NovemberNov
    DecemberDec

    Table B.2 shows the tokens that are recognized as names of days of the week.

    Table B.2. Day of the Week Names

    DayAbbreviations
    SundaySun
    MondayMon
    TuesdayTue, Tues
    WednesdayWed, Weds
    ThursdayThu, Thur, Thurs
    FridayFri
    SaturdaySat

    Table B.3 shows the tokens that serve various modifier purposes. -

    Table B.3. Date/Time Field Modifiers

    IdentifierDescription
    AMTime is before 12:00
    ATIgnored
    JULIAN, JD, JNext field is Julian Date
    ONIgnored
    PMTime is on or after 12:00
    TNext field is time

    \ No newline at end of file +

    Table B.3. Date/Time Field Modifiers

    IdentifierDescription
    AMTime is before 12:00
    ATIgnored
    JULIAN, JD, JNext field is Julian Date
    ONIgnored
    PMTime is on or after 12:00
    TNext field is time

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datetime-posix-timezone-specs.html postgresql-10-10.19/doc/src/sgml/html/datetime-posix-timezone-specs.html --- postgresql-10-10.17/doc/src/sgml/html/datetime-posix-timezone-specs.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datetime-posix-timezone-specs.html 2021-11-08 22:25:09.000000000 +0000 @@ -1,5 +1,5 @@ -B.5. POSIX Time Zone Specifications

    B.5. POSIX Time Zone Specifications

    PostgreSQL can accept time zone specifications that +B.5. POSIX Time Zone Specifications

    B.5. POSIX Time Zone Specifications

    PostgreSQL can accept time zone specifications that are written according to the POSIX standard's rules for the TZ environment variable. POSIX time zone specifications are @@ -123,4 +123,4 @@ zone abbreviation(s). For example, SET TIMEZONE TO FOOBAR0 will work, leaving the system effectively using a rather peculiar abbreviation for UTC. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/datetime-units-history.html postgresql-10-10.19/doc/src/sgml/html/datetime-units-history.html --- postgresql-10-10.17/doc/src/sgml/html/datetime-units-history.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/datetime-units-history.html 2021-11-08 22:25:09.000000000 +0000 @@ -1,5 +1,5 @@ -B.6. History of Units

    B.6. History of Units

    The SQL standard states that Within the definition of a +B.6. History of Units

    B.6. History of Units

    The SQL standard states that Within the definition of a datetime literal, the datetime values are constrained by the natural rules for dates and times according to the Gregorian calendar. @@ -73,4 +73,4 @@ The People's Republic of China uses the Gregorian calendar for civil purposes. The Chinese calendar is used for determining festivals. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dblink.html postgresql-10-10.19/doc/src/sgml/html/dblink.html --- postgresql-10-10.17/doc/src/sgml/html/dblink.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dblink.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.11. dblink \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-basics.html postgresql-10-10.19/doc/src/sgml/html/ddl-basics.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-basics.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-basics.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.1. Table Basics

    5.1. Table Basics

    A table in a relational database is much like a table on paper: It +5.1. Table Basics

    5.1. Table Basics

    A table in a relational database is much like a table on paper: It consists of rows and columns. The number and order of the columns is fixed, and each column has a name. The number of rows is variable — it reflects how much data is stored at a given moment. @@ -82,4 +82,4 @@ security, or convenience. If you are eager to fill your tables with data now you can skip ahead to Chapter 6 and read the rest of this chapter later. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-constraints.html postgresql-10-10.19/doc/src/sgml/html/ddl-constraints.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-constraints.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-constraints.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.3. Constraints

    5.3. Constraints

    Data types are a way to limit the kind of data that can be stored +5.3. Constraints

    5.3. Constraints

    Data types are a way to limit the kind of data that can be stored in a table. For many applications, however, the constraint they provide is too coarse. For example, a column containing a product price should probably only accept positive values. But there is no @@ -442,4 +442,4 @@ TABLE ... CONSTRAINT ... EXCLUDE for details.

    Adding an exclusion constraint will automatically create an index of the type specified in the constraint declaration. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-default.html postgresql-10-10.19/doc/src/sgml/html/ddl-default.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-default.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-default.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.2. Default Values

    5.2. Default Values

    A column can be assigned a default value. When a new row is +5.2. Default Values

    5.2. Default Values

    A column can be assigned a default value. When a new row is created and no values are specified for some of the columns, those columns will be filled with their respective default values. A data manipulation command can also request explicitly that a column @@ -36,4 +36,4 @@ ... );

    The SERIAL shorthand is discussed further in Section 8.1.4. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-depend.html postgresql-10-10.19/doc/src/sgml/html/ddl-depend.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-depend.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-depend.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.13. Dependency Tracking

    5.13. Dependency Tracking

    When you create complex database structures involving many tables +5.13. Dependency Tracking

    5.13. Dependency Tracking

    When you create complex database structures involving many tables with foreign key constraints, views, triggers, functions, etc. you implicitly create a net of dependencies between the objects. For instance, a table with a foreign key constraint depends on the @@ -68,4 +68,4 @@ there are also benefits. The function is still valid in some sense if the table is missing, though executing it would cause an error; creating a new table of the same name would allow the function to work again. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-foreign-data.html postgresql-10-10.19/doc/src/sgml/html/ddl-foreign-data.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-foreign-data.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-foreign-data.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.11. Foreign Data

    5.11. Foreign Data

    PostgreSQL implements portions of the SQL/MED +5.11. Foreign Data

    5.11. Foreign Data

    PostgreSQL implements portions of the SQL/MED specification, allowing you to access data that resides outside PostgreSQL using regular SQL queries. Such data is referred to as foreign data. (Note that this usage is not to be confused @@ -33,4 +33,4 @@ CREATE USER MAPPING, CREATE FOREIGN TABLE, and IMPORT FOREIGN SCHEMA. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl.html postgresql-10-10.19/doc/src/sgml/html/ddl.html --- postgresql-10-10.17/doc/src/sgml/html/ddl.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 5. Data Definition

    Chapter 5. Data Definition

    This chapter covers how one creates the database structures that +Chapter 5. Data Definition

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-inherit.html postgresql-10-10.19/doc/src/sgml/html/ddl-inherit.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-inherit.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-inherit.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.9. Inheritance

    5.9. Inheritance

    PostgreSQL implements table inheritance, +5.9. Inheritance

    5.9. Inheritance

    PostgreSQL implements table inheritance, which can be a useful tool for database designers. (SQL:1999 and later define a type inheritance feature, which differs in many respects from the features described here.) @@ -247,4 +247,4 @@ implemented for declarative partitioning. Considerable care is needed in deciding whether partitioning with legacy inheritance is useful for your application. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-others.html postgresql-10-10.19/doc/src/sgml/html/ddl-others.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-others.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-others.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.12. Other Database Objects

    5.12. Other Database Objects

    Tables are the central objects in a relational database structure, +5.12. Other Database Objects

    5.12. Other Database Objects

    Tables are the central objects in a relational database structure, because they hold your data. But they are not the only objects that exist in a database. Many other kinds of objects can be created to make the use and management of the data more efficient @@ -11,4 +11,4 @@

  • Triggers and rewrite rules

  • Detailed information on these topics appears in Part V. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-partitioning.html postgresql-10-10.19/doc/src/sgml/html/ddl-partitioning.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-partitioning.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-partitioning.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.10. Table Partitioning

    5.10. Table Partitioning

    PostgreSQL supports basic table +5.10. Table Partitioning

    5.10. Table Partitioning

    PostgreSQL supports basic table partitioning. This section describes why and how to implement partitioning as part of your database design.

    5.10.1. Overview

    Partitioning refers to splitting what is logically one large table into @@ -79,7 +79,8 @@ That means partitioned tables and partitions do not participate in inheritance with regular tables. Since a partition hierarchy consisting of the partitioned table and its partitions is still an inheritance - hierarchy, all the normal rules of inheritance apply as described in + hierarchy, tableoid and all the normal rules + of inheritance apply as described in Section 5.9 with some exceptions, most notably:

    • Both CHECK and NOT NULL @@ -698,4 +699,4 @@ painfully slow. Simulations of the intended workload are often beneficial for optimizing the partitioning strategy. Never assume that more partitions are better than fewer partitions and vice-versa. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-priv.html postgresql-10-10.19/doc/src/sgml/html/ddl-priv.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-priv.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-priv.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.6. Privileges

    5.6. Privileges

    When an object is created, it is assigned an owner. The +5.6. Privileges

    5.6. Privileges

    When an object is created, it is assigned an owner. The owner is normally the role that executed the creation statement. For most kinds of objects, the initial state is that only the owner (or a superuser) can do anything with the object. To allow @@ -53,4 +53,4 @@ recipient (directly or through a chain of grants) will lose the privilege. For details see the GRANT and REVOKE reference pages. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-rowsecurity.html postgresql-10-10.19/doc/src/sgml/html/ddl-rowsecurity.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-rowsecurity.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-rowsecurity.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.7. Row Security Policies

    5.7. Row Security Policies

    In addition to the SQL-standard privilege +5.7. Row Security Policies

    In addition to the SQL-standard privilege system available through GRANT, tables can have row security policies that restrict, on a per-user basis, which rows can be returned by normal queries @@ -338,4 +338,4 @@ situation.

    For additional details see CREATE POLICY and ALTER TABLE. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-schemas.html postgresql-10-10.19/doc/src/sgml/html/ddl-schemas.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-schemas.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-schemas.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.8. Schemas

    5.8. Schemas

    A PostgreSQL database cluster contains +5.8. Schemas

    5.8. Schemas

    A PostgreSQL database cluster contains one or more named databases. Roles and a few other object types are shared across the entire cluster. A client connection to the server can only access data in a single database, the one specified in the @@ -246,4 +246,4 @@ limited) cross-database access. If you need to work with those systems, then maximum portability would be achieved by not using schemas at all. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ddl-system-columns.html postgresql-10-10.19/doc/src/sgml/html/ddl-system-columns.html --- postgresql-10-10.17/doc/src/sgml/html/ddl-system-columns.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ddl-system-columns.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -5.4. System Columns

    5.4. System Columns

    Every table has several system columns that are +5.4. System Columns

    5.4. System Columns

    Every table has several system columns that are implicitly defined by the system. Therefore, these names cannot be used as names of user-defined columns. (Note that these restrictions are separate from whether the name is a key word or @@ -76,4 +76,4 @@ SQL commands, not the number of rows processed. Also, only commands that actually modify the database contents will consume a command identifier. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/default-roles.html postgresql-10-10.19/doc/src/sgml/html/default-roles.html --- postgresql-10-10.17/doc/src/sgml/html/default-roles.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/default-roles.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -21.5. Default Roles

    21.5. Default Roles

    PostgreSQL provides a set of default roles +21.5. Default Roles

    21.5. Default Roles

    PostgreSQL provides a set of default roles which provide access to certain, commonly needed, privileged capabilities and information. Administrators can GRANT these roles to users and/or other roles in their environment, providing those users with access to @@ -32,4 +32,4 @@ GRANT command, for example:

    GRANT pg_signal_backend TO admin_user;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dict-int.html postgresql-10-10.19/doc/src/sgml/html/dict-int.html --- postgresql-10-10.17/doc/src/sgml/html/dict-int.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dict-int.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.12. dict_int

    F.12. dict_int

    dict_int is an example of an add-on dictionary template +F.12. dict_int

    F.12. dict_int

    dict_int is an example of an add-on dictionary template for full-text search. The motivation for this example dictionary is to control the indexing of integers (signed and unsigned), allowing such numbers to be indexed while preventing excessive growth in the number of @@ -37,4 +37,4 @@

    ALTER TEXT SEARCH CONFIGURATION english
         ALTER MAPPING FOR int, uint WITH intdict;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dict-xsyn.html postgresql-10-10.19/doc/src/sgml/html/dict-xsyn.html --- postgresql-10-10.17/doc/src/sgml/html/dict-xsyn.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dict-xsyn.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.13. dict_xsyn

    F.13. dict_xsyn

    dict_xsyn (Extended Synonym Dictionary) is an example of an +F.13. dict_xsyn

    F.13. dict_xsyn

    dict_xsyn (Extended Synonym Dictionary) is an example of an add-on dictionary template for full-text search. This dictionary type replaces words with groups of their synonyms, and so makes it possible to search for a word using any of its synonyms. @@ -73,4 +73,4 @@

    ALTER TEXT SEARCH CONFIGURATION english
         ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/different-replication-solutions.html postgresql-10-10.19/doc/src/sgml/html/different-replication-solutions.html --- postgresql-10-10.17/doc/src/sgml/html/different-replication-solutions.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/different-replication-solutions.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -26.1. Comparison of Different Solutions

    26.1. Comparison of Different Solutions

    Shared Disk Failover

    Shared disk failover avoids synchronization overhead by having only one +26.1. Comparison of Different Solutions

    26.1. Comparison of Different Solutions

    Shared Disk Failover

    Shared disk failover avoids synchronization overhead by having only one copy of the database. It uses a single disk array that is shared by multiple servers. If the main database server fails, the standby server is able to mount and start the database as though it were recovering from @@ -117,4 +117,4 @@ part of the query and return results to a central server where they are combined and returned to the user. This can be implemented using the PL/Proxy tool set. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/disk-full.html postgresql-10-10.19/doc/src/sgml/html/disk-full.html --- postgresql-10-10.17/doc/src/sgml/html/disk-full.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/disk-full.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -29.2. Disk Full Failure

    29.2. Disk Full Failure

    The most important disk monitoring task of a database administrator +29.2. Disk Full Failure

    29.2. Disk Full Failure

    The most important disk monitoring task of a database administrator is to make sure the disk doesn't become full. A filled data disk will not result in data corruption, but it might prevent useful activity from occurring. If the disk holding the WAL files grows full, database @@ -13,4 +13,4 @@ will naturally be subject to whatever quota is placed on the user the server runs as. Exceeding the quota will have the same bad effects as running out of disk space entirely. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/disk-usage.html postgresql-10-10.19/doc/src/sgml/html/disk-usage.html --- postgresql-10-10.17/doc/src/sgml/html/disk-usage.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/disk-usage.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,14 +1,14 @@ -29.1. Determining Disk Usage

    29.1. Determining Disk Usage

    Each table has a primary heap disk file where most of the data is +29.1. Determining Disk Usage

    29.1. Determining Disk Usage

    Each table has a primary heap disk file where most of the data is stored. If the table has any columns with potentially-wide values, there also might be a TOAST file associated with the table, which is used to store values too wide to fit comfortably in the main - table (see Section 66.2). There will be one valid index + table (see Section 67.2). There will be one valid index on the TOAST table, if present. There also might be indexes associated with the base table. Each table and index is stored in a separate disk file — possibly more than one file, if the file would exceed one gigabyte. Naming conventions for these files are described - in Section 66.1. + in Section 67.1.

    You can monitor disk space in three ways: using the SQL functions listed in Table 9.84, using the oid2name module, or @@ -66,4 +66,4 @@ ----------------------+---------- bigtable | 3290 customer | 3144

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/diskusage.html postgresql-10-10.19/doc/src/sgml/html/diskusage.html --- postgresql-10-10.17/doc/src/sgml/html/diskusage.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/diskusage.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,4 +1,4 @@ -Chapter 29. Monitoring Disk Usage

    Chapter 29. Monitoring Disk Usage

    This chapter discusses how to monitor the disk usage of a +Chapter 29. Monitoring Disk Usage

    Chapter 29. Monitoring Disk Usage

    This chapter discusses how to monitor the disk usage of a PostgreSQL database system. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dml-delete.html postgresql-10-10.19/doc/src/sgml/html/dml-delete.html --- postgresql-10-10.17/doc/src/sgml/html/dml-delete.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dml-delete.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -6.3. Deleting Data

    6.3. Deleting Data

    So far we have explained how to add data to tables and how to +6.3. Deleting Data

    6.3. Deleting Data

    So far we have explained how to add data to tables and how to change data. What remains is to discuss how to remove data that is no longer needed. Just as adding data is only possible in whole rows, you can only remove entire rows from a table. In the @@ -18,4 +18,4 @@

    If you simply write:

    DELETE FROM products;

    then all rows in the table will be deleted! Caveat programmer. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dml.html postgresql-10-10.19/doc/src/sgml/html/dml.html --- postgresql-10-10.17/doc/src/sgml/html/dml.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dml.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,8 +1,8 @@ -Chapter 6. Data Manipulation

    Chapter 6. Data Manipulation

    The previous chapter discussed how to create tables and other +Chapter 6. Data Manipulation

    Chapter 6. Data Manipulation

    The previous chapter discussed how to create tables and other structures to hold your data. Now it is time to fill the tables with data. This chapter covers how to insert, update, and delete table data. The chapter after this will finally explain how to extract your long-lost data from the database. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dml-insert.html postgresql-10-10.19/doc/src/sgml/html/dml-insert.html --- postgresql-10-10.17/doc/src/sgml/html/dml-insert.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dml-insert.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -6.1. Inserting Data

    6.1. Inserting Data

    When a table is created, it contains no data. The first thing to +6.1. Inserting Data

    6.1. Inserting Data

    When a table is created, it contains no data. The first thing to do before a database can be of much use is to insert data. Data is conceptually inserted one row at a time. Of course you can also insert more than one row, but there is no way to insert less than @@ -56,4 +56,4 @@ command, but is more efficient. Refer to Section 14.4 for more information on improving bulk loading performance. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dml-returning.html postgresql-10-10.19/doc/src/sgml/html/dml-returning.html --- postgresql-10-10.17/doc/src/sgml/html/dml-returning.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dml-returning.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -6.4. Returning Data From Modified Rows

    6.4. Returning Data From Modified Rows

    Sometimes it is useful to obtain data from modified rows while they are +6.4. Returning Data From Modified Rows

    6.4. Returning Data From Modified Rows

    Sometimes it is useful to obtain data from modified rows while they are being manipulated. The INSERT, UPDATE, and DELETE commands all have an optional RETURNING clause that supports this. Use @@ -38,4 +38,4 @@ the data available to RETURNING is the row as modified by the triggers. Thus, inspecting columns computed by triggers is another common use-case for RETURNING. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dml-update.html postgresql-10-10.19/doc/src/sgml/html/dml-update.html --- postgresql-10-10.17/doc/src/sgml/html/dml-update.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dml-update.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -6.2. Updating Data

    6.2. Updating Data

    The modification of data that is already in the database is +6.2. Updating Data

    6.2. Updating Data

    The modification of data that is already in the database is referred to as updating. You can update individual rows, all the rows in a table, or a subset of all rows. Each column can be updated separately; the other columns are not affected. @@ -46,4 +46,4 @@ UPDATE command by listing more than one assignment in the SET clause. For example:

    UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/docguide-authoring.html postgresql-10-10.19/doc/src/sgml/html/docguide-authoring.html --- postgresql-10-10.17/doc/src/sgml/html/docguide-authoring.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/docguide-authoring.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -J.4. Documentation Authoring

    J.4. Documentation Authoring

    SGML and DocBook do +J.4. Documentation Authoring

    J.4. Documentation Authoring

    SGML and DocBook do not suffer from an oversupply of open-source authoring tools. The most common tool set is the Emacs/XEmacs @@ -73,4 +73,4 @@ major mode specifically for DocBook which also has font-lock and a number of features to reduce typing. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/docguide-build.html postgresql-10-10.19/doc/src/sgml/html/docguide-build.html --- postgresql-10-10.17/doc/src/sgml/html/docguide-build.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/docguide-build.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -J.3. Building The Documentation

    J.3. Building The Documentation

    Once you have everything set up, change to the directory +J.3. Building The Documentation

    J.3. Building The Documentation

    Once you have everything set up, change to the directory doc/src/sgml and run one of the commands described in the following subsections to build the documentation. (Remember to use GNU make.) @@ -58,4 +58,4 @@ method to just check the correct syntax of the documentation files, which only takes a few seconds:

    doc/src/sgml$ make check

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/docguide-docbook.html postgresql-10-10.19/doc/src/sgml/html/docguide-docbook.html --- postgresql-10-10.17/doc/src/sgml/html/docguide-docbook.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/docguide-docbook.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -J.1. DocBook

    J.1. DocBook

    The documentation sources are written in +J.1. DocBook

    J.1. DocBook

    The documentation sources are written in DocBook, which is a markup language superficially similar to HTML. Both of these languages are applications of the Standard Generalized @@ -21,4 +21,4 @@ The FreeBSD Documentation Project also uses DocBook and has some good information, including a number of style guidelines that might be worth considering. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/docguide.html postgresql-10-10.19/doc/src/sgml/html/docguide.html --- postgresql-10-10.17/doc/src/sgml/html/docguide.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/docguide.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix J. Documentation

    Appendix J. Documentation

    PostgreSQL has four primary documentation +Appendix J. Documentation

    Appendix J. Documentation

    PostgreSQL has four primary documentation formats:

    • Plain text, for pre-installation information @@ -15,4 +15,4 @@ standard distribution and are installed by default. PDF format documentation is available separately for download. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/docguide-style.html postgresql-10-10.19/doc/src/sgml/html/docguide-style.html --- postgresql-10-10.17/doc/src/sgml/html/docguide-style.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/docguide-style.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -J.5. Style Guide

    J.5. Style Guide

    J.5.1. Reference Pages

    Reference pages should follow a standard layout. This allows +J.5. Style Guide

    J.5. Style Guide

    J.5.1. Reference Pages

    Reference pages should follow a standard layout. This allows users to find the desired information more quickly, and it also encourages writers to document all relevant aspects of a command. Consistency is not only desired among @@ -69,4 +69,4 @@ database system it is compatible. The See Also section of SQL commands should list SQL commands before cross-references to programs. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/docguide-toolsets.html postgresql-10-10.19/doc/src/sgml/html/docguide-toolsets.html --- postgresql-10-10.17/doc/src/sgml/html/docguide-toolsets.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/docguide-toolsets.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -J.2. Tool Sets

    J.2. Tool Sets

    The following tools are used to process the documentation. Some +J.2. Tool Sets

    J.2. Tool Sets

    The following tools are used to process the documentation. Some might be optional, as noted.

    DocBook DTD

    This is the definition of DocBook itself. We currently use version @@ -125,4 +125,4 @@ the DocBook DTD kit in a place where OpenSP can find it, or you have not set up the catalog files correctly. See the installation hints above. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/dynamic-trace.html postgresql-10-10.19/doc/src/sgml/html/dynamic-trace.html --- postgresql-10-10.17/doc/src/sgml/html/dynamic-trace.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/dynamic-trace.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -28.5. Dynamic Tracing

    28.5. Dynamic Tracing

    PostgreSQL provides facilities to support +28.5. Dynamic Tracing

    28.5. Dynamic Tracing

    PostgreSQL provides facilities to support dynamic tracing of the database server. This allows an external utility to be called at specific points in the code and thereby trace execution. @@ -263,4 +263,4 @@ Each trace macro has a corresponding ENABLED macro.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/earthdistance.html postgresql-10-10.19/doc/src/sgml/html/earthdistance.html --- postgresql-10-10.17/doc/src/sgml/html/earthdistance.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/earthdistance.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.14. earthdistance

    F.14. earthdistance

    The earthdistance module provides two different approaches to +F.14. earthdistance

    F.14. earthdistance

    The earthdistance module provides two different approaches to calculating great circle distances on the surface of the Earth. The one described first depends on the cube module. The second one is based on the built-in point data type, @@ -77,4 +77,4 @@ you need to be careful about the edge conditions near the poles and near +/- 180 degrees of longitude. The cube-based representation avoids these discontinuities. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-commands.html postgresql-10-10.19/doc/src/sgml/html/ecpg-commands.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-commands.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-commands.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -35.3. Running SQL Commands

    35.3. Running SQL Commands

    Any SQL command can be run from within an embedded SQL application. +35.3. Running SQL Commands

    35.3. Running SQL Commands

    Any SQL command can be run from within an embedded SQL application. Below are some examples of how to do that.

    35.3.1. Executing SQL Statements

    Creating a table:

    EXEC SQL CREATE TABLE foo (number integer, ascii char(16));
    @@ -112,4 +112,4 @@
         see PREPARE. Also
         see Section 35.5 for more details about using
         placeholders and input parameters.
    -   

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-concept.html postgresql-10-10.19/doc/src/sgml/html/ecpg-concept.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-concept.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-concept.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -35.1. The Concept

    35.1. The Concept

    An embedded SQL program consists of code written in an ordinary +35.1. The Concept

    35.1. The Concept

    An embedded SQL program consists of code written in an ordinary programming language, in this case C, mixed with SQL commands in specially marked sections. To build the program, the source code (*.pgc) is first passed through the embedded SQL preprocessor, which converts it @@ -34,4 +34,4 @@ C-style comments that are part of the SQL standard. The C part of the program, however, follows the C standard of not accepting nested comments.

    The following sections explain all the embedded SQL statements. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-connect.html postgresql-10-10.19/doc/src/sgml/html/ecpg-connect.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-connect.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-connect.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -35.2. Managing Database Connections

    35.2. Managing Database Connections

    This section describes how to open, close, and switch database +35.2. Managing Database Connections

    35.2. Managing Database Connections

    This section describes how to open, close, and switch database connections.

    35.2.1. Connecting to the Database Server

    One connects to a database using the following statement:

    EXEC SQL CONNECT TO target [AS connection-name] [USER user-name];

    @@ -152,4 +152,4 @@ closed.

    It is good style that an application always explicitly disconnect from every connection it opened. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-cpp.html postgresql-10-10.19/doc/src/sgml/html/ecpg-cpp.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-cpp.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-cpp.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.13. C++ Applications

    35.13. C++ Applications

    ECPG has some limited support for C++ applications. This section +35.13. C++ Applications

    35.13. C++ Applications

    ECPG has some limited support for C++ applications. This section describes some caveats.

    The ecpg preprocessor takes an input file written in C (or something like C) and embedded SQL commands, @@ -192,4 +192,4 @@ and test_mod.o, into one executable, using the C++ compiler driver:

    c++ test_cpp.o test_mod.o -lecpg -o test_cpp

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-descriptors.html postgresql-10-10.19/doc/src/sgml/html/ecpg-descriptors.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-descriptors.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-descriptors.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.7. Using Descriptor Areas

    35.7. Using Descriptor Areas

    An SQL descriptor area is a more sophisticated method for processing +35.7. Using Descriptor Areas

    35.7. Using Descriptor Areas

    An SQL descriptor area is a more sophisticated method for processing the result of a SELECT, FETCH or a DESCRIBE statement. An SQL descriptor area groups the data of one row of data together with metadata items into one @@ -568,4 +568,4 @@ tup_fetched = 3253694 (type: 9) tup_inserted = 0 (type: 9) tup_updated = 0 (type: 9) -tup_deleted = 0 (type: 9)


    \ No newline at end of file +tup_deleted = 0 (type: 9)
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-develop.html postgresql-10-10.19/doc/src/sgml/html/ecpg-develop.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-develop.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-develop.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.16. Internals

    35.16. Internals

    This section explains how ECPG works +35.16. Internals

    35.16. Internals

    This section explains how ECPG works internally. This information can occasionally be useful to help users understand how to use ECPG.

    The first four lines written by ecpg to the @@ -89,4 +89,4 @@ #line 147 "foo.pgc"

    (The indentation here is added for readability and not something the preprocessor does.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-dynamic.html postgresql-10-10.19/doc/src/sgml/html/ecpg-dynamic.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-dynamic.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-dynamic.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -35.5. Dynamic SQL

    35.5. Dynamic SQL

    In many cases, the particular SQL statements that an application +35.5. Dynamic SQL

    35.5. Dynamic SQL

    In many cases, the particular SQL statements that an application has to execute are known at the time the application is written. In some cases, however, the SQL statements are composed at run time or provided by an external source. In these cases you cannot embed @@ -83,4 +83,4 @@ EXEC SQL COMMIT; EXEC SQL DISCONNECT ALL;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-errors.html postgresql-10-10.19/doc/src/sgml/html/ecpg-errors.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-errors.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-errors.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.8. Error Handling

    35.8. Error Handling

    This section describes how you can handle exceptional conditions +35.8. Error Handling

    35.8. Error Handling

    This section describes how you can handle exceptional conditions and warnings in an embedded SQL program. There are two nonexclusive facilities for this. @@ -344,4 +344,4 @@

    -604 (ECPG_WARNING_NO_TRANSACTION)

    There is no active (in-progress) transaction. (SQLSTATE 25P01)

    -605 (ECPG_WARNING_PORTAL_EXISTS)

    An existing cursor name was specified. (SQLSTATE 42P03)

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg.html postgresql-10-10.19/doc/src/sgml/html/ecpg.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 35. ECPG - Embedded SQL in C

    Chapter 35. ECPG - Embedded SQL in C

    Table of Contents

    35.1. The Concept
    35.2. Managing Database Connections
    35.2.1. Connecting to the Database Server
    35.2.2. Choosing a Connection
    35.2.3. Closing a Connection
    35.3. Running SQL Commands
    35.3.1. Executing SQL Statements
    35.3.2. Using Cursors
    35.3.3. Managing Transactions
    35.3.4. Prepared Statements
    35.4. Using Host Variables
    35.4.1. Overview
    35.4.2. Declare Sections
    35.4.3. Retrieving Query Results
    35.4.4. Type Mapping
    35.4.5. Handling Nonprimitive SQL Data Types
    35.4.6. Indicators
    35.5. Dynamic SQL
    35.5.1. Executing Statements without a Result Set
    35.5.2. Executing a Statement with Input Parameters
    35.5.3. Executing a Statement with a Result Set
    35.6. pgtypes Library
    35.6.1. Character Strings
    35.6.2. The numeric Type
    35.6.3. The date Type
    35.6.4. The timestamp Type
    35.6.5. The interval Type
    35.6.6. The decimal Type
    35.6.7. errno Values of pgtypeslib
    35.6.8. Special Constants of pgtypeslib
    35.7. Using Descriptor Areas
    35.7.1. Named SQL Descriptor Areas
    35.7.2. SQLDA Descriptor Areas
    35.8. Error Handling
    35.8.1. Setting Callbacks
    35.8.2. sqlca
    35.8.3. SQLSTATE vs. SQLCODE
    35.9. Preprocessor Directives
    35.9.1. Including Files
    35.9.2. The define and undef Directives
    35.9.3. ifdef, ifndef, else, elif, and endif Directives
    35.10. Processing Embedded SQL Programs
    35.11. Library Functions
    35.12. Large Objects
    35.13. C++ Applications
    35.13.1. Scope for Host Variables
    35.13.2. C++ Application Development with External C Module
    35.14. Embedded SQL Commands
    ALLOCATE DESCRIPTOR — allocate an SQL descriptor area
    CONNECT — establish a database connection
    DEALLOCATE DESCRIPTOR — deallocate an SQL descriptor area
    DECLARE — define a cursor
    DESCRIBE — obtain information about a prepared statement or result set
    DISCONNECT — terminate a database connection
    EXECUTE IMMEDIATE — dynamically prepare and execute a statement
    GET DESCRIPTOR — get information from an SQL descriptor area
    OPEN — open a dynamic cursor
    PREPARE — prepare a statement for execution
    SET AUTOCOMMIT — set the autocommit behavior of the current session
    SET CONNECTION — select a database connection
    SET DESCRIPTOR — set information in an SQL descriptor area
    TYPE — define a new data type
    VAR — define a variable
    WHENEVER — specify the action to be taken when an SQL statement causes a specific class condition to be raised
    35.15. Informix Compatibility Mode
    35.15.1. Additional Types
    35.15.2. Additional/Missing Embedded SQL Statements
    35.15.3. Informix-compatible SQLDA Descriptor Areas
    35.15.4. Additional Functions
    35.15.5. Additional Constants
    35.16. Internals

    This chapter describes the embedded SQL package +Chapter 35. ECPG - Embedded SQL in C

    Chapter 35. ECPG - Embedded SQL in C

    Table of Contents

    35.1. The Concept
    35.2. Managing Database Connections
    35.2.1. Connecting to the Database Server
    35.2.2. Choosing a Connection
    35.2.3. Closing a Connection
    35.3. Running SQL Commands
    35.3.1. Executing SQL Statements
    35.3.2. Using Cursors
    35.3.3. Managing Transactions
    35.3.4. Prepared Statements
    35.4. Using Host Variables
    35.4.1. Overview
    35.4.2. Declare Sections
    35.4.3. Retrieving Query Results
    35.4.4. Type Mapping
    35.4.5. Handling Nonprimitive SQL Data Types
    35.4.6. Indicators
    35.5. Dynamic SQL
    35.5.1. Executing Statements without a Result Set
    35.5.2. Executing a Statement with Input Parameters
    35.5.3. Executing a Statement with a Result Set
    35.6. pgtypes Library
    35.6.1. Character Strings
    35.6.2. The numeric Type
    35.6.3. The date Type
    35.6.4. The timestamp Type
    35.6.5. The interval Type
    35.6.6. The decimal Type
    35.6.7. errno Values of pgtypeslib
    35.6.8. Special Constants of pgtypeslib
    35.7. Using Descriptor Areas
    35.7.1. Named SQL Descriptor Areas
    35.7.2. SQLDA Descriptor Areas
    35.8. Error Handling
    35.8.1. Setting Callbacks
    35.8.2. sqlca
    35.8.3. SQLSTATE vs. SQLCODE
    35.9. Preprocessor Directives
    35.9.1. Including Files
    35.9.2. The define and undef Directives
    35.9.3. ifdef, ifndef, else, elif, and endif Directives
    35.10. Processing Embedded SQL Programs
    35.11. Library Functions
    35.12. Large Objects
    35.13. C++ Applications
    35.13.1. Scope for Host Variables
    35.13.2. C++ Application Development with External C Module
    35.14. Embedded SQL Commands
    ALLOCATE DESCRIPTOR — allocate an SQL descriptor area
    CONNECT — establish a database connection
    DEALLOCATE DESCRIPTOR — deallocate an SQL descriptor area
    DECLARE — define a cursor
    DESCRIBE — obtain information about a prepared statement or result set
    DISCONNECT — terminate a database connection
    EXECUTE IMMEDIATE — dynamically prepare and execute a statement
    GET DESCRIPTOR — get information from an SQL descriptor area
    OPEN — open a dynamic cursor
    PREPARE — prepare a statement for execution
    SET AUTOCOMMIT — set the autocommit behavior of the current session
    SET CONNECTION — select a database connection
    SET DESCRIPTOR — set information in an SQL descriptor area
    TYPE — define a new data type
    VAR — define a variable
    WHENEVER — specify the action to be taken when an SQL statement causes a specific class condition to be raised
    35.15. Informix Compatibility Mode
    35.15.1. Additional Types
    35.15.2. Additional/Missing Embedded SQL Statements
    35.15.3. Informix-compatible SQLDA Descriptor Areas
    35.15.4. Additional Functions
    35.15.5. Additional Constants
    35.16. Internals

    This chapter describes the embedded SQL package for PostgreSQL. It was written by Linus Tolke () and Michael Meskes (). Originally it was written to work with @@ -8,4 +8,4 @@

    This documentation is quite incomplete. But since this interface is standardized, additional information can be found in many resources about SQL. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-informix-compat.html postgresql-10-10.19/doc/src/sgml/html/ecpg-informix-compat.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-informix-compat.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-informix-compat.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.15. Informix Compatibility Mode

    35.15. Informix Compatibility Mode

    ecpg can be run in a so-called Informix compatibility mode. If +35.15. Informix Compatibility Mode

    35.15. Informix Compatibility Mode

    ecpg can be run in a so-called Informix compatibility mode. If this mode is active, it tries to behave as if it were the Informix precompiler for Informix E/SQL. Generally spoken this will allow you to use the dollar sign instead of the EXEC SQL primitive to introduce @@ -304,7 +304,7 @@

    Note that the ECPG implementation differs from the Informix implementation. Informix limits an integer to the range from -32767 to 32767, while the limits in the ECPG implementation depend on the - architecture (-INT_MAX .. INT_MAX). + architecture (INT_MIN .. INT_MAX).

    dectolong

    Convert a variable to type decimal to a long integer.

    int dectolong(decimal *np, long *lngp);

    The function receives a pointer to the decimal value to convert @@ -629,4 +629,4 @@ characters it cannot parse. Internally it is defined as -1264 (the Informix definition).

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-library.html postgresql-10-10.19/doc/src/sgml/html/ecpg-library.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-library.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-library.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.11. Library Functions

    35.11. Library Functions

    The libecpg library primarily contains +35.11. Library Functions

    35.11. Library Functions

    The libecpg library primarily contains hidden functions that are used to implement the functionality expressed by the embedded SQL commands. But there are some functions that can usefully be called directly. Note that @@ -36,4 +36,4 @@ returns true if you are connected to a database and false if not. connection_name can be NULL if a single connection is being used. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-lo.html postgresql-10-10.19/doc/src/sgml/html/ecpg-lo.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-lo.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-lo.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.12. Large Objects

    35.12. Large Objects

    Large objects are not directly supported by ECPG, but ECPG +35.12. Large Objects

    35.12. Large Objects

    Large objects are not directly supported by ECPG, but ECPG application can manipulate large objects through the libpq large object functions, obtaining the necessary PGconn object by calling the ECPGget_PGconn() @@ -91,4 +91,4 @@ EXEC SQL COMMIT; EXEC SQL DISCONNECT ALL; return 0; -}


    \ No newline at end of file +}
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-pgtypes.html postgresql-10-10.19/doc/src/sgml/html/ecpg-pgtypes.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-pgtypes.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-pgtypes.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.6. pgtypes Library

    35.6. pgtypes Library

    The pgtypes library maps PostgreSQL database +35.6. pgtypes Library

    35.6. pgtypes Library

    The pgtypes library maps PostgreSQL database types to C equivalents that can be used in C programs. It also offers functions to do basic calculations with those types within C, i.e., without the help of the PostgreSQL server. See the @@ -525,4 +525,4 @@ errno != 0 after each call to PGTYPEStimestamp_from_asc.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-preproc.html postgresql-10-10.19/doc/src/sgml/html/ecpg-preproc.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-preproc.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-preproc.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.9. Preprocessor Directives

    35.9. Preprocessor Directives

    Several preprocessor directives are available that modify how +35.9. Preprocessor Directives

    35.9. Preprocessor Directives

    Several preprocessor directives are available that modify how the ecpg preprocessor parses and processes a file.

    35.9.1. Including Files

    To include an external file into your embedded SQL program, use: @@ -79,4 +79,4 @@ EXEC SQL else; EXEC SQL SET TIMEZONE TO TZVAR; EXEC SQL endif;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-process.html postgresql-10-10.19/doc/src/sgml/html/ecpg-process.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-process.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-process.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -35.10. Processing Embedded SQL Programs

    35.10. Processing Embedded SQL Programs

    Now that you have an idea how to form embedded SQL C programs, you +35.10. Processing Embedded SQL Programs

    35.10. Processing Embedded SQL Programs

    Now that you have an idea how to form embedded SQL C programs, you probably want to know how to compile them. Before compiling you run the file through the embedded SQL C preprocessor, which converts the @@ -49,4 +49,4 @@

    The ecpg library is thread-safe by default. However, you might need to use some threading command-line options to compile your client code. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-allocate-descriptor.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-allocate-descriptor.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-allocate-descriptor.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-allocate-descriptor.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -ALLOCATE DESCRIPTOR

    ALLOCATE DESCRIPTOR

    ALLOCATE DESCRIPTOR — allocate an SQL descriptor area

    Synopsis

    ALLOCATE DESCRIPTOR name

    Description

    ALLOCATE DESCRIPTOR allocates a new named SQL +ALLOCATE DESCRIPTOR

    ALLOCATE DESCRIPTOR

    ALLOCATE DESCRIPTOR — allocate an SQL descriptor area

    Synopsis

    ALLOCATE DESCRIPTOR name

    Description

    ALLOCATE DESCRIPTOR allocates a new named SQL descriptor area, which can be used to exchange data between the PostgreSQL server and the host program.

    Descriptor areas should be freed after use using @@ -8,4 +8,4 @@ identifier or a host variable.

    Examples

    EXEC SQL ALLOCATE DESCRIPTOR mydesc;

    Compatibility

    ALLOCATE DESCRIPTOR is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-commands.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-commands.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-commands.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-commands.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,6 +1,6 @@ -35.14. Embedded SQL Commands

    35.14. Embedded SQL Commands

    ALLOCATE DESCRIPTOR — allocate an SQL descriptor area
    CONNECT — establish a database connection
    DEALLOCATE DESCRIPTOR — deallocate an SQL descriptor area
    DECLARE — define a cursor
    DESCRIBE — obtain information about a prepared statement or result set
    DISCONNECT — terminate a database connection
    EXECUTE IMMEDIATE — dynamically prepare and execute a statement
    GET DESCRIPTOR — get information from an SQL descriptor area
    OPEN — open a dynamic cursor
    PREPARE — prepare a statement for execution
    SET AUTOCOMMIT — set the autocommit behavior of the current session
    SET CONNECTION — select a database connection
    SET DESCRIPTOR — set information in an SQL descriptor area
    TYPE — define a new data type
    VAR — define a variable
    WHENEVER — specify the action to be taken when an SQL statement causes a specific class condition to be raised

    This section describes all SQL commands that are specific to +35.14. Embedded SQL Commands

    35.14. Embedded SQL Commands

    ALLOCATE DESCRIPTOR — allocate an SQL descriptor area
    CONNECT — establish a database connection
    DEALLOCATE DESCRIPTOR — deallocate an SQL descriptor area
    DECLARE — define a cursor
    DESCRIBE — obtain information about a prepared statement or result set
    DISCONNECT — terminate a database connection
    EXECUTE IMMEDIATE — dynamically prepare and execute a statement
    GET DESCRIPTOR — get information from an SQL descriptor area
    OPEN — open a dynamic cursor
    PREPARE — prepare a statement for execution
    SET AUTOCOMMIT — set the autocommit behavior of the current session
    SET CONNECTION — select a database connection
    SET DESCRIPTOR — set information in an SQL descriptor area
    TYPE — define a new data type
    VAR — define a variable
    WHENEVER — specify the action to be taken when an SQL statement causes a specific class condition to be raised

    This section describes all SQL commands that are specific to embedded SQL. Also refer to the SQL commands listed in SQL Commands, which can also be used in embedded SQL, unless stated otherwise. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-connect.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-connect.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-connect.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-connect.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -CONNECT

    CONNECT

    CONNECT — establish a database connection

    Synopsis

    CONNECT TO connection_target [ AS connection_name ] [ USER connection_user ]
    +CONNECT

    CONNECT

    CONNECT — establish a database connection

    Synopsis

    CONNECT TO connection_target [ AS connection_name ] [ USER connection_user ]
     CONNECT TO DEFAULT
     CONNECT connection_user
     DATABASE connection_target

    Description

    The CONNECT command establishes a connection @@ -85,4 +85,4 @@

    Compatibility

    CONNECT is specified in the SQL standard, but the format of the connection parameters is implementation-specific. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-deallocate-descriptor.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-deallocate-descriptor.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-deallocate-descriptor.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-deallocate-descriptor.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,9 +1,9 @@ -DEALLOCATE DESCRIPTOR

    DEALLOCATE DESCRIPTOR

    DEALLOCATE DESCRIPTOR — deallocate an SQL descriptor area

    Synopsis

    DEALLOCATE DESCRIPTOR name

    Description

    DEALLOCATE DESCRIPTOR deallocates a named SQL +DEALLOCATE DESCRIPTOR

    DEALLOCATE DESCRIPTOR

    DEALLOCATE DESCRIPTOR — deallocate an SQL descriptor area

    Synopsis

    DEALLOCATE DESCRIPTOR name

    Description

    DEALLOCATE DESCRIPTOR deallocates a named SQL descriptor area.

    Parameters

    name

    The name of the descriptor which is going to be deallocated. It is case sensitive. This can be an SQL identifier or a host variable.

    Examples

    EXEC SQL DEALLOCATE DESCRIPTOR mydesc;

    Compatibility

    DEALLOCATE DESCRIPTOR is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-declare.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-declare.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-declare.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-declare.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -DECLARE

    DECLARE

    DECLARE — define a cursor

    Synopsis

    DECLARE cursor_name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR prepared_name
    +DECLARE

    DECLARE

    DECLARE — define a cursor

    Synopsis

    DECLARE cursor_name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR prepared_name
     DECLARE cursor_name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR query

    Description

    DECLARE declares a cursor for iterating over the result set of a prepared statement. This command has slightly different semantics from the direct SQL @@ -26,4 +26,4 @@

    EXEC SQL PREPARE stmt1 AS SELECT version();
     EXEC SQL DECLARE cur1 CURSOR FOR stmt1;

    Compatibility

    DECLARE is specified in the SQL standard. -

    See Also

    OPEN, CLOSE, DECLARE
    \ No newline at end of file +

    See Also

    OPEN, CLOSE, DECLARE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-describe.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-describe.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-describe.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-describe.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -DESCRIBE

    DESCRIBE

    DESCRIBE — obtain information about a prepared statement or result set

    Synopsis

    DESCRIBE [ OUTPUT ] prepared_name USING [ SQL ] DESCRIPTOR descriptor_name
    +DESCRIBE

    DESCRIBE

    DESCRIBE — obtain information about a prepared statement or result set

    Synopsis

    DESCRIBE [ OUTPUT ] prepared_name USING [ SQL ] DESCRIPTOR descriptor_name
     DESCRIBE [ OUTPUT ] prepared_name INTO [ SQL ] DESCRIPTOR descriptor_name
     DESCRIBE [ OUTPUT ] prepared_name INTO sqlda_name

    Description

    DESCRIBE retrieves metadata information about the result columns contained in a prepared statement, without @@ -14,4 +14,4 @@ EXEC SQL DESCRIBE stmt1 INTO SQL DESCRIPTOR mydesc; EXEC SQL GET DESCRIPTOR mydesc VALUE 1 :charvar = NAME; EXEC SQL DEALLOCATE DESCRIPTOR mydesc;

    Compatibility

    DESCRIBE is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-disconnect.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-disconnect.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-disconnect.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-disconnect.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -DISCONNECT

    DISCONNECT

    DISCONNECT — terminate a database connection

    Synopsis

    DISCONNECT connection_name
    +DISCONNECT

    DISCONNECT

    DISCONNECT — terminate a database connection

    Synopsis

    DISCONNECT connection_name
     DISCONNECT [ CURRENT ]
     DISCONNECT DEFAULT
     DISCONNECT ALL

    Description

    DISCONNECT closes a connection (or all @@ -27,4 +27,4 @@ return 0; }

    Compatibility

    DISCONNECT is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-execute-immediate.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-execute-immediate.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-execute-immediate.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-execute-immediate.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -EXECUTE IMMEDIATE

    EXECUTE IMMEDIATE

    EXECUTE IMMEDIATE — dynamically prepare and execute a statement

    Synopsis

    EXECUTE IMMEDIATE string

    Description

    EXECUTE IMMEDIATE immediately prepares and +EXECUTE IMMEDIATE

    EXECUTE IMMEDIATE

    EXECUTE IMMEDIATE — dynamically prepare and execute a statement

    Synopsis

    EXECUTE IMMEDIATE string

    Description

    EXECUTE IMMEDIATE immediately prepares and executes a dynamically specified SQL statement, without retrieving result rows.

    Parameters

    string

    A literal C string or a host variable containing the SQL @@ -10,4 +10,4 @@

    sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: ''r1''', 1, 'f')");
     EXEC SQL EXECUTE IMMEDIATE :command;

    Compatibility

    EXECUTE IMMEDIATE is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-get-descriptor.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-get-descriptor.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-get-descriptor.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-get-descriptor.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -GET DESCRIPTOR

    GET DESCRIPTOR

    GET DESCRIPTOR — get information from an SQL descriptor area

    Synopsis

    GET DESCRIPTOR descriptor_name :cvariable = descriptor_header_item [, ... ]
    +GET DESCRIPTOR

    GET DESCRIPTOR

    GET DESCRIPTOR — get information from an SQL descriptor area

    Synopsis

    GET DESCRIPTOR descriptor_name :cvariable = descriptor_header_item [, ... ]
     GET DESCRIPTOR descriptor_name VALUE column_number :cvariable = descriptor_item [, ... ]

    Description

    GET DESCRIPTOR retrieves information about a query result set from an SQL descriptor area and stores it into host variables. A descriptor area is typically populated @@ -77,4 +77,4 @@ d_returned_octet_length = 6 d_data = testdb

    Compatibility

    GET DESCRIPTOR is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-open.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-open.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-open.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-open.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -OPEN

    OPEN

    OPEN — open a dynamic cursor

    Synopsis

    OPEN cursor_name
    +OPEN

    OPEN

    OPEN — open a dynamic cursor

    Synopsis

    OPEN cursor_name
     OPEN cursor_name USING value [, ... ]
     OPEN cursor_name USING SQL DESCRIPTOR descriptor_name

    Description

    OPEN opens a cursor and optionally binds actual values to the placeholders in the cursor's declaration. @@ -19,4 +19,4 @@ EXEC SQL OPEN d USING 1, 'test'; EXEC SQL OPEN c1 USING SQL DESCRIPTOR mydesc; EXEC SQL OPEN :curname1;

    Compatibility

    OPEN is specified in the SQL standard. -

    See Also

    DECLARE, CLOSE
    \ No newline at end of file +

    See Also

    DECLARE, CLOSE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-prepare.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-prepare.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-prepare.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-prepare.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -PREPARE

    PREPARE

    PREPARE — prepare a statement for execution

    Synopsis

    PREPARE name FROM string

    Description

    PREPARE prepares a statement dynamically +PREPARE

    PREPARE

    PREPARE — prepare a statement for execution

    Synopsis

    PREPARE name FROM string

    Description

    PREPARE prepares a statement dynamically specified as a string for execution. This is different from the direct SQL statement PREPARE, which can also be used in embedded programs. The EXECUTE @@ -14,4 +14,4 @@ EXEC SQL PREPARE foo FROM :stmt; EXEC SQL EXECUTE foo USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR outdesc;

    Compatibility

    PREPARE is specified in the SQL standard. -

    See Also

    EXECUTE
    \ No newline at end of file +

    See Also

    EXECUTE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-set-autocommit.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-set-autocommit.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-set-autocommit.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-set-autocommit.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,9 +1,9 @@ -SET AUTOCOMMIT

    SET AUTOCOMMIT

    SET AUTOCOMMIT — set the autocommit behavior of the current session

    Synopsis

    SET AUTOCOMMIT { = | TO } { ON | OFF }

    Description

    SET AUTOCOMMIT sets the autocommit behavior of +SET AUTOCOMMIT

    SET AUTOCOMMIT

    SET AUTOCOMMIT — set the autocommit behavior of the current session

    Synopsis

    SET AUTOCOMMIT { = | TO } { ON | OFF }

    Description

    SET AUTOCOMMIT sets the autocommit behavior of the current database session. By default, embedded SQL programs are not in autocommit mode, so COMMIT needs to be issued explicitly when desired. This command can change the session to autocommit mode, where each individual statement is committed implicitly.

    Compatibility

    SET AUTOCOMMIT is an extension of PostgreSQL ECPG. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-set-connection.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-set-connection.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-set-connection.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-set-connection.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -SET CONNECTION

    SET CONNECTION

    SET CONNECTION — select a database connection

    Synopsis

    SET CONNECTION [ TO | = ] connection_name

    Description

    SET CONNECTION sets the current +SET CONNECTION

    SET CONNECTION

    SET CONNECTION — select a database connection

    Synopsis

    SET CONNECTION [ TO | = ] connection_name

    Description

    SET CONNECTION sets the current database connection, which is the one that all commands use unless overridden.

    Parameters

    connection_name

    A database connection name established by @@ -7,4 +7,4 @@

    DEFAULT

    Set the connection to the default connection.

    Examples

    EXEC SQL SET CONNECTION TO con2;
     EXEC SQL SET CONNECTION = con1;

    Compatibility

    SET CONNECTION is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-set-descriptor.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-set-descriptor.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-set-descriptor.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-set-descriptor.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -SET DESCRIPTOR

    SET DESCRIPTOR

    SET DESCRIPTOR — set information in an SQL descriptor area

    Synopsis

    SET DESCRIPTOR descriptor_name descriptor_header_item = value [, ... ]
    +SET DESCRIPTOR

    SET DESCRIPTOR

    SET DESCRIPTOR — set information in an SQL descriptor area

    Synopsis

    SET DESCRIPTOR descriptor_name descriptor_header_item = value [, ... ]
     SET DESCRIPTOR descriptor_name VALUE number descriptor_item = value [, ...]

    Description

    SET DESCRIPTOR populates an SQL descriptor area with values. The descriptor area is then typically used to bind parameters in a prepared query execution. @@ -23,4 +23,4 @@ EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1; EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val1, DATA = 'some string'; EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2null, DATA = :val2;

    Compatibility

    SET DESCRIPTOR is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-type.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-type.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-type.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-type.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -TYPE

    TYPE

    TYPE — define a new data type

    Synopsis

    TYPE type_name IS ctype

    Description

    The TYPE command defines a new C type. It is +TYPE

    TYPE

    TYPE — define a new data type

    Synopsis

    TYPE type_name IS ctype

    Description

    The TYPE command defines a new C type. It is equivalent to putting a typedef into a declare section.

    This command is only recognized when ecpg is @@ -71,4 +71,4 @@ t_ind.v_ind = 0 t_ind.i_ind = 0

    Compatibility

    The TYPE command is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-var.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-var.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-var.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-var.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -VAR

    VAR

    VAR — define a variable

    Synopsis

    VAR varname IS ctype

    Description

    The VAR command assigns a new C data type +VAR

    VAR

    VAR — define a variable

    Synopsis

    VAR varname IS ctype

    Description

    The VAR command assigns a new C data type to a host variable. The host variable must be previously declared in a declare section.

    Parameters

    varname

    A C variable name. @@ -8,4 +8,4 @@ short a; exec sql end declare section; EXEC SQL VAR a IS int;

    Compatibility

    The VAR command is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-whenever.html postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-whenever.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-sql-whenever.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-sql-whenever.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -WHENEVER

    WHENEVER

    WHENEVER — specify the action to be taken when an SQL statement causes a specific class condition to be raised

    Synopsis

    WHENEVER { NOT FOUND | SQLERROR | SQLWARNING } action

    Description

    Define a behavior which is called on the special cases (Rows not +WHENEVER

    WHENEVER

    WHENEVER — specify the action to be taken when an SQL statement causes a specific class condition to be raised

    Synopsis

    WHENEVER { NOT FOUND | SQLERROR | SQLWARNING } action

    Description

    Define a behavior which is called on the special cases (Rows not found, SQL warnings or errors) in the result of SQL execution.

    Parameters

    See Section 35.8.1 for a description of the parameters. @@ -43,4 +43,4 @@ }

    Compatibility

    WHENEVER is specified in the SQL standard, but most of the actions are PostgreSQL extensions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ecpg-variables.html postgresql-10-10.19/doc/src/sgml/html/ecpg-variables.html --- postgresql-10-10.17/doc/src/sgml/html/ecpg-variables.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ecpg-variables.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -35.4. Using Host Variables

    35.4. Using Host Variables

    In Section 35.3 you saw how you can execute SQL +35.4. Using Host Variables

    35.4. Using Host Variables

    In Section 35.3 you saw how you can execute SQL statements from an embedded SQL program. Some of those statements only used fixed values and did not provide a way to insert user-supplied values into statements or have the program process @@ -720,4 +720,4 @@ input and output) for character string types as empty string and for integer types as the lowest possible value for type (for example, INT_MIN for int). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/encryption-options.html postgresql-10-10.19/doc/src/sgml/html/encryption-options.html --- postgresql-10-10.17/doc/src/sgml/html/encryption-options.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/encryption-options.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.8. Encryption Options

    18.8. Encryption Options

    PostgreSQL offers encryption at several +18.8. Encryption Options

    18.8. Encryption Options

    PostgreSQL offers encryption at several levels, and provides flexibility in protecting data from disclosure due to database server theft, unscrupulous administrators, and insecure networks. Encryption might also be required to secure @@ -60,4 +60,4 @@ never appears on the database server. Data is encrypted on the client before being sent to the server, and database results have to be decrypted on the client before being used. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/errcodes-appendix.html postgresql-10-10.19/doc/src/sgml/html/errcodes-appendix.html --- postgresql-10-10.17/doc/src/sgml/html/errcodes-appendix.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/errcodes-appendix.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix A. PostgreSQL Error Codes

    Appendix A. PostgreSQL Error Codes

    All messages emitted by the PostgreSQL +Appendix A. PostgreSQL Error Codes

    Appendix A. PostgreSQL Error Codes

    All messages emitted by the PostgreSQL server are assigned five-character error codes that follow the SQL standard's conventions for SQLSTATE codes. Applications that need to know which error condition has occurred should usually @@ -17,7 +17,7 @@ does not recognize the specific error code might still be able to infer what to do from the error class.

    Table A.1 lists all the error codes defined in - PostgreSQL 10.17. (Some are not actually + PostgreSQL 10.19. (Some are not actually used at present, but are defined by the SQL standard.) The error classes are also shown. For each error class there is a standard error code having the last three characters @@ -37,4 +37,4 @@ As of PostgreSQL 9.3, complete coverage for this feature exists only for errors in SQLSTATE class 23 (integrity constraint violation), but this is likely to be expanded in future. -

    Table A.1. PostgreSQL Error Codes

    Error CodeCondition Name
    Class 00 — Successful Completion
    00000successful_completion
    Class 01 — Warning
    01000warning
    0100Cdynamic_result_sets_returned
    01008implicit_zero_bit_padding
    01003null_value_eliminated_in_set_function
    01007privilege_not_granted
    01006privilege_not_revoked
    01004string_data_right_truncation
    01P01deprecated_feature
    Class 02 — No Data (this is also a warning class per the SQL standard)
    02000no_data
    02001no_additional_dynamic_result_sets_returned
    Class 03 — SQL Statement Not Yet Complete
    03000sql_statement_not_yet_complete
    Class 08 — Connection Exception
    08000connection_exception
    08003connection_does_not_exist
    08006connection_failure
    08001sqlclient_unable_to_establish_sqlconnection
    08004sqlserver_rejected_establishment_of_sqlconnection
    08007transaction_resolution_unknown
    08P01protocol_violation
    Class 09 — Triggered Action Exception
    09000triggered_action_exception
    Class 0A — Feature Not Supported
    0A000feature_not_supported
    Class 0B — Invalid Transaction Initiation
    0B000invalid_transaction_initiation
    Class 0F — Locator Exception
    0F000locator_exception
    0F001invalid_locator_specification
    Class 0L — Invalid Grantor
    0L000invalid_grantor
    0LP01invalid_grant_operation
    Class 0P — Invalid Role Specification
    0P000invalid_role_specification
    Class 0Z — Diagnostics Exception
    0Z000diagnostics_exception
    0Z002stacked_diagnostics_accessed_without_active_handler
    Class 20 — Case Not Found
    20000case_not_found
    Class 21 — Cardinality Violation
    21000cardinality_violation
    Class 22 — Data Exception
    22000data_exception
    2202Earray_subscript_error
    22021character_not_in_repertoire
    22008datetime_field_overflow
    22012division_by_zero
    22005error_in_assignment
    2200Bescape_character_conflict
    22022indicator_overflow
    22015interval_field_overflow
    2201Einvalid_argument_for_logarithm
    22014invalid_argument_for_ntile_function
    22016invalid_argument_for_nth_value_function
    2201Finvalid_argument_for_power_function
    2201Ginvalid_argument_for_width_bucket_function
    22018invalid_character_value_for_cast
    22007invalid_datetime_format
    22019invalid_escape_character
    2200Dinvalid_escape_octet
    22025invalid_escape_sequence
    22P06nonstandard_use_of_escape_character
    22010invalid_indicator_parameter_value
    22023invalid_parameter_value
    2201Binvalid_regular_expression
    2201Winvalid_row_count_in_limit_clause
    2201Xinvalid_row_count_in_result_offset_clause
    2202Hinvalid_tablesample_argument
    2202Ginvalid_tablesample_repeat
    22009invalid_time_zone_displacement_value
    2200Cinvalid_use_of_escape_character
    2200Gmost_specific_type_mismatch
    22004null_value_not_allowed
    22002null_value_no_indicator_parameter
    22003numeric_value_out_of_range
    2200Hsequence_generator_limit_exceeded
    22026string_data_length_mismatch
    22001string_data_right_truncation
    22011substring_error
    22027trim_error
    22024unterminated_c_string
    2200Fzero_length_character_string
    22P01floating_point_exception
    22P02invalid_text_representation
    22P03invalid_binary_representation
    22P04bad_copy_file_format
    22P05untranslatable_character
    2200Lnot_an_xml_document
    2200Minvalid_xml_document
    2200Ninvalid_xml_content
    2200Sinvalid_xml_comment
    2200Tinvalid_xml_processing_instruction
    Class 23 — Integrity Constraint Violation
    23000integrity_constraint_violation
    23001restrict_violation
    23502not_null_violation
    23503foreign_key_violation
    23505unique_violation
    23514check_violation
    23P01exclusion_violation
    Class 24 — Invalid Cursor State
    24000invalid_cursor_state
    Class 25 — Invalid Transaction State
    25000invalid_transaction_state
    25001active_sql_transaction
    25002branch_transaction_already_active
    25008held_cursor_requires_same_isolation_level
    25003inappropriate_access_mode_for_branch_transaction
    25004inappropriate_isolation_level_for_branch_transaction
    25005no_active_sql_transaction_for_branch_transaction
    25006read_only_sql_transaction
    25007schema_and_data_statement_mixing_not_supported
    25P01no_active_sql_transaction
    25P02in_failed_sql_transaction
    25P03idle_in_transaction_session_timeout
    Class 26 — Invalid SQL Statement Name
    26000invalid_sql_statement_name
    Class 27 — Triggered Data Change Violation
    27000triggered_data_change_violation
    Class 28 — Invalid Authorization Specification
    28000invalid_authorization_specification
    28P01invalid_password
    Class 2B — Dependent Privilege Descriptors Still Exist
    2B000dependent_privilege_descriptors_still_exist
    2BP01dependent_objects_still_exist
    Class 2D — Invalid Transaction Termination
    2D000invalid_transaction_termination
    Class 2F — SQL Routine Exception
    2F000sql_routine_exception
    2F005function_executed_no_return_statement
    2F002modifying_sql_data_not_permitted
    2F003prohibited_sql_statement_attempted
    2F004reading_sql_data_not_permitted
    Class 34 — Invalid Cursor Name
    34000invalid_cursor_name
    Class 38 — External Routine Exception
    38000external_routine_exception
    38001containing_sql_not_permitted
    38002modifying_sql_data_not_permitted
    38003prohibited_sql_statement_attempted
    38004reading_sql_data_not_permitted
    Class 39 — External Routine Invocation Exception
    39000external_routine_invocation_exception
    39001invalid_sqlstate_returned
    39004null_value_not_allowed
    39P01trigger_protocol_violated
    39P02srf_protocol_violated
    39P03event_trigger_protocol_violated
    Class 3B — Savepoint Exception
    3B000savepoint_exception
    3B001invalid_savepoint_specification
    Class 3D — Invalid Catalog Name
    3D000invalid_catalog_name
    Class 3F — Invalid Schema Name
    3F000invalid_schema_name
    Class 40 — Transaction Rollback
    40000transaction_rollback
    40002transaction_integrity_constraint_violation
    40001serialization_failure
    40003statement_completion_unknown
    40P01deadlock_detected
    Class 42 — Syntax Error or Access Rule Violation
    42000syntax_error_or_access_rule_violation
    42601syntax_error
    42501insufficient_privilege
    42846cannot_coerce
    42803grouping_error
    42P20windowing_error
    42P19invalid_recursion
    42830invalid_foreign_key
    42602invalid_name
    42622name_too_long
    42939reserved_name
    42804datatype_mismatch
    42P18indeterminate_datatype
    42P21collation_mismatch
    42P22indeterminate_collation
    42809wrong_object_type
    428C9generated_always
    42703undefined_column
    42883undefined_function
    42P01undefined_table
    42P02undefined_parameter
    42704undefined_object
    42701duplicate_column
    42P03duplicate_cursor
    42P04duplicate_database
    42723duplicate_function
    42P05duplicate_prepared_statement
    42P06duplicate_schema
    42P07duplicate_table
    42712duplicate_alias
    42710duplicate_object
    42702ambiguous_column
    42725ambiguous_function
    42P08ambiguous_parameter
    42P09ambiguous_alias
    42P10invalid_column_reference
    42611invalid_column_definition
    42P11invalid_cursor_definition
    42P12invalid_database_definition
    42P13invalid_function_definition
    42P14invalid_prepared_statement_definition
    42P15invalid_schema_definition
    42P16invalid_table_definition
    42P17invalid_object_definition
    Class 44 — WITH CHECK OPTION Violation
    44000with_check_option_violation
    Class 53 — Insufficient Resources
    53000insufficient_resources
    53100disk_full
    53200out_of_memory
    53300too_many_connections
    53400configuration_limit_exceeded
    Class 54 — Program Limit Exceeded
    54000program_limit_exceeded
    54001statement_too_complex
    54011too_many_columns
    54023too_many_arguments
    Class 55 — Object Not In Prerequisite State
    55000object_not_in_prerequisite_state
    55006object_in_use
    55P02cant_change_runtime_param
    55P03lock_not_available
    Class 57 — Operator Intervention
    57000operator_intervention
    57014query_canceled
    57P01admin_shutdown
    57P02crash_shutdown
    57P03cannot_connect_now
    57P04database_dropped
    Class 58 — System Error (errors external to PostgreSQL itself)
    58000system_error
    58030io_error
    58P01undefined_file
    58P02duplicate_file
    Class 72 — Snapshot Failure
    72000snapshot_too_old
    Class F0 — Configuration File Error
    F0000config_file_error
    F0001lock_file_exists
    Class HV — Foreign Data Wrapper Error (SQL/MED)
    HV000fdw_error
    HV005fdw_column_name_not_found
    HV002fdw_dynamic_parameter_value_needed
    HV010fdw_function_sequence_error
    HV021fdw_inconsistent_descriptor_information
    HV024fdw_invalid_attribute_value
    HV007fdw_invalid_column_name
    HV008fdw_invalid_column_number
    HV004fdw_invalid_data_type
    HV006fdw_invalid_data_type_descriptors
    HV091fdw_invalid_descriptor_field_identifier
    HV00Bfdw_invalid_handle
    HV00Cfdw_invalid_option_index
    HV00Dfdw_invalid_option_name
    HV090fdw_invalid_string_length_or_buffer_length
    HV00Afdw_invalid_string_format
    HV009fdw_invalid_use_of_null_pointer
    HV014fdw_too_many_handles
    HV001fdw_out_of_memory
    HV00Pfdw_no_schemas
    HV00Jfdw_option_name_not_found
    HV00Kfdw_reply_handle
    HV00Qfdw_schema_not_found
    HV00Rfdw_table_not_found
    HV00Lfdw_unable_to_create_execution
    HV00Mfdw_unable_to_create_reply
    HV00Nfdw_unable_to_establish_connection
    Class P0 — PL/pgSQL Error
    P0000plpgsql_error
    P0001raise_exception
    P0002no_data_found
    P0003too_many_rows
    P0004assert_failure
    Class XX — Internal Error
    XX000internal_error
    XX001data_corrupted
    XX002index_corrupted

    \ No newline at end of file +

    Table A.1. PostgreSQL Error Codes

    Error CodeCondition Name
    Class 00 — Successful Completion
    00000successful_completion
    Class 01 — Warning
    01000warning
    0100Cdynamic_result_sets_returned
    01008implicit_zero_bit_padding
    01003null_value_eliminated_in_set_function
    01007privilege_not_granted
    01006privilege_not_revoked
    01004string_data_right_truncation
    01P01deprecated_feature
    Class 02 — No Data (this is also a warning class per the SQL standard)
    02000no_data
    02001no_additional_dynamic_result_sets_returned
    Class 03 — SQL Statement Not Yet Complete
    03000sql_statement_not_yet_complete
    Class 08 — Connection Exception
    08000connection_exception
    08003connection_does_not_exist
    08006connection_failure
    08001sqlclient_unable_to_establish_sqlconnection
    08004sqlserver_rejected_establishment_of_sqlconnection
    08007transaction_resolution_unknown
    08P01protocol_violation
    Class 09 — Triggered Action Exception
    09000triggered_action_exception
    Class 0A — Feature Not Supported
    0A000feature_not_supported
    Class 0B — Invalid Transaction Initiation
    0B000invalid_transaction_initiation
    Class 0F — Locator Exception
    0F000locator_exception
    0F001invalid_locator_specification
    Class 0L — Invalid Grantor
    0L000invalid_grantor
    0LP01invalid_grant_operation
    Class 0P — Invalid Role Specification
    0P000invalid_role_specification
    Class 0Z — Diagnostics Exception
    0Z000diagnostics_exception
    0Z002stacked_diagnostics_accessed_without_active_handler
    Class 20 — Case Not Found
    20000case_not_found
    Class 21 — Cardinality Violation
    21000cardinality_violation
    Class 22 — Data Exception
    22000data_exception
    2202Earray_subscript_error
    22021character_not_in_repertoire
    22008datetime_field_overflow
    22012division_by_zero
    22005error_in_assignment
    2200Bescape_character_conflict
    22022indicator_overflow
    22015interval_field_overflow
    2201Einvalid_argument_for_logarithm
    22014invalid_argument_for_ntile_function
    22016invalid_argument_for_nth_value_function
    2201Finvalid_argument_for_power_function
    2201Ginvalid_argument_for_width_bucket_function
    22018invalid_character_value_for_cast
    22007invalid_datetime_format
    22019invalid_escape_character
    2200Dinvalid_escape_octet
    22025invalid_escape_sequence
    22P06nonstandard_use_of_escape_character
    22010invalid_indicator_parameter_value
    22023invalid_parameter_value
    2201Binvalid_regular_expression
    2201Winvalid_row_count_in_limit_clause
    2201Xinvalid_row_count_in_result_offset_clause
    2202Hinvalid_tablesample_argument
    2202Ginvalid_tablesample_repeat
    22009invalid_time_zone_displacement_value
    2200Cinvalid_use_of_escape_character
    2200Gmost_specific_type_mismatch
    22004null_value_not_allowed
    22002null_value_no_indicator_parameter
    22003numeric_value_out_of_range
    2200Hsequence_generator_limit_exceeded
    22026string_data_length_mismatch
    22001string_data_right_truncation
    22011substring_error
    22027trim_error
    22024unterminated_c_string
    2200Fzero_length_character_string
    22P01floating_point_exception
    22P02invalid_text_representation
    22P03invalid_binary_representation
    22P04bad_copy_file_format
    22P05untranslatable_character
    2200Lnot_an_xml_document
    2200Minvalid_xml_document
    2200Ninvalid_xml_content
    2200Sinvalid_xml_comment
    2200Tinvalid_xml_processing_instruction
    Class 23 — Integrity Constraint Violation
    23000integrity_constraint_violation
    23001restrict_violation
    23502not_null_violation
    23503foreign_key_violation
    23505unique_violation
    23514check_violation
    23P01exclusion_violation
    Class 24 — Invalid Cursor State
    24000invalid_cursor_state
    Class 25 — Invalid Transaction State
    25000invalid_transaction_state
    25001active_sql_transaction
    25002branch_transaction_already_active
    25008held_cursor_requires_same_isolation_level
    25003inappropriate_access_mode_for_branch_transaction
    25004inappropriate_isolation_level_for_branch_transaction
    25005no_active_sql_transaction_for_branch_transaction
    25006read_only_sql_transaction
    25007schema_and_data_statement_mixing_not_supported
    25P01no_active_sql_transaction
    25P02in_failed_sql_transaction
    25P03idle_in_transaction_session_timeout
    Class 26 — Invalid SQL Statement Name
    26000invalid_sql_statement_name
    Class 27 — Triggered Data Change Violation
    27000triggered_data_change_violation
    Class 28 — Invalid Authorization Specification
    28000invalid_authorization_specification
    28P01invalid_password
    Class 2B — Dependent Privilege Descriptors Still Exist
    2B000dependent_privilege_descriptors_still_exist
    2BP01dependent_objects_still_exist
    Class 2D — Invalid Transaction Termination
    2D000invalid_transaction_termination
    Class 2F — SQL Routine Exception
    2F000sql_routine_exception
    2F005function_executed_no_return_statement
    2F002modifying_sql_data_not_permitted
    2F003prohibited_sql_statement_attempted
    2F004reading_sql_data_not_permitted
    Class 34 — Invalid Cursor Name
    34000invalid_cursor_name
    Class 38 — External Routine Exception
    38000external_routine_exception
    38001containing_sql_not_permitted
    38002modifying_sql_data_not_permitted
    38003prohibited_sql_statement_attempted
    38004reading_sql_data_not_permitted
    Class 39 — External Routine Invocation Exception
    39000external_routine_invocation_exception
    39001invalid_sqlstate_returned
    39004null_value_not_allowed
    39P01trigger_protocol_violated
    39P02srf_protocol_violated
    39P03event_trigger_protocol_violated
    Class 3B — Savepoint Exception
    3B000savepoint_exception
    3B001invalid_savepoint_specification
    Class 3D — Invalid Catalog Name
    3D000invalid_catalog_name
    Class 3F — Invalid Schema Name
    3F000invalid_schema_name
    Class 40 — Transaction Rollback
    40000transaction_rollback
    40002transaction_integrity_constraint_violation
    40001serialization_failure
    40003statement_completion_unknown
    40P01deadlock_detected
    Class 42 — Syntax Error or Access Rule Violation
    42000syntax_error_or_access_rule_violation
    42601syntax_error
    42501insufficient_privilege
    42846cannot_coerce
    42803grouping_error
    42P20windowing_error
    42P19invalid_recursion
    42830invalid_foreign_key
    42602invalid_name
    42622name_too_long
    42939reserved_name
    42804datatype_mismatch
    42P18indeterminate_datatype
    42P21collation_mismatch
    42P22indeterminate_collation
    42809wrong_object_type
    428C9generated_always
    42703undefined_column
    42883undefined_function
    42P01undefined_table
    42P02undefined_parameter
    42704undefined_object
    42701duplicate_column
    42P03duplicate_cursor
    42P04duplicate_database
    42723duplicate_function
    42P05duplicate_prepared_statement
    42P06duplicate_schema
    42P07duplicate_table
    42712duplicate_alias
    42710duplicate_object
    42702ambiguous_column
    42725ambiguous_function
    42P08ambiguous_parameter
    42P09ambiguous_alias
    42P10invalid_column_reference
    42611invalid_column_definition
    42P11invalid_cursor_definition
    42P12invalid_database_definition
    42P13invalid_function_definition
    42P14invalid_prepared_statement_definition
    42P15invalid_schema_definition
    42P16invalid_table_definition
    42P17invalid_object_definition
    Class 44 — WITH CHECK OPTION Violation
    44000with_check_option_violation
    Class 53 — Insufficient Resources
    53000insufficient_resources
    53100disk_full
    53200out_of_memory
    53300too_many_connections
    53400configuration_limit_exceeded
    Class 54 — Program Limit Exceeded
    54000program_limit_exceeded
    54001statement_too_complex
    54011too_many_columns
    54023too_many_arguments
    Class 55 — Object Not In Prerequisite State
    55000object_not_in_prerequisite_state
    55006object_in_use
    55P02cant_change_runtime_param
    55P03lock_not_available
    Class 57 — Operator Intervention
    57000operator_intervention
    57014query_canceled
    57P01admin_shutdown
    57P02crash_shutdown
    57P03cannot_connect_now
    57P04database_dropped
    Class 58 — System Error (errors external to PostgreSQL itself)
    58000system_error
    58030io_error
    58P01undefined_file
    58P02duplicate_file
    Class 72 — Snapshot Failure
    72000snapshot_too_old
    Class F0 — Configuration File Error
    F0000config_file_error
    F0001lock_file_exists
    Class HV — Foreign Data Wrapper Error (SQL/MED)
    HV000fdw_error
    HV005fdw_column_name_not_found
    HV002fdw_dynamic_parameter_value_needed
    HV010fdw_function_sequence_error
    HV021fdw_inconsistent_descriptor_information
    HV024fdw_invalid_attribute_value
    HV007fdw_invalid_column_name
    HV008fdw_invalid_column_number
    HV004fdw_invalid_data_type
    HV006fdw_invalid_data_type_descriptors
    HV091fdw_invalid_descriptor_field_identifier
    HV00Bfdw_invalid_handle
    HV00Cfdw_invalid_option_index
    HV00Dfdw_invalid_option_name
    HV090fdw_invalid_string_length_or_buffer_length
    HV00Afdw_invalid_string_format
    HV009fdw_invalid_use_of_null_pointer
    HV014fdw_too_many_handles
    HV001fdw_out_of_memory
    HV00Pfdw_no_schemas
    HV00Jfdw_option_name_not_found
    HV00Kfdw_reply_handle
    HV00Qfdw_schema_not_found
    HV00Rfdw_table_not_found
    HV00Lfdw_unable_to_create_execution
    HV00Mfdw_unable_to_create_reply
    HV00Nfdw_unable_to_establish_connection
    Class P0 — PL/pgSQL Error
    P0000plpgsql_error
    P0001raise_exception
    P0002no_data_found
    P0003too_many_rows
    P0004assert_failure
    Class XX — Internal Error
    XX000internal_error
    XX001data_corrupted
    XX002index_corrupted

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/error-message-reporting.html postgresql-10-10.19/doc/src/sgml/html/error-message-reporting.html --- postgresql-10-10.17/doc/src/sgml/html/error-message-reporting.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/error-message-reporting.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -53.2. Reporting Errors Within the Server

    53.2. Reporting Errors Within the Server

    Error, warning, and log messages generated within the server code +53.2. Reporting Errors Within the Server

    53.2. Reporting Errors Within the Server

    Error, warning, and log messages generated within the server code should be created using ereport, or its older cousin elog. The use of this function is complex enough to require some explanation. @@ -191,4 +191,4 @@ routines will not affect it. That would not be true if you were to write strerror(errno) explicitly in errmsg's parameter list; accordingly, do not do so. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/error-style-guide.html postgresql-10-10.19/doc/src/sgml/html/error-style-guide.html --- postgresql-10-10.17/doc/src/sgml/html/error-style-guide.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/error-style-guide.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -53.3. Error Message Style Guide

    53.3. Error Message Style Guide

    This style guide is offered in the hope of maintaining a consistent, +53.3. Error Message Style Guide

    53.3. Error Message Style Guide

    This style guide is offered in the hope of maintaining a consistent, user-friendly style throughout all the messages generated by PostgreSQL.

    What Goes Where

    The primary message should be short, factual, and avoid reference to @@ -164,6 +164,10 @@ translation.

    Contractions.  Avoid contractions, like can't; use cannot instead. +

    Non-negative.  Avoid non-negative as it is ambiguous + about whether it accepts zero. It's better to use + greater than zero or + greater than or equal to zero.

    Proper Spelling

    Spell out words in full. For instance, avoid:

    • spec

    • stats @@ -175,4 +179,4 @@

    Localization

    Keep in mind that error message texts need to be translated into other languages. Follow the guidelines in Section 54.2.2 to avoid making life difficult for translators. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/event-log-registration.html postgresql-10-10.19/doc/src/sgml/html/event-log-registration.html --- postgresql-10-10.17/doc/src/sgml/html/event-log-registration.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/event-log-registration.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.11. Registering Event Log on Windows

    18.11. Registering Event Log on Windows

    To register a Windows +18.11. Registering Event Log on Windows

    18.11. Registering Event Log on Windows

    To register a Windows event log library with the operating system, issue this command:

    regsvr32 pgsql_library_directory/pgevent.dll

    @@ -15,4 +15,4 @@

    Note

    To enable event logging in the database server, modify log_destination to include eventlog in postgresql.conf. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/event-trigger-definition.html postgresql-10-10.19/doc/src/sgml/html/event-trigger-definition.html --- postgresql-10-10.17/doc/src/sgml/html/event-trigger-definition.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/event-trigger-definition.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -39.1. Overview of Event Trigger Behavior

    39.1. Overview of Event Trigger Behavior

    An event trigger fires whenever the event with which it is associated +39.1. Overview of Event Trigger Behavior

    39.1. Overview of Event Trigger Behavior

    An event trigger fires whenever the event with which it is associated occurs in the database in which it is defined. Currently, the only supported events are ddl_command_start, @@ -65,4 +65,4 @@ trigger can be fired only for particular commands which the user wishes to intercept. A common use of such triggers is to restrict the range of DDL operations which users may perform. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/event-trigger-example.html postgresql-10-10.19/doc/src/sgml/html/event-trigger-example.html --- postgresql-10-10.17/doc/src/sgml/html/event-trigger-example.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/event-trigger-example.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -39.4. A Complete Event Trigger Example

    39.4. A Complete Event Trigger Example

    Here is a very simple example of an event trigger function written in C. +39.4. A Complete Event Trigger Example

    39.4. A Complete Event Trigger Example

    Here is a very simple example of an event trigger function written in C. (Examples of triggers written in procedural languages can be found in the documentation of the procedural languages.)

    The function noddl raises an exception each time it is called. @@ -60,4 +60,4 @@ COMMIT;

    (Recall that DDL commands on event triggers themselves are not affected by event triggers.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/event-trigger-interface.html postgresql-10-10.19/doc/src/sgml/html/event-trigger-interface.html --- postgresql-10-10.17/doc/src/sgml/html/event-trigger-interface.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/event-trigger-interface.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -39.3. Writing Event Trigger Functions in C

    39.3. Writing Event Trigger Functions in C

    This section describes the low-level details of the interface to an +39.3. Writing Event Trigger Functions in C

    39.3. Writing Event Trigger Functions in C

    This section describes the low-level details of the interface to an event trigger function. This information is only needed when writing event trigger functions in C. If you are using a higher-level language then these details are handled for you. In most cases you should @@ -50,4 +50,4 @@

    An event trigger function must return a NULL pointer (not an SQL null value, that is, do not set isNull true). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/event-trigger-matrix.html postgresql-10-10.19/doc/src/sgml/html/event-trigger-matrix.html --- postgresql-10-10.17/doc/src/sgml/html/event-trigger-matrix.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/event-trigger-matrix.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,4 +1,4 @@ -39.2. Event Trigger Firing Matrix

    39.2. Event Trigger Firing Matrix

    Table 39.1 lists all commands +39.2. Event Trigger Firing Matrix

    39.2. Event Trigger Firing Matrix

    Table 39.1 lists all commands for which event triggers are supported. -

    Table 39.1. Event Trigger Support by Command Tag

    Command Tagddl_command_startddl_command_endsql_droptable_rewriteNotes
    ALTER AGGREGATEXX-- 
    ALTER COLLATIONXX-- 
    ALTER CONVERSIONXX-- 
    ALTER DOMAINXX-- 
    ALTER DEFAULT PRIVILEGESXX-- 
    ALTER EXTENSIONXX-- 
    ALTER FOREIGN DATA WRAPPERXX-- 
    ALTER FOREIGN TABLEXXX- 
    ALTER FUNCTIONXX-- 
    ALTER LANGUAGEXX-- 
    ALTER LARGE OBJECTXX-- 
    ALTER MATERIALIZED VIEWXX-- 
    ALTER OPERATORXX-- 
    ALTER OPERATOR CLASSXX-- 
    ALTER OPERATOR FAMILYXX-- 
    ALTER POLICYXX-- 
    ALTER PUBLICATIONXX-- 
    ALTER SCHEMAXX-- 
    ALTER SEQUENCEXX-- 
    ALTER SERVERXX-- 
    ALTER STATISTICSXX-- 
    ALTER SUBSCRIPTIONXX-- 
    ALTER TABLEXXXX 
    ALTER TEXT SEARCH CONFIGURATIONXX-- 
    ALTER TEXT SEARCH DICTIONARYXX-- 
    ALTER TEXT SEARCH PARSERXX-- 
    ALTER TEXT SEARCH TEMPLATEXX-- 
    ALTER TRIGGERXX-- 
    ALTER TYPEXX-X 
    ALTER USER MAPPINGXX-- 
    ALTER VIEWXX-- 
    COMMENTXX--Only for local objects
    CREATE ACCESS METHODXX-- 
    CREATE AGGREGATEXX-- 
    CREATE CASTXX-- 
    CREATE COLLATIONXX-- 
    CREATE CONVERSIONXX-- 
    CREATE DOMAINXX-- 
    CREATE EXTENSIONXX-- 
    CREATE FOREIGN DATA WRAPPERXX-- 
    CREATE FOREIGN TABLEXX-- 
    CREATE FUNCTIONXX-- 
    CREATE INDEXXX-- 
    CREATE LANGUAGEXX-- 
    CREATE MATERIALIZED VIEWXX-- 
    CREATE OPERATORXX-- 
    CREATE OPERATOR CLASSXX-- 
    CREATE OPERATOR FAMILYXX-- 
    CREATE POLICYXX-- 
    CREATE PUBLICATIONXX-- 
    CREATE RULEXX-- 
    CREATE SCHEMAXX-- 
    CREATE SEQUENCEXX-- 
    CREATE SERVERXX-- 
    CREATE STATISTICSXX-- 
    CREATE SUBSCRIPTIONXX-- 
    CREATE TABLEXX-- 
    CREATE TABLE ASXX-- 
    CREATE TEXT SEARCH CONFIGURATIONXX-- 
    CREATE TEXT SEARCH DICTIONARYXX-- 
    CREATE TEXT SEARCH PARSERXX-- 
    CREATE TEXT SEARCH TEMPLATEXX-- 
    CREATE TRIGGERXX-- 
    CREATE TYPEXX-- 
    CREATE USER MAPPINGXX-- 
    CREATE VIEWXX-- 
    DROP ACCESS METHODXXX- 
    DROP AGGREGATEXXX- 
    DROP CASTXXX- 
    DROP COLLATIONXXX- 
    DROP CONVERSIONXXX- 
    DROP DOMAINXXX- 
    DROP EXTENSIONXXX- 
    DROP FOREIGN DATA WRAPPERXXX- 
    DROP FOREIGN TABLEXXX- 
    DROP FUNCTIONXXX- 
    DROP INDEXXXX- 
    DROP LANGUAGEXXX- 
    DROP MATERIALIZED VIEWXXX- 
    DROP OPERATORXXX- 
    DROP OPERATOR CLASSXXX- 
    DROP OPERATOR FAMILYXXX- 
    DROP OWNEDXXX- 
    DROP POLICYXXX- 
    DROP PUBLICATIONXXX- 
    DROP RULEXXX- 
    DROP SCHEMAXXX- 
    DROP SEQUENCEXXX- 
    DROP SERVERXXX- 
    DROP STATISTICSXXX- 
    DROP SUBSCRIPTIONXXX- 
    DROP TABLEXXX- 
    DROP TEXT SEARCH CONFIGURATIONXXX- 
    DROP TEXT SEARCH DICTIONARYXXX- 
    DROP TEXT SEARCH PARSERXXX- 
    DROP TEXT SEARCH TEMPLATEXXX- 
    DROP TRIGGERXXX- 
    DROP TYPEXXX- 
    DROP USER MAPPINGXXX- 
    DROP VIEWXXX- 
    GRANTXX--Only for local objects
    IMPORT FOREIGN SCHEMAXX-- 
    REFRESH MATERIALIZED VIEWXX-- 
    REVOKEXX--Only for local objects
    SECURITY LABELXX--Only for local objects
    SELECT INTOXX-- 

    \ No newline at end of file +

    Table 39.1. Event Trigger Support by Command Tag

    Command Tagddl_command_startddl_command_endsql_droptable_rewriteNotes
    ALTER AGGREGATEXX-- 
    ALTER COLLATIONXX-- 
    ALTER CONVERSIONXX-- 
    ALTER DOMAINXX-- 
    ALTER DEFAULT PRIVILEGESXX-- 
    ALTER EXTENSIONXX-- 
    ALTER FOREIGN DATA WRAPPERXX-- 
    ALTER FOREIGN TABLEXXX- 
    ALTER FUNCTIONXX-- 
    ALTER LANGUAGEXX-- 
    ALTER LARGE OBJECTXX-- 
    ALTER MATERIALIZED VIEWXX-- 
    ALTER OPERATORXX-- 
    ALTER OPERATOR CLASSXX-- 
    ALTER OPERATOR FAMILYXX-- 
    ALTER POLICYXX-- 
    ALTER PUBLICATIONXX-- 
    ALTER SCHEMAXX-- 
    ALTER SEQUENCEXX-- 
    ALTER SERVERXX-- 
    ALTER STATISTICSXX-- 
    ALTER SUBSCRIPTIONXX-- 
    ALTER TABLEXXXX 
    ALTER TEXT SEARCH CONFIGURATIONXX-- 
    ALTER TEXT SEARCH DICTIONARYXX-- 
    ALTER TEXT SEARCH PARSERXX-- 
    ALTER TEXT SEARCH TEMPLATEXX-- 
    ALTER TRIGGERXX-- 
    ALTER TYPEXX-X 
    ALTER USER MAPPINGXX-- 
    ALTER VIEWXX-- 
    COMMENTXX--Only for local objects
    CREATE ACCESS METHODXX-- 
    CREATE AGGREGATEXX-- 
    CREATE CASTXX-- 
    CREATE COLLATIONXX-- 
    CREATE CONVERSIONXX-- 
    CREATE DOMAINXX-- 
    CREATE EXTENSIONXX-- 
    CREATE FOREIGN DATA WRAPPERXX-- 
    CREATE FOREIGN TABLEXX-- 
    CREATE FUNCTIONXX-- 
    CREATE INDEXXX-- 
    CREATE LANGUAGEXX-- 
    CREATE MATERIALIZED VIEWXX-- 
    CREATE OPERATORXX-- 
    CREATE OPERATOR CLASSXX-- 
    CREATE OPERATOR FAMILYXX-- 
    CREATE POLICYXX-- 
    CREATE PUBLICATIONXX-- 
    CREATE RULEXX-- 
    CREATE SCHEMAXX-- 
    CREATE SEQUENCEXX-- 
    CREATE SERVERXX-- 
    CREATE STATISTICSXX-- 
    CREATE SUBSCRIPTIONXX-- 
    CREATE TABLEXX-- 
    CREATE TABLE ASXX-- 
    CREATE TEXT SEARCH CONFIGURATIONXX-- 
    CREATE TEXT SEARCH DICTIONARYXX-- 
    CREATE TEXT SEARCH PARSERXX-- 
    CREATE TEXT SEARCH TEMPLATEXX-- 
    CREATE TRIGGERXX-- 
    CREATE TYPEXX-- 
    CREATE USER MAPPINGXX-- 
    CREATE VIEWXX-- 
    DROP ACCESS METHODXXX- 
    DROP AGGREGATEXXX- 
    DROP CASTXXX- 
    DROP COLLATIONXXX- 
    DROP CONVERSIONXXX- 
    DROP DOMAINXXX- 
    DROP EXTENSIONXXX- 
    DROP FOREIGN DATA WRAPPERXXX- 
    DROP FOREIGN TABLEXXX- 
    DROP FUNCTIONXXX- 
    DROP INDEXXXX- 
    DROP LANGUAGEXXX- 
    DROP MATERIALIZED VIEWXXX- 
    DROP OPERATORXXX- 
    DROP OPERATOR CLASSXXX- 
    DROP OPERATOR FAMILYXXX- 
    DROP OWNEDXXX- 
    DROP POLICYXXX- 
    DROP PUBLICATIONXXX- 
    DROP RULEXXX- 
    DROP SCHEMAXXX- 
    DROP SEQUENCEXXX- 
    DROP SERVERXXX- 
    DROP STATISTICSXXX- 
    DROP SUBSCRIPTIONXXX- 
    DROP TABLEXXX- 
    DROP TEXT SEARCH CONFIGURATIONXXX- 
    DROP TEXT SEARCH DICTIONARYXXX- 
    DROP TEXT SEARCH PARSERXXX- 
    DROP TEXT SEARCH TEMPLATEXXX- 
    DROP TRIGGERXXX- 
    DROP TYPEXXX- 
    DROP USER MAPPINGXXX- 
    DROP VIEWXXX- 
    GRANTXX--Only for local objects
    IMPORT FOREIGN SCHEMAXX-- 
    REFRESH MATERIALIZED VIEWXX-- 
    REVOKEXX--Only for local objects
    SECURITY LABELXX--Only for local objects
    SELECT INTOXX-- 

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/event-triggers.html postgresql-10-10.19/doc/src/sgml/html/event-triggers.html --- postgresql-10-10.17/doc/src/sgml/html/event-triggers.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/event-triggers.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 39. Event Triggers

    Chapter 39. Event Triggers

    To supplement the trigger mechanism discussed in Chapter 38, +Chapter 39. Event Triggers

    Chapter 39. Event Triggers

    To supplement the trigger mechanism discussed in Chapter 38, PostgreSQL also provides event triggers. Unlike regular triggers, which are attached to a single table and capture only DML events, event triggers are global to a particular database and are capable of @@ -7,4 +7,4 @@

    Like regular triggers, event triggers can be written in any procedural language that includes event trigger support, or in C, but not in plain SQL. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/event-trigger-table-rewrite-example.html postgresql-10-10.19/doc/src/sgml/html/event-trigger-table-rewrite-example.html --- postgresql-10-10.17/doc/src/sgml/html/event-trigger-table-rewrite-example.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/event-trigger-table-rewrite-example.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -39.5. A Table Rewrite Event Trigger Example

    39.5. A Table Rewrite Event Trigger Example

    Thanks to the table_rewrite event, it is possible to implement +39.5. A Table Rewrite Event Trigger Example

    39.5. A Table Rewrite Event Trigger Example

    Thanks to the table_rewrite event, it is possible to implement a table rewriting policy only allowing the rewrite in maintenance windows.

    Here's an example implementing such a policy.

    CREATE OR REPLACE FUNCTION no_rewrite()
    @@ -41,4 +41,4 @@
     CREATE EVENT TRIGGER no_rewrite_allowed
                       ON table_rewrite
        EXECUTE PROCEDURE no_rewrite();

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/executor.html postgresql-10-10.19/doc/src/sgml/html/executor.html --- postgresql-10-10.17/doc/src/sgml/html/executor.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/executor.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -50.6. Executor

    50.6. Executor

    The executor takes the plan created by the +50.6. Executor

    50.6. Executor

    The executor takes the plan created by the planner/optimizer and recursively processes it to extract the required set of rows. This is essentially a demand-pull pipeline mechanism. Each time a plan node is called, it must deliver one more row, or @@ -60,4 +60,4 @@ trivial plan tree consisting of a single Result node, which computes just one result row, feeding that up toModifyTable to perform the insertion. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/explicit-joins.html postgresql-10-10.19/doc/src/sgml/html/explicit-joins.html --- postgresql-10-10.17/doc/src/sgml/html/explicit-joins.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/explicit-joins.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -14.3. Controlling the Planner with Explicit JOIN Clauses

    14.3. Controlling the Planner with Explicit JOIN Clauses

    It is possible +14.3. Controlling the Planner with Explicit JOIN Clauses

    14.3. Controlling the Planner with Explicit JOIN Clauses

    It is possible to control the query planner to some extent by using the explicit JOIN syntax. To see why this matters, we first need some background.

    In a simple join query, such as: @@ -116,4 +116,4 @@ to control join order with explicit joins). But you might set them differently if you are trying to fine-tune the trade-off between planning time and run time. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/explicit-locking.html postgresql-10-10.19/doc/src/sgml/html/explicit-locking.html --- postgresql-10-10.17/doc/src/sgml/html/explicit-locking.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/explicit-locking.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -13.3. Explicit Locking

    13.3. Explicit Locking

    PostgreSQL provides various lock modes +13.3. Explicit Locking

    13.3. Explicit Locking

    PostgreSQL provides various lock modes to control concurrent access to data in tables. These modes can be used for application-controlled locking in situations where MVCC does not give the desired behavior. Also, @@ -331,4 +331,4 @@ pg_locks.

    The functions provided to manipulate advisory locks are described in Section 9.26.10. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/extend-extensions.html postgresql-10-10.19/doc/src/sgml/html/extend-extensions.html --- postgresql-10-10.17/doc/src/sgml/html/extend-extensions.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/extend-extensions.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.15. Packaging Related Objects into an Extension

    37.15. Packaging Related Objects into an Extension

    A useful extension to PostgreSQL typically includes +37.15. Packaging Related Objects into an Extension

    37.15. Packaging Related Objects into an Extension

    A useful extension to PostgreSQL typically includes multiple SQL objects; for example, a new data type will require new functions, new operators, and probably new index operator classes. It is helpful to collect all these objects into a single package @@ -531,4 +531,4 @@

    Once the files are installed, use the CREATE EXTENSION command to load the objects into any particular database. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/extend-how.html postgresql-10-10.19/doc/src/sgml/html/extend-how.html --- postgresql-10-10.17/doc/src/sgml/html/extend-how.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/extend-how.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.1. How Extensibility Works

    37.1. How Extensibility Works

    PostgreSQL is extensible because its operation is +37.1. How Extensibility Works

    37.1. How Extensibility Works

    PostgreSQL is extensible because its operation is catalog-driven. If you are familiar with standard relational database systems, you know that they store information about databases, tables, columns, etc., in what are @@ -28,4 +28,4 @@ fly” makes PostgreSQL uniquely suited for rapid prototyping of new applications and storage structures. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/extend.html postgresql-10-10.19/doc/src/sgml/html/extend.html --- postgresql-10-10.17/doc/src/sgml/html/extend.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/extend.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 37. Extending SQL

    Chapter 37. Extending SQL

    Table of Contents

    37.1. How Extensibility Works
    37.2. The PostgreSQL Type System
    37.2.1. Base Types
    37.2.2. Composite Types
    37.2.3. Domains
    37.2.4. Pseudo-Types
    37.2.5. Polymorphic Types
    37.3. User-defined Functions
    37.4. Query Language (SQL) Functions
    37.4.1. Arguments for SQL Functions
    37.4.2. SQL Functions on Base Types
    37.4.3. SQL Functions on Composite Types
    37.4.4. SQL Functions with Output Parameters
    37.4.5. SQL Functions with Variable Numbers of Arguments
    37.4.6. SQL Functions with Default Values for Arguments
    37.4.7. SQL Functions as Table Sources
    37.4.8. SQL Functions Returning Sets
    37.4.9. SQL Functions Returning TABLE
    37.4.10. Polymorphic SQL Functions
    37.4.11. SQL Functions with Collations
    37.5. Function Overloading
    37.6. Function Volatility Categories
    37.7. Procedural Language Functions
    37.8. Internal Functions
    37.9. C-Language Functions
    37.9.1. Dynamic Loading
    37.9.2. Base Types in C-Language Functions
    37.9.3. Version 1 Calling Conventions
    37.9.4. Writing Code
    37.9.5. Compiling and Linking Dynamically-loaded Functions
    37.9.6. Composite-type Arguments
    37.9.7. Returning Rows (Composite Types)
    37.9.8. Returning Sets
    37.9.9. Polymorphic Arguments and Return Types
    37.9.10. Transform Functions
    37.9.11. Shared Memory and LWLocks
    37.9.12. Using C++ for Extensibility
    37.10. User-defined Aggregates
    37.10.1. Moving-Aggregate Mode
    37.10.2. Polymorphic and Variadic Aggregates
    37.10.3. Ordered-Set Aggregates
    37.10.4. Partial Aggregation
    37.10.5. Support Functions for Aggregates
    37.11. User-defined Types
    37.11.1. TOAST Considerations
    37.12. User-defined Operators
    37.13. Operator Optimization Information
    37.13.1. COMMUTATOR
    37.13.2. NEGATOR
    37.13.3. RESTRICT
    37.13.4. JOIN
    37.13.5. HASHES
    37.13.6. MERGES
    37.14. Interfacing Extensions To Indexes
    37.14.1. Index Methods and Operator Classes
    37.14.2. Index Method Strategies
    37.14.3. Index Method Support Routines
    37.14.4. An Example
    37.14.5. Operator Classes and Operator Families
    37.14.6. System Dependencies on Operator Classes
    37.14.7. Ordering Operators
    37.14.8. Special Features of Operator Classes
    37.15. Packaging Related Objects into an Extension
    37.15.1. Extension Files
    37.15.2. Extension Relocatability
    37.15.3. Extension Configuration Tables
    37.15.4. Extension Updates
    37.15.5. Installing Extensions using Update Scripts
    37.15.6. Security Considerations for Extensions
    37.15.7. Extension Example
    37.16. Extension Building Infrastructure

    In the sections that follow, we will discuss how you +Chapter 37. Extending SQL

    Chapter 37. Extending SQL

    Table of Contents

    37.1. How Extensibility Works
    37.2. The PostgreSQL Type System
    37.2.1. Base Types
    37.2.2. Composite Types
    37.2.3. Domains
    37.2.4. Pseudo-Types
    37.2.5. Polymorphic Types
    37.3. User-defined Functions
    37.4. Query Language (SQL) Functions
    37.4.1. Arguments for SQL Functions
    37.4.2. SQL Functions on Base Types
    37.4.3. SQL Functions on Composite Types
    37.4.4. SQL Functions with Output Parameters
    37.4.5. SQL Functions with Variable Numbers of Arguments
    37.4.6. SQL Functions with Default Values for Arguments
    37.4.7. SQL Functions as Table Sources
    37.4.8. SQL Functions Returning Sets
    37.4.9. SQL Functions Returning TABLE
    37.4.10. Polymorphic SQL Functions
    37.4.11. SQL Functions with Collations
    37.5. Function Overloading
    37.6. Function Volatility Categories
    37.7. Procedural Language Functions
    37.8. Internal Functions
    37.9. C-Language Functions
    37.9.1. Dynamic Loading
    37.9.2. Base Types in C-Language Functions
    37.9.3. Version 1 Calling Conventions
    37.9.4. Writing Code
    37.9.5. Compiling and Linking Dynamically-loaded Functions
    37.9.6. Composite-type Arguments
    37.9.7. Returning Rows (Composite Types)
    37.9.8. Returning Sets
    37.9.9. Polymorphic Arguments and Return Types
    37.9.10. Transform Functions
    37.9.11. Shared Memory and LWLocks
    37.9.12. Using C++ for Extensibility
    37.10. User-defined Aggregates
    37.10.1. Moving-Aggregate Mode
    37.10.2. Polymorphic and Variadic Aggregates
    37.10.3. Ordered-Set Aggregates
    37.10.4. Partial Aggregation
    37.10.5. Support Functions for Aggregates
    37.11. User-defined Types
    37.11.1. TOAST Considerations
    37.12. User-defined Operators
    37.13. Operator Optimization Information
    37.13.1. COMMUTATOR
    37.13.2. NEGATOR
    37.13.3. RESTRICT
    37.13.4. JOIN
    37.13.5. HASHES
    37.13.6. MERGES
    37.14. Interfacing Extensions To Indexes
    37.14.1. Index Methods and Operator Classes
    37.14.2. Index Method Strategies
    37.14.3. Index Method Support Routines
    37.14.4. An Example
    37.14.5. Operator Classes and Operator Families
    37.14.6. System Dependencies on Operator Classes
    37.14.7. Ordering Operators
    37.14.8. Special Features of Operator Classes
    37.15. Packaging Related Objects into an Extension
    37.15.1. Extension Files
    37.15.2. Extension Relocatability
    37.15.3. Extension Configuration Tables
    37.15.4. Extension Updates
    37.15.5. Installing Extensions using Update Scripts
    37.15.6. Security Considerations for Extensions
    37.15.7. Extension Example
    37.16. Extension Building Infrastructure

    In the sections that follow, we will discuss how you can extend the PostgreSQL SQL query language by adding: @@ -10,4 +10,4 @@

  • operator classes for indexes (starting in Section 37.14)

  • packages of related objects (starting in Section 37.15)

  • -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/extend-pgxs.html postgresql-10-10.19/doc/src/sgml/html/extend-pgxs.html --- postgresql-10-10.17/doc/src/sgml/html/extend-pgxs.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/extend-pgxs.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.16. Extension Building Infrastructure

    37.16. Extension Building Infrastructure

    If you are thinking about distributing your +37.16. Extension Building Infrastructure

    37.16. Extension Building Infrastructure

    If you are thinking about distributing your PostgreSQL extension modules, setting up a portable build system for them can be fairly difficult. Therefore the PostgreSQL installation provides a build @@ -131,4 +131,4 @@ the actual result files found in the results/ directory, then copy them to expected/ if they match what you expect from the test. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/extend-type-system.html postgresql-10-10.19/doc/src/sgml/html/extend-type-system.html --- postgresql-10-10.17/doc/src/sgml/html/extend-type-system.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/extend-type-system.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.2. The PostgreSQL Type System

    37.2. The PostgreSQL Type System

    PostgreSQL data types are divided into base +37.2. The PostgreSQL Type System

    37.2. The PostgreSQL Type System

    PostgreSQL data types are divided into base types, composite types, domains, and pseudo-types.

    37.2.1. Base Types

    Base types are those, like int4, that are implemented below the level of the SQL language @@ -105,4 +105,4 @@ matching and determining the actual result type, such a function behaves the same as if you had written the appropriate number of anynonarray parameters. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/external-admin-tools.html postgresql-10-10.19/doc/src/sgml/html/external-admin-tools.html --- postgresql-10-10.17/doc/src/sgml/html/external-admin-tools.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/external-admin-tools.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,6 +1,6 @@ -H.2. Administration Tools

    H.2. Administration Tools

    There are several administration tools available for +H.2. Administration Tools

    H.2. Administration Tools

    There are several administration tools available for PostgreSQL. The most popular is pgAdmin, and there are several commercially available ones as well. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/external-extensions.html postgresql-10-10.19/doc/src/sgml/html/external-extensions.html --- postgresql-10-10.17/doc/src/sgml/html/external-extensions.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/external-extensions.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -H.4. Extensions

    H.4. Extensions

    PostgreSQL is designed to be easily extensible. For +H.4. Extensions

    H.4. Extensions

    PostgreSQL is designed to be easily extensible. For this reason, extensions loaded into the database can function just like features that are built in. The contrib/ directory shipped with the source code @@ -10,4 +10,4 @@ externally. For example, Slony-I is a popular master/standby replication solution that is developed independently from the core project. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/external-interfaces.html postgresql-10-10.19/doc/src/sgml/html/external-interfaces.html --- postgresql-10-10.17/doc/src/sgml/html/external-interfaces.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/external-interfaces.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -H.1. Client Interfaces

    H.1. Client Interfaces

    There are only two client interfaces included in the base +H.1. Client Interfaces

    H.1. Client Interfaces

    There are only two client interfaces included in the base PostgreSQL distribution:

    \ No newline at end of file +

    Table H.1. Externally Maintained Client Interfaces

    NameLanguageCommentsWebsite
    DBD::PgPerlPerl DBI driverhttps://metacpan.org/release/DBD-Pg/
    JDBCJavaType 4 JDBC driverhttps://jdbc.postgresql.org/
    libpqxxC++C++ interfacehttps://pqxx.org/
    node-postgresJavaScriptNode.js driverhttps://node-postgres.com/
    Npgsql.NET.NET data providerhttps://www.npgsql.org/
    pgtclTcl https://github.com/flightaware/Pgtcl
    pgtclngTcl http://sourceforge.net/projects/pgtclng/
    pqGoPure Go driver for Go's database/sqlhttps://github.com/lib/pq
    psqlODBCODBCODBC driverhttps://odbc.postgresql.org/
    psycopgPythonDB API 2.0-complianthttps://www.psycopg.org/

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/external-pl.html postgresql-10-10.19/doc/src/sgml/html/external-pl.html --- postgresql-10-10.17/doc/src/sgml/html/external-pl.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/external-pl.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -H.3. Procedural Languages

    H.3. Procedural Languages

    PostgreSQL includes several procedural +H.3. Procedural Languages

    H.3. Procedural Languages

    PostgreSQL includes several procedural languages with the base distribution: PL/pgSQL, PL/Tcl, PL/Perl, and PL/Python.

    In addition, there are a number of procedural languages that are developed @@ -9,4 +9,4 @@ license as PostgreSQL. For more information on each procedural language, including licensing information, refer to its website and documentation. -

    Table H.2. Externally Maintained Procedural Languages


    \ No newline at end of file +

    Table H.2. Externally Maintained Procedural Languages


    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/external-projects.html postgresql-10-10.19/doc/src/sgml/html/external-projects.html --- postgresql-10-10.17/doc/src/sgml/html/external-projects.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/external-projects.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,6 +1,6 @@ -Appendix H. External Projects

    Appendix H. External Projects

    PostgreSQL is a complex software project, +Appendix H. External Projects

    Appendix H. External Projects

    PostgreSQL is a complex software project, and managing the project is difficult. We have found that many enhancements to PostgreSQL can be more efficiently developed separately from the core project. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/fdw-callbacks.html postgresql-10-10.19/doc/src/sgml/html/fdw-callbacks.html --- postgresql-10-10.17/doc/src/sgml/html/fdw-callbacks.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/fdw-callbacks.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -56.2. Foreign Data Wrapper Callback Routines

    56.2. Foreign Data Wrapper Callback Routines

    The FDW handler function returns a palloc'd FdwRoutine +56.2. Foreign Data Wrapper Callback Routines

    56.2. Foreign Data Wrapper Callback Routines

    The FDW handler function returns a palloc'd FdwRoutine struct containing pointers to the callback functions described below. The scan-related functions are required, the rest are optional.

    The FdwRoutine struct type is declared in @@ -788,4 +788,4 @@ destroyed just after this callback is invoked, foreign data wrappers that wish to take some action before the DSM segment goes away should implement this method. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/fdw-functions.html postgresql-10-10.19/doc/src/sgml/html/fdw-functions.html --- postgresql-10-10.17/doc/src/sgml/html/fdw-functions.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/fdw-functions.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -56.1. Foreign Data Wrapper Functions

    56.1. Foreign Data Wrapper Functions

    The FDW author needs to implement a handler function, and optionally +56.1. Foreign Data Wrapper Functions

    56.1. 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, @@ -30,4 +30,4 @@ or ForeignTableRelationId). If no validator function is supplied, options are not checked at object creation time or object alteration time. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/fdwhandler.html postgresql-10-10.19/doc/src/sgml/html/fdwhandler.html --- postgresql-10-10.17/doc/src/sgml/html/fdwhandler.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/fdwhandler.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 56. Writing A Foreign Data Wrapper

    Chapter 56. Writing A Foreign Data Wrapper

    All operations on a foreign table are handled through its foreign data +Chapter 56. Writing A Foreign Data Wrapper

    Chapter 56. Writing A Foreign Data Wrapper

    All operations on a foreign table are handled through its foreign data wrapper, which consists of a set of functions that the core server calls. The foreign data wrapper is responsible for fetching data from the remote data source and returning it to the @@ -15,4 +15,4 @@ However, PostgreSQL does not implement that API, because the effort to accommodate it into PostgreSQL would be large, and the standard API hasn't gained wide adoption anyway. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/fdw-helpers.html postgresql-10-10.19/doc/src/sgml/html/fdw-helpers.html --- postgresql-10-10.17/doc/src/sgml/html/fdw-helpers.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/fdw-helpers.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -56.3. Foreign Data Wrapper Helper Functions

    56.3. Foreign Data Wrapper Helper Functions

    Several helper functions are exported from the core server so that +56.3. Foreign Data Wrapper Helper Functions

    56.3. Foreign Data Wrapper Helper Functions

    Several helper functions are exported from the core server so that authors of foreign data wrappers can get easy access to attributes of FDW-related objects, such as FDW options. To use any of these functions, you need to include the header file @@ -58,4 +58,4 @@ This function returns a ForeignServer object for the foreign server with the given name. If the server is not found, return NULL if missing_ok is true, otherwise raise an error. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/fdw-planning.html postgresql-10-10.19/doc/src/sgml/html/fdw-planning.html --- postgresql-10-10.17/doc/src/sgml/html/fdw-planning.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/fdw-planning.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -56.4. Foreign Data Wrapper Query Planning

    56.4. Foreign Data Wrapper Query Planning

    The FDW callback functions GetForeignRelSize, +56.4. Foreign Data Wrapper Query Planning

    56.4. Foreign Data Wrapper Query Planning

    The FDW callback functions GetForeignRelSize, GetForeignPaths, GetForeignPlan, PlanForeignModify, GetForeignJoinPaths, GetForeignUpperPaths, and PlanDirectModify @@ -172,4 +172,4 @@ exclusion constraints on remote tables are not locally known. This in turn implies that ON CONFLICT DO UPDATE is not supported, since the specification is mandatory there. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/fdw-row-locking.html postgresql-10-10.19/doc/src/sgml/html/fdw-row-locking.html --- postgresql-10-10.17/doc/src/sgml/html/fdw-row-locking.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/fdw-row-locking.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -56.5. Row Locking in Foreign Data Wrappers

    56.5. Row Locking in Foreign Data Wrappers

    If an FDW's underlying storage mechanism has a concept of locking +56.5. Row Locking in Foreign Data Wrappers

    56.5. Row Locking in Foreign Data Wrappers

    If an FDW's underlying storage mechanism has a concept of locking individual rows to prevent concurrent updates of those rows, it is usually worthwhile for the FDW to perform row-level locking with as close an approximation as practical to the semantics used in @@ -82,4 +82,4 @@ in src/include/nodes/plannodes.h, and the comments for ExecRowMark in src/include/nodes/execnodes.h for additional information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/features.html postgresql-10-10.19/doc/src/sgml/html/features.html --- postgresql-10-10.17/doc/src/sgml/html/features.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/features.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix D. SQL Conformance

    Appendix D. SQL Conformance

    Table of Contents

    D.1. Supported Features
    D.2. Unsupported Features
    D.3. XML Limits and Conformance to SQL/XML
    D.3.1. Queries are restricted to XPath 1.0
    D.3.2. Incidental limits of the implementation +Appendix D. SQL Conformance

    Appendix D. SQL Conformance

    This section attempts to outline to what extent PostgreSQL conforms to the current SQL standard. The following information is not a full statement of @@ -65,4 +65,4 @@

    Note

    Feature codes containing a hyphen are subfeatures. Therefore, if a particular subfeature is not supported, the main feature is listed as unsupported even if some other subfeatures are supported. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/features-sql-standard.html postgresql-10-10.19/doc/src/sgml/html/features-sql-standard.html --- postgresql-10-10.17/doc/src/sgml/html/features-sql-standard.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/features-sql-standard.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,3 +1,3 @@ -D.1. Supported Features

    D.1. Supported Features

    IdentifierPackageDescriptionComment
    B012 Embedded C 
    B021 Direct SQL 
    E011CoreNumeric data types 
    E011-01CoreINTEGER and SMALLINT data types 
    E011-02CoreREAL, DOUBLE PRECISION, and FLOAT data types 
    E011-03CoreDECIMAL and NUMERIC data types 
    E011-04CoreArithmetic operators 
    E011-05CoreNumeric comparison 
    E011-06CoreImplicit casting among the numeric data types 
    E021CoreCharacter data types 
    E021-01CoreCHARACTER data type 
    E021-02CoreCHARACTER VARYING data type 
    E021-03CoreCharacter literals 
    E021-04CoreCHARACTER_LENGTH functiontrims trailing spaces from CHARACTER values before counting
    E021-05CoreOCTET_LENGTH function 
    E021-06CoreSUBSTRING function 
    E021-07CoreCharacter concatenation 
    E021-08CoreUPPER and LOWER functions 
    E021-09CoreTRIM function 
    E021-10CoreImplicit casting among the character string types 
    E021-11CorePOSITION function 
    E021-12CoreCharacter comparison 
    E031CoreIdentifiers 
    E031-01CoreDelimited identifiers 
    E031-02CoreLower case identifiers 
    E031-03CoreTrailing underscore 
    E051CoreBasic query specification 
    E051-01CoreSELECT DISTINCT 
    E051-02CoreGROUP BY clause 
    E051-04CoreGROUP BY can contain columns not in <select list> 
    E051-05CoreSelect list items can be renamed 
    E051-06CoreHAVING clause 
    E051-07CoreQualified * in select list 
    E051-08CoreCorrelation names in the FROM clause 
    E051-09CoreRename columns in the FROM clause 
    E061CoreBasic predicates and search conditions 
    E061-01CoreComparison predicate 
    E061-02CoreBETWEEN predicate 
    E061-03CoreIN predicate with list of values 
    E061-04CoreLIKE predicate 
    E061-05CoreLIKE predicate ESCAPE clause 
    E061-06CoreNULL predicate 
    E061-07CoreQuantified comparison predicate 
    E061-08CoreEXISTS predicate 
    E061-09CoreSubqueries in comparison predicate 
    E061-11CoreSubqueries in IN predicate 
    E061-12CoreSubqueries in quantified comparison predicate 
    E061-13CoreCorrelated subqueries 
    E061-14CoreSearch condition 
    E071CoreBasic query expressions 
    E071-01CoreUNION DISTINCT table operator 
    E071-02CoreUNION ALL table operator 
    E071-03CoreEXCEPT DISTINCT table operator 
    E071-05CoreColumns combined via table operators need not have exactly the same data type 
    E071-06CoreTable operators in subqueries 
    E081CoreBasic Privileges 
    E081-01CoreSELECT privilege 
    E081-02CoreDELETE privilege 
    E081-03CoreINSERT privilege at the table level 
    E081-04CoreUPDATE privilege at the table level 
    E081-05CoreUPDATE privilege at the column level 
    E081-06CoreREFERENCES privilege at the table level 
    E081-07CoreREFERENCES privilege at the column level 
    E081-08CoreWITH GRANT OPTION 
    E081-09CoreUSAGE privilege 
    E081-10CoreEXECUTE privilege 
    E091CoreSet functions 
    E091-01CoreAVG 
    E091-02CoreCOUNT 
    E091-03CoreMAX 
    E091-04CoreMIN 
    E091-05CoreSUM 
    E091-06CoreALL quantifier 
    E091-07CoreDISTINCT quantifier 
    E101CoreBasic data manipulation 
    E101-01CoreINSERT statement 
    E101-03CoreSearched UPDATE statement 
    E101-04CoreSearched DELETE statement 
    E111CoreSingle row SELECT statement 
    E121CoreBasic cursor support 
    E121-01CoreDECLARE CURSOR 
    E121-02CoreORDER BY columns need not be in select list 
    E121-03CoreValue expressions in ORDER BY clause 
    E121-04CoreOPEN statement 
    E121-06CorePositioned UPDATE statement 
    E121-07CorePositioned DELETE statement 
    E121-08CoreCLOSE statement 
    E121-10CoreFETCH statement implicit NEXT 
    E121-17CoreWITH HOLD cursors 
    E131CoreNull value support (nulls in lieu of values) 
    E141CoreBasic integrity constraints 
    E141-01CoreNOT NULL constraints 
    E141-02CoreUNIQUE constraints of NOT NULL columns 
    E141-03CorePRIMARY KEY constraints 
    E141-04CoreBasic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update action 
    E141-06CoreCHECK constraints 
    E141-07CoreColumn defaults 
    E141-08CoreNOT NULL inferred on PRIMARY KEY 
    E141-10CoreNames in a foreign key can be specified in any order 
    E151CoreTransaction support 
    E151-01CoreCOMMIT statement 
    E151-02CoreROLLBACK statement 
    E152CoreBasic SET TRANSACTION statement 
    E152-01CoreSET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause 
    E152-02CoreSET TRANSACTION statement: READ ONLY and READ WRITE clauses 
    E153CoreUpdatable queries with subqueries 
    E161CoreSQL comments using leading double minus 
    E171CoreSQLSTATE support 
    F021CoreBasic information schema 
    F021-01CoreCOLUMNS view 
    F021-02CoreTABLES view 
    F021-03CoreVIEWS view 
    F021-04CoreTABLE_CONSTRAINTS view 
    F021-05CoreREFERENTIAL_CONSTRAINTS view 
    F021-06CoreCHECK_CONSTRAINTS view 
    F031CoreBasic schema manipulation 
    F031-01CoreCREATE TABLE statement to create persistent base tables 
    F031-02CoreCREATE VIEW statement 
    F031-03CoreGRANT statement 
    F031-04CoreALTER TABLE statement: ADD COLUMN clause 
    F031-13CoreDROP TABLE statement: RESTRICT clause 
    F031-16CoreDROP VIEW statement: RESTRICT clause 
    F031-19CoreREVOKE statement: RESTRICT clause 
    F032 CASCADE drop behavior 
    F033 ALTER TABLE statement: DROP COLUMN clause 
    F034 Extended REVOKE statement 
    F034-01 REVOKE statement performed by other than the owner of a schema object 
    F034-02 REVOKE statement: GRANT OPTION FOR clause 
    F034-03 REVOKE statement to revoke a privilege that the grantee has WITH GRANT OPTION 
    F041CoreBasic joined table 
    F041-01CoreInner join (but not necessarily the INNER keyword) 
    F041-02CoreINNER keyword 
    F041-03CoreLEFT OUTER JOIN 
    F041-04CoreRIGHT OUTER JOIN 
    F041-05CoreOuter joins can be nested 
    F041-07CoreThe inner table in a left or right outer join can also be used in an inner join 
    F041-08CoreAll comparison operators are supported (rather than just =) 
    F051CoreBasic date and time 
    F051-01CoreDATE data type (including support of DATE literal) 
    F051-02CoreTIME data type (including support of TIME literal) with fractional seconds precision of at least 0 
    F051-03CoreTIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6 
    F051-04CoreComparison predicate on DATE, TIME, and TIMESTAMP data types 
    F051-05CoreExplicit CAST between datetime types and character string types 
    F051-06CoreCURRENT_DATE 
    F051-07CoreLOCALTIME 
    F051-08CoreLOCALTIMESTAMP 
    F052Enhanced datetime facilitiesIntervals and datetime arithmetic 
    F053 OVERLAPS predicate 
    F081CoreUNION and EXCEPT in views 
    F111 Isolation levels other than SERIALIZABLE 
    F111-01 READ UNCOMMITTED isolation level 
    F111-02 READ COMMITTED isolation level 
    F111-03 REPEATABLE READ isolation level 
    F131CoreGrouped operations 
    F131-01CoreWHERE, GROUP BY, and HAVING clauses supported in queries with grouped views 
    F131-02CoreMultiple tables supported in queries with grouped views 
    F131-03CoreSet functions supported in queries with grouped views 
    F131-04CoreSubqueries with GROUP BY and HAVING clauses and grouped views 
    F131-05CoreSingle row SELECT with GROUP BY and HAVING clauses and grouped views 
    F171 Multiple schemas per user 
    F191Enhanced integrity managementReferential delete actions 
    F200 TRUNCATE TABLE statement 
    F201CoreCAST function 
    F202 TRUNCATE TABLE: identity column restart option 
    F221CoreExplicit defaults 
    F222 INSERT statement: DEFAULT VALUES clause 
    F231 Privilege tables 
    F231-01 TABLE_PRIVILEGES view 
    F231-02 COLUMN_PRIVILEGES view 
    F231-03 USAGE_PRIVILEGES view 
    F251 Domain support 
    F261CoreCASE expression 
    F261-01CoreSimple CASE 
    F261-02CoreSearched CASE 
    F261-03CoreNULLIF 
    F261-04CoreCOALESCE 
    F262 Extended CASE expression 
    F271 Compound character literals 
    F281 LIKE enhancements 
    F302 INTERSECT table operator 
    F302-01 INTERSECT DISTINCT table operator 
    F302-02 INTERSECT ALL table operator 
    F304 EXCEPT ALL table operator 
    F311-01CoreCREATE SCHEMA 
    F311-02CoreCREATE TABLE for persistent base tables 
    F311-03CoreCREATE VIEW 
    F311-04CoreCREATE VIEW: WITH CHECK OPTION 
    F311-05CoreGRANT statement 
    F321 User authorization 
    F361 Subprogram support 
    F381 Extended schema manipulation 
    F381-01 ALTER TABLE statement: ALTER COLUMN clause 
    F381-02 ALTER TABLE statement: ADD CONSTRAINT clause 
    F381-03 ALTER TABLE statement: DROP CONSTRAINT clause 
    F382 Alter column data type 
    F383 Set column not null clause 
    F384 Drop identity property clause 
    F386 Set identity column generation clause 
    F391 Long identifiers 
    F392 Unicode escapes in identifiers 
    F393 Unicode escapes in literals 
    F401 Extended joined table 
    F401-01 NATURAL JOIN 
    F401-02 FULL OUTER JOIN 
    F401-04 CROSS JOIN 
    F402 Named column joins for LOBs, arrays, and multisets 
    F411Enhanced datetime facilitiesTime zone specificationdifferences regarding literal interpretation
    F421 National character 
    F431 Read-only scrollable cursors 
    F431-01 FETCH with explicit NEXT 
    F431-02 FETCH FIRST 
    F431-03 FETCH LAST 
    F431-04 FETCH PRIOR 
    F431-05 FETCH ABSOLUTE 
    F431-06 FETCH RELATIVE 
    F441 Extended set function support 
    F442 Mixed column references in set functions 
    F471CoreScalar subquery values 
    F481CoreExpanded NULL predicate 
    F491Enhanced integrity managementConstraint management 
    F501CoreFeatures and conformance views 
    F501-01CoreSQL_FEATURES view 
    F501-02CoreSQL_SIZING view 
    F501-03CoreSQL_LANGUAGES view 
    F502 Enhanced documentation tables 
    F502-01 SQL_SIZING_PROFILES view 
    F502-02 SQL_IMPLEMENTATION_INFO view 
    F502-03 SQL_PACKAGES view 
    F531 Temporary tables 
    F555Enhanced datetime facilitiesEnhanced seconds precision 
    F561 Full value expressions 
    F571 Truth value tests 
    F591 Derived tables 
    F611 Indicator data types 
    F641 Row and table constructors 
    F651 Catalog name qualifiers 
    F661 Simple tables 
    F672 Retrospective check constraints 
    F690 Collation supportbut no character set support
    F692 Extended collation support 
    F701Enhanced integrity managementReferential update actions 
    F711 ALTER domain 
    F731 INSERT column privileges 
    F751 View CHECK enhancements 
    F761 Session management 
    F762 CURRENT_CATALOG 
    F763 CURRENT_SCHEMA 
    F771 Connection management 
    F781 Self-referencing operations 
    F791 Insensitive cursors 
    F801 Full set function 
    F850 Top-level <order by clause> in <query expression> 
    F851 <order by clause> in subqueries 
    F852 Top-level <order by clause> in views 
    F855 Nested <order by clause> in <query expression> 
    F856 Nested <fetch first clause> in <query expression> 
    F857 Top-level <fetch first clause> in <query expression> 
    F858 <fetch first clause> in subqueries 
    F859 Top-level <fetch first clause> in views 
    F860 <fetch first row count> in <fetch first clause> 
    F861 Top-level <result offset clause> in <query expression> 
    F862 <result offset clause> in subqueries 
    F863 Nested <result offset clause> in <query expression> 
    F864 Top-level <result offset clause> in views 
    F865 <offset row count> in <result offset clause> 
    S071Enhanced object supportSQL paths in function and type name resolution 
    S092 Arrays of user-defined types 
    S095 Array constructors by query 
    S096 Optional array bounds 
    S098 ARRAY_AGG 
    S111Enhanced object supportONLY in query expressions 
    S201 SQL-invoked routines on arrays 
    S201-01 Array parameters 
    S201-02 Array as result type of functions 
    S211Enhanced object supportUser-defined cast functions 
    S301 Enhanced UNNEST 
    T031 BOOLEAN data type 
    T071 BIGINT data type 
    T121 WITH (excluding RECURSIVE) in query expression 
    T122 WITH (excluding RECURSIVE) in subquery 
    T131 Recursive query 
    T132 Recursive query in subquery 
    T141 SIMILAR predicate 
    T151 DISTINCT predicate 
    T152 DISTINCT predicate with negation 
    T171 LIKE clause in table definition 
    T172 AS subquery clause in table definition 
    T173 Extended LIKE clause in table definition 
    T174 Identity columns 
    T177 Sequence generator support: simple restart option 
    T178 Identity columns: simple restart option 
    T191Enhanced integrity managementReferential action RESTRICT 
    T201Enhanced integrity managementComparable data types for referential constraints 
    T211-01Active database, Enhanced integrity managementTriggers activated on UPDATE, INSERT, or DELETE of one base table 
    T211-02Active database, Enhanced integrity managementBEFORE triggers 
    T211-03Active database, Enhanced integrity managementAFTER triggers 
    T211-04Active database, Enhanced integrity managementFOR EACH ROW triggers 
    T211-05Active database, Enhanced integrity managementAbility to specify a search condition that must be true before the trigger is invoked 
    T211-07Active database, Enhanced integrity managementTRIGGER privilege 
    T212Enhanced integrity managementEnhanced trigger capability 
    T213 INSTEAD OF triggers 
    T231 Sensitive cursors 
    T241 START TRANSACTION statement 
    T271 Savepoints 
    T281 SELECT privilege with column granularity 
    T285 Enhanced derived column names 
    T312 OVERLAY function 
    T321-01CoreUser-defined functions with no overloading 
    T321-03CoreFunction invocation 
    T321-06CoreROUTINES view 
    T321-07CorePARAMETERS view 
    T323 Explicit security for external routines 
    T325 Qualified SQL parameter references 
    T331 Basic roles 
    T341 Overloading of SQL-invoked functions and procedures 
    T351 Bracketed SQL comments (/*...*/ comments) 
    T431OLAPExtended grouping capabilities 
    T432 Nested and concatenated GROUPING SETS 
    T433 Multiargument GROUPING function 
    T441 ABS and MOD functions 
    T461 Symmetric BETWEEN predicate 
    T491 LATERAL derived table 
    T501 Enhanced EXISTS predicate 
    T551 Optional key words for default syntax 
    T581 Regular expression substring function 
    T591 UNIQUE constraints of possibly null columns 
    T611OLAPElementary OLAP operations 
    T613 Sampling 
    T614 NTILE function 
    T615 LEAD and LAG functions 
    T617 FIRST_VALUE and LAST_VALUE function 
    T621 Enhanced numeric functions 
    T631CoreIN predicate with one list element 
    T651 SQL-schema statements in SQL routines 
    T655 Cyclically dependent routines 
    X010 XML type 
    X011 Arrays of XML type 
    X014 Attributes of XML type 
    X016 Persistent XML values 
    X020 XMLConcat 
    X031 XMLElement 
    X032 XMLForest 
    X034 XMLAgg 
    X035 XMLAgg: ORDER BY option 
    X036 XMLComment 
    X037 XMLPI 
    X040 Basic table mapping 
    X041 Basic table mapping: nulls absent 
    X042 Basic table mapping: null as nil 
    X043 Basic table mapping: table as forest 
    X044 Basic table mapping: table as element 
    X045 Basic table mapping: with target namespace 
    X046 Basic table mapping: data mapping 
    X047 Basic table mapping: metadata mapping 
    X048 Basic table mapping: base64 encoding of binary strings 
    X049 Basic table mapping: hex encoding of binary strings 
    X050 Advanced table mapping 
    X051 Advanced table mapping: nulls absent 
    X052 Advanced table mapping: null as nil 
    X053 Advanced table mapping: table as forest 
    X054 Advanced table mapping: table as element 
    X055 Advanced table mapping: with target namespace 
    X056 Advanced table mapping: data mapping 
    X057 Advanced table mapping: metadata mapping 
    X058 Advanced table mapping: base64 encoding of binary strings 
    X059 Advanced table mapping: hex encoding of binary strings 
    X060 XMLParse: character string input and CONTENT option 
    X061 XMLParse: character string input and DOCUMENT option 
    X070 XMLSerialize: character string serialization and CONTENT option 
    X071 XMLSerialize: character string serialization and DOCUMENT option 
    X072 XMLSerialize: character string serialization 
    X090 XML document predicate 
    X120 XML parameters in SQL routines 
    X121 XML parameters in external routines 
    X222 XML passing mechanism BY REF 
    X301 XMLTable: derived column list option 
    X302 XMLTable: ordinality column option 
    X303 XMLTable: column default option 
    X304 XMLTable: passing a context itemmust be XML DOCUMENT
    X400 Name and identifier mapping 
    X410 Alter column data type: XML type 

    -

    \ No newline at end of file +D.1. Supported Features

    D.1. Supported Features

    IdentifierPackageDescriptionComment
    B012 Embedded C 
    B021 Direct SQL 
    E011CoreNumeric data types 
    E011-01CoreINTEGER and SMALLINT data types 
    E011-02CoreREAL, DOUBLE PRECISION, and FLOAT data types 
    E011-03CoreDECIMAL and NUMERIC data types 
    E011-04CoreArithmetic operators 
    E011-05CoreNumeric comparison 
    E011-06CoreImplicit casting among the numeric data types 
    E021CoreCharacter data types 
    E021-01CoreCHARACTER data type 
    E021-02CoreCHARACTER VARYING data type 
    E021-03CoreCharacter literals 
    E021-04CoreCHARACTER_LENGTH functiontrims trailing spaces from CHARACTER values before counting
    E021-05CoreOCTET_LENGTH function 
    E021-06CoreSUBSTRING function 
    E021-07CoreCharacter concatenation 
    E021-08CoreUPPER and LOWER functions 
    E021-09CoreTRIM function 
    E021-10CoreImplicit casting among the character string types 
    E021-11CorePOSITION function 
    E021-12CoreCharacter comparison 
    E031CoreIdentifiers 
    E031-01CoreDelimited identifiers 
    E031-02CoreLower case identifiers 
    E031-03CoreTrailing underscore 
    E051CoreBasic query specification 
    E051-01CoreSELECT DISTINCT 
    E051-02CoreGROUP BY clause 
    E051-04CoreGROUP BY can contain columns not in <select list> 
    E051-05CoreSelect list items can be renamed 
    E051-06CoreHAVING clause 
    E051-07CoreQualified * in select list 
    E051-08CoreCorrelation names in the FROM clause 
    E051-09CoreRename columns in the FROM clause 
    E061CoreBasic predicates and search conditions 
    E061-01CoreComparison predicate 
    E061-02CoreBETWEEN predicate 
    E061-03CoreIN predicate with list of values 
    E061-04CoreLIKE predicate 
    E061-05CoreLIKE predicate ESCAPE clause 
    E061-06CoreNULL predicate 
    E061-07CoreQuantified comparison predicate 
    E061-08CoreEXISTS predicate 
    E061-09CoreSubqueries in comparison predicate 
    E061-11CoreSubqueries in IN predicate 
    E061-12CoreSubqueries in quantified comparison predicate 
    E061-13CoreCorrelated subqueries 
    E061-14CoreSearch condition 
    E071CoreBasic query expressions 
    E071-01CoreUNION DISTINCT table operator 
    E071-02CoreUNION ALL table operator 
    E071-03CoreEXCEPT DISTINCT table operator 
    E071-05CoreColumns combined via table operators need not have exactly the same data type 
    E071-06CoreTable operators in subqueries 
    E081CoreBasic Privileges 
    E081-01CoreSELECT privilege 
    E081-02CoreDELETE privilege 
    E081-03CoreINSERT privilege at the table level 
    E081-04CoreUPDATE privilege at the table level 
    E081-05CoreUPDATE privilege at the column level 
    E081-06CoreREFERENCES privilege at the table level 
    E081-07CoreREFERENCES privilege at the column level 
    E081-08CoreWITH GRANT OPTION 
    E081-09CoreUSAGE privilege 
    E081-10CoreEXECUTE privilege 
    E091CoreSet functions 
    E091-01CoreAVG 
    E091-02CoreCOUNT 
    E091-03CoreMAX 
    E091-04CoreMIN 
    E091-05CoreSUM 
    E091-06CoreALL quantifier 
    E091-07CoreDISTINCT quantifier 
    E101CoreBasic data manipulation 
    E101-01CoreINSERT statement 
    E101-03CoreSearched UPDATE statement 
    E101-04CoreSearched DELETE statement 
    E111CoreSingle row SELECT statement 
    E121CoreBasic cursor support 
    E121-01CoreDECLARE CURSOR 
    E121-02CoreORDER BY columns need not be in select list 
    E121-03CoreValue expressions in ORDER BY clause 
    E121-04CoreOPEN statement 
    E121-06CorePositioned UPDATE statement 
    E121-07CorePositioned DELETE statement 
    E121-08CoreCLOSE statement 
    E121-10CoreFETCH statement implicit NEXT 
    E121-17CoreWITH HOLD cursors 
    E131CoreNull value support (nulls in lieu of values) 
    E141CoreBasic integrity constraints 
    E141-01CoreNOT NULL constraints 
    E141-02CoreUNIQUE constraints of NOT NULL columns 
    E141-03CorePRIMARY KEY constraints 
    E141-04CoreBasic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update action 
    E141-06CoreCHECK constraints 
    E141-07CoreColumn defaults 
    E141-08CoreNOT NULL inferred on PRIMARY KEY 
    E141-10CoreNames in a foreign key can be specified in any order 
    E151CoreTransaction support 
    E151-01CoreCOMMIT statement 
    E151-02CoreROLLBACK statement 
    E152CoreBasic SET TRANSACTION statement 
    E152-01CoreSET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause 
    E152-02CoreSET TRANSACTION statement: READ ONLY and READ WRITE clauses 
    E153CoreUpdatable queries with subqueries 
    E161CoreSQL comments using leading double minus 
    E171CoreSQLSTATE support 
    F021CoreBasic information schema 
    F021-01CoreCOLUMNS view 
    F021-02CoreTABLES view 
    F021-03CoreVIEWS view 
    F021-04CoreTABLE_CONSTRAINTS view 
    F021-05CoreREFERENTIAL_CONSTRAINTS view 
    F021-06CoreCHECK_CONSTRAINTS view 
    F031CoreBasic schema manipulation 
    F031-01CoreCREATE TABLE statement to create persistent base tables 
    F031-02CoreCREATE VIEW statement 
    F031-03CoreGRANT statement 
    F031-04CoreALTER TABLE statement: ADD COLUMN clause 
    F031-13CoreDROP TABLE statement: RESTRICT clause 
    F031-16CoreDROP VIEW statement: RESTRICT clause 
    F031-19CoreREVOKE statement: RESTRICT clause 
    F032 CASCADE drop behavior 
    F033 ALTER TABLE statement: DROP COLUMN clause 
    F034 Extended REVOKE statement 
    F034-01 REVOKE statement performed by other than the owner of a schema object 
    F034-02 REVOKE statement: GRANT OPTION FOR clause 
    F034-03 REVOKE statement to revoke a privilege that the grantee has WITH GRANT OPTION 
    F041CoreBasic joined table 
    F041-01CoreInner join (but not necessarily the INNER keyword) 
    F041-02CoreINNER keyword 
    F041-03CoreLEFT OUTER JOIN 
    F041-04CoreRIGHT OUTER JOIN 
    F041-05CoreOuter joins can be nested 
    F041-07CoreThe inner table in a left or right outer join can also be used in an inner join 
    F041-08CoreAll comparison operators are supported (rather than just =) 
    F051CoreBasic date and time 
    F051-01CoreDATE data type (including support of DATE literal) 
    F051-02CoreTIME data type (including support of TIME literal) with fractional seconds precision of at least 0 
    F051-03CoreTIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6 
    F051-04CoreComparison predicate on DATE, TIME, and TIMESTAMP data types 
    F051-05CoreExplicit CAST between datetime types and character string types 
    F051-06CoreCURRENT_DATE 
    F051-07CoreLOCALTIME 
    F051-08CoreLOCALTIMESTAMP 
    F052Enhanced datetime facilitiesIntervals and datetime arithmetic 
    F053 OVERLAPS predicate 
    F081CoreUNION and EXCEPT in views 
    F111 Isolation levels other than SERIALIZABLE 
    F111-01 READ UNCOMMITTED isolation level 
    F111-02 READ COMMITTED isolation level 
    F111-03 REPEATABLE READ isolation level 
    F131CoreGrouped operations 
    F131-01CoreWHERE, GROUP BY, and HAVING clauses supported in queries with grouped views 
    F131-02CoreMultiple tables supported in queries with grouped views 
    F131-03CoreSet functions supported in queries with grouped views 
    F131-04CoreSubqueries with GROUP BY and HAVING clauses and grouped views 
    F131-05CoreSingle row SELECT with GROUP BY and HAVING clauses and grouped views 
    F171 Multiple schemas per user 
    F191Enhanced integrity managementReferential delete actions 
    F200 TRUNCATE TABLE statement 
    F201CoreCAST function 
    F202 TRUNCATE TABLE: identity column restart option 
    F221CoreExplicit defaults 
    F222 INSERT statement: DEFAULT VALUES clause 
    F231 Privilege tables 
    F231-01 TABLE_PRIVILEGES view 
    F231-02 COLUMN_PRIVILEGES view 
    F231-03 USAGE_PRIVILEGES view 
    F251 Domain support 
    F261CoreCASE expression 
    F261-01CoreSimple CASE 
    F261-02CoreSearched CASE 
    F261-03CoreNULLIF 
    F261-04CoreCOALESCE 
    F262 Extended CASE expression 
    F271 Compound character literals 
    F281 LIKE enhancements 
    F302 INTERSECT table operator 
    F302-01 INTERSECT DISTINCT table operator 
    F302-02 INTERSECT ALL table operator 
    F304 EXCEPT ALL table operator 
    F311-01CoreCREATE SCHEMA 
    F311-02CoreCREATE TABLE for persistent base tables 
    F311-03CoreCREATE VIEW 
    F311-04CoreCREATE VIEW: WITH CHECK OPTION 
    F311-05CoreGRANT statement 
    F321 User authorization 
    F361 Subprogram support 
    F381 Extended schema manipulation 
    F381-01 ALTER TABLE statement: ALTER COLUMN clause 
    F381-02 ALTER TABLE statement: ADD CONSTRAINT clause 
    F381-03 ALTER TABLE statement: DROP CONSTRAINT clause 
    F382 Alter column data type 
    F383 Set column not null clause 
    F384 Drop identity property clause 
    F386 Set identity column generation clause 
    F391 Long identifiers 
    F392 Unicode escapes in identifiers 
    F393 Unicode escapes in literals 
    F401 Extended joined table 
    F401-01 NATURAL JOIN 
    F401-02 FULL OUTER JOIN 
    F401-04 CROSS JOIN 
    F402 Named column joins for LOBs, arrays, and multisets 
    F411Enhanced datetime facilitiesTime zone specificationdifferences regarding literal interpretation
    F421 National character 
    F431 Read-only scrollable cursors 
    F431-01 FETCH with explicit NEXT 
    F431-02 FETCH FIRST 
    F431-03 FETCH LAST 
    F431-04 FETCH PRIOR 
    F431-05 FETCH ABSOLUTE 
    F431-06 FETCH RELATIVE 
    F441 Extended set function support 
    F442 Mixed column references in set functions 
    F471CoreScalar subquery values 
    F481CoreExpanded NULL predicate 
    F491Enhanced integrity managementConstraint management 
    F501CoreFeatures and conformance views 
    F501-01CoreSQL_FEATURES view 
    F501-02CoreSQL_SIZING view 
    F501-03CoreSQL_LANGUAGES view 
    F502 Enhanced documentation tables 
    F502-01 SQL_SIZING_PROFILES view 
    F502-02 SQL_IMPLEMENTATION_INFO view 
    F502-03 SQL_PACKAGES view 
    F531 Temporary tables 
    F555Enhanced datetime facilitiesEnhanced seconds precision 
    F561 Full value expressions 
    F571 Truth value tests 
    F591 Derived tables 
    F611 Indicator data types 
    F641 Row and table constructors 
    F651 Catalog name qualifiers 
    F661 Simple tables 
    F672 Retrospective check constraints 
    F690 Collation supportbut no character set support
    F692 Extended collation support 
    F701Enhanced integrity managementReferential update actions 
    F711 ALTER domain 
    F731 INSERT column privileges 
    F751 View CHECK enhancements 
    F761 Session management 
    F762 CURRENT_CATALOG 
    F763 CURRENT_SCHEMA 
    F771 Connection management 
    F781 Self-referencing operations 
    F791 Insensitive cursors 
    F801 Full set function 
    F850 Top-level <order by clause> in <query expression> 
    F851 <order by clause> in subqueries 
    F852 Top-level <order by clause> in views 
    F855 Nested <order by clause> in <query expression> 
    F856 Nested <fetch first clause> in <query expression> 
    F857 Top-level <fetch first clause> in <query expression> 
    F858 <fetch first clause> in subqueries 
    F859 Top-level <fetch first clause> in views 
    F860 <fetch first row count> in <fetch first clause> 
    F861 Top-level <result offset clause> in <query expression> 
    F862 <result offset clause> in subqueries 
    F863 Nested <result offset clause> in <query expression> 
    F864 Top-level <result offset clause> in views 
    F865 <offset row count> in <result offset clause> 
    S071Enhanced object supportSQL paths in function and type name resolution 
    S092 Arrays of user-defined types 
    S095 Array constructors by query 
    S096 Optional array bounds 
    S098 ARRAY_AGG 
    S111Enhanced object supportONLY in query expressions 
    S201 SQL-invoked routines on arrays 
    S201-01 Array parameters 
    S201-02 Array as result type of functions 
    S211Enhanced object supportUser-defined cast functions 
    S301 Enhanced UNNEST 
    T031 BOOLEAN data type 
    T071 BIGINT data type 
    T121 WITH (excluding RECURSIVE) in query expression 
    T122 WITH (excluding RECURSIVE) in subquery 
    T131 Recursive query 
    T132 Recursive query in subquery 
    T141 SIMILAR predicate 
    T151 DISTINCT predicate 
    T152 DISTINCT predicate with negation 
    T171 LIKE clause in table definition 
    T172 AS subquery clause in table definition 
    T173 Extended LIKE clause in table definition 
    T174 Identity columns 
    T177 Sequence generator support: simple restart option 
    T178 Identity columns: simple restart option 
    T191Enhanced integrity managementReferential action RESTRICT 
    T201Enhanced integrity managementComparable data types for referential constraints 
    T211-01Active database, Enhanced integrity managementTriggers activated on UPDATE, INSERT, or DELETE of one base table 
    T211-02Active database, Enhanced integrity managementBEFORE triggers 
    T211-03Active database, Enhanced integrity managementAFTER triggers 
    T211-04Active database, Enhanced integrity managementFOR EACH ROW triggers 
    T211-05Active database, Enhanced integrity managementAbility to specify a search condition that must be true before the trigger is invoked 
    T211-07Active database, Enhanced integrity managementTRIGGER privilege 
    T212Enhanced integrity managementEnhanced trigger capability 
    T213 INSTEAD OF triggers 
    T231 Sensitive cursors 
    T241 START TRANSACTION statement 
    T271 Savepoints 
    T281 SELECT privilege with column granularity 
    T285 Enhanced derived column names 
    T312 OVERLAY function 
    T321-01CoreUser-defined functions with no overloading 
    T321-03CoreFunction invocation 
    T321-06CoreROUTINES view 
    T321-07CorePARAMETERS view 
    T323 Explicit security for external routines 
    T325 Qualified SQL parameter references 
    T331 Basic roles 
    T341 Overloading of SQL-invoked functions and procedures 
    T351 Bracketed SQL comments (/*...*/ comments) 
    T431OLAPExtended grouping capabilities 
    T432 Nested and concatenated GROUPING SETS 
    T433 Multiargument GROUPING function 
    T441 ABS and MOD functions 
    T461 Symmetric BETWEEN predicate 
    T491 LATERAL derived table 
    T501 Enhanced EXISTS predicate 
    T551 Optional key words for default syntax 
    T581 Regular expression substring function 
    T591 UNIQUE constraints of possibly null columns 
    T611OLAPElementary OLAP operations 
    T613 Sampling 
    T614 NTILE function 
    T615 LEAD and LAG functions 
    T617 FIRST_VALUE and LAST_VALUE function 
    T621 Enhanced numeric functions 
    T631CoreIN predicate with one list element 
    T651 SQL-schema statements in SQL routines 
    T655 Cyclically dependent routines 
    X010 XML type 
    X011 Arrays of XML type 
    X014 Attributes of XML type 
    X016 Persistent XML values 
    X020 XMLConcat 
    X031 XMLElement 
    X032 XMLForest 
    X034 XMLAgg 
    X035 XMLAgg: ORDER BY option 
    X036 XMLComment 
    X037 XMLPI 
    X040 Basic table mapping 
    X041 Basic table mapping: nulls absent 
    X042 Basic table mapping: null as nil 
    X043 Basic table mapping: table as forest 
    X044 Basic table mapping: table as element 
    X045 Basic table mapping: with target namespace 
    X046 Basic table mapping: data mapping 
    X047 Basic table mapping: metadata mapping 
    X048 Basic table mapping: base64 encoding of binary strings 
    X049 Basic table mapping: hex encoding of binary strings 
    X050 Advanced table mapping 
    X051 Advanced table mapping: nulls absent 
    X052 Advanced table mapping: null as nil 
    X053 Advanced table mapping: table as forest 
    X054 Advanced table mapping: table as element 
    X055 Advanced table mapping: with target namespace 
    X056 Advanced table mapping: data mapping 
    X057 Advanced table mapping: metadata mapping 
    X058 Advanced table mapping: base64 encoding of binary strings 
    X059 Advanced table mapping: hex encoding of binary strings 
    X060 XMLParse: character string input and CONTENT option 
    X061 XMLParse: character string input and DOCUMENT option 
    X070 XMLSerialize: character string serialization and CONTENT option 
    X071 XMLSerialize: character string serialization and DOCUMENT option 
    X072 XMLSerialize: character string serialization 
    X090 XML document predicate 
    X120 XML parameters in SQL routines 
    X121 XML parameters in external routines 
    X222 XML passing mechanism BY REF 
    X301 XMLTable: derived column list option 
    X302 XMLTable: ordinality column option 
    X303 XMLTable: column default option 
    X304 XMLTable: passing a context itemmust be XML DOCUMENT
    X400 Name and identifier mapping 
    X410 Alter column data type: XML type 

    +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/file-fdw.html postgresql-10-10.19/doc/src/sgml/html/file-fdw.html --- postgresql-10-10.17/doc/src/sgml/html/file-fdw.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/file-fdw.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.15. file_fdw

    F.15. file_fdw

    The file_fdw module provides the foreign-data wrapper +F.15. file_fdw

    F.15. file_fdw

    The file_fdw module provides the foreign-data wrapper file_fdw, which can be used to access data files in the server's file system, or to execute programs on the server and read their output. The data file or program output must be in a format @@ -108,4 +108,4 @@ OPTIONS ( filename '/home/josh/data/log/pglog.csv', format 'csv' );

    That's it — now you can query your log directly. In production, of course, you would need to define some way to deal with log rotation. -


    \ No newline at end of file +


    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-admin.html postgresql-10-10.19/doc/src/sgml/html/functions-admin.html --- postgresql-10-10.17/doc/src/sgml/html/functions-admin.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-admin.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.26. System Administration Functions

    9.26. System Administration Functions

    The functions described in this section are used to control and +9.26. System Administration Functions

    9.26. System Administration Functions

    The functions described in this section are used to control and monitor a PostgreSQL installation.

    9.26.1. Configuration Settings Functions

    Table 9.77 shows the functions available to query and alter run-time configuration parameters. @@ -507,9 +507,9 @@

    • 'main' returns the size of the main data fork of the relation.

    • 'fsm' returns the size of the Free Space Map - (see Section 66.3) associated with the relation. + (see Section 67.3) associated with the relation.

    • 'vm' returns the size of the Visibility Map - (see Section 66.4) associated with the relation. + (see Section 67.4) associated with the relation.

    • 'init' returns the size of the initialization fork, if any, associated with the relation.

    @@ -546,7 +546,7 @@


    pg_relation_filenode accepts the OID or name of a table, index, sequence, or toast table, and returns the filenode number currently assigned to it. The filenode is the base component of the file - name(s) used for the relation (see Section 66.1 + name(s) used for the relation (see Section 67.1 for more information). For most tables the result is the same as pg_class.relfilenode, but for certain system catalogs relfilenode is zero and this function must @@ -586,6 +586,7 @@ be pg_catalog, but that is not a requirement; the collations could be installed into some other schema as well. The function returns the number of new collation objects it created. + Use of this function is restricted to superusers.

    9.26.8. Index Maintenance Functions

    Table 9.87 shows the functions available for index maintenance tasks. These functions cannot be executed during recovery. @@ -744,4 +745,4 @@ 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. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-aggregate.html postgresql-10-10.19/doc/src/sgml/html/functions-aggregate.html --- postgresql-10-10.17/doc/src/sgml/html/functions-aggregate.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-aggregate.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.20. Aggregate Functions

    9.20. Aggregate Functions

    Aggregate functions compute a single result +9.20. Aggregate Functions

    9.20. Aggregate Functions

    Aggregate functions compute a single result from a set of input values. The built-in general-purpose aggregate functions are listed in Table 9.52 and statistical aggregates in Table 9.53. @@ -386,4 +386,4 @@ Bar | | 1 | 20 | | 3 | 50 (7 rows)

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-array.html postgresql-10-10.19/doc/src/sgml/html/functions-array.html --- postgresql-10-10.17/doc/src/sgml/html/functions-array.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-array.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.18. Array Functions and Operators

    9.18. Array Functions and Operators

    Table 9.48 shows the operators +9.18. Array Functions and Operators

    9.18. Array Functions and Operators

    Table 9.48 shows the operators available for array types.

    Table 9.48. Array Operators

    OperatorDescriptionExampleResult
    = equalARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3]t
    <> not equalARRAY[1,2,3] <> ARRAY[1,2,4]t
    < less thanARRAY[1,2,3] < ARRAY[1,2,4]t
    > greater thanARRAY[1,4,3] > ARRAY[1,2,4]t
    <= less than or equalARRAY[1,2,3] <= ARRAY[1,2,3]t
    >= greater than or equalARRAY[1,4,3] >= ARRAY[1,4,3]t
    @> containsARRAY[1,4,3] @> ARRAY[3,1,3]t
    <@ is contained byARRAY[2,2,7] <@ ARRAY[1,7,4,2,6]t
    && overlap (have elements in common)ARRAY[1,4,3] && ARRAY[2,1]t
    || array-to-array concatenationARRAY[1,2,3] || ARRAY[4,5,6]{1,2,3,4,5,6}
    || array-to-array concatenationARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]]{{1,2,3},{4,5,6},{7,8,9}}
    || element-to-array concatenation3 || ARRAY[4,5,6]{3,4,5,6}
    || array-to-element concatenationARRAY[4,5,6] || 7{4,5,6,7}

    The array ordering operators (<, >=, etc) compare the array contents @@ -102,4 +102,4 @@ than returning NULL as before.

    See also Section 9.20 about the aggregate function array_agg for use with arrays. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-binarystring.html postgresql-10-10.19/doc/src/sgml/html/functions-binarystring.html --- postgresql-10-10.17/doc/src/sgml/html/functions-binarystring.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-binarystring.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.5. Binary String Functions and Operators

    9.5. Binary String Functions and Operators

    This section describes functions and operators for examining and +9.5. Binary String Functions and Operators

    9.5. Binary String Functions and Operators

    This section describes functions and operators for examining and manipulating values of type bytea.

    SQL defines some string functions that use key words, rather than commas, to separate @@ -85,4 +85,4 @@

    See also the aggregate function string_agg in Section 9.20 and the large object functions in Section 34.4. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-bitstring.html postgresql-10-10.19/doc/src/sgml/html/functions-bitstring.html --- postgresql-10-10.17/doc/src/sgml/html/functions-bitstring.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-bitstring.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.6. Bit String Functions and Operators

    9.6. Bit String Functions and Operators

    This section describes functions and operators for examining and +9.6. Bit String Functions and Operators

    9.6. Bit String Functions and Operators

    This section describes functions and operators for examining and manipulating bit strings, that is values of the types bit and bit varying. Aside from the usual comparison operators, the operators @@ -35,4 +35,4 @@

    Note

    Casting an integer to bit(n) copies the rightmost n bits. Casting an integer to a bit string width wider than the integer itself will sign-extend on the left. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-comparison.html postgresql-10-10.19/doc/src/sgml/html/functions-comparison.html --- postgresql-10-10.17/doc/src/sgml/html/functions-comparison.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-comparison.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -9.2. Comparison Functions and Operators

    9.2. Comparison Functions and Operators

    The usual comparison operators are available, as shown in Table 9.1. +9.2. Comparison Functions and Operators

    9.2. Comparison Functions and Operators

    The usual comparison operators are available, as shown in Table 9.1.

    Table 9.1. Comparison Operators

    OperatorDescription
    < less than
    > greater than
    <= less than or equal to
    >= greater than or equal to
    = equal
    <> or != not equal

    Note

    The != operator is converted to <> in the parser stage. It is not possible to implement != and @@ -109,4 +109,4 @@ num_nonnulls(VARIADIC "any") returns the number of non-null argumentsnum_nonnulls(1, NULL, 2)2 num_nulls(VARIADIC "any") - returns the number of null argumentsnum_nulls(1, NULL, 2)1


    \ No newline at end of file + returns the number of null argumentsnum_nulls(1, NULL, 2)1
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-comparisons.html postgresql-10-10.19/doc/src/sgml/html/functions-comparisons.html --- postgresql-10-10.17/doc/src/sgml/html/functions-comparisons.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-comparisons.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.23. Row and Array Comparisons

    9.23. Row and Array Comparisons

    This section describes several specialized constructs for making +9.23. Row and Array Comparisons

    9.23. Row and Array Comparisons

    This section describes several specialized constructs for making multiple comparisons between groups of values. These forms are syntactically related to the subquery forms of the previous section, but do not involve subqueries. @@ -169,4 +169,4 @@ materialized views and might be useful for other specialized purposes such as replication but are not intended to be generally useful for writing queries. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-conditional.html postgresql-10-10.19/doc/src/sgml/html/functions-conditional.html --- postgresql-10-10.17/doc/src/sgml/html/functions-conditional.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-conditional.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.17. Conditional Expressions

    9.17. Conditional Expressions

    This section describes the SQL-compliant conditional expressions +9.17. Conditional Expressions

    9.17. Conditional Expressions

    This section describes the SQL-compliant conditional expressions available in PostgreSQL.

    Tip

    If your needs go beyond the capabilities of these conditional expressions, you might want to consider writing a stored procedure @@ -140,4 +140,4 @@ the SQL standard, but are a common extension. Some other databases make them return NULL if any argument is NULL, rather than only when all are NULL. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-datetime.html postgresql-10-10.19/doc/src/sgml/html/functions-datetime.html --- postgresql-10-10.17/doc/src/sgml/html/functions-datetime.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-datetime.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.9. Date/Time Functions and Operators

    9.9. Date/Time Functions and Operators

    Table 9.30 shows the available +9.9. Date/Time Functions and Operators

    9.9. Date/Time Functions and Operators

    Table 9.30 shows the available functions for date/time value processing, with details appearing in the following subsections. Table 9.29 illustrates the behaviors of the basic arithmetic operators (+, @@ -564,4 +564,4 @@ other sessions might have to wait for your sleeping process, slowing down the entire system.



    [7] 60 if leap seconds are - implemented by the operating system

    \ No newline at end of file + implemented by the operating system

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-enum.html postgresql-10-10.19/doc/src/sgml/html/functions-enum.html --- postgresql-10-10.17/doc/src/sgml/html/functions-enum.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-enum.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.10. Enum Support Functions

    9.10. Enum Support Functions

    For enum types (described in Section 8.7), +9.10. Enum Support Functions

    9.10. Enum Support Functions

    For enum types (described in Section 8.7), there are several functions that allow cleaner programming without hard-coding particular values of an enum type. These are listed in Table 9.32. The examples @@ -25,4 +25,4 @@ the type can be passed, with the same result. It is more common to apply these functions to a table column or function argument than to a hardwired type name as suggested by the examples. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-event-triggers.html postgresql-10-10.19/doc/src/sgml/html/functions-event-triggers.html --- postgresql-10-10.17/doc/src/sgml/html/functions-event-triggers.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-event-triggers.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.28. Event Trigger Functions

    9.28. Event Trigger Functions

    PostgreSQL provides these helper functions +9.28. Event Trigger Functions

    9.28. Event Trigger Functions

    PostgreSQL provides these helper functions to retrieve information from event triggers.

    For more information about event triggers, see Chapter 39. @@ -93,4 +93,4 @@ CREATE EVENT TRIGGER test_table_rewrite_oid ON table_rewrite EXECUTE PROCEDURE test_event_trigger_table_rewrite_oid();

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-formatting.html postgresql-10-10.19/doc/src/sgml/html/functions-formatting.html --- postgresql-10-10.17/doc/src/sgml/html/functions-formatting.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-formatting.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.8. Data Type Formatting Functions

    9.8. Data Type Formatting Functions

    The PostgreSQL formatting functions +9.8. Data Type Formatting Functions

    9.8. Data Type Formatting Functions

    The PostgreSQL formatting functions provide a powerful set of tools for converting various data types (date/time, integer, floating point, numeric) to formatted strings and for converting from formatted strings to specific data types. @@ -223,4 +223,4 @@ modifier patterns for numeric formatting.

    Table 9.27. Template Pattern Modifiers for Numeric Formatting

    ModifierDescriptionExample
    FM prefixfill mode (suppress trailing zeroes and padding blanks)FM99.99
    TH suffixupper case ordinal number suffix999TH
    th suffixlower case ordinal number suffix999th

    Table 9.28 shows some examples of the use of the to_char function. -

    Table 9.28. to_char Examples

    ExpressionResult
    to_char(current_timestamp, 'Day, DD  HH12:MI:SS')'Tuesday  , 06  05:39:18'
    to_char(current_timestamp, 'FMDay, FMDD  HH12:MI:SS')'Tuesday, 6  05:39:18'
    to_char(-0.1, '99.99')'  -.10'
    to_char(-0.1, 'FM9.99')'-.1'
    to_char(-0.1, 'FM90.99')'-0.1'
    to_char(0.1, '0.9')' 0.1'
    to_char(12, '9990999.9')'    0012.0'
    to_char(12, 'FM9990999.9')'0012.'
    to_char(485, '999')' 485'
    to_char(-485, '999')'-485'
    to_char(485, '9 9 9')' 4 8 5'
    to_char(1485, '9,999')' 1,485'
    to_char(1485, '9G999')' 1 485'
    to_char(148.5, '999.999')' 148.500'
    to_char(148.5, 'FM999.999')'148.5'
    to_char(148.5, 'FM999.990')'148.500'
    to_char(148.5, '999D999')' 148,500'
    to_char(3148.5, '9G999D999')' 3 148,500'
    to_char(-485, '999S')'485-'
    to_char(-485, '999MI')'485-'
    to_char(485, '999MI')'485 '
    to_char(485, 'FM999MI')'485'
    to_char(485, 'PL999')'+485'
    to_char(485, 'SG999')'+485'
    to_char(-485, 'SG999')'-485'
    to_char(-485, '9SG99')'4-85'
    to_char(-485, '999PR')'<485>'
    to_char(485, 'L999')'DM 485'
    to_char(485, 'RN')'        CDLXXXV'
    to_char(485, 'FMRN')'CDLXXXV'
    to_char(5.2, 'FMRN')'V'
    to_char(482, '999th')' 482nd'
    to_char(485, '"Good number:"999')'Good number: 485'
    to_char(485.8, '"Pre:"999" Post:" .999')'Pre: 485 Post: .800'
    to_char(12, '99V999')' 12000'
    to_char(12.4, '99V999')' 12400'
    to_char(12.45, '99V9')' 125'
    to_char(0.0004859, '9.99EEEE')' 4.86e-04'

    \ No newline at end of file +

    Table 9.28. to_char Examples

    ExpressionResult
    to_char(current_timestamp, 'Day, DD  HH12:MI:SS')'Tuesday  , 06  05:39:18'
    to_char(current_timestamp, 'FMDay, FMDD  HH12:MI:SS')'Tuesday, 6  05:39:18'
    to_char(-0.1, '99.99')'  -.10'
    to_char(-0.1, 'FM9.99')'-.1'
    to_char(-0.1, 'FM90.99')'-0.1'
    to_char(0.1, '0.9')' 0.1'
    to_char(12, '9990999.9')'    0012.0'
    to_char(12, 'FM9990999.9')'0012.'
    to_char(485, '999')' 485'
    to_char(-485, '999')'-485'
    to_char(485, '9 9 9')' 4 8 5'
    to_char(1485, '9,999')' 1,485'
    to_char(1485, '9G999')' 1 485'
    to_char(148.5, '999.999')' 148.500'
    to_char(148.5, 'FM999.999')'148.5'
    to_char(148.5, 'FM999.990')'148.500'
    to_char(148.5, '999D999')' 148,500'
    to_char(3148.5, '9G999D999')' 3 148,500'
    to_char(-485, '999S')'485-'
    to_char(-485, '999MI')'485-'
    to_char(485, '999MI')'485 '
    to_char(485, 'FM999MI')'485'
    to_char(485, 'PL999')'+485'
    to_char(485, 'SG999')'+485'
    to_char(-485, 'SG999')'-485'
    to_char(-485, '9SG99')'4-85'
    to_char(-485, '999PR')'<485>'
    to_char(485, 'L999')'DM 485'
    to_char(485, 'RN')'        CDLXXXV'
    to_char(485, 'FMRN')'CDLXXXV'
    to_char(5.2, 'FMRN')'V'
    to_char(482, '999th')' 482nd'
    to_char(485, '"Good number:"999')'Good number: 485'
    to_char(485.8, '"Pre:"999" Post:" .999')'Pre: 485 Post: .800'
    to_char(12, '99V999')' 12000'
    to_char(12.4, '99V999')' 12400'
    to_char(12.45, '99V9')' 125'
    to_char(0.0004859, '9.99EEEE')' 4.86e-04'

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-geometry.html postgresql-10-10.19/doc/src/sgml/html/functions-geometry.html --- postgresql-10-10.17/doc/src/sgml/html/functions-geometry.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-geometry.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.11. Geometric Functions and Operators

    9.11. Geometric Functions and Operators

    The geometric types point, box, +9.11. Geometric Functions and Operators

    9.11. Geometric Functions and Operators

    The geometric types point, box, lseg, line, path, polygon, and circle have a large set of native support functions and operators, shown in Table 9.33, Table 9.34, and Table 9.35. @@ -47,4 +47,4 @@ will work. If the concept of an intersecting versus non-intersecting path is confusing, draw both of the above paths side by side on a piece of graph paper. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions.html postgresql-10-10.19/doc/src/sgml/html/functions.html --- postgresql-10-10.17/doc/src/sgml/html/functions.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 9. Functions and Operators

    Chapter 9. Functions and Operators

    Table of Contents

    9.1. Logical Operators
    9.2. Comparison Functions and Operators
    9.3. Mathematical Functions and Operators
    9.4. String Functions and Operators
    9.4.1. format
    9.5. Binary String Functions and Operators
    9.6. Bit String Functions and Operators
    9.7. Pattern Matching
    9.7.1. LIKE
    9.7.2. SIMILAR TO Regular Expressions
    9.7.3. POSIX Regular Expressions
    9.8. Data Type Formatting Functions
    9.9. Date/Time Functions and Operators
    9.9.1. EXTRACT, date_part
    9.9.2. date_trunc
    9.9.3. AT TIME ZONE
    9.9.4. Current Date/Time
    9.9.5. Delaying Execution
    9.10. Enum Support Functions
    9.11. Geometric Functions and Operators
    9.12. Network Address Functions and Operators
    9.13. Text Search Functions and Operators
    9.14. XML Functions
    9.14.1. Producing XML Content
    9.14.2. XML Predicates
    9.14.3. Processing XML
    9.14.4. Mapping Tables to XML
    9.15. JSON Functions and Operators
    9.16. Sequence Manipulation Functions
    9.17. Conditional Expressions
    9.17.1. CASE
    9.17.2. COALESCE
    9.17.3. NULLIF
    9.17.4. GREATEST and LEAST
    9.18. Array Functions and Operators
    9.19. Range Functions and Operators
    9.20. Aggregate Functions
    9.21. Window Functions
    9.22. Subquery Expressions
    9.22.1. EXISTS
    9.22.2. IN
    9.22.3. NOT IN
    9.22.4. ANY/SOME
    9.22.5. ALL
    9.22.6. Single-row Comparison
    9.23. Row and Array Comparisons
    9.23.1. IN
    9.23.2. NOT IN
    9.23.3. ANY/SOME (array)
    9.23.4. ALL (array)
    9.23.5. Row Constructor Comparison
    9.23.6. Composite Type Comparison
    9.24. Set Returning Functions
    9.25. System Information Functions
    9.26. System Administration Functions
    9.26.1. Configuration Settings Functions
    9.26.2. Server Signaling Functions
    9.26.3. Backup Control Functions
    9.26.4. Recovery Control Functions
    9.26.5. Snapshot Synchronization Functions
    9.26.6. Replication Functions
    9.26.7. Database Object Management Functions
    9.26.8. Index Maintenance Functions
    9.26.9. Generic File Access Functions
    9.26.10. Advisory Lock Functions
    9.27. Trigger Functions
    9.28. Event Trigger Functions
    9.28.1. Capturing Changes at Command End
    9.28.2. Processing Objects Dropped by a DDL Command
    9.28.3. Handling a Table Rewrite Event

    PostgreSQL provides a large number of +Chapter 9. Functions and Operators

    Chapter 9. Functions and Operators

    Table of Contents

    9.1. Logical Operators
    9.2. Comparison Functions and Operators
    9.3. Mathematical Functions and Operators
    9.4. String Functions and Operators
    9.4.1. format
    9.5. Binary String Functions and Operators
    9.6. Bit String Functions and Operators
    9.7. Pattern Matching
    9.7.1. LIKE
    9.7.2. SIMILAR TO Regular Expressions
    9.7.3. POSIX Regular Expressions
    9.8. Data Type Formatting Functions
    9.9. Date/Time Functions and Operators
    9.9.1. EXTRACT, date_part
    9.9.2. date_trunc
    9.9.3. AT TIME ZONE
    9.9.4. Current Date/Time
    9.9.5. Delaying Execution
    9.10. Enum Support Functions
    9.11. Geometric Functions and Operators
    9.12. Network Address Functions and Operators
    9.13. Text Search Functions and Operators
    9.14. XML Functions
    9.14.1. Producing XML Content
    9.14.2. XML Predicates
    9.14.3. Processing XML
    9.14.4. Mapping Tables to XML
    9.15. JSON Functions and Operators
    9.16. Sequence Manipulation Functions
    9.17. Conditional Expressions
    9.17.1. CASE
    9.17.2. COALESCE
    9.17.3. NULLIF
    9.17.4. GREATEST and LEAST
    9.18. Array Functions and Operators
    9.19. Range Functions and Operators
    9.20. Aggregate Functions
    9.21. Window Functions
    9.22. Subquery Expressions
    9.22.1. EXISTS
    9.22.2. IN
    9.22.3. NOT IN
    9.22.4. ANY/SOME
    9.22.5. ALL
    9.22.6. Single-row Comparison
    9.23. Row and Array Comparisons
    9.23.1. IN
    9.23.2. NOT IN
    9.23.3. ANY/SOME (array)
    9.23.4. ALL (array)
    9.23.5. Row Constructor Comparison
    9.23.6. Composite Type Comparison
    9.24. Set Returning Functions
    9.25. System Information Functions
    9.26. System Administration Functions
    9.26.1. Configuration Settings Functions
    9.26.2. Server Signaling Functions
    9.26.3. Backup Control Functions
    9.26.4. Recovery Control Functions
    9.26.5. Snapshot Synchronization Functions
    9.26.6. Replication Functions
    9.26.7. Database Object Management Functions
    9.26.8. Index Maintenance Functions
    9.26.9. Generic File Access Functions
    9.26.10. Advisory Lock Functions
    9.27. Trigger Functions
    9.28. Event Trigger Functions
    9.28.1. Capturing Changes at Command End
    9.28.2. Processing Objects Dropped by a DDL Command
    9.28.3. Handling a Table Rewrite Event

    PostgreSQL provides a large number of functions and operators for the built-in data types. Users can also define their own functions and operators, as described in Part V. The @@ -16,4 +16,4 @@ consistent between the various implementations. This chapter is also not exhaustive; additional functions appear in relevant sections of the manual. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-info.html postgresql-10-10.19/doc/src/sgml/html/functions-info.html --- postgresql-10-10.17/doc/src/sgml/html/functions-info.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-info.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.25. System Information Functions

    9.25. System Information Functions

    Table 9.60 shows several +9.25. System Information Functions

    9.25. System Information Functions

    Table 9.60 shows several functions that extract session and system information.

    In addition to the functions listed in this section, there are a number of functions related to the statistics system that also provide system @@ -692,4 +692,4 @@ Table 9.75

    Table 9.75. pg_control_init Columns

    Column NameData Type
    max_data_alignmentinteger
    database_block_sizeinteger
    blocks_per_segmentinteger
    wal_block_sizeinteger
    bytes_per_wal_segmentinteger
    max_identifier_lengthinteger
    max_index_columnsinteger
    max_toast_chunk_sizeinteger
    large_object_chunk_sizeinteger
    float4_pass_by_valueboolean
    float8_pass_by_valueboolean
    data_page_checksum_versioninteger

    pg_control_recovery returns a record, shown in Table 9.76 -

    Table 9.76. pg_control_recovery Columns

    Column NameData Type
    min_recovery_end_lsnpg_lsn
    min_recovery_end_timelineinteger
    backup_start_lsnpg_lsn
    backup_end_lsnpg_lsn
    end_of_backup_record_requiredboolean

    \ No newline at end of file +

    Table 9.76. pg_control_recovery Columns

    Column NameData Type
    min_recovery_end_lsnpg_lsn
    min_recovery_end_timelineinteger
    backup_start_lsnpg_lsn
    backup_end_lsnpg_lsn
    end_of_backup_record_requiredboolean

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-json.html postgresql-10-10.19/doc/src/sgml/html/functions-json.html --- postgresql-10-10.17/doc/src/sgml/html/functions-json.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-json.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.15. JSON Functions and Operators

    9.15. JSON Functions and Operators

    Table 9.43 shows the operators that +9.15. JSON Functions and Operators

    9.15. JSON Functions and Operators

    Table 9.43 shows the operators that are available for use with the two JSON data types (see Section 8.14).

    Table 9.43. json and jsonb Operators

    OperatorRight Operand TypeDescriptionExampleExample Result
    ->intGet JSON array element (indexed from zero, negative integers count from the end)'[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2{"c":"baz"}
    ->textGet JSON object field by key'{"a": {"b":"foo"}}'::json->'a'{"b":"foo"}
    ->>intGet JSON array element as text'[1,2,3]'::json->>23
    ->>textGet JSON object field as text'{"a":1,"b":2}'::json->>'b'2
    #>text[]Get JSON object at specified path'{"a": {"b":{"c": "foo"}}}'::json#>'{a,b}'{"c": "foo"}
    #>>text[]Get JSON object at specified path as text'{"a":[1,2,3],"b":[4,5,6]}'::json#>>'{a,2}'3

    Note

    There are parallel variants of these operators for both the @@ -317,4 +317,4 @@ json_object_agg which aggregates pairs of values into a JSON object, and their jsonb equivalents, jsonb_agg and jsonb_object_agg. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-logical.html postgresql-10-10.19/doc/src/sgml/html/functions-logical.html --- postgresql-10-10.17/doc/src/sgml/html/functions-logical.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-logical.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -9.1. Logical Operators

    9.1. Logical Operators

    The usual logical operators are available: +9.1. Logical Operators

    9.1. Logical Operators

    The usual logical operators are available: @@ -26,4 +26,4 @@ commutative, that is, you can switch the left and right operand without affecting the result. But see Section 4.2.14 for more information about the order of evaluation of subexpressions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-matching.html postgresql-10-10.19/doc/src/sgml/html/functions-matching.html --- postgresql-10-10.17/doc/src/sgml/html/functions-matching.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-matching.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.7. Pattern Matching

    9.7. Pattern Matching

    There are three separate approaches to pattern matching provided +9.7. Pattern Matching

    9.7. Pattern Matching

    There are three separate approaches to pattern matching provided by PostgreSQL: the traditional SQL LIKE operator, the more recent SIMILAR TO operator (added in @@ -889,4 +889,4 @@ are synonyms for [[:<:]] and [[:>:]] respectively; no other escapes are available in BREs. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-math.html postgresql-10-10.19/doc/src/sgml/html/functions-math.html --- postgresql-10-10.17/doc/src/sgml/html/functions-math.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-math.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -9.3. Mathematical Functions and Operators

    9.3. Mathematical Functions and Operators

    Mathematical operators are provided for many +9.3. Mathematical Functions and Operators

    9.3. Mathematical Functions and Operators

    Mathematical operators are provided for many PostgreSQL types. For types without standard mathematical conventions (e.g., date/time types) we @@ -134,4 +134,4 @@ However, using the degree-based trigonometric functions is preferred, as that way avoids round-off error for special cases such as sind(30). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-net.html postgresql-10-10.19/doc/src/sgml/html/functions-net.html --- postgresql-10-10.17/doc/src/sgml/html/functions-net.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-net.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.12. Network Address Functions and Operators

    9.12. Network Address Functions and Operators

    Table 9.36 shows the operators +9.12. Network Address Functions and Operators

    9.12. Network Address Functions and Operators

    Table 9.36 shows the operators available for the cidr and inet types. The operators <<, <<=, >>, @@ -77,4 +77,4 @@ operators (>, <=, etc.) for ordering, and the bitwise arithmetic operators (~, & and |) for NOT, AND and OR. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-range.html postgresql-10-10.19/doc/src/sgml/html/functions-range.html --- postgresql-10-10.17/doc/src/sgml/html/functions-range.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-range.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.19. Range Functions and Operators

    9.19. Range Functions and Operators

    See Section 8.17 for an overview of range types. +9.19. Range Functions and Operators

    9.19. Range Functions and Operators

    See Section 8.17 for an overview of range types.

    Table 9.50 shows the operators available for range types.

    Table 9.50. Range Operators

    OperatorDescriptionExampleResult
    = equalint4range(1,5) = '[1,4]'::int4ranget
    <> not equalnumrange(1.1,2.2) <> numrange(1.1,2.3)t
    < less thanint4range(1,10) < int4range(2,3)t
    > greater thanint4range(1,10) > int4range(1,5)t
    <= less than or equalnumrange(1.1,2.2) <= numrange(1.1,2.2)t
    >= greater than or equalnumrange(1.1,2.2) >= numrange(1.1,2.0)t
    @> contains rangeint4range(2,4) @> int4range(2,3)t
    @> contains element'[2011-01-01,2011-03-01)'::tsrange @> '2011-01-10'::timestampt
    <@ range is contained byint4range(2,4) <@ int4range(1,7)t
    <@ element is contained by42 <@ int4range(1,7)f
    && overlap (have points in common)int8range(3,7) && int8range(4,12)t
    << strictly left ofint8range(1,10) << int8range(100,110)t
    >> strictly right ofint8range(50,60) >> int8range(20,30)t
    &< does not extend to the right ofint8range(1,20) &< int8range(18,20)t
    &> does not extend to the left ofint8range(7,20) &> int8range(5,10)t
    -|- is adjacent tonumrange(1.1,2.2) -|- numrange(2.2,3.3)t
    + unionnumrange(5,15) + numrange(10,20)[5,20)
    * intersectionint8range(5,15) * int8range(10,20)[10,15)
    - differenceint8range(5,15) - int8range(10,20)[5,10)

    The simple comparison operators <, @@ -37,4 +37,4 @@ The lower_inc, upper_inc, lower_inf, and upper_inf functions all return false for an empty range. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-sequence.html postgresql-10-10.19/doc/src/sgml/html/functions-sequence.html --- postgresql-10-10.17/doc/src/sgml/html/functions-sequence.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-sequence.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.16. Sequence Manipulation Functions

    9.16. Sequence Manipulation Functions

    This section describes functions for operating on sequence +9.16. Sequence Manipulation Functions

    9.16. Sequence Manipulation Functions

    This section describes functions for operating on sequence objects, also called sequence generators or just sequences. Sequence objects are special single-row tables created with CREATE SEQUENCE. Sequence objects are commonly used to generate unique identifiers @@ -121,4 +121,4 @@

    This function requires UPDATE privilege on the sequence.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-srf.html postgresql-10-10.19/doc/src/sgml/html/functions-srf.html --- postgresql-10-10.17/doc/src/sgml/html/functions-srf.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-srf.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.24. Set Returning Functions

    9.24. Set Returning Functions

    This section describes functions that possibly return more than one row. +9.24. Set Returning Functions

    9.24. Set Returning Functions

    This section describes functions that possibly return more than one row. The most widely used functions in this class are series generating functions, as detailed in Table 9.58 and Table 9.59. Other, more specialized @@ -156,4 +156,4 @@ pg_stat_tmp | 18 pg_subtrans | 19 (19 rows)

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-string.html postgresql-10-10.19/doc/src/sgml/html/functions-string.html --- postgresql-10-10.17/doc/src/sgml/html/functions-string.html 2021-05-10 20:58:07.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-string.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.4. String Functions and Operators

    9.4. String Functions and Operators

    This section describes functions and operators for examining and +9.4. String Functions and Operators

    9.4. String Functions and Operators

    This section describes functions and operators for examining and manipulating string values. Strings in this context include values of the types character, character varying, and text. Unless otherwise noted, all @@ -450,4 +450,4 @@

    The %I and %L format specifiers are particularly useful for safely constructing dynamic SQL statements. See Example 42.1. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-subquery.html postgresql-10-10.19/doc/src/sgml/html/functions-subquery.html --- postgresql-10-10.17/doc/src/sgml/html/functions-subquery.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-subquery.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.22. Subquery Expressions

    9.22. Subquery Expressions

    This section describes the SQL-compliant subquery +9.22. Subquery Expressions

    9.22. Subquery Expressions

    This section describes the SQL-compliant subquery expressions available in PostgreSQL. All of the expression forms documented in this section return Boolean (true/false) results. @@ -159,4 +159,4 @@ compared row-wise to the single subquery result row.

    See Section 9.23.5 for details about the meaning of a row constructor comparison. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-textsearch.html postgresql-10-10.19/doc/src/sgml/html/functions-textsearch.html --- postgresql-10-10.17/doc/src/sgml/html/functions-textsearch.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-textsearch.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.13. Text Search Functions and Operators

    9.13. Text Search Functions and Operators

    Table 9.40, +9.13. Text Search Functions and Operators

    9.13. Text Search Functions and Operators

    Table 9.40, Table 9.41 and Table 9.42 summarize the functions and operators that are provided @@ -90,4 +90,4 @@ ts_token_type(parser_name text, OUT tokid integer, OUT alias text, OUT description text) setof recordget token types defined by parserts_token_type('default')(1,asciiword,"Word, all ASCII") ...ts_token_type(parser_oid oid, OUT tokid integer, OUT alias text, OUT description text)setof recordget token types defined by parserts_token_type(3722)(1,asciiword,"Word, all ASCII") ... ts_stat(sqlquery text, [ weights text, ] OUT word text, OUT ndoc integer, OUT nentry integer) - setof recordget statistics of a tsvector columnts_stat('SELECT vector from apod')(foo,10,15) ...


    \ No newline at end of file + setof recordget statistics of a tsvector columnts_stat('SELECT vector from apod')(foo,10,15) ...
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-trigger.html postgresql-10-10.19/doc/src/sgml/html/functions-trigger.html --- postgresql-10-10.17/doc/src/sgml/html/functions-trigger.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-trigger.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.27. Trigger Functions

    9.27. Trigger Functions

    Currently PostgreSQL provides one built in trigger +9.27. Trigger Functions

    9.27. Trigger Functions

    Currently PostgreSQL provides one built in trigger function, suppress_redundant_updates_trigger, which will prevent any update that does not actually change the data in the row from taking place, in @@ -30,4 +30,4 @@ you might have on the table.

    For more information about creating triggers, see CREATE TRIGGER. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-window.html postgresql-10-10.19/doc/src/sgml/html/functions-window.html --- postgresql-10-10.17/doc/src/sgml/html/functions-window.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-window.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -9.21. Window Functions

    9.21. Window Functions

    Window functions provide the ability to perform +9.21. Window Functions

    9.21. Window Functions

    Window functions provide the ability to perform calculations across sets of rows that are related to the current query row. See Section 3.5 for an introduction to this feature, and Section 4.2.8 for syntax @@ -127,4 +127,4 @@ percent_rank computes the fraction of partition rows that are less than the current row, assuming the current row does not exist in the partition. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/functions-xml.html postgresql-10-10.19/doc/src/sgml/html/functions-xml.html --- postgresql-10-10.17/doc/src/sgml/html/functions-xml.html 2021-05-10 20:58:08.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/functions-xml.html 2021-11-08 22:24:50.000000000 +0000 @@ -1,5 +1,5 @@ -9.14. XML Functions

    9.14. XML Functions

    The functions and function-like expressions described in this +9.14. XML Functions

    9.14. XML Functions

    The functions and function-like expressions described in this section operate on values of type xml. See Section 8.13 for information about the xml type. The function-like expressions xmlparse and xmlserialize for converting to and from @@ -678,4 +678,4 @@ </html> </xsl:template> -</xsl:stylesheet>


    \ No newline at end of file +</xsl:stylesheet>
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/fuzzystrmatch.html postgresql-10-10.19/doc/src/sgml/html/fuzzystrmatch.html --- postgresql-10-10.17/doc/src/sgml/html/fuzzystrmatch.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/fuzzystrmatch.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.16. fuzzystrmatch

    F.16. fuzzystrmatch

    The fuzzystrmatch module provides several +F.16. fuzzystrmatch

    F.16. fuzzystrmatch

    The fuzzystrmatch module provides several functions to determine similarities and distance between strings.

    Caution

    At present, the soundex, metaphone, dmetaphone, and dmetaphone_alt functions do @@ -98,4 +98,4 @@ dmetaphone ------------ KMP -(1 row)

    \ No newline at end of file +(1 row)
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/generic-wal.html postgresql-10-10.19/doc/src/sgml/html/generic-wal.html --- postgresql-10-10.17/doc/src/sgml/html/generic-wal.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/generic-wal.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 61. Generic WAL Records

    Chapter 61. Generic WAL Records

    Although all built-in WAL-logged modules have their own types of WAL +Chapter 61. Generic WAL Records

    Chapter 61. Generic WAL Records

    Although all built-in WAL-logged modules have their own types of WAL records, there is also a generic WAL record type, which describes changes to pages in a generic way. This is useful for extensions that provide custom access methods, because they cannot register their own WAL redo @@ -74,4 +74,4 @@ comparison. This is not very compact for the case of moving data within a page, and might be improved in the future.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/geqo-biblio.html postgresql-10-10.19/doc/src/sgml/html/geqo-biblio.html --- postgresql-10-10.17/doc/src/sgml/html/geqo-biblio.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/geqo-biblio.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -59.4. Further Reading

    59.4. Further Reading

    The following resources contain additional information about +59.4. Further Reading

    59.4. Further Reading

    The following resources contain additional information about genetic algorithms:

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/geqo.html postgresql-10-10.19/doc/src/sgml/html/geqo.html --- postgresql-10-10.17/doc/src/sgml/html/geqo.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/geqo.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,6 +1,6 @@ -Chapter 59. Genetic Query Optimizer

    Chapter 59. Genetic Query Optimizer

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/geqo-intro2.html postgresql-10-10.19/doc/src/sgml/html/geqo-intro2.html --- postgresql-10-10.17/doc/src/sgml/html/geqo-intro2.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/geqo-intro2.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -59.2. Genetic Algorithms

    59.2. Genetic Algorithms

    The genetic algorithm (GA) is a heuristic optimization method which +59.2. Genetic Algorithms

    59.2. Genetic Algorithms

    The genetic algorithm (GA) is a heuristic optimization method which operates through randomized search. The set of possible solutions for the optimization problem is considered as a population of individuals. @@ -39,4 +39,4 @@ | | evaluate FITNESS of P''(t) | | +-------------------------------------+ | | t := t + 1 | -+===+=====================================+


    \ No newline at end of file ++===+=====================================+
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/geqo-intro.html postgresql-10-10.19/doc/src/sgml/html/geqo-intro.html --- postgresql-10-10.17/doc/src/sgml/html/geqo-intro.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/geqo-intro.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -59.1. Query Handling as a Complex Optimization Problem

    59.1. Query Handling as a Complex Optimization Problem

    Among all relational operators the most difficult one to process +59.1. Query Handling as a Complex Optimization Problem

    59.1. Query Handling as a Complex Optimization Problem

    Among all relational operators the most difficult one to process and optimize is the join. The number of possible query plans grows exponentially with the number of joins in the query. Further optimization effort is @@ -29,4 +29,4 @@ genetic algorithm to solve the join ordering problem in a manner that is efficient for queries involving large numbers of joins. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/geqo-pg-intro.html postgresql-10-10.19/doc/src/sgml/html/geqo-pg-intro.html --- postgresql-10-10.17/doc/src/sgml/html/geqo-pg-intro.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/geqo-pg-intro.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -59.3. Genetic Query Optimization (GEQO) in PostgreSQL

    59.3. Genetic Query Optimization (GEQO) in PostgreSQL

    59.3.1. Generating Possible Plans with GEQO
    59.3.2. Future Implementation Tasks for +59.3. Genetic Query Optimization (GEQO) in PostgreSQL

    59.3. Genetic Query Optimization (GEQO) in PostgreSQL

    The GEQO module approaches the query optimization problem as though it were the well-known traveling salesman problem (TSP). @@ -88,4 +88,4 @@ of the rest of the tour, but this is certainly not true for query optimization. Thus it is questionable whether edge recombination crossover is the most effective mutation procedure. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gin-builtin-opclasses.html postgresql-10-10.19/doc/src/sgml/html/gin-builtin-opclasses.html --- postgresql-10-10.17/doc/src/sgml/html/gin-builtin-opclasses.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gin-builtin-opclasses.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -64.2. Built-in Operator Classes

    64.2. Built-in Operator Classes

    The core PostgreSQL distribution +64.2. Built-in Operator Classes

    64.2. Built-in Operator Classes

    The core PostgreSQL distribution includes the GIN operator classes shown in Table 64.1. (Some of the optional modules described in Appendix F @@ -19,4 +19,4 @@ is the default. jsonb_path_ops supports fewer operators but offers better performance for those operators. See Section 8.14.4 for details. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gin-examples.html postgresql-10-10.19/doc/src/sgml/html/gin-examples.html --- postgresql-10-10.17/doc/src/sgml/html/gin-examples.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gin-examples.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,9 +1,9 @@ -64.7. Examples

    64.7. Examples

    The core PostgreSQL distribution +64.7. Examples

    64.7. Examples

    The core PostgreSQL distribution includes the GIN operator classes previously shown in Table 64.1. The following contrib modules also contain GIN operator classes:

    btree_gin

    B-tree equivalent functionality for several data types

    hstore

    Module for storing (key, value) pairs

    intarray

    Enhanced support for int[]

    pg_trgm

    Text similarity using trigram matching

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gin-extensibility.html postgresql-10-10.19/doc/src/sgml/html/gin-extensibility.html --- postgresql-10-10.17/doc/src/sgml/html/gin-extensibility.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gin-extensibility.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -64.3. Extensibility

    64.3. Extensibility

    The GIN interface has a high level of abstraction, +64.3. Extensibility

    64.3. Extensibility

    The GIN interface has a high level of abstraction, requiring the access method implementer only to implement the semantics of the data type being accessed. The GIN layer itself takes care of concurrency, logging and searching the tree structure. @@ -201,4 +201,4 @@ recommended that the SQL declarations of these three support functions use the opclass's indexed data type for the query argument, even though the actual type might be something else depending on the operator. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gin.html postgresql-10-10.19/doc/src/sgml/html/gin.html --- postgresql-10-10.17/doc/src/sgml/html/gin.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gin.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 64. GIN Indexes \ No newline at end of file +Chapter 64. GIN Indexes \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gin-implementation.html postgresql-10-10.19/doc/src/sgml/html/gin-implementation.html --- postgresql-10-10.17/doc/src/sgml/html/gin-implementation.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gin-implementation.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -64.4. Implementation

    64.4. Implementation

    Internally, a GIN index contains a B-tree index +64.4. Implementation

    64.4. Implementation

    Internally, a GIN index contains a B-tree index constructed over keys, where each key is an element of one or more indexed items (a member of an array, for example) and where each tuple in a leaf page contains either a pointer to a B-tree of heap pointers (a @@ -53,4 +53,4 @@ index key, less than zero for a non-match that is still within the range to be searched, or greater than zero if the index key is past the range that could match. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gin-intro.html postgresql-10-10.19/doc/src/sgml/html/gin-intro.html --- postgresql-10-10.17/doc/src/sgml/html/gin-intro.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gin-intro.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -64.1. Introduction

    64.1. Introduction

    GIN stands for Generalized Inverted Index. +64.1. Introduction

    64.1. Introduction

    GIN stands for Generalized Inverted Index. GIN is designed for handling cases where the items to be indexed are composite values, and the queries to be handled by the index need to search for element values that appear within @@ -31,4 +31,4 @@ maintained by Teodor Sigaev and Oleg Bartunov. There is more information about GIN on their website. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gin-limit.html postgresql-10-10.19/doc/src/sgml/html/gin-limit.html --- postgresql-10-10.17/doc/src/sgml/html/gin-limit.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gin-limit.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,9 +1,9 @@ -64.6. Limitations

    64.6. Limitations

    GIN assumes that indexable operators are strict. This +64.6. Limitations

    64.6. Limitations

    GIN assumes that indexable operators are strict. This means that extractValue will not be called at all on a null item value (instead, a placeholder index entry is created automatically), and extractQuery will not be called on a null query value either (instead, the query is presumed to be unsatisfiable). Note however that null key values contained within a non-null composite item or query value are supported. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gin-tips.html postgresql-10-10.19/doc/src/sgml/html/gin-tips.html --- postgresql-10-10.17/doc/src/sgml/html/gin-tips.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gin-tips.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -64.5. GIN Tips and Tricks

    64.5. GIN Tips and Tricks

    Create vs. insert

    Insertion into a GIN index can be slow +64.5. GIN Tips and Tricks

    64.5. GIN Tips and Tricks

    Create vs. insert

    Insertion into a GIN index can be slow due to the likelihood of many keys being inserted for each item. So, for bulk insertions into a table it is advisable to drop the GIN index and recreate it after finishing bulk insertion. @@ -45,4 +45,4 @@ and the quality of the system's random number generator.

    From experience, values in the thousands (e.g., 5000 — 20000) work well. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gist-builtin-opclasses.html postgresql-10-10.19/doc/src/sgml/html/gist-builtin-opclasses.html --- postgresql-10-10.17/doc/src/sgml/html/gist-builtin-opclasses.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gist-builtin-opclasses.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -62.2. Built-in Operator Classes

    62.2. Built-in Operator Classes

    The core PostgreSQL distribution +62.2. Built-in Operator Classes

    62.2. Built-in Operator Classes

    The core PostgreSQL distribution includes the GiST operator classes shown in Table 62.1. (Some of the optional modules described in Appendix F @@ -86,4 +86,4 @@ To use it, mention the class name in CREATE INDEX, for example

    CREATE INDEX ON my_table USING GIST (my_inet_column inet_ops);

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gist-examples.html postgresql-10-10.19/doc/src/sgml/html/gist-examples.html --- postgresql-10-10.17/doc/src/sgml/html/gist-examples.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gist-examples.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -62.5. Examples

    62.5. Examples

    The PostgreSQL source distribution includes +62.5. Examples

    62.5. Examples

    The PostgreSQL source distribution includes several examples of index methods implemented using GiST. The core system currently provides text search support (indexing for tsvector and tsquery) as well as @@ -9,4 +9,4 @@ operator classes:

    btree_gist

    B-tree equivalent functionality for several data types

    cube

    Indexing for multidimensional cubes

    hstore

    Module for storing (key, value) pairs

    intarray

    RD-Tree for one-dimensional array of int4 values

    ltree

    Indexing for tree-like structures

    pg_trgm

    Text similarity using trigram matching

    seg

    Indexing for float ranges

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gist-extensibility.html postgresql-10-10.19/doc/src/sgml/html/gist-extensibility.html --- postgresql-10-10.17/doc/src/sgml/html/gist-extensibility.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gist-extensibility.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -62.3. Extensibility

    62.3. Extensibility

    Traditionally, implementing a new index access method meant a lot of +62.3. Extensibility

    62.3. Extensibility

    Traditionally, implementing a new index access method meant a lot of difficult work. It was necessary to understand the inner workings of the database, such as the lock manager and Write-Ahead Log. The GiST interface has a high level of abstraction, @@ -525,4 +525,4 @@ index scan, index build, or index tuple insertion). Be careful to pfree the previous value when replacing a fn_extra value, or the leak will accumulate for the duration of the operation. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gist.html postgresql-10-10.19/doc/src/sgml/html/gist.html --- postgresql-10-10.17/doc/src/sgml/html/gist.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gist.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 62. GiST Indexes \ No newline at end of file +Chapter 62. GiST Indexes \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gist-implementation.html postgresql-10-10.19/doc/src/sgml/html/gist-implementation.html --- postgresql-10-10.17/doc/src/sgml/html/gist-implementation.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gist-implementation.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -62.4. Implementation

    62.4. Implementation

    62.4.1. GiST buffering build

    Building large GiST indexes by simply inserting all the tuples tends to be +62.4. Implementation

    62.4. Implementation

    62.4.1. GiST buffering build

    Building large GiST indexes by simply inserting all the tuples tends to be slow, because if the index tuples are scattered across the index and the index is large enough to not fit in cache, the insertions need to perform a lot of random I/O. Beginning in version 9.2, PostgreSQL supports a more @@ -21,4 +21,4 @@ to the CREATE INDEX command. The default behavior is good for most cases, but turning buffering off might speed up the build somewhat if the input data is ordered. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/gist-intro.html postgresql-10-10.19/doc/src/sgml/html/gist-intro.html --- postgresql-10-10.17/doc/src/sgml/html/gist-intro.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/gist-intro.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -62.1. Introduction

    62.1. Introduction

    GiST stands for Generalized Search Tree. It is a +62.1. Introduction

    62.1. Introduction

    GiST stands for Generalized Search Tree. It is a balanced, tree-structured access method, that acts as a base template in which to implement arbitrary indexing schemes. B-trees, R-trees and many other indexing schemes can be implemented in GiST. @@ -16,4 +16,4 @@ maintained by Teodor Sigaev and Oleg Bartunov, and there is more information on their web site. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/git.html postgresql-10-10.19/doc/src/sgml/html/git.html --- postgresql-10-10.17/doc/src/sgml/html/git.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/git.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -I.1. Getting The Source via Git

    I.1. Getting The Source via Git

    With Git you will make a copy of the entire code repository +I.1. Getting The Source via Git

    I.1. Getting The Source via Git

    With Git you will make a copy of the entire code repository on your local machine, so you will have access to all history and branches offline. This is the fastest and most flexible way to develop or test patches. @@ -27,4 +27,4 @@

    Git can do a lot more things than just fetch the source. For more information, consult the Git man pages, or see the website at https://git-scm.com. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/hash-implementation.html postgresql-10-10.19/doc/src/sgml/html/hash-implementation.html --- postgresql-10-10.17/doc/src/sgml/html/hash-implementation.html 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/hash-implementation.html 2021-11-08 22:25:08.000000000 +0000 @@ -0,0 +1,31 @@ + +66.2. Implementation

    66.2. Implementation

    There are four kinds of pages in a hash index: the meta page (page zero), + which contains statically allocated control information; primary bucket + pages; overflow pages; and bitmap pages, which keep track of overflow + pages that have been freed and are available for re-use. For addressing + purposes, bitmap pages are regarded as a subset of the overflow pages. +

    Both scanning the index and inserting tuples require locating the bucket + where a given tuple ought to be located. To do this, we need the bucket + count, highmask, and lowmask from the metapage; however, it's undesirable + for performance reasons to have to have to lock and pin the metapage for + every such operation. Instead, we retain a cached copy of the metapage + in each backend's relcache entry. This will produce the correct bucket + mapping as long as the target bucket hasn't been split since the last + cache refresh. +

    Primary bucket pages and overflow pages are allocated independently since + any given index might need more or fewer overflow pages relative to its + number of buckets. The hash code uses an interesting set of addressing + rules to support a variable number of overflow pages while not having to + move primary bucket pages around after they are created. +

    Each row in the table indexed is represented by a single index tuple in + the hash index. Hash index tuples are stored in bucket pages, and if + they exist, overflow pages. We speed up searches by keeping the index entries + in any one index page sorted by hash code, thus allowing binary search to be + used within an index page. Note however that there is *no* assumption about + the relative ordering of hash codes across different index pages of a bucket. +

    The bucket splitting algorithms to expand the hash index are too complex to + be worthy of mention here, though are described in more detail in + src/backend/access/hash/README. + The split algorithm is crash safe and can be restarted if not completed + successfully. +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/hash-index.html postgresql-10-10.19/doc/src/sgml/html/hash-index.html --- postgresql-10-10.17/doc/src/sgml/html/hash-index.html 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/hash-index.html 2021-11-08 22:25:08.000000000 +0000 @@ -0,0 +1,2 @@ + +Chapter 66. Hash Indexes

    Chapter 66. Hash Indexes

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/hash-intro.html postgresql-10-10.19/doc/src/sgml/html/hash-intro.html --- postgresql-10-10.17/doc/src/sgml/html/hash-intro.html 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/hash-intro.html 2021-11-08 22:25:08.000000000 +0000 @@ -0,0 +1,66 @@ + +66.1. Overview

    66.1. Overview

    PostgreSQL + includes an implementation of persistent on-disk hash indexes, + which are fully crash recoverable. Any data type can be indexed by a + hash index, including data types that do not have a well-defined linear + ordering. Hash indexes store only the hash value of the data being + indexed, thus there are no restrictions on the size of the data column + being indexed. +

    Hash indexes support only single-column indexes and do not allow + uniqueness checking. +

    Hash indexes support only the = operator, + so WHERE clauses that specify range operations will not be able to take + advantage of hash indexes. +

    Each hash index tuple stores just the 4-byte hash value, not the actual + column value. As a result, hash indexes may be much smaller than B-trees + when indexing longer data items such as UUIDs, URLs, etc. The absence of + the column value also makes all hash index scans lossy. Hash indexes may + take part in bitmap index scans and backward scans. +

    Hash indexes are best optimized for SELECT and UPDATE-heavy workloads + that use equality scans on larger tables. In a B-tree index, searches must + descend through the tree until the leaf page is found. In tables with + millions of rows, this descent can increase access time to data. The + equivalent of a leaf page in a hash index is referred to as a bucket page. In + contrast, a hash index allows accessing the bucket pages directly, + thereby potentially reducing index access time in larger tables. This + reduction in "logical I/O" becomes even more pronounced on indexes/data + larger than shared_buffers/RAM. +

    Hash indexes have been designed to cope with uneven distributions of + hash values. Direct access to the bucket pages works well if the hash + values are evenly distributed. When inserts mean that the bucket page + becomes full, additional overflow pages are chained to that specific + bucket page, locally expanding the storage for index tuples that match + that hash value. When scanning a hash bucket during queries, we need to + scan through all of the overflow pages. Thus an unbalanced hash index + might actually be worse than a B-tree in terms of number of block + accesses required, for some data. +

    As a result of the overflow cases, we can say that hash indexes are + most suitable for unique, nearly unique data or data with a low number + of rows per hash bucket. + One possible way to avoid problems is to exclude highly non-unique + values from the index using a partial index condition, but this may + not be suitable in many cases. +

    Like B-Trees, hash indexes perform simple index tuple deletion. This + is a deferred maintenance operation that deletes index tuples that are + known to be safe to delete (those whose item identifier's LP_DEAD bit + is already set). If an insert finds no space is available on a page we + try to avoid creating a new overflow page by attempting to remove dead + index tuples. Removal cannot occur if the page is pinned at that time. + Deletion of dead index pointers also occurs during VACUUM. +

    If it can, VACUUM will also try to squeeze the index tuples onto as + few overflow pages as possible, minimizing the overflow chain. If an + overflow page becomes empty, overflow pages can be recycled for reuse + in other buckets, though we never return them to the operating system. + There is currently no provision to shrink a hash index, other than by + rebuilding it with REINDEX. + There is no provision for reducing the number of buckets, either. +

    Hash indexes may expand the number of bucket pages as the number of + rows indexed grows. The hash key-to-bucket-number mapping is chosen so that + the index can be incrementally expanded. When a new bucket is to be added to + the index, exactly one existing bucket will need to be "split", with some of + its tuples being transferred to the new bucket according to the updated + key-to-bucket-number mapping. +

    The expansion occurs in the foreground, which could increase execution + time for user inserts. Thus, hash indexes may not be suitable for tables + with rapidly increasing number of rows. +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/high-availability.html postgresql-10-10.19/doc/src/sgml/html/high-availability.html --- postgresql-10-10.17/doc/src/sgml/html/high-availability.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/high-availability.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 26. High Availability, Load Balancing, and Replication

    Chapter 26. High Availability, Load Balancing, and Replication

    Database servers can work together to allow a second server to +Chapter 26. High Availability, Load Balancing, and Replication

    Chapter 26. High Availability, Load Balancing, and Replication

    Database servers can work together to allow a second server to take over quickly if the primary server fails (high availability), or to allow several computers to serve the same data (load balancing). Ideally, database servers could work @@ -47,4 +47,4 @@ one might have a minimal performance impact.

    The remainder of this section outlines various failover, replication, and load balancing solutions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/history.html postgresql-10-10.19/doc/src/sgml/html/history.html --- postgresql-10-10.17/doc/src/sgml/html/history.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/history.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2. A Brief History of PostgreSQL

    2. A Brief History of PostgreSQL

    The object-relational database management system now known as +2. A Brief History of PostgreSQL

    2. A Brief History of PostgreSQL

    The object-relational database management system now known as PostgreSQL is derived from the POSTGRES package written at the University of California at Berkeley. With over two decades of @@ -118,4 +118,4 @@ all areas.

    Details about what has happened in PostgreSQL since then can be found in Appendix E. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/hot-standby.html postgresql-10-10.19/doc/src/sgml/html/hot-standby.html --- postgresql-10-10.17/doc/src/sgml/html/hot-standby.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/hot-standby.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -26.5. Hot Standby

    26.5. Hot Standby

    Hot Standby is the term used to describe the ability to connect to +26.5. Hot Standby

    26.5. Hot Standby

    Hot Standby is the term used to describe the ability to connect to the server and run read-only queries while the server is in archive recovery or standby mode. This is useful both for replication purposes and for restoring a backup @@ -436,4 +436,4 @@ hot standby mode will generate an error.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/how-parallel-query-works.html postgresql-10-10.19/doc/src/sgml/html/how-parallel-query-works.html --- postgresql-10-10.17/doc/src/sgml/html/how-parallel-query-works.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/how-parallel-query-works.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,6 +1,6 @@ -15.1. How Parallel Query Works

    15.1. How Parallel Query Works

    When the optimizer determines that parallel query is the fastest execution - strategy for a particular query, it will create a query plan which includes +15.1. How Parallel Query Works

    15.1. How Parallel Query Works

    When the optimizer determines that parallel query is the fastest execution + strategy for a particular query, it will create a query plan that includes a Gather or Gather Merge node. Here is a simple example: @@ -24,7 +24,7 @@ Gather node, it will run in parallel.

    Using EXPLAIN, you can see the number of workers chosen by the planner. When the Gather node is reached - during query execution, the process which is implementing the user's + during query execution, the process that is implementing the user's session will request a number of background worker processes equal to the number of workers chosen by the planner. The number of background workers that @@ -41,7 +41,7 @@ so that more workers can be run simultaneously or alternatively reducing max_parallel_workers_per_gather so that the planner requests fewer workers. -

    Every background worker process which is successfully started for a given +

    Every background worker process that is successfully started for a given parallel query will execute the parallel portion of the plan. The leader will also execute that portion of the plan, but it has an additional responsibility: it must also read all of the tuples generated by the @@ -50,7 +50,7 @@ worker, speeding up query execution. Conversely, when the parallel portion of the plan generates a large number of tuples, the leader may be almost entirely occupied with reading the tuples generated by the workers and - performing any further processing steps which are required by plan nodes + performing any further processing steps that are required by plan nodes above the level of the Gather node or Gather Merge node. In such cases, the leader will do very little of the work of executing the parallel portion of the plan. @@ -61,4 +61,4 @@ order-preserving merge. In contrast, Gather reads tuples from the workers in whatever order is convenient, destroying any sort order that may have existed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/hstore.html postgresql-10-10.19/doc/src/sgml/html/hstore.html --- postgresql-10-10.17/doc/src/sgml/html/hstore.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/hstore.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.17. hstore

    F.17. hstore

    This module implements the hstore data type for storing sets of +F.17. hstore

    F.17. hstore

    This module implements the hstore data type for storing sets of key/value pairs within a single PostgreSQL value. This can be useful in various scenarios, such as rows with many attributes that are rarely examined, or semi-structured data. Keys and values are @@ -171,4 +171,4 @@

    Teodor Sigaev , Moscow, Delta-Soft Ltd., Russia

    Additional enhancements by Andrew Gierth , United Kingdom -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexam.html postgresql-10-10.19/doc/src/sgml/html/indexam.html --- postgresql-10-10.17/doc/src/sgml/html/indexam.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexam.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 60. Index Access Method Interface Definition

    Chapter 60. Index Access Method Interface Definition

    This chapter defines the interface between the core +Chapter 60. Index Access Method Interface Definition

    Chapter 60. Index Access Method Interface Definition

    This chapter defines the interface between the core PostgreSQL system and index access methods, which manage individual index types. The core system knows nothing about indexes beyond what is specified here, so it is @@ -13,12 +13,12 @@ practice, all index access methods divide indexes into standard-size pages so that they can use the regular storage manager and buffer manager to access the index contents. (All the existing index access methods - furthermore use the standard page layout described in Section 66.6, and most use the same format for index + furthermore use the standard page layout described in Section 67.6, and most use the same format for index tuple headers; but these decisions are not forced on an access method.)

    An index is effectively a mapping from some data key values to tuple identifiers, or TIDs, of row versions (tuples) in the index's parent table. A TID consists of a - block number and an item number within that block (see Section 66.6). This is sufficient + block number and an item number within that block (see Section 67.6). This is sufficient information to fetch a particular row version from the table. Indexes are not directly aware that under MVCC, there might be multiple extant versions of the same logical row; to an index, each tuple is @@ -28,4 +28,4 @@ statement; but indexes do not deal with those, either.) Index entries for dead tuples are reclaimed (by vacuuming) when the dead tuples themselves are reclaimed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/index-api.html postgresql-10-10.19/doc/src/sgml/html/index-api.html --- postgresql-10-10.17/doc/src/sgml/html/index-api.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/index-api.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -60.1. Basic API Structure for Indexes

    60.1. Basic API Structure for Indexes

    Each index access method is described by a row in the +60.1. Basic API Structure for Indexes

    60.1. Basic API Structure for Indexes

    Each index access method is described by a row in the pg_am system catalog. The pg_am entry specifies a name and a handler function for the access @@ -148,4 +148,4 @@ amsearchnulls, indicating that it supports IS NULL and IS NOT NULL clauses as search conditions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/index-cost-estimation.html postgresql-10-10.19/doc/src/sgml/html/index-cost-estimation.html --- postgresql-10-10.17/doc/src/sgml/html/index-cost-estimation.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/index-cost-estimation.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -60.6. Index Cost Estimation Functions

    60.6. Index Cost Estimation Functions

    The amcostestimate function is given information describing +60.6. Index Cost Estimation Functions

    60.6. Index Cost Estimation Functions

    The amcostestimate function is given information describing a possible index scan, including lists of WHERE and ORDER BY clauses that have been determined to be usable with the index. It must return estimates of the cost of accessing the index and the selectivity of the WHERE @@ -107,4 +107,4 @@ is not known, the conservative estimate is zero (no correlation).

    Examples of cost estimator functions can be found in src/backend/utils/adt/selfuncs.c. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-bitmap-scans.html postgresql-10-10.19/doc/src/sgml/html/indexes-bitmap-scans.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-bitmap-scans.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-bitmap-scans.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -11.5. Combining Multiple Indexes

    11.5. Combining Multiple Indexes

    A single index scan can only use query clauses that use the index's +11.5. Combining Multiple Indexes

    11.5. Combining Multiple Indexes

    A single index scan can only use query clauses that use the index's columns with operators of its operator class and are joined with AND. For example, given an index on (a, b) a query condition like WHERE a = 5 AND b = 6 could @@ -54,4 +54,4 @@ common. If one of the types of query is much less common than the others, you'd probably settle for creating just the two indexes that best match the common types. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-collations.html postgresql-10-10.19/doc/src/sgml/html/indexes-collations.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-collations.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-collations.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -11.10. Indexes and Collations

    11.10. Indexes and Collations

    An index can support only one collation per index column. +11.10. Indexes and Collations

    11.10. Indexes and Collations

    An index can support only one collation per index column. If multiple collations are of interest, multiple indexes may be needed.

    Consider these statements:

    CREATE TABLE test1c (
    @@ -18,4 +18,4 @@
        are also of interest, an additional index could be created that supports
        the "y" collation, like this:
     

    CREATE INDEX test1c_content_y_index ON test1c (content COLLATE "y");

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-examine.html postgresql-10-10.19/doc/src/sgml/html/indexes-examine.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-examine.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-examine.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -11.12. Examining Index Usage

    11.12. Examining Index Usage

    Although indexes in PostgreSQL do not need +11.12. Examining Index Usage

    11.12. Examining Index Usage

    Although indexes in PostgreSQL do not need maintenance or tuning, it is still important to check which indexes are actually used by the real-life query workload. Examining index usage for an individual query is done with the @@ -69,4 +69,4 @@ appropriate, then you might have to resort to forcing index usage explicitly. You might also want to contact the PostgreSQL developers to examine the issue. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-expressional.html postgresql-10-10.19/doc/src/sgml/html/indexes-expressional.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-expressional.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-expressional.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -11.7. Indexes on Expressions

    11.7. Indexes on Expressions

    An index column need not be just a column of the underlying table, +11.7. Indexes on Expressions

    11.7. Indexes on Expressions

    An index column need not be just a column of the underlying table, but can be a function or scalar expression computed from one or more columns of the table. This feature is useful to obtain fast access to tables based on the results of computations. @@ -32,4 +32,4 @@ and so the speed of the search is equivalent to any other simple index query. Thus, indexes on expressions are useful when retrieval speed is more important than insertion and update speed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes.html postgresql-10-10.19/doc/src/sgml/html/indexes.html --- postgresql-10-10.17/doc/src/sgml/html/indexes.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,7 +1,7 @@ -Chapter 11. Indexes

    Chapter 11. Indexes

    Indexes are a common way to enhance database performance. An index +Chapter 11. Indexes

    Chapter 11. Indexes

    Indexes are a common way to enhance database performance. An index allows the database server to find and retrieve specific rows much faster than it could do without an index. But indexes also add overhead to the database system as a whole, so they should be used sensibly. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-index-only-scans.html postgresql-10-10.19/doc/src/sgml/html/indexes-index-only-scans.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-index-only-scans.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-index-only-scans.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -11.11. Index-Only Scans

    11.11. Index-Only Scans

    All indexes in PostgreSQL are secondary +11.11. Index-Only Scans

    11.11. Index-Only Scans

    All indexes in PostgreSQL are secondary indexes, meaning that each index is stored separately from the table's main data area (which is called the table's heap in PostgreSQL terminology). This means that in an @@ -120,4 +120,4 @@ plan. PostgreSQL versions 9.6 and later will recognize such cases and allow index-only scans to be generated, but older versions will not. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-intro.html postgresql-10-10.19/doc/src/sgml/html/indexes-intro.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-intro.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-intro.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -11.1. Introduction

    11.1. Introduction

    Suppose we have a table similar to this: +11.1. Introduction

    11.1. Introduction

    Suppose we have a table similar to this:

    CREATE TABLE test1 (
         id integer,
         content varchar
    @@ -58,4 +58,4 @@
        table.  This adds overhead to data manipulation operations.
        Therefore indexes that are seldom or never used in queries
        should be removed.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-multicolumn.html postgresql-10-10.19/doc/src/sgml/html/indexes-multicolumn.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-multicolumn.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-multicolumn.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -11.3. Multicolumn Indexes

    11.3. Multicolumn Indexes

    An index can be defined on more than one column of a table. For example, if +11.3. Multicolumn Indexes

    11.3. Multicolumn Indexes

    An index can be defined on more than one column of a table. For example, if you have a table of this form:

    CREATE TABLE test2 (
       major int,
    @@ -63,4 +63,4 @@
        Section 11.5 and
        Section 11.11 for some discussion of the
        merits of different index configurations.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-opclass.html postgresql-10-10.19/doc/src/sgml/html/indexes-opclass.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-opclass.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-opclass.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -11.9. Operator Classes and Operator Families

    11.9. Operator Classes and Operator Families

    An index definition can specify an operator +11.9. Operator Classes and Operator Families

    11.9. Operator Classes and Operator Families

    An index definition can specify an operator class for each column of an index.

    CREATE INDEX name ON table (column opclass [sort options] [, ...]);

    The operator class identifies the operators to be used by the index @@ -82,4 +82,4 @@ WHERE opf.opfmethod = am.oid AND amop.amopfamily = opf.oid ORDER BY index_method, opfamily_name, opfamily_operator;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-ordering.html postgresql-10-10.19/doc/src/sgml/html/indexes-ordering.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-ordering.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-ordering.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -11.4. Indexes and ORDER BY

    11.4. Indexes and ORDER BY

    In addition to simply finding the rows to be returned by a query, +11.4. Indexes and ORDER BY

    11.4. Indexes and ORDER BY

    In addition to simply finding the rows to be returned by a query, an index may be able to deliver them in a specific sorted order. This allows a query's ORDER BY specification to be honored without a separate sorting step. Of the index types currently @@ -52,4 +52,4 @@ speedups for certain queries. Whether it's worth maintaining such an index depends on how often you use queries that require a special sort ordering. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-partial.html postgresql-10-10.19/doc/src/sgml/html/indexes-partial.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-partial.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-partial.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -11.8. Partial Indexes

    11.8. Partial Indexes

    A partial index is an index built over a +11.8. Partial Indexes

    11.8. Partial Indexes

    A partial index is an index built over a subset of a table; the subset is defined by a conditional expression (called the predicate of the partial index). The index contains entries only for those table @@ -166,4 +166,4 @@ does understand that the tables and indexes are non-overlapping, so far better performance is possible.


    More information about partial indexes can be found in [ston89b], [olson93], and [seshadri95]. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-types.html postgresql-10-10.19/doc/src/sgml/html/indexes-types.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-types.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-types.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -11.2. Index Types

    11.2. Index Types

    PostgreSQL provides several index types: +11.2. Index Types

    11.2. Index Types

    PostgreSQL provides several index types: B-tree, Hash, GiST, SP-GiST, GIN and BRIN. Each index type uses a different algorithm that is best suited to different types of queries. @@ -129,4 +129,4 @@ The BRIN operator classes included in the standard distribution are documented in Table 65.1. For more information see Chapter 65. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/indexes-unique.html postgresql-10-10.19/doc/src/sgml/html/indexes-unique.html --- postgresql-10-10.17/doc/src/sgml/html/indexes-unique.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/indexes-unique.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -11.6. Unique Indexes

    11.6. Unique Indexes

    Indexes can also be used to enforce uniqueness of a column's value, +11.6. Unique Indexes

    11.6. Unique Indexes

    Indexes can also be used to enforce uniqueness of a column's value, or the uniqueness of the combined values of more than one column.

    CREATE UNIQUE INDEX name ON table (column [, ...]);

    Currently, only B-tree indexes can be declared unique. @@ -15,4 +15,4 @@

    Note

    There's no need to manually create indexes on unique columns; doing so would just duplicate the automatically-created index. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/index-functions.html postgresql-10-10.19/doc/src/sgml/html/index-functions.html --- postgresql-10-10.17/doc/src/sgml/html/index-functions.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/index-functions.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -60.2. Index Access Method Functions

    60.2. Index Access Method Functions

    The index construction and maintenance functions that an index access +60.2. Index Access Method Functions

    60.2. Index Access Method Functions

    The index construction and maintenance functions that an index access method must provide in IndexAmRoutine are:

    IndexBuildResult *
     ambuild (Relation heapRelation,
    @@ -219,7 +219,7 @@
        feature is used when a new outer tuple is selected by a nested-loop join
        and so a new key comparison value is needed, but the scan key structure
        remains the same.
    -  

    boolean
    +  

    bool
     amgettuple (IndexScanDesc scan,
                 ScanDirection direction);

    Fetch the next tuple in the given scan, moving in the given @@ -337,4 +337,4 @@ must be restarted. It should reset any shared state set up by aminitparallelscan such that the scan will be restarted from the beginning. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/index.html postgresql-10-10.19/doc/src/sgml/html/index.html --- postgresql-10-10.17/doc/src/sgml/html/index.html 2021-05-10 20:58:30.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/index.html 2021-11-08 22:25:13.000000000 +0000 @@ -1,2 +1,2 @@ -PostgreSQL 10.17 Documentation

    PostgreSQL 10.17 Documentation

    The PostgreSQL Global Development Group


    Table of Contents

    Preface
    1. What is PostgreSQL?
    2. A Brief History of PostgreSQL
    3. Conventions
    4. Further Information
    5. Bug Reporting Guidelines
    I. Tutorial
    1. Getting Started
    2. The SQL Language
    3. Advanced Features
    II. The SQL Language
    4. SQL Syntax
    5. Data Definition
    6. Data Manipulation
    7. Queries
    8. Data Types
    9. Functions and Operators
    10. Type Conversion
    11. Indexes
    12. Full Text Search
    13. Concurrency Control
    14. Performance Tips
    15. Parallel Query
    III. Server Administration
    16. Installation from Source Code
    17. Installation from Source Code on Windows
    18. Server Setup and Operation
    19. Server Configuration
    20. Client Authentication
    21. Database Roles
    22. Managing Databases
    23. Localization
    24. Routine Database Maintenance Tasks
    25. Backup and Restore
    26. High Availability, Load Balancing, and Replication
    27. Recovery Configuration
    28. Monitoring Database Activity
    29. Monitoring Disk Usage
    30. Reliability and the Write-Ahead Log
    31. Logical Replication
    32. Regression Tests
    IV. Client Interfaces
    33. libpq - C Library
    34. Large Objects
    35. ECPG - Embedded SQL in C
    36. The Information Schema
    V. Server Programming
    37. Extending SQL
    38. Triggers
    39. Event Triggers
    40. The Rule System
    41. Procedural Languages
    42. PL/pgSQL - SQL Procedural Language
    43. PL/Tcl - Tcl Procedural Language
    44. PL/Perl - Perl Procedural Language
    45. PL/Python - Python Procedural Language
    46. Server Programming Interface
    47. Background Worker Processes
    48. Logical Decoding
    49. Replication Progress Tracking
    VI. Reference
    I. SQL Commands
    II. PostgreSQL Client Applications
    III. PostgreSQL Server Applications
    VII. Internals
    50. Overview of PostgreSQL Internals
    51. System Catalogs
    52. Frontend/Backend Protocol
    53. PostgreSQL Coding Conventions
    54. Native Language Support
    55. Writing A Procedural Language Handler
    56. Writing A Foreign Data Wrapper
    57. Writing A Table Sampling Method
    58. Writing A Custom Scan Provider
    59. Genetic Query Optimizer
    60. Index Access Method Interface Definition
    61. Generic WAL Records
    62. GiST Indexes
    63. SP-GiST Indexes
    64. GIN Indexes
    65. BRIN Indexes
    66. Database Physical Storage
    67. BKI Backend Interface
    68. How the Planner Uses Statistics
    VIII. Appendixes
    A. PostgreSQL Error Codes
    B. Date/Time Support
    C. SQL Key Words
    D. SQL Conformance
    E. Release Notes
    F. Additional Supplied Modules
    G. Additional Supplied Programs
    H. External Projects
    I. The Source Code Repository
    J. Documentation
    K. Acronyms
    L. Obsolete or Renamed Features
    Bibliography
    Index
    \ No newline at end of file +PostgreSQL 10.19 Documentation

    PostgreSQL 10.19 Documentation

    The PostgreSQL Global Development Group


    Table of Contents

    Preface
    1. What is PostgreSQL?
    2. A Brief History of PostgreSQL
    3. Conventions
    4. Further Information
    5. Bug Reporting Guidelines
    I. Tutorial
    1. Getting Started
    2. The SQL Language
    3. Advanced Features
    II. The SQL Language
    4. SQL Syntax
    5. Data Definition
    6. Data Manipulation
    7. Queries
    8. Data Types
    9. Functions and Operators
    10. Type Conversion
    11. Indexes
    12. Full Text Search
    13. Concurrency Control
    14. Performance Tips
    15. Parallel Query
    III. Server Administration
    16. Installation from Source Code
    17. Installation from Source Code on Windows
    18. Server Setup and Operation
    19. Server Configuration
    20. Client Authentication
    21. Database Roles
    22. Managing Databases
    23. Localization
    24. Routine Database Maintenance Tasks
    25. Backup and Restore
    26. High Availability, Load Balancing, and Replication
    27. Recovery Configuration
    28. Monitoring Database Activity
    29. Monitoring Disk Usage
    30. Reliability and the Write-Ahead Log
    31. Logical Replication
    32. Regression Tests
    IV. Client Interfaces
    33. libpq - C Library
    34. Large Objects
    35. ECPG - Embedded SQL in C
    36. The Information Schema
    V. Server Programming
    37. Extending SQL
    38. Triggers
    39. Event Triggers
    40. The Rule System
    41. Procedural Languages
    42. PL/pgSQL - SQL Procedural Language
    43. PL/Tcl - Tcl Procedural Language
    44. PL/Perl - Perl Procedural Language
    45. PL/Python - Python Procedural Language
    46. Server Programming Interface
    47. Background Worker Processes
    48. Logical Decoding
    49. Replication Progress Tracking
    VI. Reference
    I. SQL Commands
    II. PostgreSQL Client Applications
    III. PostgreSQL Server Applications
    VII. Internals
    50. Overview of PostgreSQL Internals
    51. System Catalogs
    52. Frontend/Backend Protocol
    53. PostgreSQL Coding Conventions
    54. Native Language Support
    55. Writing A Procedural Language Handler
    56. Writing A Foreign Data Wrapper
    57. Writing A Table Sampling Method
    58. Writing A Custom Scan Provider
    59. Genetic Query Optimizer
    60. Index Access Method Interface Definition
    61. Generic WAL Records
    62. GiST Indexes
    63. SP-GiST Indexes
    64. GIN Indexes
    65. BRIN Indexes
    66. Hash Indexes
    67. Database Physical Storage
    68. BKI Backend Interface
    69. How the Planner Uses Statistics
    VIII. Appendixes
    A. PostgreSQL Error Codes
    B. Date/Time Support
    C. SQL Key Words
    D. SQL Conformance
    E. Release Notes
    F. Additional Supplied Modules
    G. Additional Supplied Programs
    H. External Projects
    I. The Source Code Repository
    J. Documentation
    K. Acronyms
    L. Obsolete or Renamed Features
    Bibliography
    Index
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/index-locking.html postgresql-10-10.19/doc/src/sgml/html/index-locking.html --- postgresql-10-10.17/doc/src/sgml/html/index-locking.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/index-locking.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -60.4. Index Locking Considerations

    60.4. Index Locking Considerations

    Index access methods must handle concurrent updates +60.4. Index Locking Considerations

    60.4. Index Locking Considerations

    Index access methods must handle concurrent updates of the index by multiple processes. The core PostgreSQL system obtains AccessShareLock on the index during an index scan, and @@ -77,4 +77,4 @@ 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. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/index-scanning.html postgresql-10-10.19/doc/src/sgml/html/index-scanning.html --- postgresql-10-10.17/doc/src/sgml/html/index-scanning.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/index-scanning.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -60.3. Index Scanning

    60.3. Index Scanning

    In an index scan, the index access method is responsible for regurgitating +60.3. Index Scanning

    60.3. Index Scanning

    In an index scan, the index access method is responsible for regurgitating the TIDs of all the tuples it has been told about that match the scan keys. The access method is not involved in actually fetching those tuples from the index's parent table, nor in @@ -107,4 +107,4 @@

    Note that it is permitted for an access method to implement only amgetbitmap and not amgettuple, or vice versa, if its internal implementation is unsuited to one API or the other. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/index-unique-checks.html postgresql-10-10.19/doc/src/sgml/html/index-unique-checks.html --- postgresql-10-10.17/doc/src/sgml/html/index-unique-checks.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/index-unique-checks.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -60.5. Index Uniqueness Checks

    60.5. Index Uniqueness Checks

    PostgreSQL enforces SQL uniqueness constraints +60.5. Index Uniqueness Checks

    60.5. Index Uniqueness Checks

    PostgreSQL enforces SQL uniqueness constraints using unique indexes, which are indexes that disallow multiple entries with identical keys. An access method that supports this feature sets amcanunique true. @@ -90,4 +90,4 @@ target row is found in the recheck verifies that we are scanning for the same tuple values as were used in the original insertion.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/information-schema.html postgresql-10-10.19/doc/src/sgml/html/information-schema.html --- postgresql-10-10.17/doc/src/sgml/html/information-schema.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/information-schema.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 36. The Information Schema

    Chapter 36. The Information Schema

    The information schema consists of a set of views that contain +Chapter 36. The Information Schema

    Chapter 36. The Information Schema

    The information schema consists of a set of views that contain information about the objects defined in the current database. The information schema is defined in the SQL standard and can therefore be expected to be portable and remain stable — unlike the system @@ -25,4 +25,4 @@ issues but contain the table name to help distinguish duplicate rows, e.g., constraint_column_usage, constraint_table_usage, table_constraints. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-administrable-role-authorizations.html postgresql-10-10.19/doc/src/sgml/html/infoschema-administrable-role-authorizations.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-administrable-role-authorizations.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-administrable-role-authorizations.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,8 +1,8 @@ -36.4. administrable_role_authorizations

    36.4. administrable_role_authorizations

    The view administrable_role_authorizations +36.4. administrable_role_authorizations

    36.4. administrable_role_authorizations

    The view administrable_role_authorizations identifies all roles that the current user has the admin option for.

    Table 36.2. administrable_role_authorizations Columns

    NameData TypeDescription
    granteesql_identifier Name of the role to which this role membership was granted (can be the current user, or a different role in case of nested role memberships) -
    role_namesql_identifierName of a role
    is_grantableyes_or_noAlways YES

    \ No newline at end of file + role_namesql_identifierName of a roleis_grantableyes_or_noAlways YES

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-applicable-roles.html postgresql-10-10.19/doc/src/sgml/html/infoschema-applicable-roles.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-applicable-roles.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-applicable-roles.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.5. applicable_roles

    36.5. applicable_roles

    The view applicable_roles identifies all roles +36.5. applicable_roles

    36.5. applicable_roles

    The view applicable_roles identifies all roles whose privileges the current user can use. This means there is some chain of role grants from the current user to the role in question. The current user itself is also an applicable role. The @@ -11,4 +11,4 @@ memberships) role_namesql_identifierName of a roleis_grantableyes_or_no YES if the grantee has the admin option on the role, NO if not -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-attributes.html postgresql-10-10.19/doc/src/sgml/html/infoschema-attributes.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-attributes.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-attributes.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.6. attributes

    36.6. attributes

    The view attributes contains information about +36.6. attributes

    36.6. attributes

    The view attributes contains information about the attributes of composite data types defined in the database. (Note that the view does not give information about table columns, which are sometimes called attributes in PostgreSQL contexts.) @@ -78,4 +78,4 @@ versions.) is_derived_reference_attributeyes_or_noApplies to a feature not available in PostgreSQL


    See also under Section 36.16, a similarly structured view, for further information on some of the columns. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-character-sets.html postgresql-10-10.19/doc/src/sgml/html/infoschema-character-sets.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-character-sets.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-character-sets.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.7. character_sets

    36.7. character_sets

    The view character_sets identifies the character +36.7. character_sets

    36.7. character_sets

    The view character_sets identifies the character sets available in the current database. Since PostgreSQL does not support multiple character sets within one database, this view only shows one, which is the database encoding. @@ -34,4 +34,4 @@ settings of the current database. If there is no such collation, then this column and the associated schema and catalog columns are null. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-check-constraint-routine-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-check-constraint-routine-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-check-constraint-routine-usage.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-check-constraint-routine-usage.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,7 +1,7 @@ -36.8. check_constraint_routine_usage

    36.8. check_constraint_routine_usage

    The view check_constraint_routine_usage +36.8. check_constraint_routine_usage

    36.8. check_constraint_routine_usage

    The view check_constraint_routine_usage identifies routines (functions and procedures) that are used by a check constraint. Only those routines are shown that are owned by a currently enabled role.

    Table 36.6. check_constraint_routine_usage Columns

    NameData TypeDescription
    constraint_catalogsql_identifierName of the database containing the constraint (always the current database)
    constraint_schemasql_identifierName of the schema containing the constraint
    constraint_namesql_identifierName of the constraint
    specific_catalogsql_identifierName of the database containing the function (always the current database)
    specific_schemasql_identifierName of the schema containing the function
    specific_namesql_identifier The specific name of the function. See Section 36.40 for more information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-check-constraints.html postgresql-10-10.19/doc/src/sgml/html/infoschema-check-constraints.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-check-constraints.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-check-constraints.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,6 +1,6 @@ -36.9. check_constraints

    36.9. check_constraints

    The view check_constraints contains all check +36.9. check_constraints

    36.9. check_constraints

    The view check_constraints contains all check constraints, either defined on a table or on a domain, that are owned by a currently enabled role. (The owner of the table or domain is the owner of the constraint.) -

    Table 36.7. check_constraints Columns

    NameData TypeDescription
    constraint_catalogsql_identifierName of the database containing the constraint (always the current database)
    constraint_schemasql_identifierName of the schema containing the constraint
    constraint_namesql_identifierName of the constraint
    check_clausecharacter_dataThe check expression of the check constraint

    \ No newline at end of file +

    Table 36.7. check_constraints Columns

    NameData TypeDescription
    constraint_catalogsql_identifierName of the database containing the constraint (always the current database)
    constraint_schemasql_identifierName of the schema containing the constraint
    constraint_namesql_identifierName of the constraint
    check_clausecharacter_dataThe check expression of the check constraint

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-collation-character-set-applicab.html postgresql-10-10.19/doc/src/sgml/html/infoschema-collation-character-set-applicab.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-collation-character-set-applicab.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-collation-character-set-applicab.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,8 +1,8 @@ -36.11. collation_character_set_applicability

    36.11. collation_character_set_applicability

    The view collation_character_set_applicability +36.11. collation_character_set_applicability

    36.11. collation_character_set_applicability

    The view collation_character_set_applicability identifies which character set the available collations are applicable to. In PostgreSQL, there is only one character set per database (see explanation in Section 36.7), so this view does not provide much useful information. -

    Table 36.9. collation_character_set_applicability Columns

    NameData TypeDescription
    collation_catalogsql_identifierName of the database containing the collation (always the current database)
    collation_schemasql_identifierName of the schema containing the collation
    collation_namesql_identifierName of the default collation
    character_set_catalogsql_identifierCharacter sets are currently not implemented as schema objects, so this column is null
    character_set_schemasql_identifierCharacter sets are currently not implemented as schema objects, so this column is null
    character_set_namesql_identifierName of the character set

    \ No newline at end of file +

    Table 36.9. collation_character_set_applicability Columns

    NameData TypeDescription
    collation_catalogsql_identifierName of the database containing the collation (always the current database)
    collation_schemasql_identifierName of the schema containing the collation
    collation_namesql_identifierName of the default collation
    character_set_catalogsql_identifierCharacter sets are currently not implemented as schema objects, so this column is null
    character_set_schemasql_identifierCharacter sets are currently not implemented as schema objects, so this column is null
    character_set_namesql_identifierName of the character set

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-collations.html postgresql-10-10.19/doc/src/sgml/html/infoschema-collations.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-collations.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-collations.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,6 +1,6 @@ -36.10. collations

    36.10. collations

    The view collations contains the collations +36.10. collations

    36.10. collations

    The view collations contains the collations available in the current database.

    Table 36.8. collations Columns

    NameData TypeDescription
    collation_catalogsql_identifierName of the database containing the collation (always the current database)
    collation_schemasql_identifierName of the schema containing the collation
    collation_namesql_identifierName of the default collation
    pad_attributecharacter_data Always NO PAD (The alternative PAD SPACE is not supported by PostgreSQL.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-column-domain-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-column-domain-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-column-domain-usage.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-column-domain-usage.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.12. column_domain_usage

    36.12. column_domain_usage

    The view column_domain_usage identifies all +36.12. column_domain_usage

    36.12. column_domain_usage

    The view column_domain_usage identifies all columns (of a table or a view) that make use of some domain defined in the current database and owned by a currently enabled role. -

    Table 36.10. column_domain_usage Columns

    NameData TypeDescription
    domain_catalogsql_identifierName of the database containing the domain (always the current database)
    domain_schemasql_identifierName of the schema containing the domain
    domain_namesql_identifierName of the domain
    table_catalogsql_identifierName of the database containing the table (always the current database)
    table_schemasql_identifierName of the schema containing the table
    table_namesql_identifierName of the table
    column_namesql_identifierName of the column

    \ No newline at end of file +

    Table 36.10. column_domain_usage Columns

    NameData TypeDescription
    domain_catalogsql_identifierName of the database containing the domain (always the current database)
    domain_schemasql_identifierName of the schema containing the domain
    domain_namesql_identifierName of the domain
    table_catalogsql_identifierName of the database containing the table (always the current database)
    table_schemasql_identifierName of the schema containing the table
    table_namesql_identifierName of the table
    column_namesql_identifierName of the column

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-column-options.html postgresql-10-10.19/doc/src/sgml/html/infoschema-column-options.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-column-options.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-column-options.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,6 +1,6 @@ -36.13. column_options

    36.13. column_options

    The view column_options contains all the +36.13. column_options

    36.13. column_options

    The view column_options contains all the options defined for foreign table columns in the current database. Only those foreign table columns are shown that the current user has access to (by way of being the owner or having some privilege). -

    Table 36.11. column_options Columns

    NameData TypeDescription
    table_catalogsql_identifierName of the database that contains the foreign table (always the current database)
    table_schemasql_identifierName of the schema that contains the foreign table
    table_namesql_identifierName of the foreign table
    column_namesql_identifierName of the column
    option_namesql_identifierName of an option
    option_valuecharacter_dataValue of the option

    \ No newline at end of file +

    Table 36.11. column_options Columns

    NameData TypeDescription
    table_catalogsql_identifierName of the database that contains the foreign table (always the current database)
    table_schemasql_identifierName of the schema that contains the foreign table
    table_namesql_identifierName of the foreign table
    column_namesql_identifierName of the column
    option_namesql_identifierName of an option
    option_valuecharacter_dataValue of the option

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-column-privileges.html postgresql-10-10.19/doc/src/sgml/html/infoschema-column-privileges.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-column-privileges.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-column-privileges.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.14. column_privileges

    36.14. column_privileges

    The view column_privileges identifies all +36.14. column_privileges

    36.14. column_privileges

    The view column_privileges identifies all privileges granted on columns to a currently enabled role or by a currently enabled role. There is one row for each combination of column, grantor, and grantee. @@ -11,4 +11,4 @@

    Table 36.12. column_privileges Columns

    NameData TypeDescription
    grantorsql_identifierName of the role that granted the privilege
    granteesql_identifierName of the role that the privilege was granted to
    table_catalogsql_identifierName of the database that contains the table that contains the column (always the current database)
    table_schemasql_identifierName of the schema that contains the table that contains the column
    table_namesql_identifierName of the table that contains the column
    column_namesql_identifierName of the column
    privilege_typecharacter_data Type of the privilege: SELECT, INSERT, UPDATE, or REFERENCES -
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file + is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-columns.html postgresql-10-10.19/doc/src/sgml/html/infoschema-columns.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-columns.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-columns.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.16. columns

    36.16. columns

    The view columns contains information about all +36.16. columns

    36.16. columns

    The view columns contains information about all table columns (or view columns) in the database. System columns (oid, etc.) are not included. Only those columns are shown that the current user has access to (by way of being the @@ -132,4 +132,4 @@ columns with their associated data types and treat domains as separate types, you could write coalesce(domain_name, udt_name), etc. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-column-udt-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-column-udt-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-column-udt-usage.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-column-udt-usage.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.15. column_udt_usage

    36.15. column_udt_usage

    The view column_udt_usage identifies all columns +36.15. column_udt_usage

    36.15. column_udt_usage

    The view column_udt_usage identifies all columns that use data types owned by a currently enabled role. Note that in PostgreSQL, built-in data types behave like user-defined types, so they are included here as well. See @@ -11,4 +11,4 @@ type of the domain, if applicable) is defined in udt_namesql_identifier Name of the column data type (the underlying type of the domain, if applicable) - table_catalogsql_identifierName of the database containing the table (always the current database)table_schemasql_identifierName of the schema containing the tabletable_namesql_identifierName of the tablecolumn_namesql_identifierName of the column


    \ No newline at end of file + table_catalogsql_identifierName of the database containing the table (always the current database)table_schemasql_identifierName of the schema containing the tabletable_namesql_identifierName of the tablecolumn_namesql_identifierName of the column
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-constraint-column-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-constraint-column-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-constraint-column-usage.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-constraint-column-usage.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.17. constraint_column_usage

    36.17. constraint_column_usage

    The view constraint_column_usage identifies all +36.17. constraint_column_usage

    36.17. constraint_column_usage

    The view constraint_column_usage identifies all columns in the current database that are used by some constraint. Only those columns are shown that are contained in a table owned by a currently enabled role. For a check constraint, this view @@ -15,4 +15,4 @@ table_namesql_identifier Name of the table that contains the column that is used by some constraint column_namesql_identifier Name of the column that is used by some constraint - constraint_catalogsql_identifierName of the database that contains the constraint (always the current database)constraint_schemasql_identifierName of the schema that contains the constraintconstraint_namesql_identifierName of the constraint


    \ No newline at end of file + constraint_catalogsql_identifierName of the database that contains the constraint (always the current database)constraint_schemasql_identifierName of the schema that contains the constraintconstraint_namesql_identifierName of the constraint
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-constraint-table-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-constraint-table-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-constraint-table-usage.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-constraint-table-usage.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.18. constraint_table_usage

    36.18. constraint_table_usage

    The view constraint_table_usage identifies all +36.18. constraint_table_usage

    36.18. constraint_table_usage

    The view constraint_table_usage identifies all tables in the current database that are used by some constraint and are owned by a currently enabled role. (This is different from the view table_constraints, which identifies all @@ -13,4 +13,4 @@ some constraint (always the current database) table_schemasql_identifier Name of the schema that contains the table that is used by some constraint - table_namesql_identifierName of the table that is used by some constraintconstraint_catalogsql_identifierName of the database that contains the constraint (always the current database)constraint_schemasql_identifierName of the schema that contains the constraintconstraint_namesql_identifierName of the constraint


    \ No newline at end of file + table_namesql_identifierName of the table that is used by some constraintconstraint_catalogsql_identifierName of the database that contains the constraint (always the current database)constraint_schemasql_identifierName of the schema that contains the constraintconstraint_namesql_identifierName of the constraint
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-data-type-privileges.html postgresql-10-10.19/doc/src/sgml/html/infoschema-data-type-privileges.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-data-type-privileges.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-data-type-privileges.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.19. data_type_privileges

    36.19. data_type_privileges

    The view data_type_privileges identifies all +36.19. data_type_privileges

    36.19. data_type_privileges

    The view data_type_privileges identifies all data type descriptors that the current user has access to, by way of being the owner of the described object or having some privilege for it. A data type descriptor is generated whenever a data type @@ -20,4 +20,4 @@ to a parameter or the return data type of that function). dtd_identifiersql_identifier The identifier of the data type descriptor, which is unique among the data type descriptors for that same object. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-datatypes.html postgresql-10-10.19/doc/src/sgml/html/infoschema-datatypes.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-datatypes.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-datatypes.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.2. Data Types

    36.2. Data Types

    The columns of the information schema views use special data types +36.2. Data Types

    36.2. Data Types

    The columns of the information schema views use special data types that are defined in the information schema. These are defined as simple domains over ordinary built-in types. You should not use these types for work outside the information schema, but your @@ -23,4 +23,4 @@

    Every column in the information schema has one of these five types. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-domain-constraints.html postgresql-10-10.19/doc/src/sgml/html/infoschema-domain-constraints.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-domain-constraints.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-domain-constraints.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,6 +1,6 @@ -36.20. domain_constraints

    36.20. domain_constraints

    The view domain_constraints contains all constraints +36.20. domain_constraints

    36.20. domain_constraints

    The view domain_constraints contains all constraints belonging to domains defined in the current database. Only those domains are shown that the current user has access to (by way of being the owner or having some privilege). -

    Table 36.18. domain_constraints Columns

    NameData TypeDescription
    constraint_catalogsql_identifierName of the database that contains the constraint (always the current database)
    constraint_schemasql_identifierName of the schema that contains the constraint
    constraint_namesql_identifierName of the constraint
    domain_catalogsql_identifierName of the database that contains the domain (always the current database)
    domain_schemasql_identifierName of the schema that contains the domain
    domain_namesql_identifierName of the domain
    is_deferrableyes_or_noYES if the constraint is deferrable, NO if not
    initially_deferredyes_or_noYES if the constraint is deferrable and initially deferred, NO if not

    \ No newline at end of file +

    Table 36.18. domain_constraints Columns

    NameData TypeDescription
    constraint_catalogsql_identifierName of the database that contains the constraint (always the current database)
    constraint_schemasql_identifierName of the schema that contains the constraint
    constraint_namesql_identifierName of the constraint
    domain_catalogsql_identifierName of the database that contains the domain (always the current database)
    domain_schemasql_identifierName of the schema that contains the domain
    domain_namesql_identifierName of the domain
    is_deferrableyes_or_noYES if the constraint is deferrable, NO if not
    initially_deferredyes_or_noYES if the constraint is deferrable and initially deferred, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-domains.html postgresql-10-10.19/doc/src/sgml/html/infoschema-domains.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-domains.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-domains.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.22. domains

    36.22. domains

    The view domains contains all domains defined in the +36.22. domains

    36.22. domains

    The view domains contains all domains defined in the current database. Only those domains are shown that the current user has access to (by way of being the owner or having some privilege).

    Table 36.20. domains Columns

    NameData TypeDescription
    domain_catalogsql_identifierName of the database that contains the domain (always the current database)
    domain_schemasql_identifierName of the schema that contains the domain
    domain_namesql_identifierName of the domain
    data_typecharacter_data Data type of the domain, if it is a built-in type, or @@ -65,4 +65,4 @@ instances of such identifiers. (The specific format of the identifier is not defined and not guaranteed to remain the same in future versions.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-domain-udt-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-domain-udt-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-domain-udt-usage.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-domain-udt-usage.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,7 +1,7 @@ -36.21. domain_udt_usage

    36.21. domain_udt_usage

    The view domain_udt_usage identifies all domains +36.21. domain_udt_usage

    36.21. domain_udt_usage

    The view domain_udt_usage identifies all domains that are based on data types owned by a currently enabled role. Note that in PostgreSQL, built-in data types behave like user-defined types, so they are included here as well. -

    Table 36.19. domain_udt_usage Columns

    NameData TypeDescription
    udt_catalogsql_identifierName of the database that the domain data type is defined in (always the current database)
    udt_schemasql_identifierName of the schema that the domain data type is defined in
    udt_namesql_identifierName of the domain data type
    domain_catalogsql_identifierName of the database that contains the domain (always the current database)
    domain_schemasql_identifierName of the schema that contains the domain
    domain_namesql_identifierName of the domain

    \ No newline at end of file +

    Table 36.19. domain_udt_usage Columns

    NameData TypeDescription
    udt_catalogsql_identifierName of the database that the domain data type is defined in (always the current database)
    udt_schemasql_identifierName of the schema that the domain data type is defined in
    udt_namesql_identifierName of the domain data type
    domain_catalogsql_identifierName of the database that contains the domain (always the current database)
    domain_schemasql_identifierName of the schema that contains the domain
    domain_namesql_identifierName of the domain

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-element-types.html postgresql-10-10.19/doc/src/sgml/html/infoschema-element-types.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-element-types.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-element-types.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.23. element_types

    36.23. element_types

    The view element_types contains the data type +36.23. element_types

    36.23. element_types

    The view element_types contains the data type descriptors of the elements of arrays. When a table column, composite-type attribute, domain, function parameter, or function return value is defined to be of an array type, the respective information schema view only @@ -51,4 +51,4 @@ udt_namesql_identifier Name of the data type of the elements scope_catalogsql_identifierApplies to a feature not available in PostgreSQLscope_schemasql_identifierApplies to a feature not available in PostgreSQLscope_namesql_identifierApplies to a feature not available in PostgreSQLmaximum_cardinalitycardinal_numberAlways null, because arrays always have unlimited maximum cardinality in PostgreSQLdtd_identifiersql_identifier An identifier of the data type descriptor of the element. This is currently not useful. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-enabled-roles.html postgresql-10-10.19/doc/src/sgml/html/infoschema-enabled-roles.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-enabled-roles.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-enabled-roles.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.24. enabled_roles

    36.24. enabled_roles

    The view enabled_roles identifies the currently +36.24. enabled_roles

    36.24. enabled_roles

    The view enabled_roles identifies the currently enabled roles. The enabled roles are recursively defined as the current user together with all roles that have been granted to the enabled roles with automatic inheritance. In other @@ -13,4 +13,4 @@ applicable_roles instead of this one; See Section 36.5 for details on applicable_roles view. -

    Table 36.22. enabled_roles Columns

    NameData TypeDescription
    role_namesql_identifierName of a role

    \ No newline at end of file +

    Table 36.22. enabled_roles Columns

    NameData TypeDescription
    role_namesql_identifierName of a role

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-data-wrapper-options.html postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-data-wrapper-options.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-data-wrapper-options.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-data-wrapper-options.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,7 +1,7 @@ -36.25. foreign_data_wrapper_options

    36.25. foreign_data_wrapper_options

    The view foreign_data_wrapper_options contains +36.25. foreign_data_wrapper_options

    36.25. foreign_data_wrapper_options

    The view foreign_data_wrapper_options contains all the options defined for foreign-data wrappers in the current database. Only those foreign-data wrappers are shown that the current user has access to (by way of being the owner or having some privilege). -

    Table 36.23. foreign_data_wrapper_options Columns

    NameData TypeDescription
    foreign_data_wrapper_catalogsql_identifierName of the database that the foreign-data wrapper is defined in (always the current database)
    foreign_data_wrapper_namesql_identifierName of the foreign-data wrapper
    option_namesql_identifierName of an option
    option_valuecharacter_dataValue of the option

    \ No newline at end of file +

    Table 36.23. foreign_data_wrapper_options Columns

    NameData TypeDescription
    foreign_data_wrapper_catalogsql_identifierName of the database that the foreign-data wrapper is defined in (always the current database)
    foreign_data_wrapper_namesql_identifierName of the foreign-data wrapper
    option_namesql_identifierName of an option
    option_valuecharacter_dataValue of the option

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-data-wrappers.html postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-data-wrappers.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-data-wrappers.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-data-wrappers.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,7 +1,7 @@ -36.26. foreign_data_wrappers

    36.26. foreign_data_wrappers

    The view foreign_data_wrappers contains all +36.26. foreign_data_wrappers

    36.26. foreign_data_wrappers

    The view foreign_data_wrappers contains all foreign-data wrappers defined in the current database. Only those foreign-data wrappers are shown that the current user has access to (by way of being the owner or having some privilege).

    Table 36.24. foreign_data_wrappers Columns

    NameData TypeDescription
    foreign_data_wrapper_catalogsql_identifierName of the database that contains the foreign-data - wrapper (always the current database)
    foreign_data_wrapper_namesql_identifierName of the foreign-data wrapper
    authorization_identifiersql_identifierName of the owner of the foreign server
    library_namecharacter_dataFile name of the library that implementing this foreign-data wrapper
    foreign_data_wrapper_languagecharacter_dataLanguage used to implement this foreign-data wrapper

    \ No newline at end of file + wrapper (always the current database)foreign_data_wrapper_namesql_identifierName of the foreign-data wrapperauthorization_identifiersql_identifierName of the owner of the foreign serverlibrary_namecharacter_dataFile name of the library that implementing this foreign-data wrapperforeign_data_wrapper_languagecharacter_dataLanguage used to implement this foreign-data wrapper

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-server-options.html postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-server-options.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-server-options.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-server-options.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,6 +1,6 @@ -36.27. foreign_server_options

    36.27. foreign_server_options

    The view foreign_server_options contains all the +36.27. foreign_server_options

    36.27. foreign_server_options

    The view foreign_server_options contains all the options defined for foreign servers in the current database. Only those foreign servers are shown that the current user has access to (by way of being the owner or having some privilege). -

    Table 36.25. foreign_server_options Columns

    NameData TypeDescription
    foreign_server_catalogsql_identifierName of the database that the foreign server is defined in (always the current database)
    foreign_server_namesql_identifierName of the foreign server
    option_namesql_identifierName of an option
    option_valuecharacter_dataValue of the option

    \ No newline at end of file +

    Table 36.25. foreign_server_options Columns

    NameData TypeDescription
    foreign_server_catalogsql_identifierName of the database that the foreign server is defined in (always the current database)
    foreign_server_namesql_identifierName of the foreign server
    option_namesql_identifierName of an option
    option_valuecharacter_dataValue of the option

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-servers.html postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-servers.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-servers.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-servers.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,7 +1,7 @@ -36.28. foreign_servers

    36.28. foreign_servers

    The view foreign_servers contains all foreign +36.28. foreign_servers

    36.28. foreign_servers

    The view foreign_servers contains all foreign servers defined in the current database. Only those foreign servers are shown that the current user has access to (by way of being the owner or having some privilege).

    Table 36.26. foreign_servers Columns

    NameData TypeDescription
    foreign_server_catalogsql_identifierName of the database that the foreign server is defined in (always the current database)
    foreign_server_namesql_identifierName of the foreign server
    foreign_data_wrapper_catalogsql_identifierName of the database that contains the foreign-data - wrapper used by the foreign server (always the current database)
    foreign_data_wrapper_namesql_identifierName of the foreign-data wrapper used by the foreign server
    foreign_server_typecharacter_dataForeign server type information, if specified upon creation
    foreign_server_versioncharacter_dataForeign server version information, if specified upon creation
    authorization_identifiersql_identifierName of the owner of the foreign server

    \ No newline at end of file + wrapper used by the foreign server (always the current database)foreign_data_wrapper_namesql_identifierName of the foreign-data wrapper used by the foreign serverforeign_server_typecharacter_dataForeign server type information, if specified upon creationforeign_server_versioncharacter_dataForeign server version information, if specified upon creationauthorization_identifiersql_identifierName of the owner of the foreign server

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-table-options.html postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-table-options.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-table-options.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-table-options.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,6 +1,6 @@ -36.29. foreign_table_options

    36.29. foreign_table_options

    The view foreign_table_options contains all the +36.29. foreign_table_options

    36.29. foreign_table_options

    The view foreign_table_options contains all the options defined for foreign tables in the current database. Only those foreign tables are shown that the current user has access to (by way of being the owner or having some privilege). -

    Table 36.27. foreign_table_options Columns

    NameData TypeDescription
    foreign_table_catalogsql_identifierName of the database that contains the foreign table (always the current database)
    foreign_table_schemasql_identifierName of the schema that contains the foreign table
    foreign_table_namesql_identifierName of the foreign table
    option_namesql_identifierName of an option
    option_valuecharacter_dataValue of the option

    \ No newline at end of file +

    Table 36.27. foreign_table_options Columns

    NameData TypeDescription
    foreign_table_catalogsql_identifierName of the database that contains the foreign table (always the current database)
    foreign_table_schemasql_identifierName of the schema that contains the foreign table
    foreign_table_namesql_identifierName of the foreign table
    option_namesql_identifierName of an option
    option_valuecharacter_dataValue of the option

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-tables.html postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-tables.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-foreign-tables.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-foreign-tables.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,6 +1,6 @@ -36.30. foreign_tables

    36.30. foreign_tables

    The view foreign_tables contains all foreign +36.30. foreign_tables

    36.30. foreign_tables

    The view foreign_tables contains all foreign tables defined in the current database. Only those foreign tables are shown that the current user has access to (by way of being the owner or having some privilege). -

    Table 36.28. foreign_tables Columns

    NameData TypeDescription
    foreign_table_catalogsql_identifierName of the database that the foreign table is defined in (always the current database)
    foreign_table_schemasql_identifierName of the schema that contains the foreign table
    foreign_table_namesql_identifierName of the foreign table
    foreign_server_catalogsql_identifierName of the database that the foreign server is defined in (always the current database)
    foreign_server_namesql_identifierName of the foreign server

    \ No newline at end of file +

    Table 36.28. foreign_tables Columns

    NameData TypeDescription
    foreign_table_catalogsql_identifierName of the database that the foreign table is defined in (always the current database)
    foreign_table_schemasql_identifierName of the schema that contains the foreign table
    foreign_table_namesql_identifierName of the foreign table
    foreign_server_catalogsql_identifierName of the database that the foreign server is defined in (always the current database)
    foreign_server_namesql_identifierName of the foreign server

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-information-schema-catalog-name.html postgresql-10-10.19/doc/src/sgml/html/infoschema-information-schema-catalog-name.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-information-schema-catalog-name.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-information-schema-catalog-name.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.3. information_schema_catalog_name

    36.3. information_schema_catalog_name

    information_schema_catalog_name is a table that +36.3. information_schema_catalog_name

    36.3. information_schema_catalog_name

    information_schema_catalog_name is a table that always contains one row and one column containing the name of the current database (current catalog, in SQL terminology). -

    Table 36.1. information_schema_catalog_name Columns

    NameData TypeDescription
    catalog_namesql_identifierName of the database that contains this information schema

    \ No newline at end of file +

    Table 36.1. information_schema_catalog_name Columns

    NameData TypeDescription
    catalog_namesql_identifierName of the database that contains this information schema

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-key-column-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-key-column-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-key-column-usage.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-key-column-usage.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.31. key_column_usage

    36.31. key_column_usage

    The view key_column_usage identifies all columns +36.31. key_column_usage

    36.31. key_column_usage

    The view key_column_usage identifies all columns in the current database that are restricted by some unique, primary key, or foreign key constraint. Check constraints are not included in this view. Only those columns are shown that the current user @@ -17,4 +17,4 @@ position_in_unique_constraintcardinal_number For a foreign-key constraint, ordinal position of the referenced column within its unique constraint (count starts at 1); otherwise null -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-parameters.html postgresql-10-10.19/doc/src/sgml/html/infoschema-parameters.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-parameters.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-parameters.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.32. parameters

    36.32. parameters

    The view parameters contains information about +36.32. parameters

    36.32. parameters

    The view parameters contains information about the parameters (arguments) of all functions in the current database. Only those functions are shown that the current user has access to (by way of being the owner or having some privilege). @@ -28,4 +28,4 @@ in future versions.) parameter_defaultcharacter_data The default expression of the parameter, or null if none or if the function is not owned by a currently enabled role. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-referential-constraints.html postgresql-10-10.19/doc/src/sgml/html/infoschema-referential-constraints.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-referential-constraints.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-referential-constraints.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.33. referential_constraints

    36.33. referential_constraints

    The view referential_constraints contains all +36.33. referential_constraints

    36.33. referential_constraints

    The view referential_constraints contains all referential (foreign key) constraints in the current database. Only those constraints are shown for which the current user has write access to the referencing table (by way of being the @@ -22,4 +22,4 @@ CASCADE, SET NULL, SET DEFAULT, RESTRICT, or NO ACTION. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-role-column-grants.html postgresql-10-10.19/doc/src/sgml/html/infoschema-role-column-grants.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-role-column-grants.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-role-column-grants.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.34. role_column_grants

    36.34. role_column_grants

    The view role_column_grants identifies all +36.34. role_column_grants

    36.34. role_column_grants

    The view role_column_grants identifies all privileges granted on columns where the grantor or grantee is a currently enabled role. Further information can be found under column_privileges. The only effective @@ -10,4 +10,4 @@

    Table 36.32. role_column_grants Columns

    NameData TypeDescription
    grantorsql_identifierName of the role that granted the privilege
    granteesql_identifierName of the role that the privilege was granted to
    table_catalogsql_identifierName of the database that contains the table that contains the column (always the current database)
    table_schemasql_identifierName of the schema that contains the table that contains the column
    table_namesql_identifierName of the table that contains the column
    column_namesql_identifierName of the column
    privilege_typecharacter_data Type of the privilege: SELECT, INSERT, UPDATE, or REFERENCES -
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file + is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-role-routine-grants.html postgresql-10-10.19/doc/src/sgml/html/infoschema-role-routine-grants.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-role-routine-grants.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-role-routine-grants.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.35. role_routine_grants

    36.35. role_routine_grants

    The view role_routine_grants identifies all +36.35. role_routine_grants

    36.35. role_routine_grants

    The view role_routine_grants identifies all privileges granted on functions where the grantor or grantee is a currently enabled role. Further information can be found under routine_privileges. The only effective @@ -8,4 +8,4 @@ functions that have been made accessible to the current user by way of a grant to PUBLIC.

    Table 36.33. role_routine_grants Columns

    NameData TypeDescription
    grantorsql_identifierName of the role that granted the privilege
    granteesql_identifierName of the role that the privilege was granted to
    specific_catalogsql_identifierName of the database containing the function (always the current database)
    specific_schemasql_identifierName of the schema containing the function
    specific_namesql_identifier The specific name of the function. See Section 36.40 for more information. -
    routine_catalogsql_identifierName of the database containing the function (always the current database)
    routine_schemasql_identifierName of the schema containing the function
    routine_namesql_identifierName of the function (might be duplicated in case of overloading)
    privilege_typecharacter_dataAlways EXECUTE (the only privilege type for functions)
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file + routine_catalogsql_identifierName of the database containing the function (always the current database)routine_schemasql_identifierName of the schema containing the functionroutine_namesql_identifierName of the function (might be duplicated in case of overloading)privilege_typecharacter_dataAlways EXECUTE (the only privilege type for functions)is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-role-table-grants.html postgresql-10-10.19/doc/src/sgml/html/infoschema-role-table-grants.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-role-table-grants.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-role-table-grants.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.36. role_table_grants

    36.36. role_table_grants

    The view role_table_grants identifies all +36.36. role_table_grants

    36.36. role_table_grants

    The view role_table_grants identifies all privileges granted on tables or views where the grantor or grantee is a currently enabled role. Further information can be found under table_privileges. The only effective @@ -17,4 +17,4 @@ in the SELECT privilege, so this column shows YES if the privilege is SELECT, else NO. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-role-udt-grants.html postgresql-10-10.19/doc/src/sgml/html/infoschema-role-udt-grants.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-role-udt-grants.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-role-udt-grants.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.37. role_udt_grants

    36.37. role_udt_grants

    The view role_udt_grants is intended to identify +36.37. role_udt_grants

    36.37. role_udt_grants

    The view role_udt_grants is intended to identify USAGE privileges granted on user-defined types where the grantor or grantee is a currently enabled role. Further information can be found under @@ -9,4 +9,4 @@ current user by way of a grant to PUBLIC. Since data types do not have real privileges in PostgreSQL, but only an implicit grant to PUBLIC, this view is empty. -

    Table 36.35. role_udt_grants Columns

    NameData TypeDescription
    grantorsql_identifierThe name of the role that granted the privilege
    granteesql_identifierThe name of the role that the privilege was granted to
    udt_catalogsql_identifierName of the database containing the type (always the current database)
    udt_schemasql_identifierName of the schema containing the type
    udt_namesql_identifierName of the type
    privilege_typecharacter_dataAlways TYPE USAGE
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file +

    Table 36.35. role_udt_grants Columns

    NameData TypeDescription
    grantorsql_identifierThe name of the role that granted the privilege
    granteesql_identifierThe name of the role that the privilege was granted to
    udt_catalogsql_identifierName of the database containing the type (always the current database)
    udt_schemasql_identifierName of the schema containing the type
    udt_namesql_identifierName of the type
    privilege_typecharacter_dataAlways TYPE USAGE
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-role-usage-grants.html postgresql-10-10.19/doc/src/sgml/html/infoschema-role-usage-grants.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-role-usage-grants.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-role-usage-grants.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.38. role_usage_grants

    36.38. role_usage_grants

    The view role_usage_grants identifies +36.38. role_usage_grants

    36.38. role_usage_grants

    The view role_usage_grants identifies USAGE privileges granted on various kinds of objects where the grantor or grantee is a currently enabled role. Further information can be found under @@ -8,4 +8,4 @@ this view omits objects that have been made accessible to the current user by way of a grant to PUBLIC.

    Table 36.36. role_usage_grants Columns

    NameData TypeDescription
    grantorsql_identifierThe name of the role that granted the privilege
    granteesql_identifierThe name of the role that the privilege was granted to
    object_catalogsql_identifierName of the database containing the object (always the current database)
    object_schemasql_identifierName of the schema containing the object, if applicable, - else an empty string
    object_namesql_identifierName of the object
    object_typecharacter_dataCOLLATION or DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER or SEQUENCE
    privilege_typecharacter_dataAlways USAGE
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file + else an empty stringobject_namesql_identifierName of the objectobject_typecharacter_dataCOLLATION or DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER or SEQUENCEprivilege_typecharacter_dataAlways USAGEis_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-routine-privileges.html postgresql-10-10.19/doc/src/sgml/html/infoschema-routine-privileges.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-routine-privileges.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-routine-privileges.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,7 +1,7 @@ -36.39. routine_privileges

    36.39. routine_privileges

    The view routine_privileges identifies all +36.39. routine_privileges

    36.39. routine_privileges

    The view routine_privileges identifies all privileges granted on functions to a currently enabled role or by a currently enabled role. There is one row for each combination of function, grantor, and grantee.

    Table 36.37. routine_privileges Columns

    NameData TypeDescription
    grantorsql_identifierName of the role that granted the privilege
    granteesql_identifierName of the role that the privilege was granted to
    specific_catalogsql_identifierName of the database containing the function (always the current database)
    specific_schemasql_identifierName of the schema containing the function
    specific_namesql_identifier The specific name of the function. See Section 36.40 for more information. -
    routine_catalogsql_identifierName of the database containing the function (always the current database)
    routine_schemasql_identifierName of the schema containing the function
    routine_namesql_identifierName of the function (might be duplicated in case of overloading)
    privilege_typecharacter_dataAlways EXECUTE (the only privilege type for functions)
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file + routine_catalogsql_identifierName of the database containing the function (always the current database)routine_schemasql_identifierName of the schema containing the functionroutine_namesql_identifierName of the function (might be duplicated in case of overloading)privilege_typecharacter_dataAlways EXECUTE (the only privilege type for functions)is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-routines.html postgresql-10-10.19/doc/src/sgml/html/infoschema-routines.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-routines.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-routines.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.40. routines

    36.40. routines

    The view routines contains all functions in the +36.40. routines

    36.40. routines

    The view routines contains all functions in the current database. Only those functions are shown that the current user has access to (by way of being the owner or having some privilege). @@ -62,4 +62,4 @@ to_sql_specific_catalogsql_identifierApplies to a feature not available in PostgreSQLto_sql_specific_schemasql_identifierApplies to a feature not available in PostgreSQLto_sql_specific_namesql_identifierApplies to a feature not available in PostgreSQLas_locatoryes_or_noApplies to a feature not available in PostgreSQLcreatedtime_stampApplies to a feature not available in PostgreSQLlast_alteredtime_stampApplies to a feature not available in PostgreSQLnew_savepoint_levelyes_or_noApplies to a feature not available in PostgreSQLis_udt_dependentyes_or_no Currently always NO. The alternative YES applies to a feature not available in PostgreSQL. - result_cast_from_data_typecharacter_dataApplies to a feature not available in PostgreSQLresult_cast_as_locatoryes_or_noApplies to a feature not available in PostgreSQLresult_cast_char_max_lengthcardinal_numberApplies to a feature not available in PostgreSQLresult_cast_char_octet_lengthcharacter_dataApplies to a feature not available in PostgreSQLresult_cast_char_set_catalogsql_identifierApplies to a feature not available in PostgreSQLresult_cast_char_set_schemasql_identifierApplies to a feature not available in PostgreSQLresult_cast_char_set_namesql_identifierApplies to a feature not available in PostgreSQLresult_cast_collation_catalogsql_identifierApplies to a feature not available in PostgreSQLresult_cast_collation_schemasql_identifierApplies to a feature not available in PostgreSQLresult_cast_collation_namesql_identifierApplies to a feature not available in PostgreSQLresult_cast_numeric_precisioncardinal_numberApplies to a feature not available in PostgreSQLresult_cast_numeric_precision_radixcardinal_numberApplies to a feature not available in PostgreSQLresult_cast_numeric_scalecardinal_numberApplies to a feature not available in PostgreSQLresult_cast_datetime_precisioncharacter_dataApplies to a feature not available in PostgreSQLresult_cast_interval_typecharacter_dataApplies to a feature not available in PostgreSQLresult_cast_interval_precisioncardinal_numberApplies to a feature not available in PostgreSQLresult_cast_type_udt_catalogsql_identifierApplies to a feature not available in PostgreSQLresult_cast_type_udt_schemasql_identifierApplies to a feature not available in PostgreSQLresult_cast_type_udt_namesql_identifierApplies to a feature not available in PostgreSQLresult_cast_scope_catalogsql_identifierApplies to a feature not available in PostgreSQLresult_cast_scope_schemasql_identifierApplies to a feature not available in PostgreSQLresult_cast_scope_namesql_identifierApplies to a feature not available in PostgreSQLresult_cast_maximum_cardinalitycardinal_numberApplies to a feature not available in PostgreSQLresult_cast_dtd_identifiersql_identifierApplies to a feature not available in PostgreSQL


    \ No newline at end of file + result_cast_from_data_typecharacter_dataApplies to a feature not available in PostgreSQLresult_cast_as_locatoryes_or_noApplies to a feature not available in PostgreSQLresult_cast_char_max_lengthcardinal_numberApplies to a feature not available in PostgreSQLresult_cast_char_octet_lengthcharacter_dataApplies to a feature not available in PostgreSQLresult_cast_char_set_catalogsql_identifierApplies to a feature not available in PostgreSQLresult_cast_char_set_schemasql_identifierApplies to a feature not available in PostgreSQLresult_cast_char_set_namesql_identifierApplies to a feature not available in PostgreSQLresult_cast_collation_catalogsql_identifierApplies to a feature not available in PostgreSQLresult_cast_collation_schemasql_identifierApplies to a feature not available in PostgreSQLresult_cast_collation_namesql_identifierApplies to a feature not available in PostgreSQLresult_cast_numeric_precisioncardinal_numberApplies to a feature not available in PostgreSQLresult_cast_numeric_precision_radixcardinal_numberApplies to a feature not available in PostgreSQLresult_cast_numeric_scalecardinal_numberApplies to a feature not available in PostgreSQLresult_cast_datetime_precisioncharacter_dataApplies to a feature not available in PostgreSQLresult_cast_interval_typecharacter_dataApplies to a feature not available in PostgreSQLresult_cast_interval_precisioncardinal_numberApplies to a feature not available in PostgreSQLresult_cast_type_udt_catalogsql_identifierApplies to a feature not available in PostgreSQLresult_cast_type_udt_schemasql_identifierApplies to a feature not available in PostgreSQLresult_cast_type_udt_namesql_identifierApplies to a feature not available in PostgreSQLresult_cast_scope_catalogsql_identifierApplies to a feature not available in PostgreSQLresult_cast_scope_schemasql_identifierApplies to a feature not available in PostgreSQLresult_cast_scope_namesql_identifierApplies to a feature not available in PostgreSQLresult_cast_maximum_cardinalitycardinal_numberApplies to a feature not available in PostgreSQLresult_cast_dtd_identifiersql_identifierApplies to a feature not available in PostgreSQL
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-schema.html postgresql-10-10.19/doc/src/sgml/html/infoschema-schema.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-schema.html 2021-05-10 20:58:13.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-schema.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.1. The Schema

    36.1. The Schema

    The information schema itself is a schema named +36.1. The Schema

    36.1. The Schema

    The information schema itself is a schema named information_schema. This schema automatically exists in all databases. The owner of this schema is the initial database user in the cluster, and that user naturally has all the @@ -11,4 +11,4 @@ schema are generic names that might occur in user applications, you should be careful if you want to put the information schema in the path. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-schemata.html postgresql-10-10.19/doc/src/sgml/html/infoschema-schemata.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-schemata.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-schemata.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.41. schemata

    36.41. schemata

    The view schemata contains all schemas in the current +36.41. schemata

    36.41. schemata

    The view schemata contains all schemas in the current database that the current user has access to (by way of being the owner or having some privilege). -

    Table 36.39. schemata Columns

    NameData TypeDescription
    catalog_namesql_identifierName of the database that the schema is contained in (always the current database)
    schema_namesql_identifierName of the schema
    schema_ownersql_identifierName of the owner of the schema
    default_character_set_catalogsql_identifierApplies to a feature not available in PostgreSQL
    default_character_set_schemasql_identifierApplies to a feature not available in PostgreSQL
    default_character_set_namesql_identifierApplies to a feature not available in PostgreSQL
    sql_pathcharacter_dataApplies to a feature not available in PostgreSQL

    \ No newline at end of file +

    Table 36.39. schemata Columns

    NameData TypeDescription
    catalog_namesql_identifierName of the database that the schema is contained in (always the current database)
    schema_namesql_identifierName of the schema
    schema_ownersql_identifierName of the owner of the schema
    default_character_set_catalogsql_identifierApplies to a feature not available in PostgreSQL
    default_character_set_schemasql_identifierApplies to a feature not available in PostgreSQL
    default_character_set_namesql_identifierApplies to a feature not available in PostgreSQL
    sql_pathcharacter_dataApplies to a feature not available in PostgreSQL

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-sequences.html postgresql-10-10.19/doc/src/sgml/html/infoschema-sequences.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-sequences.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-sequences.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.42. sequences

    36.42. sequences

    The view sequences contains all sequences +36.42. sequences

    36.42. sequences

    The view sequences contains all sequences defined in the current database. Only those sequences are shown that the current user has access to (by way of being the owner or having some privilege). @@ -21,4 +21,4 @@ numeric_precision_radix. start_valuecharacter_dataThe start value of the sequenceminimum_valuecharacter_dataThe minimum value of the sequencemaximum_valuecharacter_dataThe maximum value of the sequenceincrementcharacter_dataThe increment of the sequencecycle_optionyes_or_noYES if the sequence cycles, else NO


    Note that in accordance with the SQL standard, the start, minimum, maximum, and increment values are returned as character strings. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-features.html postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-features.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-features.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-features.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.43. sql_features

    36.43. sql_features

    The table sql_features contains information +36.43. sql_features

    36.43. sql_features

    The table sql_features contains information about which formal features defined in the SQL standard are supported by PostgreSQL. This is the same information that is presented in Appendix D. @@ -8,4 +8,4 @@ current version of PostgreSQL, NO if not is_verified_bycharacter_data Always null, since the PostgreSQL development group does not perform formal testing of feature conformance - commentscharacter_dataPossibly a comment about the supported status of the feature


    \ No newline at end of file + commentscharacter_dataPossibly a comment about the supported status of the feature
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-implementation-info.html postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-implementation-info.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-implementation-info.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-implementation-info.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.44. sql_implementation_info

    36.44. sql_implementation_info

    The table sql_implementation_info contains +36.44. sql_implementation_info

    36.44. sql_implementation_info

    The table sql_implementation_info contains information about various aspects that are left implementation-defined by the SQL standard. This information is primarily intended for use in the context of the ODBC interface; @@ -13,4 +13,4 @@ character_valuecharacter_data Value of the implementation information item, or null if the value is contained in the column integer_value - commentscharacter_dataPossibly a comment pertaining to the implementation information item


    \ No newline at end of file + commentscharacter_dataPossibly a comment pertaining to the implementation information item
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-languages.html postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-languages.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-languages.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-languages.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.45. sql_languages

    36.45. sql_languages

    The table sql_languages contains one row for +36.45. sql_languages

    36.45. sql_languages

    The table sql_languages contains one row for each SQL language binding that is supported by PostgreSQL. PostgreSQL supports direct SQL and @@ -17,4 +17,4 @@ sql_language_programming_languagecharacter_data The programming language, if the binding style is EMBEDDED, else null. PostgreSQL only supports the language C. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-packages.html postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-packages.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-packages.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-packages.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,9 +1,9 @@ -36.46. sql_packages

    36.46. sql_packages

    The table sql_packages contains information +36.46. sql_packages

    36.46. sql_packages

    The table sql_packages contains information about which feature packages defined in the SQL standard are supported by PostgreSQL. Refer to Appendix D for background information on feature packages.

    Table 36.44. sql_packages Columns

    NameData TypeDescription
    feature_idcharacter_dataIdentifier string of the package
    feature_namecharacter_dataDescriptive name of the package
    is_supportedyes_or_no YES if the package is fully supported by the current version of PostgreSQL, NO if not
    is_verified_bycharacter_data Always null, since the PostgreSQL development group does not perform formal testing of feature conformance -
    commentscharacter_dataPossibly a comment about the supported status of the package

    \ No newline at end of file + commentscharacter_dataPossibly a comment about the supported status of the package

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-parts.html postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-parts.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-parts.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-parts.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.47. sql_parts

    36.47. sql_parts

    The table sql_parts contains information about +36.47. sql_parts

    36.47. sql_parts

    The table sql_parts contains information about which of the several parts of the SQL standard are supported by PostgreSQL.

    Table 36.45. sql_parts Columns

    NameData TypeDescription
    feature_idcharacter_dataAn identifier string containing the number of the part
    feature_namecharacter_dataDescriptive name of the part
    is_supportedyes_or_no YES if the part is fully supported by the @@ -7,4 +7,4 @@ NO if not
    is_verified_bycharacter_data Always null, since the PostgreSQL development group does not perform formal testing of feature conformance -
    commentscharacter_dataPossibly a comment about the supported status of the part

    \ No newline at end of file + commentscharacter_dataPossibly a comment about the supported status of the part

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-sizing.html postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-sizing.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-sizing.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-sizing.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.48. sql_sizing

    36.48. sql_sizing

    The table sql_sizing contains information about +36.48. sql_sizing

    36.48. sql_sizing

    The table sql_sizing contains information about various size limits and maximum values in PostgreSQL. This information is primarily intended for use in the context of the ODBC interface; @@ -10,4 +10,4 @@

    Table 36.46. sql_sizing Columns

    NameData TypeDescription
    sizing_idcardinal_numberIdentifier of the sizing item
    sizing_namecharacter_dataDescriptive name of the sizing item
    supported_valuecardinal_number Value of the sizing item, or 0 if the size is unlimited or cannot be determined, or null if the features for which the sizing item is applicable are not supported -
    commentscharacter_dataPossibly a comment pertaining to the sizing item

    \ No newline at end of file + commentscharacter_dataPossibly a comment pertaining to the sizing item

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-sizing-profiles.html postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-sizing-profiles.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-sql-sizing-profiles.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-sql-sizing-profiles.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,5 +1,5 @@ -36.49. sql_sizing_profiles

    36.49. sql_sizing_profiles

    The table sql_sizing_profiles contains +36.49. sql_sizing_profiles

    36.49. sql_sizing_profiles

    The table sql_sizing_profiles contains information about the sql_sizing values that are required by various profiles of the SQL standard. PostgreSQL does not track any SQL profiles, so this table is empty. @@ -7,4 +7,4 @@ if the profile places no limit on the sizing item, or null if the profile does not require any of the features for which the sizing item is applicable - commentscharacter_dataPossibly a comment pertaining to the sizing item within the profile


    \ No newline at end of file + commentscharacter_dataPossibly a comment pertaining to the sizing item within the profile
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-table-constraints.html postgresql-10-10.19/doc/src/sgml/html/infoschema-table-constraints.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-table-constraints.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-table-constraints.html 2021-11-08 22:24:56.000000000 +0000 @@ -1,8 +1,8 @@ -36.50. table_constraints

    36.50. table_constraints

    The view table_constraints contains all +36.50. table_constraints

    36.50. table_constraints

    The view table_constraints contains all constraints belonging to tables that the current user owns or has some privilege other than SELECT on.

    Table 36.48. table_constraints Columns

    NameData TypeDescription
    constraint_catalogsql_identifierName of the database that contains the constraint (always the current database)
    constraint_schemasql_identifierName of the schema that contains the constraint
    constraint_namesql_identifierName of the constraint
    table_catalogsql_identifierName of the database that contains the table (always the current database)
    table_schemasql_identifierName of the schema that contains the table
    table_namesql_identifierName of the table
    constraint_typecharacter_data Type of the constraint: CHECK, FOREIGN KEY, PRIMARY KEY, or UNIQUE -
    is_deferrableyes_or_noYES if the constraint is deferrable, NO if not
    initially_deferredyes_or_noYES if the constraint is deferrable and initially deferred, NO if not

    \ No newline at end of file + is_deferrableyes_or_noYES if the constraint is deferrable, NO if notinitially_deferredyes_or_noYES if the constraint is deferrable and initially deferred, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-table-privileges.html postgresql-10-10.19/doc/src/sgml/html/infoschema-table-privileges.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-table-privileges.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-table-privileges.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.51. table_privileges

    36.51. table_privileges

    The view table_privileges identifies all +36.51. table_privileges

    36.51. table_privileges

    The view table_privileges identifies all privileges granted on tables or views to a currently enabled role or by a currently enabled role. There is one row for each combination of table, grantor, and grantee. @@ -13,4 +13,4 @@ in the SELECT privilege, so this column shows YES if the privilege is SELECT, else NO. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-tables.html postgresql-10-10.19/doc/src/sgml/html/infoschema-tables.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-tables.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-tables.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.52. tables

    36.52. tables

    The view tables contains all tables and views +36.52. tables

    36.52. tables

    The view tables contains all tables and views defined in the current database. Only those tables and views are shown that the current user has access to (by way of being the owner or having some privilege). @@ -18,4 +18,4 @@ is_insertable_intoyes_or_no YES if the table is insertable into, NO if not (Base tables are always insertable into, views not necessarily.) - is_typedyes_or_noYES if the table is a typed table, NO if notcommit_actioncharacter_dataNot yet implemented


    \ No newline at end of file + is_typedyes_or_noYES if the table is a typed table, NO if notcommit_actioncharacter_dataNot yet implemented
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-transforms.html postgresql-10-10.19/doc/src/sgml/html/infoschema-transforms.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-transforms.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-transforms.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.53. transforms

    36.53. transforms

    The view transforms contains information about the +36.53. transforms

    36.53. transforms

    The view transforms contains information about the transforms defined in the current database. More precisely, it contains a row for each function contained in a transform (the from SQL or to SQL function). @@ -9,4 +9,4 @@ Instead, transforms are specific to a language. As a compromise, this field contains the language the transform is for. transform_typecharacter_data FROM SQL or TO SQL -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-triggered-update-columns.html postgresql-10-10.19/doc/src/sgml/html/infoschema-triggered-update-columns.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-triggered-update-columns.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-triggered-update-columns.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.54. triggered_update_columns

    36.54. triggered_update_columns

    For triggers in the current database that specify a column list +36.54. triggered_update_columns

    36.54. triggered_update_columns

    For triggers in the current database that specify a column list (like UPDATE OF column1, column2), the view triggered_update_columns identifies these columns. Triggers that do not specify a column list are not @@ -8,4 +8,4 @@ SELECT on.

    Table 36.52. triggered_update_columns Columns

    NameData TypeDescription
    trigger_catalogsql_identifierName of the database that contains the trigger (always the current database)
    trigger_schemasql_identifierName of the schema that contains the trigger
    trigger_namesql_identifierName of the trigger
    event_object_catalogsql_identifier Name of the database that contains the table that the trigger is defined on (always the current database) -
    event_object_schemasql_identifierName of the schema that contains the table that the trigger is defined on
    event_object_tablesql_identifierName of the table that the trigger is defined on
    event_object_columnsql_identifierName of the column that the trigger is defined on

    \ No newline at end of file + event_object_schemasql_identifierName of the schema that contains the table that the trigger is defined onevent_object_tablesql_identifierName of the table that the trigger is defined onevent_object_columnsql_identifierName of the column that the trigger is defined on

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-triggers.html postgresql-10-10.19/doc/src/sgml/html/infoschema-triggers.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-triggers.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-triggers.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.55. triggers

    36.55. triggers

    The view triggers contains all triggers defined +36.55. triggers

    36.55. triggers

    The view triggers contains all triggers defined in the current database on tables and views that the current user owns or has some privilege other than SELECT on.

    Table 36.53. triggers Columns

    NameData TypeDescription
    trigger_catalogsql_identifierName of the database that contains the trigger (always the current database)
    trigger_schemasql_identifierName of the schema that contains the trigger
    trigger_namesql_identifierName of the trigger
    event_manipulationcharacter_data Event that fires the trigger (INSERT, @@ -55,4 +55,4 @@ respectively. That was how they were named in the SQL:1999 standard. The new naming conforms to SQL:2003 and later. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-udt-privileges.html postgresql-10-10.19/doc/src/sgml/html/infoschema-udt-privileges.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-udt-privileges.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-udt-privileges.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,9 +1,9 @@ -36.56. udt_privileges

    36.56. udt_privileges

    The view udt_privileges identifies +36.56. udt_privileges

    36.56. udt_privileges

    The view udt_privileges identifies USAGE privileges granted on user-defined types to a currently enabled role or by a currently enabled role. There is one row for each combination of type, grantor, and grantee. This view shows only composite types (see under Section 36.58 for why); see Section 36.57 for domain privileges. -

    Table 36.54. udt_privileges Columns

    NameData TypeDescription
    grantorsql_identifierName of the role that granted the privilege
    granteesql_identifierName of the role that the privilege was granted to
    udt_catalogsql_identifierName of the database containing the type (always the current database)
    udt_schemasql_identifierName of the schema containing the type
    udt_namesql_identifierName of the type
    privilege_typecharacter_dataAlways TYPE USAGE
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file +

    Table 36.54. udt_privileges Columns

    NameData TypeDescription
    grantorsql_identifierName of the role that granted the privilege
    granteesql_identifierName of the role that the privilege was granted to
    udt_catalogsql_identifierName of the database containing the type (always the current database)
    udt_schemasql_identifierName of the schema containing the type
    udt_namesql_identifierName of the type
    privilege_typecharacter_dataAlways TYPE USAGE
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-usage-privileges.html postgresql-10-10.19/doc/src/sgml/html/infoschema-usage-privileges.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-usage-privileges.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-usage-privileges.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.57. usage_privileges

    36.57. usage_privileges

    The view usage_privileges identifies +36.57. usage_privileges

    36.57. usage_privileges

    The view usage_privileges identifies USAGE privileges granted on various kinds of objects to a currently enabled role or by a currently enabled role. In PostgreSQL, this currently applies to @@ -15,4 +15,4 @@ the USAGE privilege. These are nonstandard and therefore not visible in the information schema.

    Table 36.55. usage_privileges Columns

    NameData TypeDescription
    grantorsql_identifierName of the role that granted the privilege
    granteesql_identifierName of the role that the privilege was granted to
    object_catalogsql_identifierName of the database containing the object (always the current database)
    object_schemasql_identifierName of the schema containing the object, if applicable, - else an empty string
    object_namesql_identifierName of the object
    object_typecharacter_dataCOLLATION or DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER or SEQUENCE
    privilege_typecharacter_dataAlways USAGE
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file + else an empty string
    object_namesql_identifierName of the object
    object_typecharacter_dataCOLLATION or DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER or SEQUENCE
    privilege_typecharacter_dataAlways USAGE
    is_grantableyes_or_noYES if the privilege is grantable, NO if not

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-user-defined-types.html postgresql-10-10.19/doc/src/sgml/html/infoschema-user-defined-types.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-user-defined-types.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-user-defined-types.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.58. user_defined_types

    36.58. user_defined_types

    The view user_defined_types currently contains +36.58. user_defined_types

    36.58. user_defined_types

    The view user_defined_types currently contains all composite types defined in the current database. Only those types are shown that the current user has access to (by way of being the owner or having some privilege). @@ -14,4 +14,4 @@ extensions, are not shown here. For domains, see Section 36.22 instead.

    Table 36.56. user_defined_types Columns

    NameData TypeDescription
    user_defined_type_catalogsql_identifierName of the database that contains the type (always the current database)
    user_defined_type_schemasql_identifierName of the schema that contains the type
    user_defined_type_namesql_identifierName of the type
    user_defined_type_categorycharacter_data Currently always STRUCTURED -
    is_instantiableyes_or_noApplies to a feature not available in PostgreSQL
    is_finalyes_or_noApplies to a feature not available in PostgreSQL
    ordering_formcharacter_dataApplies to a feature not available in PostgreSQL
    ordering_categorycharacter_dataApplies to a feature not available in PostgreSQL
    ordering_routine_catalogsql_identifierApplies to a feature not available in PostgreSQL
    ordering_routine_schemasql_identifierApplies to a feature not available in PostgreSQL
    ordering_routine_namesql_identifierApplies to a feature not available in PostgreSQL
    reference_typecharacter_dataApplies to a feature not available in PostgreSQL
    data_typecharacter_dataApplies to a feature not available in PostgreSQL
    character_maximum_lengthcardinal_numberApplies to a feature not available in PostgreSQL
    character_octet_lengthcardinal_numberApplies to a feature not available in PostgreSQL
    character_set_catalogsql_identifierApplies to a feature not available in PostgreSQL
    character_set_schemasql_identifierApplies to a feature not available in PostgreSQL
    character_set_namesql_identifierApplies to a feature not available in PostgreSQL
    collation_catalogsql_identifierApplies to a feature not available in PostgreSQL
    collation_schemasql_identifierApplies to a feature not available in PostgreSQL
    collation_namesql_identifierApplies to a feature not available in PostgreSQL
    numeric_precisioncardinal_numberApplies to a feature not available in PostgreSQL
    numeric_precision_radixcardinal_numberApplies to a feature not available in PostgreSQL
    numeric_scalecardinal_numberApplies to a feature not available in PostgreSQL
    datetime_precisioncardinal_numberApplies to a feature not available in PostgreSQL
    interval_typecharacter_dataApplies to a feature not available in PostgreSQL
    interval_precisioncardinal_numberApplies to a feature not available in PostgreSQL
    source_dtd_identifiersql_identifierApplies to a feature not available in PostgreSQL
    ref_dtd_identifiersql_identifierApplies to a feature not available in PostgreSQL

    \ No newline at end of file + is_instantiableyes_or_noApplies to a feature not available in PostgreSQLis_finalyes_or_noApplies to a feature not available in PostgreSQLordering_formcharacter_dataApplies to a feature not available in PostgreSQLordering_categorycharacter_dataApplies to a feature not available in PostgreSQLordering_routine_catalogsql_identifierApplies to a feature not available in PostgreSQLordering_routine_schemasql_identifierApplies to a feature not available in PostgreSQLordering_routine_namesql_identifierApplies to a feature not available in PostgreSQLreference_typecharacter_dataApplies to a feature not available in PostgreSQLdata_typecharacter_dataApplies to a feature not available in PostgreSQLcharacter_maximum_lengthcardinal_numberApplies to a feature not available in PostgreSQLcharacter_octet_lengthcardinal_numberApplies to a feature not available in PostgreSQLcharacter_set_catalogsql_identifierApplies to a feature not available in PostgreSQLcharacter_set_schemasql_identifierApplies to a feature not available in PostgreSQLcharacter_set_namesql_identifierApplies to a feature not available in PostgreSQLcollation_catalogsql_identifierApplies to a feature not available in PostgreSQLcollation_schemasql_identifierApplies to a feature not available in PostgreSQLcollation_namesql_identifierApplies to a feature not available in PostgreSQLnumeric_precisioncardinal_numberApplies to a feature not available in PostgreSQLnumeric_precision_radixcardinal_numberApplies to a feature not available in PostgreSQLnumeric_scalecardinal_numberApplies to a feature not available in PostgreSQLdatetime_precisioncardinal_numberApplies to a feature not available in PostgreSQLinterval_typecharacter_dataApplies to a feature not available in PostgreSQLinterval_precisioncardinal_numberApplies to a feature not available in PostgreSQLsource_dtd_identifiersql_identifierApplies to a feature not available in PostgreSQLref_dtd_identifiersql_identifierApplies to a feature not available in PostgreSQL

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-user-mapping-options.html postgresql-10-10.19/doc/src/sgml/html/infoschema-user-mapping-options.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-user-mapping-options.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-user-mapping-options.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.59. user_mapping_options

    36.59. user_mapping_options

    The view user_mapping_options contains all the +36.59. user_mapping_options

    36.59. user_mapping_options

    The view user_mapping_options contains all the options defined for user mappings in the current database. Only those user mappings are shown where the current user has access to the corresponding foreign server (by way of being the owner or @@ -11,4 +11,4 @@ is for PUBLIC and the current user is the server owner, or the current user is a superuser. The intent is to protect password information stored as user mapping - option.


    \ No newline at end of file + option.
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-user-mappings.html postgresql-10-10.19/doc/src/sgml/html/infoschema-user-mappings.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-user-mappings.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-user-mappings.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,9 +1,9 @@ -36.60. user_mappings

    36.60. user_mappings

    The view user_mappings contains all user +36.60. user_mappings

    36.60. user_mappings

    The view user_mappings contains all user mappings defined in the current database. Only those user mappings are shown where the current user has access to the corresponding foreign server (by way of being the owner or having some privilege).

    Table 36.58. user_mappings Columns

    NameData TypeDescription
    authorization_identifiersql_identifierName of the user being mapped, or PUBLIC if the mapping is public
    foreign_server_catalogsql_identifierName of the database that the foreign server used by this - mapping is defined in (always the current database)
    foreign_server_namesql_identifierName of the foreign server used by this mapping

    \ No newline at end of file + mapping is defined in (always the current database)foreign_server_namesql_identifierName of the foreign server used by this mapping

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-view-column-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-view-column-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-view-column-usage.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-view-column-usage.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.61. view_column_usage

    36.61. view_column_usage

    The view view_column_usage identifies all +36.61. view_column_usage

    36.61. view_column_usage

    The view view_column_usage identifies all columns that are used in the query expression of a view (the SELECT statement that defines the view). A column is only included if the table that contains the column is @@ -12,4 +12,4 @@ column that is used by the view table_namesql_identifier Name of the table that contains the column that is used by the view - column_namesql_identifierName of the column that is used by the view


    \ No newline at end of file + column_namesql_identifierName of the column that is used by the view
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-view-routine-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-view-routine-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-view-routine-usage.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-view-routine-usage.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,8 +1,8 @@ -36.62. view_routine_usage

    36.62. view_routine_usage

    The view view_routine_usage identifies all +36.62. view_routine_usage

    36.62. view_routine_usage

    The view view_routine_usage identifies all routines (functions and procedures) that are used in the query expression of a view (the SELECT statement that defines the view). A routine is only included if that routine is owned by a currently enabled role.

    Table 36.60. view_routine_usage Columns

    NameData TypeDescription
    table_catalogsql_identifierName of the database containing the view (always the current database)
    table_schemasql_identifierName of the schema containing the view
    table_namesql_identifierName of the view
    specific_catalogsql_identifierName of the database containing the function (always the current database)
    specific_schemasql_identifierName of the schema containing the function
    specific_namesql_identifier The specific name of the function. See Section 36.40 for more information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-views.html postgresql-10-10.19/doc/src/sgml/html/infoschema-views.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-views.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-views.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.64. views

    36.64. views

    The view views contains all views defined in the +36.64. views

    36.64. views

    The view views contains all views defined in the current database. Only those views are shown that the current user has access to (by way of being the owner or having some privilege).

    Table 36.62. views Columns

    NameData TypeDescription
    table_catalogsql_identifierName of the database that contains the view (always the current database)
    table_schemasql_identifierName of the schema that contains the view
    table_namesql_identifierName of the view
    view_definitioncharacter_data Query expression defining the view (null if the view is not @@ -18,4 +18,4 @@ DELETE trigger defined on it, NO if not
    is_trigger_insertable_intoyes_or_no YES if the view has an INSTEAD OF INSERT trigger defined on it, NO if not -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/infoschema-view-table-usage.html postgresql-10-10.19/doc/src/sgml/html/infoschema-view-table-usage.html --- postgresql-10-10.17/doc/src/sgml/html/infoschema-view-table-usage.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/infoschema-view-table-usage.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -36.63. view_table_usage

    36.63. view_table_usage

    The view view_table_usage identifies all tables +36.63. view_table_usage

    36.63. view_table_usage

    The view view_table_usage identifies all tables that are used in the query expression of a view (the SELECT statement that defines the view). A table is only included if that table is owned by a currently @@ -10,4 +10,4 @@ table_schemasql_identifier Name of the schema that contains the table that is used by the view table_namesql_identifier Name of the table that is used by the view -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/installation.html postgresql-10-10.19/doc/src/sgml/html/installation.html --- postgresql-10-10.17/doc/src/sgml/html/installation.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/installation.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 16.  Installation from Source Code

    Chapter 16.  Installation from Source Code

    This +Chapter 16.  Installation from Source Code

    Chapter 16.  Installation from Source Code

    This chapter describes the installation of PostgreSQL using the source code distribution. (If you are installing a pre-packaged distribution, @@ -7,4 +7,4 @@ chapter and read the packager's instructions instead.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/installation-platform-notes.html postgresql-10-10.19/doc/src/sgml/html/installation-platform-notes.html --- postgresql-10-10.17/doc/src/sgml/html/installation-platform-notes.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/installation-platform-notes.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -16.7. Platform-specific Notes

    16.7. Platform-specific Notes

    This section documents additional platform-specific issues +16.7. Platform-specific Notes

    16.7. Platform-specific Notes

    This section documents additional platform-specific issues regarding the installation and setup of PostgreSQL. Be sure to read the installation instructions, and in particular Section 16.2 as well. Also, @@ -387,4 +387,4 @@ make: *** [postgres] Error 1

    your DTrace installation is too old to handle probes in static functions. You need Solaris 10u4 or newer. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/install-getsource.html postgresql-10-10.19/doc/src/sgml/html/install-getsource.html --- postgresql-10-10.17/doc/src/sgml/html/install-getsource.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/install-getsource.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,19 +1,19 @@ -16.3. Getting The Source

    16.3. Getting The Source

    The PostgreSQL 10.17 sources can be obtained from the +16.3. Getting The Source

    16.3. Getting The Source

    The PostgreSQL 10.19 sources can be obtained from the download section of our website: https://www.postgresql.org/download/. You - should get a file named postgresql-10.17.tar.gz - or postgresql-10.17.tar.bz2. After + should get a file named postgresql-10.19.tar.gz + or postgresql-10.19.tar.bz2. After you have obtained the file, unpack it: -

    gunzip postgresql-10.17.tar.gz
    -tar xf postgresql-10.17.tar

    +

    gunzip postgresql-10.19.tar.gz
    +tar xf postgresql-10.19.tar

    (Use bunzip2 instead of gunzip if you have the .bz2 file.) This will create a directory - postgresql-10.17 under the current directory + postgresql-10.19 under the current directory with the PostgreSQL sources. Change into that directory for the rest of the installation procedure.

    You can also get the source directly from the version control repository, see Appendix I. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/install-post.html postgresql-10-10.19/doc/src/sgml/html/install-post.html --- postgresql-10-10.17/doc/src/sgml/html/install-post.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/install-post.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -16.5. Post-Installation Setup

    16.5. Post-Installation Setup

    16.5.1. Shared Libraries

    On some systems with shared libraries +16.5. Post-Installation Setup

    16.5. Post-Installation Setup

    16.5.1. Shared Libraries

    On some systems with shared libraries you need to tell the system how to find the newly installed shared libraries. The systems on which this is not necessary include @@ -74,4 +74,4 @@ user that plans to use the database sets PGHOST. This is not required, however; the settings can be communicated via command line options to most client programs. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/install-procedure.html postgresql-10-10.19/doc/src/sgml/html/install-procedure.html --- postgresql-10-10.17/doc/src/sgml/html/install-procedure.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/install-procedure.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -16.4. Installation Procedure

    16.4. Installation Procedure

    1. Configuration

      The first step of the installation procedure is to configure the +16.4. Installation Procedure

      16.4. Installation Procedure

      1. Configuration

        The first step of the installation procedure is to configure the source tree for your system and choose the options you would like. This is done by running the configure script. For a default installation simply enter: @@ -517,6 +517,10 @@

        make world

        The last line displayed should be:

        PostgreSQL, contrib, and documentation successfully made. Ready to install.

        +

        If you want to build everything that can be built, including the + additional modules (contrib), but without + the documentation, type instead: +

        make world-bin

      2. Regression Tests

        If you want to test the newly built server before you install it, you can run the regression tests at this point. The regression tests are a test suite to verify that PostgreSQL @@ -546,6 +550,8 @@

        If you built the world above, type instead:

        make install-world

        This also installs the documentation. +

        If you built the world without the documentation above, type instead: +

        make install-world-bin

        You can use make install-strip instead of make install to strip the executable files and libraries as they are installed. This will save some space. If @@ -588,4 +594,4 @@ idea to do make distclean before reconfiguring and rebuilding. Without this, your changes in configuration choices might not propagate everywhere they need to. -

      \ No newline at end of file +

      \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/install-requirements.html postgresql-10-10.19/doc/src/sgml/html/install-requirements.html --- postgresql-10-10.17/doc/src/sgml/html/install-requirements.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/install-requirements.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -16.2. Requirements

      16.2. Requirements

      In general, a modern Unix-compatible platform should be able to run +16.2. Requirements

      16.2. Requirements

      In general, a modern Unix-compatible platform should be able to run PostgreSQL. The platforms that had received specific testing at the time of release are listed in Section 16.6 @@ -166,4 +166,4 @@ run the regression tests you will temporarily need up to an extra 150 MB. Use the df command to check free disk space. -

      \ No newline at end of file +

      \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/install-short.html postgresql-10-10.19/doc/src/sgml/html/install-short.html --- postgresql-10-10.17/doc/src/sgml/html/install-short.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/install-short.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -16.1. Short Version

      16.1. Short Version

      ./configure
      +16.1. Short Version

      16.1. Short Version

      ./configure
       make
       su
       make install
      @@ -14,4 +14,4 @@
          The long version is the rest of this
          
          chapter.
      -  

      \ No newline at end of file +

      \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/install-windows-full.html postgresql-10-10.19/doc/src/sgml/html/install-windows-full.html --- postgresql-10-10.17/doc/src/sgml/html/install-windows-full.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/install-windows-full.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,6 +1,6 @@ 17.1. Building with Visual C++ or the Microsoft Windows SDK

      17.1. Building with Visual C++ or the + Microsoft Windows SDKPrev UpChapter 17. Installation from Source Code on WindowsHome Next

      17.1. Building with Visual C++ or the Microsoft Windows SDK

      PostgreSQL can be built using the Visual C++ compiler suite from Microsoft. These compilers can be either from Visual Studio, Visual Studio Express or some versions of the @@ -248,4 +248,4 @@ builddoc.bat. Note that this will actually run the build twice, in order to generate the indexes. The generated HTML files will be in doc\src\sgml. -

      \ No newline at end of file +

      \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/install-windows.html postgresql-10-10.19/doc/src/sgml/html/install-windows.html --- postgresql-10-10.17/doc/src/sgml/html/install-windows.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/install-windows.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 17. Installation from Source Code on Windows

      Chapter 17. Installation from Source Code on Windows

      Table of Contents

      17.1. Building with Visual C++ or the +Chapter 17. Installation from Source Code on Windows

      Chapter 17. Installation from Source Code on Windows

      It is recommended that most users download the binary distribution for Windows, available as a graphical installer package from the PostgreSQL website. Building from source @@ -35,5 +35,5 @@ line editing. The Cygwin build does support command line editing, so it should be used where psql is needed for interactive use on Windows. -


    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/multibyte.html postgresql-10-10.19/doc/src/sgml/html/multibyte.html --- postgresql-10-10.17/doc/src/sgml/html/multibyte.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/multibyte.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -23.3. Character Set Support

    23.3. Character Set Support

    The character set support in PostgreSQL +23.3. Character Set Support

    23.3. Character Set Support

    The character set support in PostgreSQL allows you to store text in a variety of character sets (also called encodings), including single-byte character sets such as the ISO 8859 series and @@ -283,4 +283,4 @@

    RFC 3629

    UTF-8 (8-bit UCS/Unicode Transformation Format) is defined here.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/multivariate-statistics-examples.html postgresql-10-10.19/doc/src/sgml/html/multivariate-statistics-examples.html --- postgresql-10-10.17/doc/src/sgml/html/multivariate-statistics-examples.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/multivariate-statistics-examples.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -68.2. Multivariate Statistics Examples

    68.2. Multivariate Statistics Examples

    68.2.1. Functional Dependencies

    Multivariate correlation can be demonstrated with a very simple data set +69.2. Multivariate Statistics Examples

    69.2. Multivariate Statistics Examples

    69.2.1. Functional Dependencies

    Multivariate correlation can be demonstrated with a very simple data set — a table with two columns, both containing the same values:

    CREATE TABLE t (a INT, b INT);
    @@ -61,7 +61,7 @@
      Seq Scan on t  (cost=0.00..195.00 rows=100 width=8) (actual rows=100 loops=1)
        Filter: ((a = 1) AND (b = 1))
        Rows Removed by Filter: 9900

    -

    68.2.2. Multivariate N-Distinct Counts

    A similar problem occurs with estimation of the cardinality of sets of +

    69.2.2. Multivariate N-Distinct Counts

    A similar problem occurs with estimation of the cardinality of sets of multiple columns, such as the number of groups that would be generated by a GROUP BY clause. When GROUP BY lists a single column, the n-distinct estimate (which is visible as the @@ -93,4 +93,4 @@ HashAggregate (cost=220.00..221.00 rows=100 width=16) (actual rows=100 loops=1) Group Key: a, b -> Seq Scan on t (cost=0.00..145.00 rows=10000 width=8) (actual rows=10000 loops=1)

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/mvcc-caveats.html postgresql-10-10.19/doc/src/sgml/html/mvcc-caveats.html --- postgresql-10-10.17/doc/src/sgml/html/mvcc-caveats.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/mvcc-caveats.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -13.5. Caveats

    13.5. Caveats

    Some DDL commands, currently only TRUNCATE and the +13.5. Caveats

    13.5. Caveats

    Some DDL commands, currently only TRUNCATE and the table-rewriting forms of ALTER TABLE, are not MVCC-safe. This means that after the truncation or rewrite commits, the table will appear empty to concurrent transactions, if they are using a @@ -28,4 +28,4 @@ contrast, queries that explicitly examine the system catalogs don't see rows representing concurrently created database objects, in the higher isolation levels. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/mvcc.html postgresql-10-10.19/doc/src/sgml/html/mvcc.html --- postgresql-10-10.17/doc/src/sgml/html/mvcc.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/mvcc.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,9 +1,9 @@ -Chapter 13. Concurrency Control

    Chapter 13. Concurrency Control

    This chapter describes the behavior of the +Chapter 13. Concurrency Control

    Chapter 13. Concurrency Control

    This chapter describes the behavior of the PostgreSQL database system when two or more sessions try to access the same data at the same time. The goals in that situation are to allow efficient access for all sessions while maintaining strict data integrity. Every developer of database applications should be familiar with the topics covered in this chapter. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/mvcc-intro.html postgresql-10-10.19/doc/src/sgml/html/mvcc-intro.html --- postgresql-10-10.17/doc/src/sgml/html/mvcc-intro.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/mvcc-intro.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -13.1. Introduction

    13.1. Introduction

    PostgreSQL provides a rich set of tools +13.1. Introduction

    13.1. Introduction

    PostgreSQL provides a rich set of tools for developers to manage concurrent access to data. Internally, data consistency is maintained by using a multiversion model (Multiversion Concurrency Control, MVCC). @@ -31,4 +31,4 @@ performance than locks. In addition, application-defined advisory locks provide a mechanism for acquiring locks that are not tied to a single transaction. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/nls.html postgresql-10-10.19/doc/src/sgml/html/nls.html --- postgresql-10-10.17/doc/src/sgml/html/nls.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/nls.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 54. Native Language Support \ No newline at end of file +Chapter 54. Native Language Support \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/nls-programmer.html postgresql-10-10.19/doc/src/sgml/html/nls-programmer.html --- postgresql-10-10.17/doc/src/sgml/html/nls-programmer.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/nls-programmer.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -54.2. For the Programmer

    54.2. For the Programmer

    54.2.1. Mechanics

    This section describes how to implement native language support in a +54.2. For the Programmer

    54.2. For the Programmer

    54.2.1. Mechanics

    This section describes how to implement native language support in a program or library that is part of the PostgreSQL distribution. Currently, it only applies to C programs. @@ -115,4 +115,4 @@ These comments are copied to the message catalog files so that the translators can see them.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/nls-translator.html postgresql-10-10.19/doc/src/sgml/html/nls-translator.html --- postgresql-10-10.17/doc/src/sgml/html/nls-translator.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/nls-translator.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -54.1. For the Translator

    54.1. For the Translator

    PostgreSQL +54.1. For the Translator

    54.1. For the Translator

    PostgreSQL programs (server and client) can issue their messages in your favorite language — if the messages have been translated. Creating and maintaining translated message sets needs the help of @@ -181,4 +181,4 @@ speaking end users might also not understand it or find it ambiguous, so it's best to improve the message.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/non-durability.html postgresql-10-10.19/doc/src/sgml/html/non-durability.html --- postgresql-10-10.17/doc/src/sgml/html/non-durability.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/non-durability.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -14.5. Non-Durable Settings

    14.5. Non-Durable Settings

    Durability is a database feature that guarantees the recording of +14.5. Non-Durable Settings

    14.5. Non-Durable Settings

    Durability is a database feature that guarantees the recording of committed transactions even if the server crashes or loses power. However, durability adds significant database overhead, so if your site does not require such a guarantee, @@ -29,4 +29,4 @@ tables to avoid WAL writes, though it makes the tables non-crash-safe.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/notation.html postgresql-10-10.19/doc/src/sgml/html/notation.html --- postgresql-10-10.17/doc/src/sgml/html/notation.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/notation.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -3. Conventions

    3. Conventions

    The following conventions are used in the synopsis of a command: +3. Conventions

    3. Conventions

    The following conventions are used in the synopsis of a command: brackets ([ and ]) indicate optional parts. (In the synopsis of a Tcl command, question marks (?) are used instead, as is usual in Tcl.) Braces @@ -16,4 +16,4 @@ PostgreSQL system. These terms should not be interpreted too narrowly; this book does not have fixed presumptions about system administration procedures. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/oid2name.html postgresql-10-10.19/doc/src/sgml/html/oid2name.html --- postgresql-10-10.17/doc/src/sgml/html/oid2name.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/oid2name.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,8 +1,8 @@ -oid2name

    oid2name

    oid2name — resolve OIDs and file nodes in a PostgreSQL data directory

    Synopsis

    oid2name [option...]

    Description

    oid2name is a utility program that helps administrators to +oid2name

    oid2name

    oid2name — resolve OIDs and file nodes in a PostgreSQL data directory

    Synopsis

    oid2name [option...]

    Description

    oid2name is a utility program that helps administrators to examine the file structure used by PostgreSQL. To make use of it, you need to be familiar with the database file structure, which is described in - Chapter 66. + Chapter 67.

    Note

    The name oid2name is historical, and is actually rather misleading, since most of the time when you use it, you will really be concerned with tables' filenode numbers (which are the file names @@ -163,4 +163,4 @@ Filenode Table Name ---------------------- 155156 foo

    Author

    B. Palmer -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/overview.html postgresql-10-10.19/doc/src/sgml/html/overview.html --- postgresql-10-10.17/doc/src/sgml/html/overview.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/overview.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 50. Overview of PostgreSQL Internals

    Chapter 50. Overview of PostgreSQL Internals

    Author

    This chapter originated as part of +Chapter 50. Overview of PostgreSQL Internals

    Chapter 50. Overview of PostgreSQL Internals

    Author

    This chapter originated as part of [sim98], Stefan Simkovics' Master's Thesis prepared at Vienna University of Technology under the direction of O.Univ.Prof.Dr. Georg Gottlob and Univ.Ass. Mag. Katrin Seyr. @@ -13,4 +13,4 @@ understand the general sequence of operations that occur within the backend from the point at which a query is received, to the point at which the results are returned to the client. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pageinspect.html postgresql-10-10.19/doc/src/sgml/html/pageinspect.html --- postgresql-10-10.17/doc/src/sgml/html/pageinspect.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pageinspect.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.23. pageinspect

    F.23. pageinspect

    The pageinspect module provides functions that allow you to +F.23. pageinspect

    F.23. pageinspect

    The pageinspect module provides functions that allow you to inspect the contents of database pages at a low level, which is useful for debugging purposes. All of these functions may be used only by superusers.

    F.23.1. General Functions

    get_raw_page(relname text, fork text, blkno int) returns bytea @@ -329,4 +329,4 @@ procid | 450 spares | {0,0,0,0,0,0,1,1,1,1,1,1,1,1,3,4,4,4,45,55,58,59,508,567,628,704,1193,1202,1204} mapp | {65}

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/parallel-plans.html postgresql-10-10.19/doc/src/sgml/html/parallel-plans.html --- postgresql-10-10.17/doc/src/sgml/html/parallel-plans.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/parallel-plans.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,12 +1,12 @@ -15.3. Parallel Plans

    15.3. Parallel Plans

    Because each worker executes the parallel portion of the plan to +15.3. Parallel Plans

    15.3. Parallel Plans

    Because each worker executes the parallel portion of the plan to completion, it is not possible to simply take an ordinary query plan and run it using multiple workers. Each worker would produce a full copy of the output result set, so the query would not run any faster than normal but would produce incorrect results. Instead, the parallel portion of the plan must be what is known internally to the query optimizer as a partial plan; that is, it must be constructed - so that each process which executes the plan will generate only a + so that each process that executes the plan will generate only a subset of the output rows in such a way that each required output row is guaranteed to be generated by exactly one of the cooperating processes. Generally, this means that the scan on the driving table of the query @@ -61,11 +61,11 @@ workers in order to produce the final result. This is reflected in the plan as a Finalize Aggregate node.

    Because the Finalize Aggregate node runs on the leader - process, queries which produce a relatively large number of groups in + process, queries that produce a relatively large number of groups in comparison to the number of input rows will appear less favorable to the query planner. For example, in the worst-case scenario the number of groups seen by the Finalize Aggregate node could be as many as - the number of input rows which were seen by all worker processes in the + the number of input rows that were seen by all worker processes in the Partial Aggregate stage. For such cases, there is clearly going to be no performance benefit to using parallel aggregation. The query planner takes this into account during the planning process and is @@ -83,7 +83,7 @@

    15.3.4. Parallel Plan Tips

    If a query that is expected to do so does not produce a parallel plan, you can try reducing parallel_setup_cost or parallel_tuple_cost. Of course, this plan may turn - out to be slower than the serial plan which the planner preferred, but + out to be slower than the serial plan that the planner preferred, but this will not always be the case. If you don't get a parallel plan even with very small values of these settings (e.g., after setting them both to zero), there may be some reason why the query planner is @@ -96,4 +96,4 @@ This may be useful in determining whether the work is being evenly distributed between all plan nodes and more generally in understanding the performance characteristics of the plan. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/parallel-query.html postgresql-10-10.19/doc/src/sgml/html/parallel-query.html --- postgresql-10-10.17/doc/src/sgml/html/parallel-query.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/parallel-query.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,9 +1,9 @@ -Chapter 15. Parallel Query

    Chapter 15. Parallel Query

    PostgreSQL can devise query plans which can leverage +Chapter 15. Parallel Query

    Chapter 15. Parallel Query

    PostgreSQL can devise query plans that can leverage multiple CPUs in order to answer queries faster. This feature is known as parallel query. Many queries cannot benefit from parallel query, either due to limitations of the current implementation or because there is no - imaginable query plan which is any faster than the serial query plan. + imaginable query plan that is any faster than the serial query plan. However, for queries that can benefit, the speedup from parallel query is often very significant. Many queries can run more than twice as fast when using parallel query, and some queries can run four times faster or @@ -11,4 +11,4 @@ few rows to the user will typically benefit most. This chapter explains some details of how parallel query works and in which situations it can be used so that users who wish to make use of it can understand what to expect. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/parallel-safety.html postgresql-10-10.19/doc/src/sgml/html/parallel-safety.html --- postgresql-10-10.17/doc/src/sgml/html/parallel-safety.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/parallel-safety.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,25 +1,25 @@ -15.4. Parallel Safety

    15.4. Parallel Safety

    The planner classifies operations involved in a query as either +15.4. Parallel Safety

    15.4. Parallel Safety

    The planner classifies operations involved in a query as either parallel safe, parallel restricted, - or parallel unsafe. A parallel safe operation is one which + or parallel unsafe. A parallel safe operation is one that does not conflict with the use of parallel query. A parallel restricted - operation is one which cannot be performed in a parallel worker, but which + operation is one that cannot be performed in a parallel worker, but that can be performed in the leader while parallel query is in use. Therefore, parallel restricted operations can never occur below a Gather - or Gather Merge node, but can occur elsewhere in a plan which - contains such a node. A parallel unsafe operation is one which cannot + or Gather Merge node, but can occur elsewhere in a plan that + contains such a node. A parallel unsafe operation is one that cannot be performed while parallel query is in use, not even in the leader. - When a query contains anything which is parallel unsafe, parallel query + When a query contains anything that is parallel unsafe, parallel query is completely disabled for that query.

    The following operations are always parallel restricted:

    • Scans of common table expressions (CTEs).

    • Scans of temporary tables.

    • Scans of foreign tables, unless the foreign data wrapper has - an IsForeignScanParallelSafe API which indicates otherwise. + an IsForeignScanParallelSafe API that indicates otherwise.

    • Access to an InitPlan or correlated SubPlan.

    15.4.1. Parallel Labeling for Functions and Aggregates

    The planner cannot automatically determine whether a user-defined function or aggregate is parallel safe, parallel restricted, or parallel - unsafe, because this would require predicting every operation which the + unsafe, because this would require predicting every operation that the function could possibly perform. In general, this is equivalent to the Halting Problem and therefore impossible. Even for simple functions where it could conceivably be done, we do not try, since this would be expensive @@ -34,11 +34,11 @@ RESTRICTED, or UNSAFE as the corresponding value.

    Functions and aggregates must be marked PARALLEL UNSAFE if they write to the database, access sequences, change the transaction state - even temporarily (e.g., a PL/pgSQL function which establishes an + even temporarily (e.g., a PL/pgSQL function that establishes an EXCEPTION block to catch errors), or make persistent changes to settings. Similarly, functions must be marked PARALLEL RESTRICTED if they access temporary tables, client connection state, - cursors, prepared statements, or miscellaneous backend-local state which + cursors, prepared statements, or miscellaneous backend-local state that the system cannot synchronize across workers. For example, setseed and random are parallel restricted for this last reason. @@ -50,10 +50,10 @@ arbitrary C code, but in most likely cases the result will be no worse than for any other function. If in doubt, it is probably best to label functions as UNSAFE. -

    If a function executed within a parallel worker acquires locks which are +

    If a function executed within a parallel worker acquires locks that are not held by the leader, for example by querying a table not referenced in the query, those locks will be released at worker exit, not end of - transaction. If you write a function which does this, and this behavior + transaction. If you write a function that does this, and this behavior difference is important to you, mark such functions as PARALLEL RESTRICTED to ensure that they execute only in the leader. @@ -67,4 +67,4 @@ the parallel portion of the query and defer the evaluation of the WHERE clause so that it happens above the Gather node. However, the planner does not do this. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/parser-stage.html postgresql-10-10.19/doc/src/sgml/html/parser-stage.html --- postgresql-10-10.17/doc/src/sgml/html/parser-stage.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/parser-stage.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -50.3. The Parser Stage

    50.3. The Parser Stage

    The parser stage consists of two parts: +50.3. The Parser Stage

    50.3. The Parser Stage

    The parser stage consists of two parts:

    • The parser defined in gram.y and scan.l is @@ -76,4 +76,4 @@ name turns out to be an ordinary function or an aggregate function. Also, information about the actual data types of columns and expression results is added to the query tree. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/passwordcheck.html postgresql-10-10.19/doc/src/sgml/html/passwordcheck.html --- postgresql-10-10.17/doc/src/sgml/html/passwordcheck.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/passwordcheck.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.24. passwordcheck

    F.24. passwordcheck

    The passwordcheck module checks users' passwords +F.24. passwordcheck

    F.24. passwordcheck

    The passwordcheck module checks users' passwords whenever they are set with CREATE ROLE or ALTER ROLE. @@ -33,4 +33,4 @@

    Alternatively, you could modify passwordcheck to reject pre-encrypted passwords, but forcing users to set their passwords in clear text carries its own security risks. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/performance-tips.html postgresql-10-10.19/doc/src/sgml/html/performance-tips.html --- postgresql-10-10.17/doc/src/sgml/html/performance-tips.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/performance-tips.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,6 +1,6 @@ -Chapter 14. Performance Tips

    Chapter 14. Performance Tips

    Query performance can be affected by many things. Some of these can +Chapter 14. Performance Tips

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/perm-functions.html postgresql-10-10.19/doc/src/sgml/html/perm-functions.html --- postgresql-10-10.17/doc/src/sgml/html/perm-functions.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/perm-functions.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -21.6. Function Security

    21.6. Function Security

    Functions, triggers and row-level security policies allow users to insert +21.6. Function Security

    21.6. Function Security

    Functions, triggers and row-level security policies allow users to insert code into the backend server that other users might execute unintentionally. Hence, these mechanisms permit users to Trojan horse others with relative ease. The strongest protection is tight @@ -17,4 +17,4 @@ are considered untrusted, and PostgreSQL allows only superusers to create functions written in those languages. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgarchivecleanup.html postgresql-10-10.19/doc/src/sgml/html/pgarchivecleanup.html --- postgresql-10-10.17/doc/src/sgml/html/pgarchivecleanup.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgarchivecleanup.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_archivecleanup

    pg_archivecleanup

    pg_archivecleanup — clean up PostgreSQL WAL archive files

    Synopsis

    pg_archivecleanup [option...] archivelocation oldestkeptwalfile

    Description

    pg_archivecleanup is designed to be used as an +pg_archivecleanup

    pg_archivecleanup

    pg_archivecleanup — clean up PostgreSQL WAL archive files

    Synopsis

    pg_archivecleanup [option...] archivelocation oldestkeptwalfile

    Description

    pg_archivecleanup is designed to be used as an archive_cleanup_command to clean up WAL file archives when running as a standby server (see Section 26.2). pg_archivecleanup can also be used as a standalone program to @@ -65,4 +65,4 @@ This will:

    • produce debugging output in cleanup.log

    • remove no-longer-needed files from the archive directory -

    See Also

    pg_standby
    \ No newline at end of file +

    See Also

    pg_standby
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgbench.html postgresql-10-10.19/doc/src/sgml/html/pgbench.html --- postgresql-10-10.17/doc/src/sgml/html/pgbench.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgbench.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -pgbench

    pgbench

    pgbench — run a benchmark test on PostgreSQL

    Synopsis

    pgbench -i [option...] [dbname]

    pgbench [option...] [dbname]

    Description

    pgbench is a simple program for running benchmark +pgbench

    pgbench

    pgbench — run a benchmark test on PostgreSQL

    Synopsis

    pgbench -i [option...] [dbname]

    pgbench [option...] [dbname]

    Description

    pgbench is a simple program for running benchmark tests on PostgreSQL. It runs the same sequence of SQL commands over and over, possibly in multiple concurrent database sessions, and then calculates the average transaction rate (transactions per second). @@ -573,4 +573,4 @@ do not run pgbench in that database. pgbench uses unqualified names and does not manipulate the search path. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgbuffercache.html postgresql-10-10.19/doc/src/sgml/html/pgbuffercache.html --- postgresql-10-10.17/doc/src/sgml/html/pgbuffercache.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgbuffercache.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.25. pg_buffercache

    F.25. pg_buffercache

    The pg_buffercache module provides a means for +F.25. pg_buffercache

    F.25. pg_buffercache

    The pg_buffercache module provides a means for examining what's happening in the shared buffer cache in real time.

    The module provides a C function pg_buffercache_pages that returns a set of records, plus a view @@ -50,4 +50,4 @@ (10 rows)

    F.25.3. Authors

    Mark Kirkwood

    Design suggestions: Neil Conway

    Debugging advice: Tom Lane -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgcrypto.html postgresql-10-10.19/doc/src/sgml/html/pgcrypto.html --- postgresql-10-10.17/doc/src/sgml/html/pgcrypto.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgcrypto.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.26. pgcrypto

    F.26. pgcrypto

    The pgcrypto module provides cryptographic functions for +F.26. pgcrypto

    F.26. pgcrypto

    The pgcrypto module provides cryptographic functions for PostgreSQL.

    F.26.1. General Hashing Functions

    F.26.1.1. digest()

    digest(data text, type text) returns bytea
     digest(data bytea, type text) returns bytea

    Computes a binary hash of the given data. @@ -323,7 +323,11 @@

    When compiled with OpenSSL, there will be more algorithms available. Also public-key encryption functions will be faster as OpenSSL has more optimized BIGNUM functions. -

    Table F.20. Summary of Functionality with and without OpenSSL

    FunctionalityBuilt-inWith OpenSSL
    MD5yesyes
    SHA1yesyes
    SHA224/256/384/512yesyes
    Other digest algorithmsnoyes (Note 1)
    Blowfishyesyes
    AESyesyes
    DES/3DES/CAST5noyes
    Raw encryptionyesyes
    PGP Symmetric encryptionyesyes
    PGP Public-Key encryptionyesyes

    Notes: +

    Table F.20. Summary of Functionality with and without OpenSSL

    FunctionalityBuilt-inWith OpenSSL
    MD5yesyes
    SHA1yesyes
    SHA224/256/384/512yesyes
    Other digest algorithmsnoyes (Note 1)
    Blowfishyesyes
    AESyesyes
    DES/3DES/CAST5noyes
    Raw encryptionyesyes
    PGP Symmetric encryptionyesyes
    PGP Public-Key encryptionyesyes

    When compiled against OpenSSL 3.0.0 and later + versions, the legacy provider must be activated in the + openssl.cnf configuration file in order to use older + ciphers like DES or Blowfish. +

    Notes:

    1. Any digest algorithm OpenSSL supports is automatically picked up. This is not possible with ciphers, which need to be supported explicitly. @@ -345,4 +349,4 @@

      Comparison of crypt-des, crypt-md5 and bcrypt algorithms.

    2. http://en.wikipedia.org/wiki/Fortuna_(PRNG)

      Description of Fortuna CSPRNG.

    3. https://jlcooke.ca/random/

      Jean-Luc Cooke Fortuna-based /dev/random driver for Linux.

    F.26.7. Author

    Marko Kreen

    pgcrypto uses code from the following sources: -

    AlgorithmAuthorSource origin
    DES cryptDavid Burren and othersFreeBSD libcrypt
    MD5 cryptPoul-Henning KampFreeBSD libcrypt
    Blowfish cryptSolar Designerwww.openwall.com
    Blowfish cipherSimon TathamPuTTY
    Rijndael cipherBrian GladmanOpenBSD sys/crypto
    MD5 hash and SHA1WIDE ProjectKAME kame/sys/crypto
    SHA256/384/512 Aaron D. GiffordOpenBSD sys/crypto
    BIGNUM mathMichael J. Frombergerdartmouth.edu/~sting/sw/imath
    \ No newline at end of file +

    AlgorithmAuthorSource origin
    DES cryptDavid Burren and othersFreeBSD libcrypt
    MD5 cryptPoul-Henning KampFreeBSD libcrypt
    Blowfish cryptSolar Designerwww.openwall.com
    Blowfish cipherSimon TathamPuTTY
    Rijndael cipherBrian GladmanOpenBSD sys/crypto
    MD5 hash and SHA1WIDE ProjectKAME kame/sys/crypto
    SHA256/384/512 Aaron D. GiffordOpenBSD sys/crypto
    BIGNUM mathMichael J. Frombergerdartmouth.edu/~sting/sw/imath
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgfreespacemap.html postgresql-10-10.19/doc/src/sgml/html/pgfreespacemap.html --- postgresql-10-10.17/doc/src/sgml/html/pgfreespacemap.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgfreespacemap.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.27. pg_freespacemap

    F.27. pg_freespacemap

    The pg_freespacemap module provides a means for examining the +F.27. pg_freespacemap

    F.27. pg_freespacemap

    The pg_freespacemap module provides a means for examining the free space map (FSM). It provides a function called pg_freespace, or two overloaded functions, to be precise. The functions show the value recorded in the free space map for @@ -55,4 +55,4 @@ (1 row)

    F.27.3. Author

    Original version by Mark Kirkwood . Rewritten in version 8.4 to suit new FSM implementation by Heikki Linnakangas -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgprewarm.html postgresql-10-10.19/doc/src/sgml/html/pgprewarm.html --- postgresql-10-10.17/doc/src/sgml/html/pgprewarm.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgprewarm.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.28. pg_prewarm

    F.28. pg_prewarm

    The pg_prewarm module provides a convenient way +F.28. pg_prewarm

    F.28. pg_prewarm

    The pg_prewarm module provides a convenient way to load relation data into either the operating system buffer cache or the PostgreSQL buffer cache.

    F.28.1. Functions

    pg_prewarm(regclass, mode text default 'buffer', fork text default 'main',
    @@ -30,4 +30,4 @@
        cache. For these reasons, prewarming is typically most useful at startup,
        when caches are largely empty.
       

    F.28.2. Author

    Robert Haas -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgrowlocks.html postgresql-10-10.19/doc/src/sgml/html/pgrowlocks.html --- postgresql-10-10.17/doc/src/sgml/html/pgrowlocks.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgrowlocks.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.29. pgrowlocks

    F.29. pgrowlocks

    The pgrowlocks module provides a function to show row +F.29. pgrowlocks

    F.29. pgrowlocks

    The pgrowlocks module provides a function to show row locking information for a specified table.

    By default use is restricted to superusers, members of the pg_stat_scan_tables role, and users with @@ -34,4 +34,4 @@ (0,3) | 607 | f | {607} | {"For Update"} | {3107} (0,4) | 607 | f | {607} | {"For Update"} | {3107} (4 rows)

    F.29.3. Author

    Tatsuo Ishii -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgstandby.html postgresql-10-10.19/doc/src/sgml/html/pgstandby.html --- postgresql-10-10.17/doc/src/sgml/html/pgstandby.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgstandby.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -pg_standby

    pg_standby

    pg_standby — supports the creation of a PostgreSQL warm standby server

    Synopsis

    pg_standby [option...] archivelocation nextwalfile walfilepath [restartwalfile]

    Description

    pg_standby supports creation of a warm standby +pg_standby

    pg_standby

    pg_standby — supports the creation of a PostgreSQL warm standby server

    Synopsis

    pg_standby [option...] archivelocation nextwalfile walfilepath [restartwalfile]

    Description

    pg_standby supports creation of a warm standby database server. It is designed to be a production-ready program, as well as a customizable template should you require specific modifications.

    pg_standby is designed to be a waiting @@ -150,4 +150,4 @@ or both servers might be accessing the archive directory across the network.

    Author

    Simon Riggs -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgstatstatements.html postgresql-10-10.19/doc/src/sgml/html/pgstatstatements.html --- postgresql-10-10.17/doc/src/sgml/html/pgstatstatements.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgstatstatements.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.30. pg_stat_statements

    F.30. pg_stat_statements

    The pg_stat_statements module provides a means for +F.30. pg_stat_statements

    F.30. pg_stat_statements

    The pg_stat_statements module provides a means for tracking execution statistics of all SQL statements executed by a server.

    The module must be loaded by adding pg_stat_statements to shared_preload_libraries in @@ -205,4 +205,4 @@ rows | 0 hit_percent | 34.4947735191637631

    F.30.5. Authors

    Takahiro Itagaki . Query normalization added by Peter Geoghegan . -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgstattuple.html postgresql-10-10.19/doc/src/sgml/html/pgstattuple.html --- postgresql-10-10.17/doc/src/sgml/html/pgstattuple.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgstattuple.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.31. pgstattuple

    F.31. pgstattuple

    The pgstattuple module provides various functions to +F.31. pgstattuple

    F.31. pgstattuple

    The pgstattuple module provides various functions to obtain tuple-level statistics.

    As these functions return detailed page-level information, only the superuser has EXECUTE privileges on them upon installation. After the functions have @@ -151,4 +151,4 @@ space map gives us an exact figure, but is not guaranteed to be accurate to the byte.

    F.31.2. Authors

    Tatsuo Ishii, Satoshi Nagayasu and Abhijit Menon-Sen -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgtestfsync.html postgresql-10-10.19/doc/src/sgml/html/pgtestfsync.html --- postgresql-10-10.17/doc/src/sgml/html/pgtestfsync.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgtestfsync.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_test_fsync

    pg_test_fsync

    pg_test_fsync — determine fastest wal_sync_method for PostgreSQL

    Synopsis

    pg_test_fsync [option...]

    Description

    pg_test_fsync is intended to give you a reasonable +pg_test_fsync

    pg_test_fsync

    pg_test_fsync — determine fastest wal_sync_method for PostgreSQL

    Synopsis

    pg_test_fsync [option...]

    Description

    pg_test_fsync is intended to give you a reasonable idea of what the fastest wal_sync_method is on your specific system, as well as supplying diagnostic information in the event of an identified I/O @@ -27,4 +27,4 @@

    -?
    --help

    Show help about pg_test_fsync command line arguments, and exit.

    -

    See Also

    postgres
    \ No newline at end of file +

    See Also

    postgres
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgtesttiming.html postgresql-10-10.19/doc/src/sgml/html/pgtesttiming.html --- postgresql-10-10.17/doc/src/sgml/html/pgtesttiming.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgtesttiming.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_test_timing

    pg_test_timing

    pg_test_timing — measure timing overhead

    Synopsis

    pg_test_timing [option...]

    Description

    pg_test_timing is a tool to measure the timing overhead +pg_test_timing

    pg_test_timing

    pg_test_timing — measure timing overhead

    Synopsis

    pg_test_timing [option...]

    Description

    pg_test_timing is a tool to measure the timing overhead on your system and confirm that the system time never moves backwards. Systems that are slow to collect timing data can give less accurate EXPLAIN ANALYZE results. @@ -146,4 +146,4 @@ Timer (PIT), the real-time clock (RTC), the Advanced Programmable Interrupt Controller (APIC) timer, and the Cyclone timer. These timers aim for millisecond resolution. -

    See Also

    EXPLAIN
    \ No newline at end of file +

    See Also

    EXPLAIN
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgtrgm.html postgresql-10-10.19/doc/src/sgml/html/pgtrgm.html --- postgresql-10-10.17/doc/src/sgml/html/pgtrgm.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgtrgm.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.32. pg_trgm

    F.32. pg_trgm

    The pg_trgm module provides functions and operators +F.32. pg_trgm

    F.32. pg_trgm

    The pg_trgm module provides functions and operators for determining the similarity of alphanumeric text based on trigram matching, as well as index operator classes that support fast searching for similar @@ -203,4 +203,4 @@

    Alexander Korotkov , Moscow, Postgres Professional, Russia

    Documentation: Christopher Kings-Lynne

    This module is sponsored by Delta-Soft Ltd., Moscow, Russia. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgupgrade.html postgresql-10-10.19/doc/src/sgml/html/pgupgrade.html --- postgresql-10-10.17/doc/src/sgml/html/pgupgrade.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgupgrade.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_upgrade

    pg_upgrade

    pg_upgrade — upgrade a PostgreSQL server instance

    Synopsis

    pg_upgrade -b oldbindir -B newbindir -d oldconfigdir -D newconfigdir [option...]

    Description

    pg_upgrade (formerly called pg_migrator) allows data +pg_upgrade

    pg_upgrade

    pg_upgrade — upgrade a PostgreSQL server instance

    Synopsis

    pg_upgrade -b oldbindir -B newbindir -d oldconfigdir -D newconfigdir [option...]

    Description

    pg_upgrade (formerly called pg_migrator) allows data stored in PostgreSQL data files to be upgraded to a later PostgreSQL major version without the data dump/reload typically required for major version upgrades, e.g., from 9.5.8 to 9.6.4 or from 10.7 to 11.2. @@ -66,14 +66,18 @@ flags that match the old cluster. Many prebuilt installers do this step automatically. There is no need to start the new cluster. -

  • Install custom shared object files

    Install any custom shared object files (or DLLs) used by the old cluster - into the new cluster, e.g., pgcrypto.so, - whether they are from contrib - or some other source. Do not install the schema definitions, e.g., - CREATE EXTENSION pgcrypto, because these will be upgraded - from the old cluster. - Also, any custom full text search files (dictionary, synonym, - thesaurus, stop words) must also be copied to the new cluster. +

  • Install extension shared object files

    Many extensions and custom modules, whether from + contrib or another source, use shared object + files (or DLLs), e.g., pgcrypto.so. If the old + cluster used these, shared object files matching the new server binary + must be installed in the new cluster, usually via operating system + commands. Do not load the schema definitions, e.g., CREATE + EXTENSION pgcrypto, because these will be duplicated from + the old cluster. If extension updates are available, + pg_upgrade will report this and create + a script that can be run later to update them. +

  • Copy custom full-text search files

    Copy any custom full text search files (dictionary, synonym, + thesaurus, stop words) from the old to the new cluster.

  • Adjust authentication

    pg_upgrade will connect to the old and new servers several times, so you might want to set authentication to peer in pg_hba.conf or use a ~/.pgpass file @@ -89,7 +93,7 @@ NET STOP postgresql-10

    Streaming replication and log-shipping standby servers can remain running until a later step. -

  • Prepare for standby server upgrades

    If you are upgrading standby servers using methods outlined in section Step 10, verify that the old standby +

  • Prepare for standby server upgrades

    If you are upgrading standby servers using methods outlined in section Step 11, verify that the old standby servers are caught up by running pg_controldata against the old primary and standby clusters. Verify that the Latest checkpoint location values match in all clusters. @@ -147,7 +151,7 @@ same time. However, when checking an old running server, the old and new port numbers must be different.

    If an error occurs while restoring the database schema, pg_upgrade will - exit and you will have to revert to the old cluster as outlined in Step 16 + exit and you will have to revert to the old cluster as outlined in Step 17 below. To try pg_upgrade again, you will need to modify the old cluster so the pg_upgrade schema restore succeeds. If the problem is a contrib module, you might need to uninstall the contrib module from @@ -167,7 +171,7 @@

  • Make sure the new standby data directories do not exist

    Make sure the new standby data directories do not exist or are empty. If initdb was run, delete the standby servers' new data directories. -

  • Install custom shared object files

    Install the same custom shared object files on the new standbys +

  • Install extension shared object files

    Install the same extension shared object files on the new standbys that you installed in the new primary cluster.

  • Stop standby servers

    If the standby servers are still running, stop them now using the above instructions. @@ -316,4 +320,4 @@ to make a backup of the old cluster and tablespaces, though the snapshot and copies must be created simultaneously or while the database server is down. -

  • \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgvisibility.html postgresql-10-10.19/doc/src/sgml/html/pgvisibility.html --- postgresql-10-10.17/doc/src/sgml/html/pgvisibility.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgvisibility.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.33. pg_visibility

    F.33. pg_visibility

    The pg_visibility module provides a means for examining the +F.33. pg_visibility

    F.33. pg_visibility

    The pg_visibility module provides a means for examining the visibility map (VM) and page-level visibility information of a table. It also provides functions to check the integrity of a visibility map and to force it to be rebuilt. @@ -53,4 +53,4 @@ pg_truncate_visibility_map(relation regclass) which can only be executed by superusers.

    F.33.2. Author

    Robert Haas -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgwaldump.html postgresql-10-10.19/doc/src/sgml/html/pgwaldump.html --- postgresql-10-10.17/doc/src/sgml/html/pgwaldump.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgwaldump.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -pg_waldump

    pg_waldump

    pg_waldump — display a human-readable rendering of the write-ahead log of a PostgreSQL database cluster

    Synopsis

    pg_waldump [option...] [startseg +pg_waldump

    pg_waldump

    pg_waldump — display a human-readable rendering of the write-ahead log of a PostgreSQL database cluster

    Synopsis

    pg_waldump [option...] [startseg [endseg] ]

    Description

    pg_waldump displays the write-ahead log (WAL) and is mainly useful for debugging or educational purposes. @@ -45,4 +45,4 @@

    pg_waldump cannot read WAL files with suffix .partial. If those files need to be read, .partial suffix needs to be removed from the file name. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pgxlogdump.html postgresql-10-10.19/doc/src/sgml/html/pgxlogdump.html --- postgresql-10-10.17/doc/src/sgml/html/pgxlogdump.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pgxlogdump.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,9 +1,9 @@ -L.1. pg_xlogdump renamed to pg_waldump

    L.1. pg_xlogdump renamed to pg_waldump

    PostgreSQL 9.6 and below provided a command named +L.1. pg_xlogdump renamed to pg_waldump

    L.1. pg_xlogdump renamed to pg_waldump

    PostgreSQL 9.6 and below provided a command named pg_xlogdump to read write-ahead-log (WAL) files. This command was renamed to pg_waldump, see pg_waldump for documentation of pg_waldump and see - the release notes for PostgreSQL 10 for details + the release notes for PostgreSQL 10 for details on this change. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/planner-optimizer.html postgresql-10-10.19/doc/src/sgml/html/planner-optimizer.html --- postgresql-10-10.17/doc/src/sgml/html/planner-optimizer.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/planner-optimizer.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -50.5. Planner/Optimizer

    50.5. Planner/Optimizer

    The task of the planner/optimizer is to +50.5. Planner/Optimizer

    50.5. Planner/Optimizer

    The task of the planner/optimizer is to create an optimal execution plan. A given SQL query (and hence, a query tree) can be actually executed in a wide variety of different ways, each of which will produce the same set of @@ -96,4 +96,4 @@ WHERE clause and computation of required output expressions to the most appropriate nodes of the plan tree. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/planner-stats-details.html postgresql-10-10.19/doc/src/sgml/html/planner-stats-details.html --- postgresql-10-10.17/doc/src/sgml/html/planner-stats-details.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/planner-stats-details.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 68. How the Planner Uses Statistics

    Chapter 68. How the Planner Uses Statistics

    This chapter builds on the material covered in Section 14.1 and Section 14.2 to show some +Chapter 69. How the Planner Uses Statistics

    Chapter 69. How the Planner Uses Statistics

    This chapter builds on the material covered in Section 14.1 and Section 14.2 to show some additional details about how the planner uses the system statistics to estimate the number of rows each part of a query might return. This is a significant part of the planning process, @@ -8,4 +8,4 @@ but to present an overview of how it works. This will perhaps ease the learning curve for someone who subsequently wishes to read the code. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/planner-stats.html postgresql-10-10.19/doc/src/sgml/html/planner-stats.html --- postgresql-10-10.17/doc/src/sgml/html/planner-stats.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/planner-stats.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -14.2. Statistics Used by the Planner

    14.2. Statistics Used by the Planner

    14.2.1. Single-Column Statistics

    As we saw in the previous section, the query planner needs to estimate +14.2. Statistics Used by the Planner

    14.2. Statistics Used by the Planner

    14.2.1. Single-Column Statistics

    As we saw in the previous section, the query planner needs to estimate the number of rows retrieved by a query in order to make good choices of query plans. This section provides a quick look at the statistics that the system uses for these estimates. @@ -103,7 +103,7 @@ time to compute the estimates. Conversely, a lower limit might be sufficient for columns with simple data distributions.

    Further details about the planner's use of statistics can be found in - Chapter 68. + Chapter 69.

    14.2.2. Extended Statistics

    It is common to see slow queries running bad execution plans because multiple columns used in the query clauses are correlated. The planner normally assumes that multiple conditions @@ -243,4 +243,4 @@ on combinations of columns that are actually used for grouping, and for which misestimation of the number of groups is resulting in bad plans. Otherwise, the ANALYZE cycles are just wasted. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/planner-stats-security.html postgresql-10-10.19/doc/src/sgml/html/planner-stats-security.html --- postgresql-10-10.17/doc/src/sgml/html/planner-stats-security.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/planner-stats-security.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -68.3. Planner Statistics and Security

    68.3. Planner Statistics and Security

    Access to the table pg_statistic is restricted to +69.3. Planner Statistics and Security

    69.3. Planner Statistics and Security

    Access to the table pg_statistic is restricted to superusers, so that ordinary users cannot learn about the contents of the tables of other users from it. Some selectivity estimation functions will use a user-provided operator (either the operator appearing in the query or @@ -41,4 +41,4 @@

    Selectivity estimation functions contained in third-party extensions that potentially operate on statistics with user-defined operators should follow the same security rules. Consult the PostgreSQL source code for guidance. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plhandler.html postgresql-10-10.19/doc/src/sgml/html/plhandler.html --- postgresql-10-10.17/doc/src/sgml/html/plhandler.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plhandler.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 55. Writing A Procedural Language Handler

    Chapter 55. Writing A Procedural Language Handler

    All calls to functions that are written in a language other than +Chapter 55. Writing A Procedural Language Handler

    Chapter 55. Writing A Procedural Language Handler

    All calls to functions that are written in a language other than the current version 1 interface for compiled languages (this includes functions in user-defined procedural languages and functions written in SQL) go through a call handler @@ -187,4 +187,4 @@ Look into the src/pl subdirectory of the source tree. The CREATE LANGUAGE reference page also has some useful details. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl-builtins.html postgresql-10-10.19/doc/src/sgml/html/plperl-builtins.html --- postgresql-10-10.17/doc/src/sgml/html/plperl-builtins.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl-builtins.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -44.3. Built-in Functions

    44.3. Built-in Functions

    44.3.1. Database Access from PL/Perl

    Access to the database itself from your Perl function can be done +44.3. Built-in Functions

    44.3. Built-in Functions

    44.3.1. Database Access from PL/Perl

    Access to the database itself from your Perl function can be done via the following functions:

    spi_exec_query(query [, max-rows]) @@ -253,4 +253,4 @@

    Returns a true value if the given argument may be treated as an array reference, that is, if ref of the argument is ARRAY or PostgreSQL::InServer::ARRAY. Returns false otherwise. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl-data.html postgresql-10-10.19/doc/src/sgml/html/plperl-data.html --- postgresql-10-10.17/doc/src/sgml/html/plperl-data.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl-data.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,8 +1,8 @@ -44.2. Data Values in PL/Perl

    44.2. Data Values in PL/Perl

    The argument values supplied to a PL/Perl function's code are +44.2. Data Values in PL/Perl

    44.2. Data Values in PL/Perl

    The argument values supplied to a PL/Perl function's code are simply the input arguments converted to text form (just as if they had been displayed by a SELECT statement). Conversely, the return and return_next commands will accept any string that is acceptable input format for the function's declared return type. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl-event-triggers.html postgresql-10-10.19/doc/src/sgml/html/plperl-event-triggers.html --- postgresql-10-10.17/doc/src/sgml/html/plperl-event-triggers.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl-event-triggers.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -44.7. PL/Perl Event Triggers

    44.7. PL/Perl Event Triggers

    PL/Perl can be used to write event trigger functions. In an event trigger +44.7. PL/Perl Event Triggers

    44.7. PL/Perl Event Triggers

    PL/Perl can be used to write event trigger functions. In an event trigger function, the hash reference $_TD contains information about the current trigger event. $_TD is a global variable, which gets a separate local value for each invocation of the trigger. The @@ -18,4 +18,4 @@ CREATE EVENT TRIGGER perl_a_snitch ON ddl_command_start EXECUTE PROCEDURE perlsnitch();

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl-funcs.html postgresql-10-10.19/doc/src/sgml/html/plperl-funcs.html --- postgresql-10-10.17/doc/src/sgml/html/plperl-funcs.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl-funcs.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -44.1. PL/Perl Functions and Arguments

    44.1. PL/Perl Functions and Arguments

    To create a function in the PL/Perl language, use the standard +44.1. PL/Perl Functions and Arguments

    44.1. PL/Perl Functions and Arguments

    To create a function in the PL/Perl language, use the standard CREATE FUNCTION syntax: @@ -216,4 +216,4 @@

    use strict;

    at the top of the function body.

    The feature pragma is also available to use if your Perl is version 5.10.0 or higher. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl-global.html postgresql-10-10.19/doc/src/sgml/html/plperl-global.html --- postgresql-10-10.17/doc/src/sgml/html/plperl-global.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl-global.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -44.4. Global Values in PL/Perl

    44.4. Global Values in PL/Perl

    You can use the global hash %_SHARED to store +44.4. Global Values in PL/Perl

    44.4. Global Values in PL/Perl

    You can use the global hash %_SHARED to store data, including code references, between function calls for the lifetime of the current session.

    Here is a simple example for shared data: @@ -54,4 +54,4 @@ functions that should communicate are owned by the same user, and mark them SECURITY DEFINER. You must of course take care that such functions can't be used to do anything unintended. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl.html postgresql-10-10.19/doc/src/sgml/html/plperl.html --- postgresql-10-10.17/doc/src/sgml/html/plperl.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 44. PL/Perl - Perl Procedural Language

    Chapter 44. PL/Perl - Perl Procedural Language

    PL/Perl is a loadable procedural language that enables you to write +Chapter 44. PL/Perl - Perl Procedural Language

    Note

    Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to Chapter 16 for more information.) Users of binary packages might find PL/Perl in a separate subpackage. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl-triggers.html postgresql-10-10.19/doc/src/sgml/html/plperl-triggers.html --- postgresql-10-10.17/doc/src/sgml/html/plperl-triggers.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl-triggers.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -44.6. PL/Perl Triggers

    44.6. PL/Perl Triggers

    PL/Perl can be used to write trigger functions. In a trigger function, +44.6. PL/Perl Triggers

    44.6. PL/Perl Triggers

    PL/Perl can be used to write trigger functions. In a trigger function, the hash reference $_TD contains information about the current trigger event. $_TD is a global variable, which gets a separate local value for each invocation of the trigger. @@ -51,4 +51,4 @@ CREATE TRIGGER test_valid_id_trig BEFORE INSERT OR UPDATE ON test FOR EACH ROW EXECUTE PROCEDURE valid_id();

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl-trusted.html postgresql-10-10.19/doc/src/sgml/html/plperl-trusted.html --- postgresql-10-10.17/doc/src/sgml/html/plperl-trusted.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl-trusted.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -44.5. Trusted and Untrusted PL/Perl

    44.5. Trusted and Untrusted PL/Perl

    Normally, PL/Perl is installed as a trusted programming +44.5. Trusted and Untrusted PL/Perl

    44.5. Trusted and Untrusted PL/Perl

    Normally, PL/Perl is installed as a trusted programming language named plperl. In this setup, certain Perl operations are disabled to preserve security. In general, the operations that are restricted are those that interact with the @@ -59,4 +59,4 @@ session, and so any one session can only execute either PL/PerlU functions, or PL/Perl functions that are all called by the same SQL role. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plperl-under-the-hood.html postgresql-10-10.19/doc/src/sgml/html/plperl-under-the-hood.html --- postgresql-10-10.17/doc/src/sgml/html/plperl-under-the-hood.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plperl-under-the-hood.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -44.8. PL/Perl Under the Hood

    44.8. PL/Perl Under the Hood

    44.8.1. Configuration

    This section lists configuration parameters that affect PL/Perl. +44.8. PL/Perl Under the Hood

    44.8. PL/Perl Under the Hood

    44.8.1. Configuration

    This section lists configuration parameters that affect PL/Perl.

    plperl.on_init (string)

    Specifies Perl code to be executed when a Perl interpreter is first @@ -84,4 +84,4 @@ file handles are not automatically flushed and objects are not automatically destroyed.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-control-structures.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-control-structures.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-control-structures.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-control-structures.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.6. Control Structures

    42.6. Control Structures

    Control structures are probably the most useful (and +42.6. Control Structures

    42.6. Control Structures

    Control structures are probably the most useful (and important) part of PL/pgSQL. With PL/pgSQL's control structures, you can manipulate PostgreSQL data in a very @@ -753,4 +753,4 @@

    GET STACKED DIAGNOSTICS ... PG_EXCEPTION_CONTEXT returns the same sort of stack trace, but describing the location at which an error was detected, rather than the current location. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-cursors.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-cursors.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-cursors.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-cursors.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.7. Cursors

    42.7. Cursors

    Rather than executing a whole query at once, it is possible to set +42.7. Cursors

    42.7. Cursors

    Rather than executing a whole query at once, it is possible to set up a cursor that encapsulates the query, and then read the query result a few rows at a time. One reason for doing this is to avoid memory overrun when the result contains a large number of @@ -299,4 +299,4 @@ existing definition of the variable name is ignored within the loop). Each row returned by the cursor is successively assigned to this record variable and the loop body is executed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-declarations.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-declarations.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-declarations.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-declarations.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.3. Declarations

    42.3. Declarations

    All variables used in a block must be declared in the +42.3. Declarations

    42.3. Declarations

    All variables used in a block must be declared in the declarations section of the block. (The only exceptions are that the loop variable of a FOR loop iterating over a range of integer values is automatically declared as an @@ -319,4 +319,4 @@ This overrides the collations associated with the table columns, parameters, or local variables used in the expression, just as would happen in a plain SQL command. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-development-tips.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-development-tips.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-development-tips.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-development-tips.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.11. Tips for Developing in PL/pgSQL

    42.11. Tips for Developing in PL/pgSQL

    One good way to develop in +42.11. Tips for Developing in PL/pgSQL

    42.11. Tips for Developing in PL/pgSQL

    One good way to develop in PL/pgSQL is to use the text editor of your choice to create your functions, and in another window, use psql to load and test those functions. @@ -126,4 +126,4 @@ LINE 3: f1 int; ^ CREATE FUNCTION

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-errors-and-messages.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-errors-and-messages.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-errors-and-messages.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-errors-and-messages.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.8. Errors and Messages

    42.8. Errors and Messages

    42.8.1. Reporting Errors and Messages

    Use the RAISE statement to report messages and +42.8. Errors and Messages

    42.8. Errors and Messages

    42.8.1. Reporting Errors and Messages

    Use the RAISE statement to report messages and raise errors.

    RAISE [ level ] 'format' [, expression [, ... ]] [ USING option = expression [, ... ] ];
    @@ -115,4 +115,4 @@
        

    Note that ASSERT is meant for detecting program bugs, not for reporting ordinary error conditions. Use the RAISE statement, described above, for that. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-expressions.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-expressions.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-expressions.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-expressions.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.4. Expressions

    42.4. Expressions

    All expressions used in PL/pgSQL +42.4. Expressions

    42.4. Expressions

    All expressions used in PL/pgSQL statements are processed using the server's main SQL executor. For example, when you write a PL/pgSQL statement like @@ -27,4 +27,4 @@ not important to a PL/pgSQL user, but they are useful to know when trying to diagnose a problem. More information appears in Section 42.10.2. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql.html postgresql-10-10.19/doc/src/sgml/html/plpgsql.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 42. PL/pgSQL - SQL Procedural Language \ No newline at end of file +Chapter 42. PL/pgSQL - SQL Procedural Language \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-implementation.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-implementation.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-implementation.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-implementation.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.10. PL/pgSQL Under the Hood

    42.10. PL/pgSQL Under the Hood

    This section discusses some implementation details that are +42.10. PL/pgSQL Under the Hood

    42.10. PL/pgSQL Under the Hood

    This section discusses some implementation details that are frequently important for PL/pgSQL users to know.

    42.10.1. Variable Substitution

    SQL statements and expressions within a PL/pgSQL function can refer to variables and parameters of the function. Behind the scenes, @@ -227,4 +227,4 @@ on each execution as the programmer expects. Even though this happens to work as expected, it's not terribly efficient, so use of the now() function would still be a better idea. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-overview.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-overview.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-overview.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-overview.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.1. Overview

    42.1. Overview

    PL/pgSQL is a loadable procedural +42.1. Overview

    42.1. Overview

    PL/pgSQL is a loadable procedural language for the PostgreSQL database system. The design goals of PL/pgSQL were to create a loadable procedural language that @@ -79,4 +79,4 @@

    Specific examples appear in Section 42.3.1 and Section 42.6.1. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-porting.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-porting.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-porting.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-porting.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.12. Porting from Oracle PL/SQL

    42.12. Porting from Oracle PL/SQL

    This section explains differences between +42.12. Porting from Oracle PL/SQL

    42.12. Porting from Oracle PL/SQL

    This section explains differences between PostgreSQL's PL/pgSQL language and Oracle's PL/SQL language, to help developers who port applications from @@ -515,4 +515,4 @@ RETURN 0; END IF; END; -$$ LANGUAGE plpgsql STRICT IMMUTABLE;

    \ No newline at end of file +$$ LANGUAGE plpgsql STRICT IMMUTABLE; \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-statements.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-statements.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-statements.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-statements.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.5. Basic Statements

    42.5. Basic Statements

    In this section and the following ones, we describe all the statement +42.5. Basic Statements

    42.5. Basic Statements

    In this section and the following ones, we describe all the statement types that are explicitly understood by PL/pgSQL. Anything not recognized as one of these statement types is presumed @@ -450,4 +450,4 @@ NULL statements are required for situations such as this. PL/pgSQL allows you to just write nothing, instead. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-structure.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-structure.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-structure.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-structure.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.2. Structure of PL/pgSQL

    42.2. Structure of PL/pgSQL

    Functions written in PL/pgSQL are defined +42.2. Structure of PL/pgSQL

    42.2. Structure of PL/pgSQL

    Functions written in PL/pgSQL are defined to the server by executing CREATE FUNCTION commands. Such a command would normally look like, say,

    CREATE FUNCTION somefunc(integer, text) RETURNS integer
    @@ -90,4 +90,4 @@
          However, a block containing an EXCEPTION clause effectively
          forms a subtransaction that can be rolled back without affecting the
          outer transaction.  For more about that see Section 42.6.6.
    -    

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpgsql-trigger.html postgresql-10-10.19/doc/src/sgml/html/plpgsql-trigger.html --- postgresql-10-10.17/doc/src/sgml/html/plpgsql-trigger.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpgsql-trigger.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -42.9. Trigger Procedures

    42.9. Trigger Procedures

    PL/pgSQL can be used to define trigger +42.9. Trigger Procedures

    42.9. Trigger Procedures

    PL/pgSQL can be used to define trigger procedures on data changes or database events. A trigger procedure is created with the CREATE FUNCTION command, declaring it as a function with no arguments and a return type of @@ -466,4 +466,4 @@ END; $$ LANGUAGE plpgsql; -CREATE EVENT TRIGGER snitch ON ddl_command_start EXECUTE PROCEDURE snitch();


    \ No newline at end of file +CREATE EVENT TRIGGER snitch ON ddl_command_start EXECUTE PROCEDURE snitch();
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-database.html postgresql-10-10.19/doc/src/sgml/html/plpython-database.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-database.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-database.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.7. Database Access

    45.7. Database Access

    The PL/Python language module automatically imports a Python module +45.7. Database Access

    45.7. Database Access

    The PL/Python language module automatically imports a Python module called plpy. The functions and constants in this module are available to you in the Python code as plpy.foo. @@ -185,4 +185,4 @@ the exception object. This attribute is a string value containing the SQLSTATE error code. This approach provides approximately the same functionality -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-data.html postgresql-10-10.19/doc/src/sgml/html/plpython-data.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-data.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-data.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.3. Data Values

    45.3. Data Values

    Generally speaking, the aim of PL/Python is to provide +45.3. Data Values

    45.3. Data Values

    Generally speaking, the aim of PL/Python is to provide a natural mapping between the PostgreSQL and the Python worlds. This informs the data mapping rules described below. @@ -284,4 +284,4 @@ $$ LANGUAGE plpythonu; SELECT * FROM multiout_simple_setof(3);

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-do.html postgresql-10-10.19/doc/src/sgml/html/plpython-do.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-do.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-do.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.5. Anonymous Code Blocks

    45.5. Anonymous Code Blocks

    PL/Python also supports anonymous code blocks called with the +45.5. Anonymous Code Blocks

    45.5. Anonymous Code Blocks

    PL/Python also supports anonymous code blocks called with the DO statement:

    DO $$
    @@ -8,4 +8,4 @@
     
        An anonymous code block receives no arguments, and whatever value it
        might return is discarded.  Otherwise it behaves just like a function.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-envar.html postgresql-10-10.19/doc/src/sgml/html/plpython-envar.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-envar.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-envar.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.10. Environment Variables

    45.10. Environment Variables

    Some of the environment variables that are accepted by the Python +45.10. Environment Variables

    45.10. Environment Variables

    Some of the environment variables that are accepted by the Python interpreter can also be used to affect PL/Python behavior. They would need to be set in the environment of the main PostgreSQL server process, for example in a start script. The available @@ -13,4 +13,4 @@ of PL/Python that some of the environment variables listed on the python man page are only effective in a command-line interpreter and not an embedded Python interpreter.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-funcs.html postgresql-10-10.19/doc/src/sgml/html/plpython-funcs.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-funcs.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-funcs.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.2. PL/Python Functions

    45.2. PL/Python Functions

    Functions in PL/Python are declared via the +45.2. PL/Python Functions

    45.2. PL/Python Functions

    Functions in PL/Python are declared via the standard CREATE FUNCTION syntax:

    CREATE FUNCTION funcname (argument-list)
    @@ -67,4 +67,4 @@
        But it is advisable not to rely on this implementation detail of
        PL/Python.  It is better to treat the function parameters as
        read-only.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython.html postgresql-10-10.19/doc/src/sgml/html/plpython.html --- postgresql-10-10.17/doc/src/sgml/html/plpython.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 45. PL/Python - Python Procedural Language

    Chapter 45. PL/Python - Python Procedural Language

    The PL/Python procedural language allows +Chapter 45. PL/Python - Python Procedural Language

    Chapter 45. PL/Python - Python Procedural Language

    The PL/Python procedural language allows PostgreSQL functions to be written in the Python language.

    To install PL/Python in a particular database, use @@ -21,4 +21,4 @@ PL/Python during the installation process. (Refer to the installation instructions for more information.) Users of binary packages might find PL/Python in a separate subpackage. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-python23.html postgresql-10-10.19/doc/src/sgml/html/plpython-python23.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-python23.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-python23.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.1. Python 2 vs. Python 3

    45.1. Python 2 vs. Python 3

    PL/Python supports both the Python 2 and Python 3 language +45.1. Python 2 vs. Python 3

    45.1. Python 2 vs. Python 3

    PL/Python supports both the Python 2 and Python 3 language variants. (The PostgreSQL installation instructions might contain more precise information about the exact supported minor versions of Python.) Because the Python 2 and Python 3 language variants @@ -70,4 +70,4 @@ Python major versions in a session, which will abort the session if a mismatch is detected. It is possible, however, to use both PL/Python variants in the same database, from separate sessions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-sharing.html postgresql-10-10.19/doc/src/sgml/html/plpython-sharing.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-sharing.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-sharing.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.4. Sharing Data

    45.4. Sharing Data

    The global dictionary SD is available to store +45.4. Sharing Data

    45.4. Sharing Data

    The global dictionary SD is available to store private data between repeated calls to the same function. The global dictionary GD is public data, that is available to all Python functions within a session; use with @@ -9,4 +9,4 @@ myfunc are not available to myfunc2. The exception is the data in the GD dictionary, as mentioned above. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-subtransaction.html postgresql-10-10.19/doc/src/sgml/html/plpython-subtransaction.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-subtransaction.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-subtransaction.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.8. Explicit Subtransactions

    45.8. Explicit Subtransactions

    Recovering from errors caused by database access as described in +45.8. Explicit Subtransactions

    45.8. Explicit Subtransactions

    Recovering from errors caused by database access as described in Section 45.7.2 can lead to an undesirable situation where some operations succeed before one of them fails, and after recovering from that error the data is left in an @@ -92,4 +92,4 @@ use a future statement. Because of implementation details, however, you cannot use future statements in PL/Python functions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-trigger.html postgresql-10-10.19/doc/src/sgml/html/plpython-trigger.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-trigger.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-trigger.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.6. Trigger Functions

    45.6. Trigger Functions

    When a function is used as a trigger, the dictionary +45.6. Trigger Functions

    45.6. Trigger Functions

    When a function is used as a trigger, the dictionary TD contains trigger-related values:

    TD["event"]

    contains the event as a string: INSERT, UPDATE, @@ -26,4 +26,4 @@ is INSERT or UPDATE you can return "MODIFY" to indicate you've modified the new row. Otherwise the return value is ignored. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/plpython-util.html postgresql-10-10.19/doc/src/sgml/html/plpython-util.html --- postgresql-10-10.17/doc/src/sgml/html/plpython-util.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/plpython-util.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -45.9. Utility Functions

    45.9. Utility Functions

    The plpy module also provides the functions +45.9. Utility Functions

    45.9. Utility Functions

    The plpy module also provides the functions

    plpy.debug(msg, **kwargs)
    plpy.log(msg, **kwargs)
    plpy.info(msg, **kwargs)
    plpy.notice(msg, **kwargs)
    plpy.warning(msg, **kwargs)
    plpy.error(msg, **kwargs)
    plpy.fatal(msg, **kwargs)

    plpy.error and plpy.fatal @@ -49,4 +49,4 @@ plpy.quote_ident(colname), plpy.quote_nullable(newvalue), plpy.quote_literal(keyvalue)))

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-config.html postgresql-10-10.19/doc/src/sgml/html/pltcl-config.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-config.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-config.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.10. PL/Tcl Configuration

    43.10. PL/Tcl Configuration

    This section lists configuration parameters that +43.10. PL/Tcl Configuration

    43.10. PL/Tcl Configuration

    This section lists configuration parameters that affect PL/Tcl.

    pltcl.start_proc (string) @@ -31,4 +31,4 @@

    This parameter is exactly like pltcl.start_proc, except that it applies to PL/TclU. The referenced function must be written in the pltclu language. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-data.html postgresql-10-10.19/doc/src/sgml/html/pltcl-data.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-data.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-data.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,8 +1,8 @@ -43.3. Data Values in PL/Tcl

    43.3. Data Values in PL/Tcl

    The argument values supplied to a PL/Tcl function's code are simply +43.3. Data Values in PL/Tcl

    43.3. Data Values in PL/Tcl

    The argument values supplied to a PL/Tcl function's code are simply the input arguments converted to text form (just as if they had been displayed by a SELECT statement). Conversely, the return and return_next commands will accept any string that is acceptable input format for the function's declared result type, or for the specified column of a composite result type. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-dbaccess.html postgresql-10-10.19/doc/src/sgml/html/pltcl-dbaccess.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-dbaccess.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-dbaccess.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.5. Database Access from PL/Tcl

    43.5. Database Access from PL/Tcl

    The following commands are available to access the database from +43.5. Database Access from PL/Tcl

    43.5. Database Access from PL/Tcl

    The following commands are available to access the database from the body of a PL/Tcl function:

    spi_exec ?-count n? ?-array name? command ?loop-body?

    Executes an SQL command given as a string. An error in the command @@ -160,4 +160,4 @@ and Section 43.8 for more information.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-error-handling.html postgresql-10-10.19/doc/src/sgml/html/pltcl-error-handling.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-error-handling.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-error-handling.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.8. Error Handling in PL/Tcl

    43.8. Error Handling in PL/Tcl

    Tcl code within or called from a PL/Tcl function can raise an error, +43.8. Error Handling in PL/Tcl

    43.8. Error Handling in PL/Tcl

    Tcl code within or called from a PL/Tcl function can raise an error, either by executing some invalid operation or by generating an error using the Tcl error command or PL/Tcl's elog command. Such errors can be caught @@ -51,4 +51,4 @@ }

    (The double colons explicitly specify that errorCode is a global variable.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-event-trigger.html postgresql-10-10.19/doc/src/sgml/html/pltcl-event-trigger.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-event-trigger.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-event-trigger.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.7. Event Trigger Procedures in PL/Tcl

    43.7. Event Trigger Procedures in PL/Tcl

    Event trigger procedures can be written in PL/Tcl. +43.7. Event Trigger Procedures in PL/Tcl

    43.7. Event Trigger Procedures in PL/Tcl

    Event trigger procedures can be written in PL/Tcl. PostgreSQL requires that a procedure that is to be called as an event trigger must be declared as a function with no arguments and a return type of event_trigger. @@ -19,4 +19,4 @@ $$ LANGUAGE pltcl; CREATE EVENT TRIGGER tcl_a_snitch ON ddl_command_start EXECUTE PROCEDURE tclsnitch();

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-functions.html postgresql-10-10.19/doc/src/sgml/html/pltcl-functions.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-functions.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-functions.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.2. PL/Tcl Functions and Arguments

    43.2. PL/Tcl Functions and Arguments

    To create a function in the PL/Tcl language, use +43.2. PL/Tcl Functions and Arguments

    43.2. PL/Tcl Functions and Arguments

    To create a function in the PL/Tcl language, use the standard CREATE FUNCTION syntax:

    CREATE FUNCTION funcname (argument-types) RETURNS return-type AS $$
    @@ -102,4 +102,4 @@
             return_next [list x $i x2 [expr {$i * $i}]]
         }
     $$ LANGUAGE pltcl;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-global.html postgresql-10-10.19/doc/src/sgml/html/pltcl-global.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-global.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-global.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.4. Global Data in PL/Tcl

    43.4. Global Data in PL/Tcl

    Sometimes it +43.4. Global Data in PL/Tcl

    43.4. Global Data in PL/Tcl

    Sometimes it is useful to have some global data that is held between two calls to a function or is shared between different functions. This is easily done in PL/Tcl, but there are some restrictions that @@ -37,4 +37,4 @@ security restrictions mentioned above.)

    An example of using GD appears in the spi_execp example below. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl.html postgresql-10-10.19/doc/src/sgml/html/pltcl.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,6 +1,6 @@ -Chapter 43. PL/Tcl - Tcl Procedural Language

    Chapter 43. PL/Tcl - Tcl Procedural Language

    PL/Tcl is a loadable procedural language for the +Chapter 43. PL/Tcl - Tcl Procedural Language

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-overview.html postgresql-10-10.19/doc/src/sgml/html/pltcl-overview.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-overview.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-overview.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.1. Overview

    43.1. Overview

    PL/Tcl offers most of the capabilities a function writer has in +43.1. Overview

    43.1. Overview

    PL/Tcl offers most of the capabilities a function writer has in the C language, with a few restrictions, and with the addition of the powerful string processing libraries that are available for Tcl. @@ -35,4 +35,4 @@ CREATE EXTENSION command, for example CREATE EXTENSION pltcl or CREATE EXTENSION pltclu. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-procnames.html postgresql-10-10.19/doc/src/sgml/html/pltcl-procnames.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-procnames.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-procnames.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.11. Tcl Procedure Names

    43.11. Tcl Procedure Names

    In PostgreSQL, the same function name can be used for +43.11. Tcl Procedure Names

    43.11. Tcl Procedure Names

    In PostgreSQL, the same function name can be used for different function definitions as long as the number of arguments or their types differ. Tcl, however, requires all procedure names to be distinct. PL/Tcl deals with this by making the internal Tcl procedure names contain @@ -9,4 +9,4 @@ and different argument types will be different Tcl procedures, too. This is not normally a concern for a PL/Tcl programmer, but it might be visible when debugging. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-subtransactions.html postgresql-10-10.19/doc/src/sgml/html/pltcl-subtransactions.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-subtransactions.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-subtransactions.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.9. Explicit Subtransactions in PL/Tcl

    43.9. Explicit Subtransactions in PL/Tcl

    Recovering from errors caused by database access as described in +43.9. Explicit Subtransactions in PL/Tcl

    43.9. Explicit Subtransactions in PL/Tcl

    Recovering from errors caused by database access as described in Section 43.8 can lead to an undesirable situation where some operations succeed before one of them fails, and after recovering from that error the data is left in an @@ -56,4 +56,4 @@ subtransaction to be rolled back. However, non-error exits out of the contained Tcl code (for instance, due to return) do not cause a rollback. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/pltcl-trigger.html postgresql-10-10.19/doc/src/sgml/html/pltcl-trigger.html --- postgresql-10-10.17/doc/src/sgml/html/pltcl-trigger.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/pltcl-trigger.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -43.6. Trigger Procedures in PL/Tcl

    43.6. Trigger Procedures in PL/Tcl

    Trigger procedures can be written in PL/Tcl. +43.6. Trigger Procedures in PL/Tcl

    43.6. Trigger Procedures in PL/Tcl

    Trigger procedures can be written in PL/Tcl. PostgreSQL requires that a procedure that is to be called as a trigger must be declared as a function with no arguments and a return type of trigger. @@ -94,4 +94,4 @@ Notice that the trigger procedure itself does not know the column name; that's supplied from the trigger arguments. This lets the trigger procedure be reused with different tables. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/populate.html postgresql-10-10.19/doc/src/sgml/html/populate.html --- postgresql-10-10.17/doc/src/sgml/html/populate.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/populate.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -14.4. Populating a Database

    14.4. Populating a Database

    One might need to insert a large amount of data when first populating +14.4. Populating a Database

    14.4. Populating a Database

    One might need to insert a large amount of data when first populating a database. This section contains some suggestions on how to make this process as efficient as possible.

    14.4.1. Disable Autocommit

    When using multiple INSERTs, turn off autocommit and just do @@ -184,4 +184,4 @@ the --disable-triggers option — but realize that that eliminates, rather than just postpones, foreign key validation, and so it is possible to insert bad data if you use it. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/postgres-fdw.html postgresql-10-10.19/doc/src/sgml/html/postgres-fdw.html --- postgresql-10-10.17/doc/src/sgml/html/postgres-fdw.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/postgres-fdw.html 2021-11-08 22:25:11.000000000 +0000 @@ -1,5 +1,5 @@ -F.34. postgres_fdw

    F.34. postgres_fdw

    The postgres_fdw module provides the foreign-data wrapper +F.34. postgres_fdw

    F.34. postgres_fdw

    The postgres_fdw module provides the foreign-data wrapper postgres_fdw, which can be used to access data stored in external PostgreSQL servers.

    The functionality provided by this module overlaps substantially @@ -40,8 +40,8 @@ referenced columns of the remote table. Although postgres_fdw is currently rather forgiving about performing data type conversions at need, surprising semantic anomalies may arise when types or collations do - not match, due to the remote server interpreting WHERE clauses - slightly differently from the local server. + not match, due to the remote server interpreting query conditions + differently from the local server.

    Note that a foreign table can be declared with fewer columns, or with a different column order, than its underlying remote table has. Matching of columns to the remote table is by name, not position. @@ -167,6 +167,14 @@ need to turn this off if the remote server has a different set of collation names than the local server does, which is likely to be the case if it's running on a different operating system. + If you do so, however, there is a very severe risk that the imported + table columns' collations will not match the underlying data, resulting + in anomalous query behavior. +

    Even when this parameter is set to true, importing + columns whose collation is the remote server's default can be risky. + They will be imported with COLLATE "default", which + will select the local server's default collation, which could be + different.

    import_default

    This option controls whether column DEFAULT expressions are included in the definitions of foreign tables imported from a foreign server. The default is false. If you @@ -331,4 +339,4 @@ In many cases, use of IMPORT FOREIGN SCHEMA is preferable to constructing foreign table definitions manually.

    F.34.8. Author

    Shigeru Hanada -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/postgres-user.html postgresql-10-10.19/doc/src/sgml/html/postgres-user.html --- postgresql-10-10.17/doc/src/sgml/html/postgres-user.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/postgres-user.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -18.1. The PostgreSQL User Account

    18.1. The PostgreSQL User Account

    As with any server daemon that is accessible to the outside world, +18.1. The PostgreSQL User Account

    18.1. The PostgreSQL User Account

    As with any server daemon that is accessible to the outside world, it is advisable to run PostgreSQL under a separate user account. This user account should only own the data that is managed by the server, and should not be shared with other @@ -11,4 +11,4 @@ useradd or adduser. The user name postgres is often used, and is assumed throughout this book, but you can use another name if you like. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/preface.html postgresql-10-10.19/doc/src/sgml/html/preface.html --- postgresql-10-10.17/doc/src/sgml/html/preface.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/preface.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -Preface

    Preface

    This book is the official documentation of +Preface

    Preface

    This book is the official documentation of PostgreSQL. It has been written by the PostgreSQL developers and other volunteers in parallel to the development of the @@ -35,4 +35,4 @@

  • Part VII contains assorted information that might be of use to PostgreSQL developers.

  • -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/preventing-server-spoofing.html postgresql-10-10.19/doc/src/sgml/html/preventing-server-spoofing.html --- postgresql-10-10.17/doc/src/sgml/html/preventing-server-spoofing.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/preventing-server-spoofing.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.7. Preventing Server Spoofing

    18.7. Preventing Server Spoofing

    While the server is running, it is not possible for a malicious user +18.7. Preventing Server Spoofing

    18.7. Preventing Server Spoofing

    While the server is 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 server by starting their own server. The spoof server could read @@ -29,4 +29,4 @@ sslmode=verify-ca or verify-full and have the appropriate root certificate file installed (Section 33.18.1). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/progress-reporting.html postgresql-10-10.19/doc/src/sgml/html/progress-reporting.html --- postgresql-10-10.17/doc/src/sgml/html/progress-reporting.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/progress-reporting.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -28.4. Progress Reporting

    28.4. Progress Reporting

    PostgreSQL has the ability to report the progress of +28.4. Progress Reporting

    28.4. Progress Reporting

    PostgreSQL has the ability to report the progress of certain commands during command execution. Currently, the only command which supports progress reporting is VACUUM. This may be expanded in the future. @@ -16,7 +16,7 @@ as of the beginning of the scan; blocks added later will not be (and need not be) visited by this VACUUM. heap_blks_scannedbigint Number of heap blocks scanned. Because the - visibility map is used to optimize scans, + visibility map is used to optimize scans, some blocks will be skipped without inspection; skipped blocks are included in this total, so that this number will eventually become equal to heap_blks_total when the vacuum is complete. @@ -39,8 +39,9 @@ vacuuming indexes VACUUM is currently vacuuming the indexes. If a table has any indexes, this will happen at least once per vacuum, after the heap has been completely scanned. It may happen multiple times per vacuum - if maintenance_work_mem is insufficient to - store the number of dead tuples found. + if maintenance_work_mem (or, in the case of autovacuum, + autovacuum_work_mem if set) is insufficient to store + the number of dead tuples found. vacuuming heap VACUUM is currently vacuuming the heap. Vacuuming the heap is distinct from scanning the heap, and occurs after each instance of vacuuming indexes. If heap_blks_scanned is less than @@ -57,4 +58,4 @@ VACUUM will vacuum the free space map, update statistics in pg_class, and report statistics to the statistics collector. When this phase is completed, VACUUM will end. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-changes.html postgresql-10-10.19/doc/src/sgml/html/protocol-changes.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-changes.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-changes.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.10. Summary of Changes since Protocol 2.0

    52.10. Summary of Changes since Protocol 2.0

    This section provides a quick checklist of changes, for the benefit of +52.10. Summary of Changes since Protocol 2.0

    52.10. Summary of Changes since Protocol 2.0

    This section provides a quick checklist of changes, for the benefit of developers trying to update existing client libraries to protocol 3.0.

    The initial startup packet uses a flexible list-of-strings format instead of a fixed format. Notice that session default values for run-time parameters can now be specified directly in the startup packet. (Actually, @@ -42,4 +42,4 @@ the backend.

    The NotificationResponse ('A') message has an additional string field, which can carry a payload string passed from the NOTIFY event sender.

    The EmptyQueryResponse ('I') message used to include an empty -string parameter; this has been removed.

    \ No newline at end of file +string parameter; this has been removed.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-error-fields.html postgresql-10-10.19/doc/src/sgml/html/protocol-error-fields.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-error-fields.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-error-fields.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.8. Error and Notice Message Fields

    52.8. Error and Notice Message Fields

    This section describes the fields that can appear in ErrorResponse and +52.8. Error and Notice Message Fields

    52.8. Error and Notice Message Fields

    This section describes the fields that can appear in ErrorResponse and NoticeResponse messages. Each field type has a single-byte identification token. Note that any given field type should appear at most once per message.

    S

    Severity: the field contents are @@ -55,4 +55,4 @@

    The client is responsible for formatting displayed information to meet its needs; in particular it should break long lines as needed. Newline characters appearing in the error message fields should be treated as paragraph breaks, -not line breaks.

    \ No newline at end of file +not line breaks.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-flow.html postgresql-10-10.19/doc/src/sgml/html/protocol-flow.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-flow.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-flow.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.2. Message Flow

    52.2. Message Flow

    This section describes the message flow and the semantics of each +52.2. Message Flow

    52.2. Message Flow

    This section describes the message flow and the semantics of each message type. (Details of the exact representation of each message appear in Section 52.7.) There are several different sub-protocols depending on the state of the @@ -627,10 +627,21 @@ In this case the connection must be closed, but the frontend might choose to open a fresh connection and proceed without requesting SSL. +

    When SSL encryption can be performed, the server + is expected to send only the single S byte and then + wait for the frontend to initiate an SSL handshake. + If additional bytes are available to read at this point, it likely + means that a man-in-the-middle is attempting to perform a + buffer-stuffing attack + (CVE-2021-23222). + Frontends should be coded either to read exactly one byte from the + socket before turning the socket over to their SSL library, or to + treat it as a protocol violation if they find they have read additional + bytes.

    An initial SSLRequest can also be used in a connection that is being opened to send a CancelRequest message.

    While the protocol itself does not provide a way for the server to force SSL encryption, the administrator can configure the server to reject unencrypted sessions as a byproduct of authentication checking. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol.html postgresql-10-10.19/doc/src/sgml/html/protocol.html --- postgresql-10-10.17/doc/src/sgml/html/protocol.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 52. Frontend/Backend Protocol

    Chapter 52. Frontend/Backend Protocol

    PostgreSQL uses a message-based protocol +Chapter 52. Frontend/Backend Protocol

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-logical-replication.html postgresql-10-10.19/doc/src/sgml/html/protocol-logical-replication.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-logical-replication.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-logical-replication.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.5. Logical Streaming Replication Protocol

    52.5. Logical Streaming Replication Protocol

    This section describes the logical replication protocol, which is the message +52.5. Logical Streaming Replication Protocol

    52.5. Logical Streaming Replication Protocol

    This section describes the logical replication protocol, which is the message flow started by the START_REPLICATION SLOT slot_name LOGICAL replication command. @@ -47,4 +47,4 @@ current session or because the relation definition has changed since the last Relation message was sent for it. The protocol assumes that the client is capable of caching the metadata for as many relations as needed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-logicalrep-message-formats.html postgresql-10-10.19/doc/src/sgml/html/protocol-logicalrep-message-formats.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-logicalrep-message-formats.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-logicalrep-message-formats.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.9. Logical Replication Message Formats

    52.9. Logical Replication Message Formats

    This section describes the detailed format of each logical replication message. +52.9. Logical Replication Message Formats

    52.9. Logical Replication Message Formats

    This section describes the detailed format of each logical replication message. These messages are returned either by the replication slot SQL interface or are sent by a walsender. In case of a walsender they are encapsulated inside the replication protocol WAL messages as described in Section 52.4 @@ -47,4 +47,4 @@

    Byte1('t')

    Identifies the data as text formatted value.

    Int32

    Length of the column value.

    Byten

    The value of the column, in text format. (A future release might support additional formats.) n is the above length. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-message-formats.html postgresql-10-10.19/doc/src/sgml/html/protocol-message-formats.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-message-formats.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-message-formats.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.7. Message Formats

    52.7. Message Formats

    This section describes the detailed format of each message. Each is marked to +52.7. Message Formats

    52.7. Message Formats

    This section describes the detailed format of each message. Each is marked to indicate that it can be sent by a frontend (F), a backend (B), or both (F & B). Notice that although each message includes a byte count at the beginning, @@ -331,4 +331,4 @@

    Byte1('S')

    Identifies the message as a Sync command.

    Int32(4)

    Length of message contents in bytes, including self.

    Terminate (F)

    Byte1('X')

    Identifies the message as a termination.

    Int32(4)

    Length of message contents in bytes, including self.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-message-types.html postgresql-10-10.19/doc/src/sgml/html/protocol-message-types.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-message-types.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-message-types.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.6. Message Data Types

    52.6. Message Data Types

    This section describes the base data types used in messages. +52.6. Message Data Types

    52.6. Message Data Types

    This section describes the base data types used in messages.

    Intn(i)

    An n-bit integer in network byte order (most significant byte first). @@ -21,4 +21,4 @@ width n is not a constant, it is always determinable from an earlier field in the message. If c is specified it is the exact - value. Eg. Byte2, Byte1('\n').

    \ No newline at end of file + value. Eg. Byte2, Byte1('\n').

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-overview.html postgresql-10-10.19/doc/src/sgml/html/protocol-overview.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-overview.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-overview.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.1. Overview

    52.1. Overview

    The protocol has separate phases for startup and normal operation. +52.1. Overview

    52.1. Overview

    The protocol has separate phases for startup and normal operation. In the startup phase, the frontend opens a connection to the server and authenticates itself to the satisfaction of the server. (This might involve a single message, or multiple messages depending on the @@ -95,4 +95,4 @@ or source code to learn about the binary representation. Keep in mind that binary representations for complex data types might change across server versions; the text format is usually the more portable choice. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/protocol-replication.html postgresql-10-10.19/doc/src/sgml/html/protocol-replication.html --- postgresql-10-10.17/doc/src/sgml/html/protocol-replication.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/protocol-replication.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.4. Streaming Replication Protocol

    52.4. Streaming Replication Protocol

    To initiate streaming replication, the frontend sends the +52.4. Streaming Replication Protocol

    52.4. Streaming Replication Protocol

    To initiate streaming replication, the frontend sends the replication parameter in the startup message. A Boolean value of true tells the backend to go into walsender mode, wherein a small set of replication commands can be issued instead of SQL statements. Only @@ -323,4 +323,4 @@ Owner, group, and file mode are set if the underlying file system on the server supports it.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries.html postgresql-10-10.19/doc/src/sgml/html/queries.html --- postgresql-10-10.17/doc/src/sgml/html/queries.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 7. Queries \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries-limit.html postgresql-10-10.19/doc/src/sgml/html/queries-limit.html --- postgresql-10-10.17/doc/src/sgml/html/queries-limit.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries-limit.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -7.6. LIMIT and OFFSET

    7.6. LIMIT and OFFSET

    LIMIT and OFFSET allow you to retrieve just +7.6. LIMIT and OFFSET

    7.6. LIMIT and OFFSET

    LIMIT and OFFSET allow you to retrieve just a portion of the rows that are generated by the rest of the query:

    SELECT select_list
         FROM table_expression
    @@ -36,4 +36,4 @@
       

    The rows skipped by an OFFSET clause still have to be computed inside the server; therefore a large OFFSET might be inefficient. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries-order.html postgresql-10-10.19/doc/src/sgml/html/queries-order.html --- postgresql-10-10.17/doc/src/sgml/html/queries-order.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries-order.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -7.5. Sorting Rows

    7.5. Sorting Rows

    After a query has produced an output table (after the select list +7.5. Sorting Rows

    7.5. Sorting Rows

    After a query has produced an output table (after the select list has been processed) it can optionally be sorted. If sorting is not chosen, the rows will be returned in an unspecified order. The actual order in that case will depend on the scan and join plan types and @@ -58,4 +58,4 @@ > operators correspond to this sort ordering, but a user-defined data type's designer could choose to do something different. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries-overview.html postgresql-10-10.19/doc/src/sgml/html/queries-overview.html --- postgresql-10-10.17/doc/src/sgml/html/queries-overview.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries-overview.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -7.1. Overview

    7.1. Overview

    The process of retrieving or the command to retrieve data from a +7.1. Overview

    7.1. Overview

    The process of retrieving or the command to retrieve data from a database is called a query. In SQL the SELECT command is used to specify queries. The general syntax of the @@ -37,4 +37,4 @@ This is more useful if the expressions in the select list return varying results. For example, you could call a function this way:

    SELECT random();

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries-select-lists.html postgresql-10-10.19/doc/src/sgml/html/queries-select-lists.html --- postgresql-10-10.17/doc/src/sgml/html/queries-select-lists.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries-select-lists.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -7.3. Select Lists

    7.3. Select Lists

    As shown in the previous section, +7.3. Select Lists

    7.3. Select Lists

    As shown in the previous section, the table expression in the SELECT command constructs an intermediate virtual table by possibly combining tables, views, eliminating rows, grouping, etc. This table is @@ -86,4 +86,4 @@ GROUP BY and subqueries in FROM, this construct can be avoided, but it is often the most convenient alternative. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries-table-expressions.html postgresql-10-10.19/doc/src/sgml/html/queries-table-expressions.html --- postgresql-10-10.17/doc/src/sgml/html/queries-table-expressions.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries-table-expressions.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -7.2. Table Expressions

    7.2. Table Expressions

    A table expression computes a table. The +7.2. Table Expressions

    7.2. Table Expressions

    A table expression computes a table. The table expression contains a FROM clause that is optionally followed by WHERE, GROUP BY, and HAVING clauses. Trivial table expressions simply refer @@ -796,4 +796,4 @@ It is not recommended to rely on this, however. Use an explicit top-level ORDER BY clause if you want to be sure the results are sorted in a particular way. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries-union.html postgresql-10-10.19/doc/src/sgml/html/queries-union.html --- postgresql-10-10.17/doc/src/sgml/html/queries-union.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries-union.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,16 +1,12 @@ -7.4. Combining Queries

    7.4. Combining Queries

    The results of two queries can be combined using the set operations +7.4. Combining Queries

    7.4. Combining Queries

    The results of two queries can be combined using the set operations union, intersection, and difference. The syntax is

    query1 UNION [ALL] query2
     query1 INTERSECT [ALL] query2
     query1 EXCEPT [ALL] query2

    - query1 and + where query1 and query2 are queries that can use any of - the features discussed up to this point. Set operations can also - be nested and chained, for example -

    query1 UNION query2 UNION query3

    - which is executed as: -

    (query1 UNION query2) UNION query3

    + the features discussed up to this point.

    UNION effectively appends the result of query2 to the result of query1 (although there is no guarantee @@ -31,4 +27,28 @@ which means that they return the same number of columns and the corresponding columns have compatible data types, as described in Section 10.5. -

    \ No newline at end of file +

    Set operations can be combined, for example +

    query1 UNION query2 EXCEPT query3

    + which is equivalent to +

    (query1 UNION query2) EXCEPT query3

    + As shown here, you can use parentheses to control the order of + evaluation. Without parentheses, UNION + and EXCEPT associate left-to-right, + but INTERSECT binds more tightly than those two + operators. Thus +

    query1 UNION query2 INTERSECT query3

    + means +

    query1 UNION (query2 INTERSECT query3)

    + You can also surround an individual query + with parentheses. This is important if + the query needs to use any of the clauses + discussed in following sections, such as LIMIT. + Without parentheses, you'll get a syntax error, or else the clause will + be understood as applying to the output of the set operation rather + than one of its inputs. For example, +

    SELECT a FROM b UNION SELECT x FROM y LIMIT 10

    + is accepted, but it means +

    (SELECT a FROM b UNION SELECT x FROM y) LIMIT 10

    + not +

    SELECT a FROM b UNION (SELECT x FROM y LIMIT 10)

    +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries-values.html postgresql-10-10.19/doc/src/sgml/html/queries-values.html --- postgresql-10-10.17/doc/src/sgml/html/queries-values.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries-values.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -7.7. VALUES Lists

    7.7. VALUES Lists

    VALUES provides a way to generate a constant table +7.7. VALUES Lists

    7.7. VALUES Lists

    VALUES provides a way to generate a constant table that can be used in a query without having to actually create and populate a table on-disk. The syntax is

    VALUES ( expression [, ...] ) [, ...]

    @@ -43,4 +43,4 @@ is most commonly used as the data source in an INSERT command, and next most commonly as a subquery.

    For more information see VALUES. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/queries-with.html postgresql-10-10.19/doc/src/sgml/html/queries-with.html --- postgresql-10-10.17/doc/src/sgml/html/queries-with.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/queries-with.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -7.8. WITH Queries (Common Table Expressions)

    7.8. WITH Queries (Common Table Expressions)

    WITH provides a way to write auxiliary statements for use in a +7.8. WITH Queries (Common Table Expressions)

    7.8. WITH Queries (Common Table Expressions)

    WITH provides a way to write auxiliary statements for use in a larger query. These statements, which are often referred to as Common Table Expressions or CTEs, can be thought of as defining temporary tables that exist just for one query. Each auxiliary statement @@ -307,4 +307,4 @@

    At present, any table used as the target of a data-modifying statement in WITH must not have a conditional rule, nor an ALSO rule, nor an INSTEAD rule that expands to multiple statements. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/query-path.html postgresql-10-10.19/doc/src/sgml/html/query-path.html --- postgresql-10-10.17/doc/src/sgml/html/query-path.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/query-path.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -50.1. The Path of a Query

    50.1. The Path of a Query

    Here we give a short overview of the stages a query has to pass in +50.1. The Path of a Query

    50.1. The Path of a Query

    Here we give a short overview of the stages a query has to pass in order to obtain a result.

    1. A connection from an application program to the PostgreSQL server has to be established. The application program transmits a @@ -43,4 +43,4 @@

    In the following sections we will cover each of the above listed items in more detail to give a better understanding of PostgreSQL's internal control and data structures. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/querytree.html postgresql-10-10.19/doc/src/sgml/html/querytree.html --- postgresql-10-10.17/doc/src/sgml/html/querytree.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/querytree.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -40.1. The Query Tree

    40.1. The Query Tree

    To understand how the rule system works it is necessary to know +40.1. The Query Tree

    40.1. The Query Tree

    To understand how the rule system works it is necessary to know when it is invoked and what its input and results are.

    The rule system is located between the parser and the planner. It takes the output of the parser, one query tree, and the user-defined rewrite rules, which are also @@ -118,4 +118,4 @@ substitutes some entries there while applying rules, but that doesn't have much to do with the fundamentals of the rule system. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rangetypes.html postgresql-10-10.19/doc/src/sgml/html/rangetypes.html --- postgresql-10-10.17/doc/src/sgml/html/rangetypes.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rangetypes.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.17. Range Types

    8.17. Range Types

    Range types are data types representing a range of values of some +8.17. Range Types

    8.17. Range Types

    Range types are data types representing a range of values of some element type (called the range's subtype). For instance, ranges of timestamp might be used to represent the ranges of @@ -320,4 +320,4 @@ INSERT INTO room_reservation VALUES ('123B', '[2010-01-01 14:30, 2010-01-01 15:30)'); INSERT 0 1

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/recovery-config.html postgresql-10-10.19/doc/src/sgml/html/recovery-config.html --- postgresql-10-10.17/doc/src/sgml/html/recovery-config.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/recovery-config.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 27. Recovery Configuration

    Chapter 27. Recovery Configuration

    This chapter describes the settings available in the +Chapter 27. Recovery Configuration

    Chapter 27. Recovery Configuration

    This chapter describes the settings available in the recovery.conf file. They apply only for the duration of the recovery. They must be reset for any subsequent recovery you wish to @@ -11,4 +11,4 @@ value, write two quotes ('').

    A sample file, share/recovery.conf.sample, is provided in the installation's share/ directory. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/recovery-target-settings.html postgresql-10-10.19/doc/src/sgml/html/recovery-target-settings.html --- postgresql-10-10.17/doc/src/sgml/html/recovery-target-settings.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/recovery-target-settings.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -27.2. Recovery Target Settings

    27.2. Recovery Target Settings

    By default, recovery will recover to the end of the WAL log. The +27.2. Recovery Target Settings

    27.2. Recovery Target Settings

    By default, recovery will recover to the end of the WAL log. The following parameters can be used to specify an earlier stopping point. At most one of recovery_target, recovery_target_lsn, recovery_target_name, @@ -94,4 +94,4 @@

    This setting has no effect if no recovery target is set. If hot_standby is not enabled, a setting of pause will act the same as shutdown. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/reference-client.html postgresql-10-10.19/doc/src/sgml/html/reference-client.html --- postgresql-10-10.17/doc/src/sgml/html/reference-client.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/reference-client.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -PostgreSQL Client Applications

    PostgreSQL Client Applications


    This part contains reference information for +PostgreSQL Client Applications

    PostgreSQL Client Applications


    This part contains reference information for PostgreSQL client applications and utilities. Not all of these commands are of general utility; some might require special privileges. The common feature of these @@ -14,4 +14,4 @@

    pg_dumpall — extract a PostgreSQL database cluster into a script file
    pg_isready — check the connection status of a PostgreSQL server
    pg_receivewal — stream write-ahead logs from a PostgreSQL server
    pg_recvlogical — control PostgreSQL logical decoding streams
    pg_restore — restore a PostgreSQL database from an archive file created by pg_dump
    psqlPostgreSQL interactive terminal -
    reindexdb — reindex a PostgreSQL database
    vacuumdb — garbage-collect and analyze a PostgreSQL database
    \ No newline at end of file +
    reindexdb — reindex a PostgreSQL database
    vacuumdb — garbage-collect and analyze a PostgreSQL database
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/reference.html postgresql-10-10.19/doc/src/sgml/html/reference.html --- postgresql-10-10.17/doc/src/sgml/html/reference.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/reference.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -Part VI. Reference

    Part VI. Reference

    The entries in this Reference are meant to provide in reasonable +Part VI. Reference

    Part VI. Reference

    The entries in this Reference are meant to provide in reasonable length an authoritative, complete, and formal summary about their respective subjects. More information about the use of PostgreSQL, in narrative, tutorial, or @@ -16,4 +16,4 @@

    pg_dumpall — extract a PostgreSQL database cluster into a script file
    pg_isready — check the connection status of a PostgreSQL server
    pg_receivewal — stream write-ahead logs from a PostgreSQL server
    pg_recvlogical — control PostgreSQL logical decoding streams
    pg_restore — restore a PostgreSQL database from an archive file created by pg_dump
    psqlPostgreSQL interactive terminal -
    reindexdb — reindex a PostgreSQL database
    vacuumdb — garbage-collect and analyze a PostgreSQL database
    III. PostgreSQL Server Applications
    initdb — create a new PostgreSQL database cluster
    pg_archivecleanup — clean up PostgreSQL WAL archive files
    pg_controldata — display control information of a PostgreSQL database cluster
    pg_ctl — initialize, start, stop, or control a PostgreSQL server
    pg_resetwal — reset the write-ahead log and other control information of a PostgreSQL database cluster
    pg_rewind — synchronize a PostgreSQL data directory with another data directory that was forked from it
    pg_test_fsync — determine fastest wal_sync_method for PostgreSQL
    pg_test_timing — measure timing overhead
    pg_upgrade — upgrade a PostgreSQL server instance
    pg_waldump — display a human-readable rendering of the write-ahead log of a PostgreSQL database cluster
    postgresPostgreSQL database server
    postmasterPostgreSQL database server
    \ No newline at end of file +
    reindexdb — reindex a PostgreSQL database
    vacuumdb — garbage-collect and analyze a PostgreSQL database
    III. PostgreSQL Server Applications
    initdb — create a new PostgreSQL database cluster
    pg_archivecleanup — clean up PostgreSQL WAL archive files
    pg_controldata — display control information of a PostgreSQL database cluster
    pg_ctl — initialize, start, stop, or control a PostgreSQL server
    pg_resetwal — reset the write-ahead log and other control information of a PostgreSQL database cluster
    pg_rewind — synchronize a PostgreSQL data directory with another data directory that was forked from it
    pg_test_fsync — determine fastest wal_sync_method for PostgreSQL
    pg_test_timing — measure timing overhead
    pg_upgrade — upgrade a PostgreSQL server instance
    pg_waldump — display a human-readable rendering of the write-ahead log of a PostgreSQL database cluster
    postgresPostgreSQL database server
    postmasterPostgreSQL database server
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/reference-server.html postgresql-10-10.19/doc/src/sgml/html/reference-server.html --- postgresql-10-10.17/doc/src/sgml/html/reference-server.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/reference-server.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,7 +1,7 @@ -PostgreSQL Server Applications

    PostgreSQL Server Applications


    This part contains reference information for +PostgreSQL Server Applications

    PostgreSQL Server Applications


    This part contains reference information for PostgreSQL server applications and support utilities. These commands can only be run usefully on the host where the database server resides. Other utility programs are listed in PostgreSQL Client Applications. -

    Table of Contents

    initdb — create a new PostgreSQL database cluster
    pg_archivecleanup — clean up PostgreSQL WAL archive files
    pg_controldata — display control information of a PostgreSQL database cluster
    pg_ctl — initialize, start, stop, or control a PostgreSQL server
    pg_resetwal — reset the write-ahead log and other control information of a PostgreSQL database cluster
    pg_rewind — synchronize a PostgreSQL data directory with another data directory that was forked from it
    pg_test_fsync — determine fastest wal_sync_method for PostgreSQL
    pg_test_timing — measure timing overhead
    pg_upgrade — upgrade a PostgreSQL server instance
    pg_waldump — display a human-readable rendering of the write-ahead log of a PostgreSQL database cluster
    postgresPostgreSQL database server
    postmasterPostgreSQL database server
    \ No newline at end of file +

    Table of Contents

    initdb — create a new PostgreSQL database cluster
    pg_archivecleanup — clean up PostgreSQL WAL archive files
    pg_controldata — display control information of a PostgreSQL database cluster
    pg_ctl — initialize, start, stop, or control a PostgreSQL server
    pg_resetwal — reset the write-ahead log and other control information of a PostgreSQL database cluster
    pg_rewind — synchronize a PostgreSQL data directory with another data directory that was forked from it
    pg_test_fsync — determine fastest wal_sync_method for PostgreSQL
    pg_test_timing — measure timing overhead
    pg_upgrade — upgrade a PostgreSQL server instance
    pg_waldump — display a human-readable rendering of the write-ahead log of a PostgreSQL database cluster
    postgresPostgreSQL database server
    postmasterPostgreSQL database server
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/regress-coverage.html postgresql-10-10.19/doc/src/sgml/html/regress-coverage.html --- postgresql-10-10.17/doc/src/sgml/html/regress-coverage.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/regress-coverage.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -32.5. Test Coverage Examination

    32.5. Test Coverage Examination

    The PostgreSQL source code can be compiled with coverage testing +32.5. Test Coverage Examination

    32.5. Test Coverage Examination

    The PostgreSQL source code can be compiled with coverage testing instrumentation, so that it becomes possible to examine which parts of the code are covered by the regression tests or any other test suite that is run with the code. This is currently supported @@ -15,4 +15,4 @@ The make commands also work in subdirectories.

    To reset the execution counts between test runs, run:

    make coverage-clean

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/regress-evaluation.html postgresql-10-10.19/doc/src/sgml/html/regress-evaluation.html --- postgresql-10-10.17/doc/src/sgml/html/regress-evaluation.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/regress-evaluation.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -32.2. Test Evaluation

    32.2. Test Evaluation

    Some properly installed and fully functional +32.2. Test Evaluation

    32.2. Test Evaluation

    Some properly installed and fully functional PostgreSQL installations can fail some of these regression tests due to platform-specific artifacts such as varying floating-point representation @@ -138,4 +138,4 @@ parameters such as enable_seqscan or enable_indexscan could cause plan changes that would affect the results of tests that use EXPLAIN. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/regress.html postgresql-10-10.19/doc/src/sgml/html/regress.html --- postgresql-10-10.17/doc/src/sgml/html/regress.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/regress.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,6 +1,6 @@ -Chapter 32. Regression Tests

    Chapter 32. Regression Tests

    The regression tests are a comprehensive set of tests for the SQL +Chapter 32. Regression Tests

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/regress-run.html postgresql-10-10.19/doc/src/sgml/html/regress-run.html --- postgresql-10-10.17/doc/src/sgml/html/regress-run.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/regress-run.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -32.1. Running the Tests

    32.1. Running the Tests

    The regression tests can be run against an already installed and +32.1. Running the Tests

    32.1. Running the Tests

    The regression tests can be run against an already installed and running server, or using a temporary installation within the build tree. Furthermore, there is a parallel and a sequential mode for running the tests. The @@ -161,4 +161,4 @@

    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. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/regress-tap.html postgresql-10-10.19/doc/src/sgml/html/regress-tap.html --- postgresql-10-10.17/doc/src/sgml/html/regress-tap.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/regress-tap.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -32.4. TAP Tests

    32.4. TAP Tests

    Various tests, particularly the client program tests +32.4. TAP Tests

    32.4. TAP Tests

    Various tests, particularly the client program tests under src/bin, use the Perl TAP tools and are run using the Perl testing program prove. You can pass command-line options to prove by setting @@ -8,4 +8,6 @@ See the manual page of prove for more information.

    The TAP tests require the Perl module IPC::Run. This module is available from CPAN or an operating system package. -

    \ No newline at end of file + They also require PostgreSQL to be + configured with the option --enable-tap-tests. +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/regress-variant.html postgresql-10-10.19/doc/src/sgml/html/regress-variant.html --- postgresql-10-10.17/doc/src/sgml/html/regress-variant.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/regress-variant.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -32.3. Variant Comparison Files

    32.3. Variant Comparison Files

    Since some of the tests inherently produce environment-dependent +32.3. Variant Comparison Files

    32.3. Variant Comparison Files

    Since some of the tests inherently produce environment-dependent results, we have provided ways to specify alternate expected result files. Each regression test can have several comparison files showing possible results on different platforms. There are two @@ -64,4 +64,4 @@ the variant that seems to work best. Therefore it is safest to use this mechanism only for variant results that you are willing to consider equally valid in all contexts. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-10.html postgresql-10-10.19/doc/src/sgml/html/release-10-10.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-10.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-10.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.8. Release 10.10

    E.8. Release 10.10

    Release date: 2019-08-08

    This release contains a variety of fixes from 10.9. +E.10. Release 10.10

    E.10. Release 10.10

    Release date: 2019-08-08

    This release contains a variety of fixes from 10.9. For information about new features in major release 10, see - Section E.18. -

    E.8.1. Migration to Version 10.10

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.10.1. Migration to Version 10.10

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.6, - see Section E.12. -

    E.8.2. Changes

    • Require schema qualification to cast to a temporary type when using + see Section E.14. +

    E.10.2. Changes

    • Require schema qualification to cast to a temporary type when using functional cast syntax (Noah Misch)

      We have long required invocations of temporary functions to explicitly specify the temporary schema, that @@ -146,4 +146,4 @@

    • Update time zone data files to tzdata release 2019b for DST law changes in Brazil, plus historical corrections for Hong Kong, Italy, and Palestine. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-11.html postgresql-10-10.19/doc/src/sgml/html/release-10-11.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-11.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-11.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,15 +1,15 @@ -E.7. Release 10.11

    E.7. Release 10.11

    Release date: 2019-11-14

    This release contains a variety of fixes from 10.10. +E.9. Release 10.11

    E.9. Release 10.11

    Release date: 2019-11-14

    This release contains a variety of fixes from 10.10. For information about new features in major release 10, see - Section E.18. -

    E.7.1. Migration to Version 10.11

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.9.1. Migration to Version 10.11

    A dump/restore is not required for those running 10.X.

    However, if you use the contrib/intarray extension with a GiST index, and you rely on indexed searches for the <@ operator, see the entry below about that.

    Also, if you are upgrading from a version earlier than 10.6, - see Section E.12. -

    E.7.2. Changes

    • Fix failure of ALTER TABLE SET with a custom + see Section E.14. +

    E.9.2. Changes

    • Fix failure of ALTER TABLE SET with a custom relation option (Michael Paquier)

    • Disallow changing a multiply-inherited column's type if not all parent tables were changed (Tom Lane) @@ -285,4 +285,4 @@ historical corrections for Alberta, Austria, Belgium, British Columbia, Cambodia, Hong Kong, Indiana (Perry County), Kaliningrad, Kentucky, Michigan, Norfolk Island, South Korea, and Turkey. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-12.html postgresql-10-10.19/doc/src/sgml/html/release-10-12.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-12.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-12.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.6. Release 10.12

    E.6. Release 10.12

    Release date: 2020-02-13

    This release contains a variety of fixes from 10.11. +E.8. Release 10.12

    E.8. Release 10.12

    Release date: 2020-02-13

    This release contains a variety of fixes from 10.11. For information about new features in major release 10, see - Section E.18. -

    E.6.1. Migration to Version 10.12

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.8.1. Migration to Version 10.12

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.11, - see Section E.7. -

    E.6.2. Changes

    • Add missing permissions checks for ALTER ... DEPENDS ON + see Section E.9. +

    E.8.2. Changes

    • Add missing permissions checks for ALTER ... DEPENDS ON EXTENSION (Álvaro Herrera)

      Marking an object as dependent on an extension did not have any privilege check whatsoever. This oversight allowed any user to mark @@ -208,4 +208,4 @@ pg_ctl, for example, frequently failed with such an error when probing to see if the postmaster had shut down yet. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-13.html postgresql-10-10.19/doc/src/sgml/html/release-10-13.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-13.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-13.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.5. Release 10.13

    E.5. Release 10.13

    Release date: 2020-05-14

    This release contains a variety of fixes from 10.12. +E.7. Release 10.13

    E.7. Release 10.13

    Release date: 2020-05-14

    This release contains a variety of fixes from 10.12. For information about new features in major release 10, see - Section E.18. -

    E.5.1. Migration to Version 10.13

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.7.1. Migration to Version 10.13

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.11, - see Section E.7. -

    E.5.2. Changes

    • Preserve the indisclustered setting of + see Section E.9. +

    E.7.2. Changes

    • Preserve the indisclustered setting of indexes rewritten by ALTER TABLE (Amit Langote, Justin Pryzby)

      Previously, ALTER TABLE lost track of which index @@ -184,4 +184,4 @@ Windows time zone names to include recent additions, improving the odds that it will correctly translate the system time zone setting on that platform. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-14.html postgresql-10-10.19/doc/src/sgml/html/release-10-14.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-14.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-14.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.4. Release 10.14

    E.4. Release 10.14

    Release date: 2020-08-13

    This release contains a variety of fixes from 10.13. +E.6. Release 10.14

    E.6. Release 10.14

    Release date: 2020-08-13

    This release contains a variety of fixes from 10.13. For information about new features in major release 10, see - Section E.18. -

    E.4.1. Migration to Version 10.14

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.6.1. Migration to Version 10.14

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.11, - see Section E.7. -

    E.4.2. Changes

    • Set a secure search_path in logical replication + see Section E.9. +

    E.6.2. Changes

    • Set a secure search_path in logical replication walsenders and apply workers (Noah Misch)

      A malicious user of either the publisher or subscriber database could potentially cause execution of arbitrary SQL code by the role @@ -231,4 +231,4 @@

      This could confuse some logic that looked for configure to identify the top level of the source tree. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-15.html postgresql-10-10.19/doc/src/sgml/html/release-10-15.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-15.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-15.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.3. Release 10.15

    E.3. Release 10.15

    Release date: 2020-11-12

    This release contains a variety of fixes from 10.14. +E.5. Release 10.15

    E.5. Release 10.15

    Release date: 2020-11-12

    This release contains a variety of fixes from 10.14. For information about new features in major release 10, see - Section E.18. -

    E.3.1. Migration to Version 10.15

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.5.1. Migration to Version 10.15

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.11, - see Section E.7. -

    E.3.2. Changes

    • Block DECLARE CURSOR ... WITH HOLD and firing of + see Section E.9. +

    E.5.2. Changes

    • Block DECLARE CURSOR ... WITH HOLD and firing of deferred triggers within index expressions and materialized view queries (Noah Misch)

      This is essentially a leak in the security restricted @@ -220,4 +220,4 @@ branches. This change also ensures that strftime() does not change errno unless it fails. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-16.html postgresql-10-10.19/doc/src/sgml/html/release-10-16.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-16.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-16.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,14 +1,14 @@ -E.2. Release 10.16

    E.2. Release 10.16

    Release date: 2021-02-11

    This release contains a variety of fixes from 10.15. +E.4. Release 10.16

    E.4. Release 10.16

    Release date: 2021-02-11

    This release contains a variety of fixes from 10.15. For information about new features in major release 10, see - Section E.18. -

    E.2.1. Migration to Version 10.16

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.4.1. Migration to Version 10.16

    A dump/restore is not required for those running 10.X.

    However, see the first changelog item below, which describes cases in which reindexing indexes after the upgrade may be advisable.

    Also, if you are upgrading from a version earlier than 10.11, - see Section E.7. -

    E.2.2. Changes

    • Fix CREATE INDEX CONCURRENTLY to wait for + see Section E.9. +

    E.4.2. Changes

    • Fix CREATE INDEX CONCURRENTLY to wait for concurrent prepared transactions (Andrey Borodin)

      At the point where CREATE INDEX CONCURRENTLY waits for all concurrent transactions to complete so that it can see @@ -230,4 +230,4 @@ Seychelles, and Vanuatu.

      Notably, the Australia/Currie zone has been corrected to the point where it is identical to Australia/Hobart. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-17.html postgresql-10-10.19/doc/src/sgml/html/release-10-17.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-17.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-17.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.1. Release 10.17

    E.1. Release 10.17

    Release date: 2021-05-13

    This release contains a variety of fixes from 10.16. +E.3. Release 10.17

    E.3. Release 10.17

    Release date: 2021-05-13

    This release contains a variety of fixes from 10.16. For information about new features in major release 10, see - Section E.18. -

    E.1.1. Migration to Version 10.17

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.3.1. Migration to Version 10.17

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.16, - see Section E.2. -

    E.1.2. Changes

    • Prevent integer overflows in array subscripting calculations + see Section E.4. +

    E.3.2. Changes

    • Prevent integer overflows in array subscripting calculations (Tom Lane)

      The array code previously did not complain about cases where an array's lower bound plus length overflows an integer. This resulted @@ -32,7 +32,7 @@ multi-column sub-select mechanism. (CVE-2021-32028)

    • Forbid marking an identity column as nullable (Vik Fearing) -

      GENERATED ALWAYS AS IDENTITY implies NOT +

      GENERATED ... AS IDENTITY implies NOT NULL, so don't allow it to be combined with an explicit NULL specification.

    • Allow ALTER ROLE/DATABASE ... SET to set @@ -157,4 +157,4 @@

    • Adjust VPATH build rules to support recent Oracle Developer Studio compiler versions (Noah Misch)

    • Fix testing of PL/Python for Python 3 on Solaris (Noah Misch) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-18.html postgresql-10-10.19/doc/src/sgml/html/release-10-18.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-18.html 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-18.html 2021-11-08 22:25:10.000000000 +0000 @@ -0,0 +1,228 @@ + +E.2. Release 10.18

    E.2. Release 10.18

    Release date: 2021-08-12

    This release contains a variety of fixes from 10.17. + For information about new features in major release 10, see + Section E.20. +

    E.2.1. Migration to Version 10.18

    A dump/restore is not required for those running 10.X. +

    However, if you are upgrading from a version earlier than 10.16, + see Section E.4. +

    E.2.2. Changes

    • Disallow SSL renegotiation more completely (Michael Paquier) +

      SSL renegotiation has been disabled for some time, but the server + would still cooperate with a client-initiated renegotiation request. + A maliciously crafted renegotiation request could result in a server + crash (see OpenSSL issue CVE-2021-3449). Disable the feature + altogether on OpenSSL versions that permit doing so, which are + 1.1.0h and newer. +

    • Reject SELECT ... GROUP BY GROUPING SETS (()) FOR + UPDATE (Tom Lane) +

      This should be disallowed, just as FOR UPDATE + with a plain GROUP BY is disallowed, but the test + for that failed to handle empty grouping sets correctly. + The end result would be a null-pointer dereference in the executor. +

    • Reject cases where a query in WITH + rewrites to just NOTIFY (Tom Lane) +

      Such cases previously crashed. +

    • In numeric multiplication, round the result rather than + failing if it would have more than 16383 digits after the decimal + point (Dean Rasheed) +

    • Fix corner-case errors and loss of precision when + raising numeric values to very large powers + (Dean Rasheed) +

    • Fix division-by-zero failure in to_char() + with EEEE format and a numeric input + value less than 10^(-1001) (Dean Rasheed) +

    • Fix pg_size_pretty(bigint) to round negative + values consistently with the way it rounds positive ones (and + consistently with the numeric version) (Dean Rasheed, + David Rowley) +

    • Make pg_filenode_relation(0, 0) return NULL + rather than failing (Justin Pryzby) +

    • Make ALTER EXTENSION lock the extension when + adding or removing a member object (Tom Lane) +

      The previous coding allowed ALTER EXTENSION + ADD/DROP to occur concurrently with DROP + EXTENSION, leading to a crash or corrupt catalog entries. +

    • Fix ALTER SUBSCRIPTION to reject an empty slot + name (Japin Li) +

    • Avoid alias conflicts in queries generated + for REFRESH MATERIALIZED VIEW CONCURRENTLY + (Tom Lane, Bharath Rupireddy) +

      This command failed on materialized views containing columns with + certain names, notably mv + and newdata. +

    • Fix PREPARE TRANSACTION to check correctly + for conflicting session-lifespan and transaction-lifespan locks + (Tom Lane) +

      A transaction cannot be prepared if it has both session-lifespan and + transaction-lifespan locks on the same advisory-lock ID value. This + restriction was not fully checked, which could lead to a PANIC + during PREPARE TRANSACTION. +

    • Fix misbehavior of DROP OWNED BY when the target + role is listed more than once in an RLS policy (Tom Lane) +

    • Skip unnecessary error tests when removing a role from an RLS policy + during DROP OWNED BY (Tom Lane) +

      Notably, this fixes some cases where it was necessary to be a + superuser to use DROP OWNED BY. +

    • Allow index state flags to be updated transactionally + (Michael Paquier, Andrey Lepikhov) +

      This avoids failures when dealing with index predicates that aren't + really immutable. While that's not considered a supported case, the + original reason for using a non-transactional update here is long + gone, so we may as well change it. +

    • Avoid corrupting the plan cache entry when CREATE + DOMAIN or ALTER DOMAIN appears + in a cached plan (Tom Lane) +

    • Make walsenders show their latest replication commands + in pg_stat_activity (Tom Lane) +

      Previously, a walsender would show its latest SQL command, which was + confusing if it's now doing some replication operation instead. + Now we show replication-protocol commands on the same footing as SQL + commands. +

    • Make + pg_settings.pending_restart + show as true when the pertinent entry + in postgresql.conf has been removed + (Álvaro Herrera) +

      pending_restart correctly showed the case + where an entry that cannot be changed without a postmaster restart + has been modified, but not where the entry had been removed + altogether. +

    • Fix corner-case failure of a new standby to follow a new primary + (Dilip Kumar, Robert Haas) +

      Under a narrow combination of conditions, the standby could wind up + trying to follow the wrong WAL timeline. +

    • Update minimum recovery point when WAL replay of a transaction abort + record causes file truncation (Fujii Masao) +

      File truncation is irreversible, so it's no longer safe to stop + recovery at a point earlier than that record. The corresponding + case for transaction commit was fixed years ago, but this one was + overlooked. +

    • In walreceivers, avoid attempting catalog lookups after an error + (Masahiko Sawada, Bharath Rupireddy) +

    • Ensure that a standby server's startup process will respond to a + shutdown signal promptly while waiting for WAL to arrive (Fujii + Masao, Soumyadeep Chakraborty) +

    • Add locking to avoid reading incorrect relmapper data in the face of + a concurrent write from another process (Heikki Linnakangas) +

    • Improve checks for violations of replication protocol (Tom Lane) +

      Logical replication workers frequently used Asserts to check for + cases that could be triggered by invalid or out-of-order replication + commands. This seems unwise, so promote these tests to regular + error checks. +

    • Fix error cases and memory leaks in logical decoding of speculative + insertions (Dilip Kumar) +

    • Fix plan cache reference leaks in some error cases in + CREATE TABLE ... AS EXECUTE (Tom Lane) +

    • Fix possible race condition when releasing BackgroundWorkerSlots + (Tom Lane) +

      It's likely that this doesn't fix any observable bug on Intel + hardware, but machines with weaker memory ordering rules could + have problems. +

    • Fix latent crash in sorting code (Ronan Dunklau) +

      One code path could attempt to free a null pointer. The case + appears unreachable in the core server's use of sorting, but perhaps + it could be triggered by extensions. +

    • Prevent infinite loops in SP-GiST index insertion (Tom Lane) +

      In the event that INCLUDE columns take up enough space to prevent a + leaf index tuple from ever fitting on a page, the text_ops operator + class would get into an infinite loop vainly trying to make the + tuple fit. + While pre-v11 versions don't have INCLUDE columns, back-patch this + anti-looping fix to them anyway, as it seems like a good defense + against bugs in operator classes. +

    • Ensure that SP-GiST index insertion can be terminated by a query + cancel request (Tom Lane, Álvaro Herrera) +

    • Fix uninitialized-variable bug that could + cause PL/pgSQL to act as though + an INTO clause + specified STRICT, even though it didn't + (Tom Lane) +

    • Don't abort the process for an out-of-memory failure in libpq's + printing functions (Tom Lane) +

    • In ecpg, allow the numeric + value INT_MIN (usually -2147483648) to be + converted to integer (John Naylor) +

    • In psql and other client programs, avoid + overrunning the ends of strings when dealing with invalidly-encoded + data (Tom Lane) +

      An incorrectly-encoded multibyte character near the end of a string + could cause various processing loops to run past the string's + terminating NUL, with results ranging from no detectable issue to + a program crash, depending on what happens to be in the following + memory. This is reminiscent of CVE-2006-2313, although these + particular cases do not appear to have interesting security + consequences. +

    • Avoid invalid creation date in header warnings + observed when running pg_restore on an + archive file created in a different time zone (Tom Lane) +

    • Make pg_upgrade carry forward the old + installation's oldestXID value (Bertrand Drouvot) +

      Previously, the new installation's oldestXID was + set to a value old enough to (usually) force immediate + anti-wraparound autovacuuming. That's not desirable from a + performance standpoint; what's worse, installations using large + values of autovacuum_freeze_max_age could suffer + unwanted forced shutdowns soon after an upgrade. +

    • Extend pg_upgrade to detect and warn + about extensions that should be upgraded (Bruce Momjian) +

      A script file is now produced containing the ALTER + EXTENSION UPDATE commands needed to bring extensions up to + the versions that are considered default in the new installation. +

    • Avoid problems when + switching pg_receivewal between + compressed and non-compressed WAL storage (Michael Paquier) +

    • In contrib/postgres_fdw, avoid attempting + catalog lookups after an error (Tom Lane) +

      While this usually worked, it's not very safe since the error might + have been one that made catalog access nonfunctional. A side effect + of the fix is that messages about data conversion errors will now + mention the query's table and column aliases (if used) rather than + the true underlying name of a foreign table or column. +

    • Improve the isolation-test infrastructure (Tom Lane, Michael Paquier) +

      Allow isolation test steps to be annotated to show the expected + completion order. This allows getting stable results from + otherwise-racy test cases, without the long delays that we + previously used (not entirely successfully) to fend off race + conditions. + Allow non-quoted identifiers as isolation test session/step names + (formerly, all such names had to be double-quoted). + Detect and warn about unused steps in isolation tests. + Improve display of query results in isolation tests. + Remove isolationtester's dry-run mode. + Remove memory leaks in isolationtester itself. +

    • Reduce overhead of cache-clobber testing (Tom Lane) +

    • Fix PL/Python's regression tests to pass + with Python 3.10 (Honza Horak) +

    • Make printf("%s", NULL) + print (null) instead of crashing (Tom Lane) +

      This should improve server robustness in corner cases, and it syncs + our printf implementation with common libraries. +

    • Fix incorrect log message when point-in-time recovery stops at + a ROLLBACK PREPARED record (Simon Riggs) +

    • Clarify error messages referring to non-negative + values (Bharath Rupireddy) +

    • Fix configure to work with OpenLDAP 2.5, + which no longer has a separate libldap_r + library (Adrian Ho, Tom Lane) +

      If there is no libldap_r library, we now + silently assume that libldap is thread-safe. +

    • Add new make targets world-bin + and install-world-bin (Andrew Dunstan) +

      These are the same as world + and install-world respectively, except that they + do not build or install the documentation. +

    • Fix make rule for TAP tests (prove_installcheck) + to work in PGXS usage (Andrew Dunstan) +

    • Allow PostgreSQL version 10 to build + with ICU 69 and newer (Peter Eisentraut) +

    • Avoid assuming that strings returned by GSSAPI libraries are + null-terminated (Tom Lane) +

      The GSSAPI spec provides for a string pointer and length. It seems + that in practice the next byte after the string is usually zero, + so that our previous coding didn't actually fail; but we do have + a report of AddressSanitizer complaints. +

    • Enable building with GSSAPI on MSVC (Michael Paquier) +

      Fix various incompatibilities with modern Kerberos builds. +

    • In MSVC builds, include --with-pgport in the set of + configure options reported by pg_config, + if it had been specified (Andrew Dunstan) +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-19.html postgresql-10-10.19/doc/src/sgml/html/release-10-19.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-19.html 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-19.html 2021-11-08 22:25:10.000000000 +0000 @@ -0,0 +1,327 @@ + +E.1. Release 10.19

    E.1. Release 10.19

    Release date: 2021-11-11

    This release contains a variety of fixes from 10.18. + For information about new features in major release 10, see + Section E.20. +

    E.1.1. Migration to Version 10.19

    A dump/restore is not required for those running 10.X. +

    However, note that installations using physical replication should + update standby servers before the primary server, as explained in + the third changelog entry below. +

    Also, several bugs have been found that may have resulted in corrupted + indexes, as explained in the next several changelog entries. If any + of those cases apply to you, it's recommended to reindex + possibly-affected indexes after updating. +

    Also, if you are upgrading from a version earlier than 10.16, + see Section E.4. +

    E.1.2. Changes

    • Make the server reject extraneous data after an SSL or GSS + encryption handshake (Tom Lane) +

      A man-in-the-middle with the ability to inject data into the TCP + connection could stuff some cleartext data into the start of a + supposedly encryption-protected database session. + This could be abused to send faked SQL commands to the server, + although that would only work if the server did not demand any + authentication data. (However, a server relying on SSL certificate + authentication might well not do so.) +

      The PostgreSQL Project thanks + Jacob Champion for reporting this problem. + (CVE-2021-23214) +

    • Make libpq reject extraneous data after + an SSL or GSS encryption handshake (Tom Lane) +

      A man-in-the-middle with the ability to inject data into the TCP + connection could stuff some cleartext data into the start of a + supposedly encryption-protected database session. + This could probably be abused to inject faked responses to the + client's first few queries, although other details of libpq's + behavior make that harder than it sounds. A different line of + attack is to exfiltrate the client's password, or other sensitive + data that might be sent early in the session. That has been shown + to be possible with a server vulnerable to CVE-2021-23214. +

      The PostgreSQL Project thanks + Jacob Champion for reporting this problem. + (CVE-2021-23222) +

    • Fix physical replication for cases where the primary crashes + after shipping a WAL segment that ends with a partial WAL record + (Álvaro Herrera) +

      If the primary did not survive long enough to finish writing the + rest of the incomplete WAL record, then the previous crash-recovery + logic had it back up and overwrite WAL starting from the beginning + of the incomplete WAL record. This is problematic since standby + servers may already have copies of that WAL segment. They will then + see an inconsistent next segment, and will not be able to recover + without manual intervention. To fix, do not back up over a WAL + segment boundary when restarting after a crash. Instead write a new + type of WAL record at the start of the next WAL segment, informing + readers that the incomplete WAL record will never be finished and + must be disregarded. +

      When applying this update, it's best to update standby servers + before the primary, so that they will be ready to handle this new + WAL record type if the primary happens to crash. +

    • Fix CREATE INDEX CONCURRENTLY to wait for + the latest prepared transactions (Andrey Borodin) +

      Rows inserted by just-prepared transactions might be omitted from + the new index, causing queries relying on the index to miss such + rows. The previous fix for this type of problem failed to account + for PREPARE TRANSACTION commands that were still + in progress when CREATE INDEX CONCURRENTLY + checked for them. As before, in installations that have enabled + prepared transactions (max_prepared_transactions + > 0), it's recommended to reindex any concurrently-built indexes + in case this problem occurred when they were built. +

    • Avoid race condition that can cause backends to fail to add entries + for new rows to an index being built concurrently (Noah Misch, + Andrey Borodin) +

      While it's apparently rare in the field, this case could potentially + affect any index built or reindexed with + the CONCURRENTLY option. It is recommended to + reindex any such indexes to make sure they are correct. +

    • Fix float4 and float8 hash functions to + produce uniform results for NaNs (Tom Lane) +

      Since PostgreSQL's floating-point types + deem all NaNs to be equal, it's important for the hash functions to + produce the same hash code for all bit-patterns that are NaNs + according to the IEEE 754 standard. This failed to happen before, + meaning that hash indexes and hash-based query plans might produce + incorrect results for non-canonical NaN values. + ('-NaN'::float8 is one way to produce such a + value on most machines.) It is advisable to reindex hash indexes + on floating-point columns, if there is any possibility that they + might contain such values. +

    • Prevent data loss during crash recovery of CREATE + TABLESPACE, when wal_level + = minimal (Noah Misch) +

      If the server crashed between CREATE TABLESPACE + and the next checkpoint, replay would fully remove the contents of + the new tablespace's directory, relying on subsequent WAL replay + to restore everything within that directory. This interacts badly + with optimizations that skip writing WAL (one example + is COPY into a just-created table). Such + optimizations are applied only when wal_level + is minimal, which is not the default in v10 and + later. +

    • Ensure that the relation cache is invalidated for a table being + attached to or detached from a partitioned table (Amit Langote, + Álvaro Herrera) +

      This oversight could allow misbehavior of subsequent inserts/updates + addressed directly to the partition, but only in currently-existing + sessions. +

    • Ensure that the relation cache is invalidated when creating or + dropping a FOR ALL TABLES publication + (Hou Zhijie, Vignesh C) +

      This oversight could lead to improper replication behavior until all + currently-existing sessions have exited. +

    • Don't discard a cast to the same type with unspecified type modifier + (Tom Lane) +

      For example, if column f1 is of + type numeric(18,3), the parser used to simply + discard a cast like f1::numeric, on the grounds + that it would have no run-time effect. That's true, but the exposed + type of the expression should still be considered to be + plain numeric, + not numeric(18,3). This is important for + correctly resolving the type of larger constructs, such + as recursive UNIONs. +

    • Disallow creating an ICU collation if the current database's + encoding won't support it (Tom Lane) +

      Previously this was allowed, but then the collation could not be + referenced because of the way collation lookup works; you could not + use the collation, nor even drop it. +

    • Fix corner-case loss of precision in + numeric power() (Dean Rasheed) +

      The result could be inaccurate when the first argument is very close + to 1. +

    • Avoid regular expression errors with capturing parentheses + inside {0} (Tom Lane) +

      Regular expressions like (.){0}...\1 drew + invalid backreference number. Other regexp engines + such as Perl don't complain, though, and for that matter ours + doesn't either in some closely related cases. Worse, it could throw + an assertion failure instead. Fix it so that no error is thrown and + instead the back-reference is silently deemed to never match. +

    • Prevent regular expression back-references from sometimes matching + when they shouldn't (Tom Lane) +

      The regexp engine was careless about clearing match data + for capturing parentheses after rejecting a partial match. This + could allow a later back-reference to match in places where it + should fail for lack of a defined referent. +

    • Fix regular expression performance bug with back-references inside + iteration nodes (Tom Lane) +

      Incorrect back-tracking logic could result in exponential time spent + looking for a match. Fortunately the problem is masked in most + cases by other optimizations. +

    • Fix incorrect results from AT TIME ZONE applied + to a time with time zone value (Tom Lane) +

      The results were incorrect if the target time zone was specified by + a dynamic timezone abbreviation (that is, one that is defined as + equivalent to a full time zone name, rather than a fixed UTC offset). +

    • Avoid using MCV-only statistics to estimate the range of a column + (Tom Lane) +

      There are corner cases in which ANALYZE will + build a most-common-values (MCV) list but not a histogram, even + though the MCV list does not account for all the observed values. + In such cases, keep the planner from using the MCV list alone to + estimate the range of column values. +

    • Clean up correctly if a transaction fails after exporting its + snapshot (Dilip Kumar) +

      This oversight would only cause a problem if the same session + attempted to export a snapshot again. The most likely scenario for + that is creation of a replication slot (followed by rollback) + and then creation of another replication slot. +

    • Prevent wraparound of overflowed-subtransaction tracking on standby + servers (Kyotaro Horiguchi, Alexander Korotkov) +

      This oversight could cause significant performance degradation + (manifesting as excessive SubtransSLRU traffic) on standby servers. +

    • Ensure that prepared transactions are properly accounted for during + promotion of a standby server (Michael Paquier, Andres Freund) +

      There was a narrow window where a prepared transaction could be + omitted from a snapshot taken by a concurrently-running session. + If that session then used the snapshot to perform data updates, + erroneous results or data corruption could occur. +

    • Fix detection of a relation that has grown to the maximum allowed + length (Tom Lane) +

      An attempt to extend a table or index past the limit of 2^32-1 + blocks was rejected, but not soon enough to prevent inconsistent + internal state from being created. +

    • Correctly track the presence of data-modifying CTEs when expanding + a DO INSTEAD rule (Greg Nancarrow, Tom Lane) +

      The previous failure to do this could lead to problems such as + unsafely choosing a parallel plan. +

    • Fix incorrect reporting of permissions failures on extended + statistics objects (Tomas Vondra) +

      The code typically produced cache lookup error rather + than the intended message. +

    • Fix incorrect snapshot handling in parallel workers (Greg Nancarrow) +

      This oversight could lead to misbehavior in parallel queries if the + transaction isolation level is less than REPEATABLE + READ. +

    • Ensure that walreceiver processes create all required archive + notification files before exiting (Fujii Masao) +

      If a walreceiver exited exactly at a WAL segment boundary, it failed + to make a notification file for the last-received segment, thus + delaying archiving of that segment on the standby. +

    • Avoid trying to lock the OLD + and NEW pseudo-relations in a rule + that uses SELECT FOR UPDATE + (Masahiko Sawada, Tom Lane) +

    • Fix parser's processing of aggregate FILTER + clauses (Tom Lane) +

      If the FILTER expression is a plain boolean column, + the semantic level of the aggregate could be mis-determined, leading + to not-per-spec behavior. If the FILTER + expression is itself a boolean-returning aggregate, an error should + be thrown but was not, likely resulting in a crash at execution. +

    • Avoid null-pointer-dereference crash when dropping a role that owns + objects being dropped concurrently (Álvaro Herrera) +

    • Prevent snapshot reference leak warning + when lo_export() or a related function fails + (Heikki Linnakangas) +

    • Ensure that scans of SP-GiST indexes are counted in the statistics + views (Tom Lane) +

      Incrementing the number-of-index-scans counter was overlooked in the + SP-GiST code, although per-tuple counters were advanced correctly. +

    • Recalculate relevant wait intervals + if recovery_min_apply_delay is changed during + recovery (Soumyadeep Chakraborty, Ashwin Agrawal) +

    • Fix infinite loop if a simplehash.h hash table + reaches 2^32 elements (Yura Sokolov) +

      It seems unlikely that this bug has been hit in practice, as it + would require work_mem settings of hundreds of + gigabytes for existing uses of simplehash.h. +

    • Reduce memory consumption during calculation of extended statistics + (Justin Pryzby, Tomas Vondra) +

    • Fix ecpg to recover correctly + after malloc() failure while establishing a + connection (Michael Paquier) +

    • Allow EXIT out of the outermost block in a + PL/pgSQL routine (Tom Lane) +

      If the routine does not require an explicit RETURN, + this usage should be valid, but it was rejected. +

    • Remove pg_ctl's hard-coded limits on the + total length of generated commands (Phil Krylov) +

      For example, this removes a restriction on how many command-line + options can be passed through to the postmaster. Individual path + names that pg_ctl deals with, such as the + postmaster executable's name or the data directory name, are still + limited to MAXPGPATH bytes in most cases. +

    • Fix pg_dump to dump non-global default + privileges correctly (Neil Chen, Masahiko Sawada) +

      If a global (unrestricted) ALTER DEFAULT + PRIVILEGES command revoked some present-by-default + privilege, for example EXECUTE for functions, and + then a restricted ALTER DEFAULT PRIVILEGES + command granted that privilege again for a selected role or + schema, pg_dump failed to dump the + restricted privilege grant correctly. +

    • Make pg_dump acquire shared lock on + partitioned tables that are to be dumped (Tom Lane) +

      This oversight was usually pretty harmless, since + once pg_dump has locked any of the leaf + partitions, that would suffice to prevent significant DDL on the + partitioned table itself. However problems could ensue when dumping + a childless partitioned table, since no relevant lock would be held. +

    • Improve pg_dump's performance by avoiding + making per-table queries for RLS policies, and by avoiding repetitive + calls to format_type() (Tom Lane) +

      These changes provide only marginal improvement when dumping from a + local server, but a dump from a remote server can benefit + substantially due to fewer network round-trips. +

    • Fix incorrect filename in pg_restore's + error message about an invalid large object TOC file (Daniel + Gustafsson) +

    • Fix failure of contrib/btree_gin indexes + on "char" + (not char(n)) columns, + when an indexscan using the < + or <= operator is performed (Tom Lane) +

      Such an indexscan failed to return all the entries it should. +

    • Change contrib/pg_stat_statements to read + its query texts file in units of at most 1GB + (Tom Lane) +

      Such large query text files are very unusual, but if they do occur, + the previous coding would fail on Windows 64 (which rejects + individual read requests of more than 2GB). +

    • Fix null-pointer crash + when contrib/postgres_fdw tries to report a + data conversion error (Tom Lane) +

    • Add spinlock support for the RISC-V architecture (Marek Szuba) +

      This is essential for reasonable performance on that platform. +

    • Support OpenSSL 3.0.0 + (Peter Eisentraut, Daniel Gustafsson, Michael Paquier) +

    • Set correct type identifier on OpenSSL BIO (I/O abstraction) + objects created by PostgreSQL + (Itamar Gafni) +

      This oversight probably only matters for code that is doing + tasks like auditing the OpenSSL installation. But it's + nominally a violation of the OpenSSL API, so fix it. +

    • Make pg_regexec() robust against an + out-of-range search_start parameter + (Tom Lane) +

      Return REG_NOMATCH, instead of possibly crashing, + when search_start is past the end of the + string. This case is probably unreachable within + core PostgreSQL, but extensions might be + more careless about the parameter value. +

    • Ensure that GetSharedSecurityLabel() can be + used in a newly-started session that has not yet built its critical + relation cache entries (Jeff Davis) +

    • Use the CLDR project's data to map Windows time zone names to IANA + time zones (Tom Lane) +

      When running on Windows, initdb attempts + to set the new cluster's timezone parameter to + the IANA time zone matching the system's prevailing time zone. + We were using a mapping table that we'd generated years ago and + updated only fitfully; unsurprisingly, it contained a number of + errors as well as omissions of recently-added zones. It turns out + that CLDR has been tracking the most appropriate mappings, so start + using their data. This change will not affect any existing + installation, only newly-initialized clusters. +

    • Update time zone data files to tzdata + release 2021e for DST law changes in Fiji, Jordan, Palestine, and + Samoa, plus historical corrections for Barbados, Cook Islands, + Guyana, Niue, Portugal, and Tonga. +

      Also, the Pacific/Enderbury zone has been renamed to Pacific/Kanton. + Also, the following zones have been merged into nearby, more-populous + zones whose clocks have agreed with them since 1970: Africa/Accra, + America/Atikokan, America/Blanc-Sablon, America/Creston, + America/Curacao, America/Nassau, America/Port_of_Spain, + Antarctica/DumontDUrville, and Antarctica/Syowa. + In all these cases, the previous zone name remains as an alias. +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-1.html postgresql-10-10.19/doc/src/sgml/html/release-10-1.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-1.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-1.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,10 +1,10 @@ -E.17. Release 10.1

    E.17. Release 10.1

    Release date: 2017-11-09

    This release contains a variety of fixes from 10.0. +E.19. Release 10.1

    E.19. Release 10.1

    Release date: 2017-11-09

    This release contains a variety of fixes from 10.0. For information about new features in major release 10, see - Section E.18. -

    E.17.1. Migration to Version 10.1

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.19.1. Migration to Version 10.1

    A dump/restore is not required for those running 10.X.

    However, if you use BRIN indexes, see the fourth changelog entry below. -

    E.17.2. Changes

    • Ensure that INSERT ... ON CONFLICT DO UPDATE checks +

    E.19.2. Changes

    • Ensure that INSERT ... ON CONFLICT DO UPDATE checks table permissions and RLS policies in all cases (Dean Rasheed)

      The update path of INSERT ... ON CONFLICT DO UPDATE requires SELECT permission on the columns of the @@ -166,4 +166,4 @@ for intrapage anchors, thus breaking some external links into our website documentation. Return to our previous convention of using upper-case strings. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-2.html postgresql-10-10.19/doc/src/sgml/html/release-10-2.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-2.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-2.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,14 +1,14 @@ -E.16. Release 10.2

    E.16. Release 10.2

    Release date: 2018-02-08

    This release contains a variety of fixes from 10.1. +E.18. Release 10.2

    E.18. Release 10.2

    Release date: 2018-02-08

    This release contains a variety of fixes from 10.1. For information about new features in major release 10, see - Section E.18. -

    E.16.1. Migration to Version 10.2

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.18.1. Migration to Version 10.2

    A dump/restore is not required for those running 10.X.

    However, if you use contrib/cube's ~> operator, see the entry below about that.

    Also, if you are upgrading from a version earlier than 10.1, - see Section E.17. -

    E.16.2. Changes

    • Fix processing of partition keys containing multiple expressions + see Section E.19. +

    E.18.2. Changes

    • Fix processing of partition keys containing multiple expressions (Álvaro Herrera, David Rowley)

      This error led to crashes or, with carefully crafted input, disclosure of arbitrary backend memory. @@ -286,4 +286,4 @@ plus historical corrections for Bolivia, Japan, and South Sudan. The US/Pacific-New zone has been removed (it was only an alias for America/Los_Angeles anyway). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-3.html postgresql-10-10.19/doc/src/sgml/html/release-10-3.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-3.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-3.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,8 +1,8 @@ -E.15. Release 10.3

    E.15. Release 10.3

    Release date: 2018-03-01

    This release contains a variety of fixes from 10.2. +E.17. Release 10.3

    E.17. Release 10.3

    Release date: 2018-03-01

    This release contains a variety of fixes from 10.2. For information about new features in major release 10, see - Section E.18. -

    E.15.1. Migration to Version 10.3

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.17.1. Migration to Version 10.3

    A dump/restore is not required for those running 10.X.

    However, if you run an installation in which not all users are mutually trusting, or if you maintain an application or extension that is intended for use in arbitrary situations, it is strongly recommended @@ -14,8 +14,8 @@ during auto-analyze, or when reloading from a dump. After upgrading, monitor the server logs for such problems, and fix affected functions.

    Also, if you are upgrading from a version earlier than 10.2, - see Section E.16. -

    E.15.2. Changes

    • Document how to configure installations and applications to guard + see Section E.18. +

    E.17.2. Changes

    • Document how to configure installations and applications to guard against search-path-dependent trojan-horse attacks from other users (Noah Misch)

      Using a search_path setting that includes any @@ -109,4 +109,4 @@ (Tom Lane)

    • Mark assorted GUC variables as PGDLLIMPORT, to ease porting extension modules to Windows (Metin Doslu) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-4.html postgresql-10-10.19/doc/src/sgml/html/release-10-4.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-4.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-4.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,16 +1,16 @@ -E.14. Release 10.4

    E.14. Release 10.4

    Release date: 2018-05-10

    This release contains a variety of fixes from 10.3. +E.16. Release 10.4

    E.16. Release 10.4

    Release date: 2018-05-10

    This release contains a variety of fixes from 10.3. For information about new features in major release 10, see - Section E.18. -

    E.14.1. Migration to Version 10.4

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.16.1. Migration to Version 10.4

    A dump/restore is not required for those running 10.X.

    However, if you use the adminpack extension, you should update it as per the first changelog entry below.

    Also, if the function marking mistakes mentioned in the second and third changelog entries below affect you, you will want to take steps to correct your database catalogs.

    Also, if you are upgrading from a version earlier than 10.3, - see Section E.15. -

    E.14.2. Changes

    E.16.2. Changes

    • Remove public execute privilege from contrib/adminpack's pg_logfile_rotate() function (Stephen Frost)

      pg_logfile_rotate() is a deprecated wrapper @@ -289,4 +289,4 @@ Station), plus historical corrections for Portugal and its colonies, as well as Enderbury, Jamaica, Turks & Caicos Islands, and Uruguay. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-5.html postgresql-10-10.19/doc/src/sgml/html/release-10-5.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-5.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-5.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.13. Release 10.5

    E.13. Release 10.5

    Release date: 2018-08-09

    This release contains a variety of fixes from 10.4. +E.15. Release 10.5

    E.15. Release 10.5

    Release date: 2018-08-09

    This release contains a variety of fixes from 10.4. For information about new features in major release 10, see - Section E.18. -

    E.13.1. Migration to Version 10.5

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.15.1. Migration to Version 10.5

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.4, - see Section E.14. -

    E.13.2. Changes

    • Fix failure to reset libpq's state fully + see Section E.16. +

    E.15.2. Changes

    • Fix failure to reset libpq's state fully between connection attempts (Tom Lane)

      An unprivileged user of dblink or postgres_fdw could bypass the checks intended @@ -255,4 +255,4 @@ the is_dst column in the pg_timezone_names view will now be true in winter and false in summer in these cases. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-6.html postgresql-10-10.19/doc/src/sgml/html/release-10-6.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-6.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-6.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,13 +1,13 @@ -E.12. Release 10.6

    E.12. Release 10.6

    Release date: 2018-11-08

    This release contains a variety of fixes from 10.5. +E.14. Release 10.6

    E.14. Release 10.6

    Release date: 2018-11-08

    This release contains a variety of fixes from 10.5. For information about new features in major release 10, see - Section E.18. -

    E.12.1. Migration to Version 10.6

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.14.1. Migration to Version 10.6

    A dump/restore is not required for those running 10.X.

    However, if you use the pg_stat_statements extension, see the changelog entry below about that.

    Also, if you are upgrading from a version earlier than 10.4, - see Section E.14. -

    E.12.2. Changes

    • Ensure proper quoting of transition table names + see Section E.16. +

    E.14.2. Changes

    • Ensure proper quoting of transition table names when pg_dump emits CREATE TRIGGER ... REFERENCING commands (Tom Lane)

      This oversight could be exploited by an unprivileged user to gain @@ -308,4 +308,4 @@ release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia (Volgograd), plus historical corrections for China, Hawaii, Japan, Macau, and North Korea. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-7.html postgresql-10-10.19/doc/src/sgml/html/release-10-7.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-7.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-7.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.11. Release 10.7

    E.11. Release 10.7

    Release date: 2019-02-14

    This release contains a variety of fixes from 10.6. +E.13. Release 10.7

    E.13. Release 10.7

    Release date: 2019-02-14

    This release contains a variety of fixes from 10.6. For information about new features in major release 10, see - Section E.18. -

    E.11.1. Migration to Version 10.7

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.13.1. Migration to Version 10.7

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.6, - see Section E.12. -

    E.11.2. Changes

    E.13.2. Changes

    • By default, panic instead of retrying after fsync() failure, to avoid possible data corruption (Craig Ringer, Thomas Munro)

      Some popular operating systems discard kernel data buffers when @@ -249,4 +249,4 @@ creating a new zone Asia/Qostanay, as some areas did not change UTC offset. Historical corrections for Hong Kong and numerous Pacific islands. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-8.html postgresql-10-10.19/doc/src/sgml/html/release-10-8.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-8.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-8.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.10. Release 10.8

    E.10. Release 10.8

    Release date: 2019-05-09

    This release contains a variety of fixes from 10.7. +E.12. Release 10.8

    E.12. Release 10.8

    Release date: 2019-05-09

    This release contains a variety of fixes from 10.7. For information about new features in major release 10, see - Section E.18. -

    E.10.1. Migration to Version 10.8

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.12.1. Migration to Version 10.8

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.6, - see Section E.12. -

    E.10.2. Changes

    • Prevent row-level security policies from being bypassed via + see Section E.14. +

    E.12.2. Changes

    • Prevent row-level security policies from being bypassed via selectivity estimators (Dean Rasheed)

      Some of the planner's selectivity estimators apply user-defined operators to values found in pg_statistic @@ -210,4 +210,4 @@ typically a typo. PostgreSQL will still accept UCT as an input zone abbreviation, but it won't output it. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10-9.html postgresql-10-10.19/doc/src/sgml/html/release-10-9.html --- postgresql-10-10.17/doc/src/sgml/html/release-10-9.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10-9.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,11 +1,11 @@ -E.9. Release 10.9

    E.9. Release 10.9

    Release date: 2019-06-20

    This release contains a variety of fixes from 10.8. +E.11. Release 10.9

    E.11. Release 10.9

    Release date: 2019-06-20

    This release contains a variety of fixes from 10.8. For information about new features in major release 10, see - Section E.18. -

    E.9.1. Migration to Version 10.9

    A dump/restore is not required for those running 10.X. + Section E.20. +

    E.11.1. Migration to Version 10.9

    A dump/restore is not required for those running 10.X.

    However, if you are upgrading from a version earlier than 10.6, - see Section E.12. -

    E.9.2. Changes

    • Fix buffer-overflow hazards in SCRAM verifier parsing + see Section E.14. +

    E.11.2. Changes

    • Fix buffer-overflow hazards in SCRAM verifier parsing (Jonathan Katz, Heikki Linnakangas, Michael Paquier)

      Any authenticated user could cause a stack-based buffer overflow by changing their own password to a purpose-crafted value. In addition @@ -128,4 +128,4 @@ Now, just transmit the untranslated bytes to the log.

    • Make PL/pgSQL's header files C++-safe (George Tarasov) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-10.html postgresql-10-10.19/doc/src/sgml/html/release-10.html --- postgresql-10-10.17/doc/src/sgml/html/release-10.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-10.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,7 +1,7 @@ -E.18. Release 10

    E.18. Release 10

    Release date: 2017-10-05

    E.18.1. Overview

    Major enhancements in PostgreSQL 10 include: +E.20. Release 10

    E.20. Release 10

    Release date: 2017-10-05

    E.20.1. Overview

    Major enhancements in PostgreSQL 10 include:

    • Logical replication using publish/subscribe

    • Declarative table partitioning

    • Improved query parallelism

    • Significant general performance improvements

    • Stronger password authentication based on SCRAM-SHA-256

    • Improved monitoring and control

    The above items are explained in more detail in the sections below. -

    E.18.2. Migration to Version 10

    A dump/restore using pg_dumpall or use of pg_upgrade or logical replication is required for those +

    E.20.2. Migration to Version 10

    A dump/restore using pg_dumpall or use of pg_upgrade or logical replication is required for those wishing to migrate data from any previous release. See Section 18.6 for general information on migrating to new major releases.

    Version 10 contains a number of changes that may affect compatibility @@ -205,10 +205,10 @@ Freund)

    Extensions providing C-coded functions must now conform to version 1 calling conventions. Version 0 has been deprecated since 2001. -

    E.18.3. Changes

    Below you will find a detailed account of the changes between +

    E.20.3. Changes

    Below you will find a detailed account of the changes between PostgreSQL 10 and the previous major release. -

    E.18.3.1. Server

    E.18.3.1.1. Parallel Queries
    • Support parallel B-tree index scans (Rahila Syed, Amit Kapila, +

      E.20.3.1. Server

      E.20.3.1.1. Parallel Queries
      • Support parallel B-tree index scans (Rahila Syed, Amit Kapila, Robert Haas, Rafia Sabih)

        This change allows B-tree index pages to be searched by separate parallel workers. @@ -229,7 +229,7 @@

      • Enable parallelism by default by changing the default setting of max_parallel_workers_per_gather to 2. -

      E.18.3.1.2. Indexes
      • Add write-ahead logging support to hash indexes (Amit Kapila) +

      E.20.3.1.2. Indexes
      • Add write-ahead logging support to hash indexes (Amit Kapila)

        This makes hash indexes crash-safe and replicatable. The former warning message about their use is removed.

      • Improve hash index performance (Amit Kapila, Mithun Cy, Ashutosh @@ -256,7 +256,7 @@ index space more efficiently (Andrey Borodin)

      • Reduce page locking during vacuuming of GIN indexes (Andrey Borodin) -

      E.18.3.1.3. Locking
      • Reduce locking required to change table parameters (Simon Riggs, +

      E.20.3.1.3. Locking
      E.18.3.1.4. Optimizer
      • Add multi-column optimizer statistics to compute the correlation +

      E.20.3.1.4. Optimizer
      • Add multi-column optimizer statistics to compute the correlation ratio and number of distinct values (Tomas Vondra, David Rowley, Álvaro Herrera)

        New commands are CREATE STATISTICS, @@ -278,7 +278,7 @@

        The optimizer now has more knowledge about where it can place RLS filter conditions, allowing better plans to be generated while still enforcing the RLS conditions safely. -

      E.18.3.1.5. General Performance
      • Speed up aggregate functions that calculate a running sum +

      E.20.3.1.5. General Performance
      • Speed up aggregate functions that calculate a running sum using numeric-type arithmetic, including some variants of SUM(), AVG(), and STDDEV() (Heikki Linnakangas) @@ -294,7 +294,7 @@

      • Improve sort performance of the macaddr data type (Brandur Leach)

      • Reduce statistics tracking overhead in sessions that reference many thousands of relations (Aleksander Alekseev) -

      E.18.3.1.6. Monitoring
      • Allow explicit control +

      E.20.3.1.6. Monitoring
      • Allow explicit control over EXPLAIN's display of planning and execution time (Ashutosh Bapat)

        By default planning and execution time are displayed by @@ -307,7 +307,7 @@ allow simplified permission configuration.

      • Properly update the statistics collector during REFRESH MATERIALIZED VIEW (Jim Mlodgenski) -

      E.18.3.1.6.1. Logging
      E.20.3.1.6.1. Logging
      • Change the default value of log_line_prefix to include current timestamp (with milliseconds) and the process ID in each line of postmaster log output (Christoph Berg)

        The previous default was an empty prefix. @@ -332,7 +332,7 @@ controlled by log_min_messages (Robert Haas)

        This also changes the verbosity of client_min_messages debug levels. -

      E.18.3.1.6.2. pg_stat_activity
      • Add pg_stat_activity reporting of low-level wait +

      E.20.3.1.6.2. pg_stat_activity
      • Add pg_stat_activity reporting of low-level wait states (Michael Paquier, Robert Haas, Rushabh Lathia)

        This change enables reporting of numerous low-level wait conditions, including latch waits, file reads/writes/fsyncs, client reads/writes, @@ -349,7 +349,7 @@ values LWLockTranche and LWLockNamed to LWLock (Robert Haas)

        This makes the output more consistent. -

      E.18.3.1.7. Authentication
      E.20.3.1.7. Authentication
      • Add SCRAM-SHA-256 support for password negotiation and storage (Michael Paquier, Heikki Linnakangas)

        This provides better security than the existing md5 @@ -364,7 +364,7 @@

      • Support multiple RADIUS servers (Magnus Hagander)

        All the RADIUS related parameters are now plural and support a comma-separated list of servers. -

      E.18.3.1.8. Server Configuration
      • Allow SSL configuration to be updated during +

      E.20.3.1.8. Server Configuration
      • Allow SSL configuration to be updated during configuration reload (Andreas Karlsson, Tom Lane)

        This allows SSL to be reconfigured without a server restart, by using pg_ctl reload, SELECT @@ -376,10 +376,10 @@ case.

      • Make the maximum value of bgwriter_lru_maxpages effectively unlimited (Jim Nasby) -

      E.18.3.1.9. Reliability
      • After creating or unlinking files, perform an fsync on their parent +

      E.20.3.1.9. Reliability
      • After creating or unlinking files, perform an fsync on their parent directory (Michael Paquier)

        This reduces the risk of data loss after a power failure. -

      E.18.3.1.9.1. Write-Ahead Log (WAL)
      • Prevent unnecessary checkpoints and WAL archiving on +

      E.20.3.1.9.1. Write-Ahead Log (WAL)
      • Prevent unnecessary checkpoints and WAL archiving on otherwise-idle systems (Michael Paquier)

      • Add wal_consistency_checking server parameter to add details to WAL that can be sanity-checked on @@ -390,7 +390,7 @@

        A larger WAL segment size allows for fewer archive_command invocations and fewer WAL files to manage. -

      E.18.3.2. Replication and Recovery

    • Add the ability to logically replicate tables to standby servers (Petr Jelinek)

      Logical replication allows more flexibility than physical replication does, including replication between different major @@ -435,7 +435,7 @@ Access Exclusive locks (Simon Riggs, David Rowley)

    • Speed up two-phase commit recovery performance (Stas Kelvich, Nikhil Sontakke, Michael Paquier) -

    E.18.3.3. Queries

    E.20.3.3. Queries

    • Add XMLTABLE function that converts XML-formatted data into a row set (Pavel Stehule, Álvaro Herrera)

    • Fix regular expressions' character class handling for large character @@ -443,7 +443,7 @@ (Tom Lane)

      Previously, such characters were never recognized as belonging to locale-dependent character classes such as [[:alpha:]]. -

    E.18.3.4. Utility Commands

    • Add table partitioning syntax that automatically creates partition constraints and handles routing of tuple insertions and updates (Amit Langote)

      The syntax supports range and list partitioning. @@ -497,7 +497,7 @@

      This information is also included in log_autovacuum_min_duration output.

    • Improve speed of VACUUM's removal of trailing empty heap pages (Claudio Freire, Álvaro Herrera) -

    E.18.3.5. Data Types

    • Add full text search support for JSON and JSONB +

    E.20.3.5. Data Types

    • Add full text search support for JSON and JSONB (Dmitry Dolgov)

      The functions ts_headline() and to_tsvector() can now be used on these data types. @@ -533,7 +533,7 @@ rounded.

    • Check for overflow in the money type's input function (Peter Eisentraut) -

    E.18.3.6. Functions

    E.20.3.6. Functions

    • Add simplified regexp_match() function (Emre Hasegeli)

      This is similar to regexp_matches(), but it only returns results from the first match so it does not need to return a @@ -570,7 +570,7 @@ previously to_date('2009-06-40','YYYY-MM-DD') was accepted and returned 2009-07-10. It will now generate an error. -

    E.18.3.7. Server-Side Languages

    • Allow PL/Python's cursor() and execute() +

    E.20.3.7. Server-Side Languages

    • Allow PL/Python's cursor() and execute() functions to be called as methods of their plan-object arguments (Peter Eisentraut)

      This allows a more object-oriented programming style. @@ -578,7 +578,7 @@ values into array elements (Tom Lane)

      Previously, a syntactic restriction prevented the target variable from being an array element. -

    E.18.3.7.1. PL/Tcl
    • Allow PL/Tcl functions to return composite types and sets +

    E.20.3.7.1. PL/Tcl
    • Allow PL/Tcl functions to return composite types and sets (Karl Lehenbauer)

    • Add a subtransaction command to PL/Tcl (Victor Wagner)

      This allows PL/Tcl queries to fail without aborting the entire @@ -586,7 +586,7 @@

    • Add server parameters pltcl.start_proc and pltclu.start_proc, to allow initialization functions to be called on PL/Tcl startup (Tom Lane) -

    E.18.3.8. Client Interfaces

    • Allow specification of multiple host names or addresses in libpq connection strings and URIs (Robert Haas, Heikki Linnakangas)

      libpq will connect to the first responsive server in the list. @@ -610,7 +610,7 @@ (Tom Lane)

      Henceforth the ecpg version will match the PostgreSQL distribution version number. -

    E.18.3.9. Client Applications

    E.18.3.9.1. psql
    • Add conditional branch support to psql (Corey +

    E.20.3.9. Client Applications

    E.20.3.9.1. psql
    • Add conditional branch support to psql (Corey Huinker)

      This feature adds psql meta-commands \if, \elif, \else, @@ -650,7 +650,7 @@

    • Improve psql's tab completion (Jeff Janes, Ian Barwick, Andreas Karlsson, Sehrope Sarkuni, Thomas Munro, Kevin Grittner, Dagfinn Ilmari Mannsåker) -

    E.18.3.9.2. pgbench
    • Add pgbench option --log-prefix to +

    E.20.3.9.2. pgbench
    • Add pgbench option --log-prefix to control the log file prefix (Masahiko Sawada)

    • Allow pgbench's meta-commands to span multiple lines (Fabien Coelho) @@ -658,7 +658,7 @@ backslash-return.

    • Remove restriction on placement of -M option relative to other command line options (Tom Lane) -

    E.18.3.10. Server Applications

    E.20.3.10. Server Applications

    • Add pg_receivewal option -Z/--compress to specify compression (Michael Paquier)

    • Add pg_recvlogical option @@ -669,7 +669,7 @@ --no-clean and --no-sync (Vik Fearing, Peter Eisentraut)

      The old spellings are still supported. -

    E.18.3.10.1. pg_dump, +

    E.20.3.10.1. pg_dump, pg_dumpall, pg_restore
    • Allow pg_restore to exclude schemas (Michael Banck)

      This adds a new -N/--exclude-schema option. @@ -689,7 +689,7 @@

      This provides more security that the output is safely stored on disk before the program exits. This can be disabled with the new --no-sync option. -

    E.18.3.10.2. pg_basebackup
    • Allow pg_basebackup to stream write-ahead log in +

    E.20.3.10.2. pg_basebackup
    • Allow pg_basebackup to stream write-ahead log in tar mode (Magnus Hagander)

      The WAL will be stored in a separate tar file from the base backup. @@ -705,7 +705,7 @@ disable fsync (Michael Paquier)

    • Improve pg_basebackup's handling of which directories to skip (David Steele) -

    E.18.3.10.3. pg_ctl
    • Add wait option for pg_ctl's +

    E.20.3.10.3. pg_ctl
    • Add wait option for pg_ctl's promote operation (Peter Eisentraut)

    • Add long options for pg_ctl wait (--wait) and no-wait (--no-wait) (Vik Fearing) @@ -730,7 +730,7 @@

      The start and promote operations now return exit status 1, not 0, in such cases. The stop operation has always done that. -

    E.18.3.11. Source Code

    • Change to two-part release version numbering (Peter Eisentraut, Tom +

    E.20.3.11. Source Code

    • Change to two-part release version numbering (Peter Eisentraut, Tom Lane)

      Release numbers will now have two parts (e.g., 10.1) rather than three (e.g., 9.6.3). @@ -811,7 +811,7 @@ JadeTex were used.

    • Build HTML documentation using XSLT stylesheets by default (Peter Eisentraut) -

    E.18.3.12. Additional Modules

    E.20.3.12. Additional Modules

    • Allow file_fdw to read from program output as well as files (Corey Huinker, Adam Gomaa)

    • In postgres_fdw, push aggregate functions to the remote server, when possible @@ -858,7 +858,7 @@ page image (Tomas Vondra)

    • Add hash index support to pageinspect (Jesper Pedersen, Ashutosh Sharma) -

    E.18.4. Acknowledgments

    The following individuals (in alphabetical order) have contributed to this +

    E.20.4. Acknowledgments

    The following individuals (in alphabetical order) have contributed to this release as patch authors, committers, reviewers, testers, or reporters of issues. -

    Adam Brightwell
    Adam Brusselback
    Adam Gomaa
    Adam Sah
    Adrian Klaver
    Aidan Van Dyk
    Aleksander Alekseev
    Alexander Korotkov
    Alexander Lakhin
    Alexander Sosna
    Alexey Bashtanov
    Alexey Grishchenko
    Alexey Isayko
    Álvaro Hernández Tortosa
    Álvaro Herrera
    Amit Kapila
    Amit Khandekar
    Amit Langote
    Amul Sul
    Anastasia Lubennikova
    Andreas Joseph Krogh
    Andreas Karlsson
    Andreas Scherbaum
    Andreas Seltenreich
    Andres Freund
    Andrew Dunstan
    Andrew Gierth
    Andrew Wheelwright
    Andrey Borodin
    Andrey Lizenko
    Andy Abelisto
    Antonin Houska
    Ants Aasma
    Arjen Nienhuis
    Arseny Sher
    Artur Zakirov
    Ashutosh Bapat
    Ashutosh Sharma
    Ashwin Agrawal
    Atsushi Torikoshi
    Ayumi Ishii
    Basil Bourque
    Beena Emerson
    Ben de Graaff
    Benedikt Grundmann
    Bernd Helmle
    Brad DeJong
    Brandur Leach
    Breen Hagan
    Bruce Momjian
    Bruno Wolff III
    Catalin Iacob
    Chapman Flack
    Chen Huajun
    Choi Doo-Won
    Chris Bandy
    Chris Richards
    Chris Ruprecht
    Christian Ullrich
    Christoph Berg
    Chuanting Wang
    Claudio Freire
    Clinton Adams
    Const Zhang
    Constantin Pan
    Corey Huinker
    Craig Ringer
    Cynthia Shang
    Dagfinn Ilmari Mannsåker
    Daisuke Higuchi
    Damian Quiroga
    Dan Wood
    Dang Minh Huong
    Daniel Gustafsson
    Daniel Vérité
    Daniel Westermann
    Daniele Varrazzo
    Danylo Hlynskyi
    Darko Prelec
    Dave Cramer
    Dave Page
    David Christensen
    David Fetter
    David Johnston
    David Rader
    David Rowley
    David Steele
    Dean Rasheed
    Denis Smirnov
    Denish Patel
    Dennis Björklund
    Devrim Gündüz
    Dilip Kumar
    Dilyan Palauzov
    Dima Pavlov
    Dimitry Ivanov
    Dmitriy Sarafannikov
    Dmitry Dolgov
    Dmitry Fedin
    Don Morrison
    Egor Rogov
    Eiji Seki
    Emil Iggland
    Emre Hasegeli
    Enrique Meneses
    Erik Nordström
    Erik Rijkers
    Erwin Brandstetter
    Etsuro Fujita
    Eugen Konkov
    Eugene Kazakov
    Euler Taveira
    Fabien Coelho
    Fabrízio de Royes Mello
    Feike Steenbergen
    Felix Gerzaguet
    Filip Jirsák
    Fujii Masao
    Gabriele Bartolini
    Gabrielle Roth
    Gao Zengqi
    Gerdan Santos
    Gianni Ciolli
    Gilles Darold
    Giuseppe Broccolo
    Graham Dutton
    Greg Atkins
    Greg Burek
    Grigory Smolkin
    Guillaume Lelarge
    Hans Buschmann
    Haribabu Kommi
    Heikki Linnakangas
    Henry Boehlert
    Huan Ruan
    Ian Barwick
    Igor Korot
    Ildus Kurbangaliev
    Ivan Kartyshov
    Jaime Casanova
    Jakob Egger
    James Parks
    Jarred Ward
    Jason Li
    Jason O'Donnell
    Jason Petersen
    Jeevan Chalke
    Jeevan Ladhe
    Jeff Dafoe
    Jeff Davis
    Jeff Janes
    Jelte Fennema
    Jeremy Finzel
    Jeremy Schneider
    Jeroen van der Ham
    Jesper Pedersen
    Jim Mlodgenski
    Jim Nasby
    Jinyu Zhang
    Joe Conway
    Joel Jacobson
    John Harvey
    Jon Nelson
    Jordan Gigov
    Josh Berkus
    Josh Soref
    Julian Markwort
    Julien Rouhaud
    Junseok Yang
    Justin Muise
    Justin Pryzby
    Kacper Zuk
    KaiGai Kohei
    Karen Huddleston
    Karl Lehenbauer
    Karl O. Pinc
    Keith Fiske
    Kevin Grittner
    Kim Rose Carlsen
    Konstantin Evteev
    Konstantin Knizhnik
    Kuntal Ghosh
    Kurt Kartaltepe
    Kyle Conroy
    Kyotaro Horiguchi
    Laurenz Albe
    Leonardo Cecchi
    Ludovic Vaugeois-Pepin
    Lukas Fittl
    Magnus Hagander
    Maksim Milyutin
    Maksym Sobolyev
    Marc Rassbach
    Marc-Olaf Jaschke
    Marcos Castedo
    Marek Cvoren
    Mark Dilger
    Mark Kirkwood
    Mark Pether
    Marko Tiikkaja
    Markus Winand
    Marllius Ribeiro
    Marti Raudsepp
    Martín Marqués
    Masahiko Sawada
    Matheus Oliveira
    Mathieu Fenniak
    Merlin Moncure
    Michael Banck
    Michael Day
    Michael Meskes
    Michael Overmeyer
    Michael Paquier
    Mike Palmiotto
    Milos Urbanek
    Mithun Cy
    Moshe Jacobson
    Murtuza Zabuawala
    Naoki Okano
    Nathan Bossart
    Nathan Wagner
    Neha Khatri
    Neha Sharma
    Neil Anderson
    Nicolas Baccelli
    Nicolas Guini
    Nicolas Thauvin
    Nikhil Sontakke
    Nikita Glukhov
    Nikolaus Thiel
    Nikolay Nikitin
    Nikolay Shaplov
    Noah Misch
    Noriyoshi Shinoda
    Olaf Gawenda
    Oleg Bartunov
    Oskari Saarenmaa
    Otar Shavadze
    Paresh More
    Paul Jungwirth
    Paul Ramsey
    Pavan Deolasee
    Pavel Golub
    Pavel Hanák
    Pavel Raiskup
    Pavel Stehule
    Peng Sun
    Peter Eisentraut
    Peter Geoghegan
    Petr Jelínek
    Philippe Beaudoin
    Pierre-Emmanuel André
    Piotr Stefaniak
    Prabhat Sahu
    QL Zhuo
    Radek Slupik
    Rafa de la Torre
    Rafia Sabih
    Ragnar Ouchterlony
    Rahila Syed
    Rajkumar Raghuwanshi
    Regina Obe
    Richard Pistole
    Robert Haas
    Robins Tharakan
    Rod Taylor
    Roman Shaposhnik
    Rushabh Lathia
    Ryan Murphy
    Sandeep Thakkar
    Scott Milliken
    Sean Farrell
    Sebastian Luque
    Sehrope Sarkuni
    Sergey Burladyan
    Sergey Koposov
    Shay Rojansky
    Shinichi Matsuda
    Sho Kato
    Simon Riggs
    Simone Gotti
    Spencer Thomason
    Stas Kelvich
    Stepan Pesternikov
    Stephen Frost
    Steve Randall
    Steve Singer
    Steven Fackler
    Steven Winfield
    Suraj Kharage
    Sveinn Sveinsson
    Sven R. Kunze
    Tahir Fakhroutdinov
    Taiki Kondo
    Takayuki Tsunakawa
    Takeshi Ideriha
    Tatsuo Ishii
    Tatsuro Yamada
    Teodor Sigaev
    Thom Brown
    Thomas Kellerer
    Thomas Munro
    Tim Goodaire
    Tobias Bussmann
    Tom Dunstan
    Tom Lane
    Tom van Tilburg
    Tomas Vondra
    Tomonari Katsumata
    Tushar Ahuja
    Vaishnavi Prabakaran
    Venkata Balaji Nagothi
    Vicky Vergara
    Victor Wagner
    Vik Fearing
    Vinayak Pokale
    Viren Negi
    Vitaly Burovoy
    Vladimir Kunshchikov
    Vladimir Rusinov
    Yi Wen Wong
    Yugo Nagata
    Zhen Ming Yang
    Zhou Digoal
    \ No newline at end of file +

    Adam Brightwell
    Adam Brusselback
    Adam Gomaa
    Adam Sah
    Adrian Klaver
    Aidan Van Dyk
    Aleksander Alekseev
    Alexander Korotkov
    Alexander Lakhin
    Alexander Sosna
    Alexey Bashtanov
    Alexey Grishchenko
    Alexey Isayko
    Álvaro Hernández Tortosa
    Álvaro Herrera
    Amit Kapila
    Amit Khandekar
    Amit Langote
    Amul Sul
    Anastasia Lubennikova
    Andreas Joseph Krogh
    Andreas Karlsson
    Andreas Scherbaum
    Andreas Seltenreich
    Andres Freund
    Andrew Dunstan
    Andrew Gierth
    Andrew Wheelwright
    Andrey Borodin
    Andrey Lizenko
    Andy Abelisto
    Antonin Houska
    Ants Aasma
    Arjen Nienhuis
    Arseny Sher
    Artur Zakirov
    Ashutosh Bapat
    Ashutosh Sharma
    Ashwin Agrawal
    Atsushi Torikoshi
    Ayumi Ishii
    Basil Bourque
    Beena Emerson
    Ben de Graaff
    Benedikt Grundmann
    Bernd Helmle
    Brad DeJong
    Brandur Leach
    Breen Hagan
    Bruce Momjian
    Bruno Wolff III
    Catalin Iacob
    Chapman Flack
    Chen Huajun
    Choi Doo-Won
    Chris Bandy
    Chris Richards
    Chris Ruprecht
    Christian Ullrich
    Christoph Berg
    Chuanting Wang
    Claudio Freire
    Clinton Adams
    Const Zhang
    Constantin Pan
    Corey Huinker
    Craig Ringer
    Cynthia Shang
    Dagfinn Ilmari Mannsåker
    Daisuke Higuchi
    Damian Quiroga
    Dan Wood
    Dang Minh Huong
    Daniel Gustafsson
    Daniel Vérité
    Daniel Westermann
    Daniele Varrazzo
    Danylo Hlynskyi
    Darko Prelec
    Dave Cramer
    Dave Page
    David Christensen
    David Fetter
    David Johnston
    David Rader
    David Rowley
    David Steele
    Dean Rasheed
    Denis Smirnov
    Denish Patel
    Dennis Björklund
    Devrim Gündüz
    Dilip Kumar
    Dilyan Palauzov
    Dima Pavlov
    Dimitry Ivanov
    Dmitriy Sarafannikov
    Dmitry Dolgov
    Dmitry Fedin
    Don Morrison
    Egor Rogov
    Eiji Seki
    Emil Iggland
    Emre Hasegeli
    Enrique Meneses
    Erik Nordström
    Erik Rijkers
    Erwin Brandstetter
    Etsuro Fujita
    Eugen Konkov
    Eugene Kazakov
    Euler Taveira
    Fabien Coelho
    Fabrízio de Royes Mello
    Feike Steenbergen
    Felix Gerzaguet
    Filip Jirsák
    Fujii Masao
    Gabriele Bartolini
    Gabrielle Roth
    Gao Zengqi
    Gerdan Santos
    Gianni Ciolli
    Gilles Darold
    Giuseppe Broccolo
    Graham Dutton
    Greg Atkins
    Greg Burek
    Grigory Smolkin
    Guillaume Lelarge
    Hans Buschmann
    Haribabu Kommi
    Heikki Linnakangas
    Henry Boehlert
    Huan Ruan
    Ian Barwick
    Igor Korot
    Ildus Kurbangaliev
    Ivan Kartyshov
    Jaime Casanova
    Jakob Egger
    James Parks
    Jarred Ward
    Jason Li
    Jason O'Donnell
    Jason Petersen
    Jeevan Chalke
    Jeevan Ladhe
    Jeff Dafoe
    Jeff Davis
    Jeff Janes
    Jelte Fennema
    Jeremy Finzel
    Jeremy Schneider
    Jeroen van der Ham
    Jesper Pedersen
    Jim Mlodgenski
    Jim Nasby
    Jinyu Zhang
    Joe Conway
    Joel Jacobson
    John Harvey
    Jon Nelson
    Jordan Gigov
    Josh Berkus
    Josh Soref
    Julian Markwort
    Julien Rouhaud
    Junseok Yang
    Justin Muise
    Justin Pryzby
    Kacper Zuk
    KaiGai Kohei
    Karen Huddleston
    Karl Lehenbauer
    Karl O. Pinc
    Keith Fiske
    Kevin Grittner
    Kim Rose Carlsen
    Konstantin Evteev
    Konstantin Knizhnik
    Kuntal Ghosh
    Kurt Kartaltepe
    Kyle Conroy
    Kyotaro Horiguchi
    Laurenz Albe
    Leonardo Cecchi
    Ludovic Vaugeois-Pepin
    Lukas Fittl
    Magnus Hagander
    Maksim Milyutin
    Maksym Sobolyev
    Marc Rassbach
    Marc-Olaf Jaschke
    Marcos Castedo
    Marek Cvoren
    Mark Dilger
    Mark Kirkwood
    Mark Pether
    Marko Tiikkaja
    Markus Winand
    Marllius Ribeiro
    Marti Raudsepp
    Martín Marqués
    Masahiko Sawada
    Matheus Oliveira
    Mathieu Fenniak
    Merlin Moncure
    Michael Banck
    Michael Day
    Michael Meskes
    Michael Overmeyer
    Michael Paquier
    Mike Palmiotto
    Milos Urbanek
    Mithun Cy
    Moshe Jacobson
    Murtuza Zabuawala
    Naoki Okano
    Nathan Bossart
    Nathan Wagner
    Neha Khatri
    Neha Sharma
    Neil Anderson
    Nicolas Baccelli
    Nicolas Guini
    Nicolas Thauvin
    Nikhil Sontakke
    Nikita Glukhov
    Nikolaus Thiel
    Nikolay Nikitin
    Nikolay Shaplov
    Noah Misch
    Noriyoshi Shinoda
    Olaf Gawenda
    Oleg Bartunov
    Oskari Saarenmaa
    Otar Shavadze
    Paresh More
    Paul Jungwirth
    Paul Ramsey
    Pavan Deolasee
    Pavel Golub
    Pavel Hanák
    Pavel Raiskup
    Pavel Stehule
    Peng Sun
    Peter Eisentraut
    Peter Geoghegan
    Petr Jelínek
    Philippe Beaudoin
    Pierre-Emmanuel André
    Piotr Stefaniak
    Prabhat Sahu
    QL Zhuo
    Radek Slupik
    Rafa de la Torre
    Rafia Sabih
    Ragnar Ouchterlony
    Rahila Syed
    Rajkumar Raghuwanshi
    Regina Obe
    Richard Pistole
    Robert Haas
    Robins Tharakan
    Rod Taylor
    Roman Shaposhnik
    Rushabh Lathia
    Ryan Murphy
    Sandeep Thakkar
    Scott Milliken
    Sean Farrell
    Sebastian Luque
    Sehrope Sarkuni
    Sergey Burladyan
    Sergey Koposov
    Shay Rojansky
    Shinichi Matsuda
    Sho Kato
    Simon Riggs
    Simone Gotti
    Spencer Thomason
    Stas Kelvich
    Stepan Pesternikov
    Stephen Frost
    Steve Randall
    Steve Singer
    Steven Fackler
    Steven Winfield
    Suraj Kharage
    Sveinn Sveinsson
    Sven R. Kunze
    Tahir Fakhroutdinov
    Taiki Kondo
    Takayuki Tsunakawa
    Takeshi Ideriha
    Tatsuo Ishii
    Tatsuro Yamada
    Teodor Sigaev
    Thom Brown
    Thomas Kellerer
    Thomas Munro
    Tim Goodaire
    Tobias Bussmann
    Tom Dunstan
    Tom Lane
    Tom van Tilburg
    Tomas Vondra
    Tomonari Katsumata
    Tushar Ahuja
    Vaishnavi Prabakaran
    Venkata Balaji Nagothi
    Vicky Vergara
    Victor Wagner
    Vik Fearing
    Vinayak Pokale
    Viren Negi
    Vitaly Burovoy
    Vladimir Kunshchikov
    Vladimir Rusinov
    Yi Wen Wong
    Yugo Nagata
    Zhen Ming Yang
    Zhou Digoal
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release.html postgresql-10-10.19/doc/src/sgml/html/release.html --- postgresql-10-10.17/doc/src/sgml/html/release.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix E. Release Notes

    Appendix E. Release Notes

    The release notes contain the significant changes in each +Appendix E. Release Notes

    Appendix E. Release Notes

    The release notes contain the significant changes in each 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 @@ -15,4 +15,4 @@

    The name appearing next to each item represents the major developer for that item. Of course all changes involve community discussion and patch review, so each item is truly a community effort. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/release-prior.html postgresql-10-10.19/doc/src/sgml/html/release-prior.html --- postgresql-10-10.17/doc/src/sgml/html/release-prior.html 2021-05-10 20:58:28.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/release-prior.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,4 +1,4 @@ -E.19. Prior Releases

    E.19. Prior Releases

    Release notes for prior release branches can be found at +E.21. Prior Releases

    E.21. Prior Releases

    Release notes for prior release branches can be found at https://www.postgresql.org/docs/release/ -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/replication-origins.html postgresql-10-10.19/doc/src/sgml/html/replication-origins.html --- postgresql-10-10.17/doc/src/sgml/html/replication-origins.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/replication-origins.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 49. Replication Progress Tracking

    Chapter 49. Replication Progress Tracking

    Replication origins are intended to make it easier to implement +Chapter 49. Replication Progress Tracking

    Chapter 49. Replication Progress Tracking

    Replication origins are intended to make it easier to implement logical replication solutions on top of logical decoding. They provide a solution to two common problems: @@ -57,4 +57,4 @@ to filter the logical decoding change stream based on the source. While less flexible, filtering via that callback is considerably more efficient than doing it in the output plugin. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/resources.html postgresql-10-10.19/doc/src/sgml/html/resources.html --- postgresql-10-10.17/doc/src/sgml/html/resources.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/resources.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -4. Further Information

    4. Further Information

    Besides the documentation, that is, this book, there are other +4. Further Information

    4. Further Information

    Besides the documentation, that is, this book, there are other resources about PostgreSQL:

    Wiki

    The PostgreSQL wiki contains the project's FAQ @@ -24,4 +24,4 @@ up and contribute it. If you add features to the code, contribute them.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/role-attributes.html postgresql-10-10.19/doc/src/sgml/html/role-attributes.html --- postgresql-10-10.17/doc/src/sgml/html/role-attributes.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/role-attributes.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -21.2. Role Attributes

    21.2. Role Attributes

    A database role can have a number of attributes that define its +21.2. Role Attributes

    21.2. Role Attributes

    A database role can have a number of attributes that define its privileges and interact with the client authentication system.

    login privilege

    Only roles that have the LOGIN attribute can be used @@ -71,4 +71,4 @@ Note that role-specific defaults attached to roles without LOGIN privilege are fairly useless, since they will never be invoked. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/role-membership.html postgresql-10-10.19/doc/src/sgml/html/role-membership.html --- postgresql-10-10.17/doc/src/sgml/html/role-membership.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/role-membership.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -21.3. Role Membership

    21.3. Role Membership

    It is frequently convenient to group users together to ease +21.3. Role Membership

    21.3. Role Membership

    It is frequently convenient to group users together to ease management of privileges: that way, privileges can be granted to, or revoked from, a group as a whole. In PostgreSQL this is done by creating a role that represents the group, and then @@ -81,4 +81,4 @@

    DROP ROLE name;

    Any memberships in the group role are automatically revoked (but the member roles are not otherwise affected). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/role-removal.html postgresql-10-10.19/doc/src/sgml/html/role-removal.html --- postgresql-10-10.17/doc/src/sgml/html/role-removal.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/role-removal.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -21.4. Dropping Roles

    21.4. Dropping Roles

    Because roles can own database objects and can hold privileges +21.4. Dropping Roles

    21.4. Dropping Roles

    Because roles can own database objects and can hold privileges to access other objects, dropping a role is often not just a matter of a quick DROP ROLE. Any objects owned by the role must first be dropped or reassigned to other owners; and any permissions @@ -40,4 +40,4 @@

    If DROP ROLE is attempted while dependent objects still remain, it will issue messages identifying which objects need to be reassigned or dropped. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/routine-reindex.html postgresql-10-10.19/doc/src/sgml/html/routine-reindex.html --- postgresql-10-10.17/doc/src/sgml/html/routine-reindex.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/routine-reindex.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -24.2. Routine Reindexing

    24.2. Routine Reindexing

    In some situations it is worthwhile to rebuild indexes periodically +24.2. Routine Reindexing

    24.2. Routine Reindexing

    In some situations it is worthwhile to rebuild indexes periodically with the REINDEX command or a series of individual rebuilding steps. @@ -32,4 +32,4 @@ the new index. Review this alternate multistep rebuild approach carefully before using it as there are limitations on which indexes can be reindexed this way, and errors must be handled. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/routine-vacuuming.html postgresql-10-10.19/doc/src/sgml/html/routine-vacuuming.html --- postgresql-10-10.17/doc/src/sgml/html/routine-vacuuming.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/routine-vacuuming.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -24.1. Routine Vacuuming

    24.1. Routine Vacuuming

    PostgreSQL databases require periodic +24.1. Routine Vacuuming

    24.1. Routine Vacuuming

    PostgreSQL databases require periodic maintenance known as vacuuming. For many installations, it is sufficient to let vacuuming be performed by the autovacuum daemon, which is described in Section 24.1.6. You might @@ -175,7 +175,7 @@ might be useful. If your queries require statistics on foreign tables for proper planning, it's a good idea to run manually-managed ANALYZE commands on those tables on a suitable schedule. -

    24.1.4. Updating The Visibility Map

    Vacuum maintains a visibility map for each +

    24.1.4. Updating The Visibility Map

    Vacuum maintains a visibility map for each table to keep track of which pages contain only tuples that are known to be visible to all active transactions (and all future transactions, until the page is again modified). This has two purposes. First, vacuum @@ -252,7 +252,7 @@ but decreasing this setting increases the number of transactions that can elapse before the table must be vacuumed again. -

    VACUUM uses the visibility map +

    VACUUM uses the visibility map to determine which pages of a table must be scanned. Normally, it will skip pages that don't have any dead row versions even if those pages might still have row versions with old XID values. Therefore, normal @@ -530,4 +530,4 @@

    Warning

    Regularly running commands that acquire locks conflicting with a SHARE UPDATE EXCLUSIVE lock (e.g., ANALYZE) can effectively prevent autovacuums from ever completing. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/row-estimation-examples.html postgresql-10-10.19/doc/src/sgml/html/row-estimation-examples.html --- postgresql-10-10.17/doc/src/sgml/html/row-estimation-examples.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/row-estimation-examples.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -68.1. Row Estimation Examples

    68.1. Row Estimation Examples

    The examples shown below use tables in the PostgreSQL +69.1. Row Estimation Examples

    69.1. Row Estimation Examples

    The examples shown below use tables in the PostgreSQL regression test database. The outputs shown are taken from version 8.3. The behavior of earlier (or later) versions might vary. @@ -337,4 +337,4 @@ src/backend/optimizer/path/clausesel.c. The operator-specific selectivity functions are mostly found in src/backend/utils/adt/selfuncs.c. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rowtypes.html postgresql-10-10.19/doc/src/sgml/html/rowtypes.html --- postgresql-10-10.17/doc/src/sgml/html/rowtypes.html 2021-05-10 20:58:06.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rowtypes.html 2021-11-08 22:24:49.000000000 +0000 @@ -1,5 +1,5 @@ -8.16. Composite Types

    8.16. Composite Types

    A composite type represents the structure of a row or record; +8.16. Composite Types

    8.16. Composite Types

    A composite type represents the structure of a row or record; it is essentially just a list of field names and their data types. PostgreSQL allows composite types to be used in many of the same ways that simple types can be used. For example, a @@ -320,4 +320,4 @@ commands. In ROW, individual field values are written the same way they would be written when not members of a composite. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rules.html postgresql-10-10.19/doc/src/sgml/html/rules.html --- postgresql-10-10.17/doc/src/sgml/html/rules.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rules.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 40. The Rule System

    Chapter 40. The Rule System

    This chapter discusses the rule system in +Chapter 40. The Rule System

    Chapter 40. The Rule System

    This chapter discusses the rule system in PostgreSQL. Production rule systems are conceptually simple, but there are many subtle points involved in actually using them.

    Some other database systems define active database rules, which @@ -12,4 +12,4 @@ execution. It is very powerful, and can be used for many things such as query language procedures, views, and versions. The theoretical foundations and the power of this rule system are - also discussed in [ston90b] and [ong90].

    \ No newline at end of file + also discussed in [ston90b] and [ong90].

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rules-materializedviews.html postgresql-10-10.19/doc/src/sgml/html/rules-materializedviews.html --- postgresql-10-10.17/doc/src/sgml/html/rules-materializedviews.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rules-materializedviews.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -40.3. Materialized Views

    40.3. Materialized Views

    Materialized views in PostgreSQL use the +40.3. Materialized Views

    40.3. Materialized Views

    Materialized views in PostgreSQL use the rule system like views do, but persist the results in a table-like form. The main differences between: @@ -147,4 +147,4 @@ Execution time: 198.640 ms

    If you can tolerate periodic update of the remote data to the local - database, the performance benefit can be substantial.

    \ No newline at end of file + database, the performance benefit can be substantial.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rules-privileges.html postgresql-10-10.19/doc/src/sgml/html/rules-privileges.html --- postgresql-10-10.17/doc/src/sgml/html/rules-privileges.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rules-privileges.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -40.5. Rules and Privileges

    40.5. Rules and Privileges

    Due to rewriting of queries by the PostgreSQL +40.5. Rules and Privileges

    40.5. Rules and Privileges

    Due to rewriting of queries by the PostgreSQL rule system, other tables/views than those used in the original query get accessed. When update rules are used, this can include write access to tables.

    Rewrite rules don't have a separate owner. The owner of @@ -126,4 +126,4 @@ affect the run time of the plan; or even, since they are also reflected in the optimizer statistics, the choice of plan). If these types of "covert channel" attacks are of concern, it is probably unwise to grant any access - to the data at all.

    \ No newline at end of file + to the data at all.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rules-status.html postgresql-10-10.19/doc/src/sgml/html/rules-status.html --- postgresql-10-10.17/doc/src/sgml/html/rules-status.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rules-status.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -40.6. Rules and Command Status

    40.6. Rules and Command Status

    The PostgreSQL server returns a command +40.6. Rules and Command Status

    40.6. Rules and Command Status

    The PostgreSQL server returns a command status string, such as INSERT 149592 1, for each command it receives. This is simple enough when there are no rules involved, but what happens when the query is rewritten by rules?

    Rules affect the command status as follows: @@ -24,4 +24,4 @@

    The programmer can ensure that any desired INSTEAD rule is the one that sets the command status in the second case, by giving it the alphabetically last rule name among the active rules, so that it - gets applied last.

    \ No newline at end of file + gets applied last.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rules-triggers.html postgresql-10-10.19/doc/src/sgml/html/rules-triggers.html --- postgresql-10-10.17/doc/src/sgml/html/rules-triggers.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rules-triggers.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -40.7. Rules Versus Triggers

    40.7. Rules Versus Triggers

    Many things that can be done using triggers can also be +40.7. Rules Versus Triggers

    40.7. Rules Versus Triggers

    Many things that can be done using triggers can also be implemented using the PostgreSQL rule system. One of the things that cannot be implemented by rules are some kinds of constraints, especially foreign keys. It is possible @@ -133,4 +133,4 @@ will be more or less independent from the number of affected rows in a command.

    The summary is, rules will only be significantly slower than triggers if their actions result in large and badly qualified - joins, a situation where the planner fails.

    \ No newline at end of file + joins, a situation where the planner fails.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rules-update.html postgresql-10-10.19/doc/src/sgml/html/rules-update.html --- postgresql-10-10.17/doc/src/sgml/html/rules-update.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rules-update.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -40.4. Rules on INSERT, UPDATE, and DELETE

    40.4. Rules on INSERT, UPDATE, and DELETE

    Rules that are defined on INSERT, UPDATE, +40.4. Rules on INSERT, UPDATE, and DELETE

    40.4. Rules on INSERT, UPDATE, and DELETE

    Rules that are defined on INSERT, UPDATE, and DELETE are significantly different from the view rules described in the previous section. First, their CREATE RULE command allows more: @@ -610,4 +610,4 @@ one single query tree that deletes the requested data from a real table.

    There are probably only a few situations out in the real world where such a construct is necessary. But it makes you feel - comfortable that it works.

    \ No newline at end of file + comfortable that it works.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rules-views.html postgresql-10-10.19/doc/src/sgml/html/rules-views.html --- postgresql-10-10.17/doc/src/sgml/html/rules-views.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rules-views.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -40.2. Views and the Rule System

    40.2. Views and the Rule System

    Views in PostgreSQL are implemented +40.2. Views and the Rule System

    40.2. Views and the Rule System

    Views in PostgreSQL are implemented using the rule system. In fact, there is essentially no difference between: @@ -198,7 +198,7 @@ so rewriting is complete and the above is the final result given to the planner.

    Now we want to write a query that finds out for which shoes currently in the store we have the matching shoelaces (color and length) and where the - total number of exactly matching pairs is greater or equal to two. + total number of exactly matching pairs is greater than or equal to two.

    SELECT * FROM shoe_ready WHERE total_avail >= 2;
     
    @@ -409,4 +409,4 @@
         updatable views.

    If there are no INSTEAD rules or INSTEAD OF triggers for the view, and the rewriter cannot automatically rewrite the query as an update on the underlying base relation, an error will - be thrown because the executor cannot update a view as such.

    \ No newline at end of file + be thrown because the executor cannot update a view as such.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/rule-system.html postgresql-10-10.19/doc/src/sgml/html/rule-system.html --- postgresql-10-10.17/doc/src/sgml/html/rule-system.html 2021-05-10 20:58:22.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/rule-system.html 2021-11-08 22:25:05.000000000 +0000 @@ -1,5 +1,5 @@ -50.4. The PostgreSQL Rule System

    50.4. The PostgreSQL Rule System

    PostgreSQL supports a powerful +50.4. The PostgreSQL Rule System

    50.4. The PostgreSQL Rule System

    PostgreSQL supports a powerful rule system for the specification of views and ambiguous view updates. Originally the PostgreSQL @@ -23,4 +23,4 @@ rewriter are query trees, that is, there is no change in the representation or level of semantic detail in the trees. Rewriting can be thought of as a form of macro expansion. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-autovacuum.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-autovacuum.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-autovacuum.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-autovacuum.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.10. Automatic Vacuuming

    19.10. Automatic Vacuuming

    These settings control the behavior of the autovacuum +19.10. Automatic Vacuuming

    19.10. Automatic Vacuuming

    These settings control the behavior of the autovacuum feature. Refer to Section 24.1.6 for more information. Note that many of these settings can be overridden on a per-table basis; see Storage Parameters. @@ -135,4 +135,4 @@ file or on the server command line; but the setting can be overridden for individual tables by changing table storage parameters. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-client.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-client.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-client.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-client.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.11. Client Connection Defaults

    19.11. Client Connection Defaults

    19.11.1. Statement Behavior

    client_min_messages (enum) +19.11. Client Connection Defaults

    19.11. Client Connection Defaults

    19.11.1. Statement Behavior

    client_min_messages (enum)

    Controls which message levels @@ -168,8 +168,29 @@ transactions or those operating at isolation levels lower than serializable. The default is off.

    Consult SET TRANSACTION for more information. -

    session_replication_role (enum) +

    transaction_isolation (enum) + +

    This parameter reflects the current transaction's isolation level. + At the beginning of each transaction, it is set to the current value + of default_transaction_isolation. + Any subsequent attempt to change it is equivalent to a SET TRANSACTION command. +

    transaction_read_only (boolean) + + +

    This parameter reflects the current transaction's read-only status. + At the beginning of each transaction, it is set to the current value + of default_transaction_read_only. + Any subsequent attempt to change it is equivalent to a SET TRANSACTION command. +

    transaction_deferrable (boolean) + + +

    This parameter reflects the current transaction's deferrability status. + At the beginning of each transaction, it is set to the current value + of default_transaction_deferrable. + Any subsequent attempt to change it is equivalent to a SET TRANSACTION command. +

    session_replication_role (enum) +

    Controls firing of replication-related triggers and rules for the current session. Setting this variable requires superuser privilege and results in discarding any previously cached @@ -178,7 +199,7 @@ See ALTER TABLE for more information.

    statement_timeout (integer) - +

    Abort any statement that takes more than the specified number of milliseconds, starting from the time the command arrives at the server from the client. If log_min_error_statement is set to @@ -188,7 +209,7 @@ postgresql.conf is not recommended because it would affect all sessions.

    lock_timeout (integer) - +

    Abort any statement that waits longer than the specified number of milliseconds while attempting to acquire a lock on a table, index, row, or other database object. The time limit applies separately to @@ -207,7 +228,7 @@ postgresql.conf is not recommended because it would affect all sessions.

    idle_in_transaction_session_timeout (integer) - +

    Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds. This allows any locks held by that session to be released and the connection slot to be reused; @@ -215,7 +236,7 @@ Section 24.1 for more details about this.

    The default value of 0 disables this feature.

    vacuum_freeze_table_age (integer) - +

    VACUUM performs an aggressive scan if the table's pg_class.relfrozenxid field has reached the age specified by this setting. An aggressive scan differs from @@ -230,7 +251,7 @@ information see Section 24.1.5.

    vacuum_freeze_min_age (integer) - +

    Specifies the cutoff age (in transactions) that VACUUM should use to decide whether to freeze row versions while scanning a table. @@ -241,7 +262,7 @@ that there is not an unreasonably short time between forced autovacuums. For more information see Section 24.1.5.

    vacuum_multixact_freeze_table_age (integer) - +

    VACUUM performs an aggressive scan if the table's pg_class.relminmxid field has reached the age specified by this setting. An aggressive scan differs from @@ -255,7 +276,7 @@ anti-wraparound is launched for the table. For more information see Section 24.1.5.1.

    vacuum_multixact_freeze_min_age (integer) - +

    Specifies the cutoff age (in multixacts) that VACUUM should use to decide whether to replace multixact IDs with a newer transaction ID or multixact ID while scanning a table. The default @@ -267,7 +288,7 @@ autovacuums. For more information see Section 24.1.5.1.

    bytea_output (enum) - +

    Sets the output format for values of type bytea. Valid values are hex (the default) and escape (the traditional PostgreSQL @@ -275,7 +296,7 @@ information. The bytea type always accepts both formats on input, regardless of this setting.

    xmlbinary (enum) - +

    Sets how binary values are to be encoded in XML. This applies for example when bytea values are converted to XML by the functions xmlelement or @@ -290,9 +311,9 @@ although the hex encoding will be somewhat larger than the base64 encoding.

    xmloption (enum) - - - + + +

    Sets whether DOCUMENT or CONTENT is implicit when converting between XML and character string values. See Section 8.13 for a description of this. Valid @@ -303,7 +324,7 @@

    SET XML OPTION { DOCUMENT | CONTENT };

    This syntax is also available in PostgreSQL.

    gin_pending_list_limit (integer) - +

    Sets the maximum size of the GIN pending list which is used when fastupdate is enabled. If the list grows larger than this maximum size, it is cleaned up by moving @@ -581,4 +602,4 @@

    Soft upper limit of the size of the set returned by GIN index scans. For more information see Section 64.5. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-compatible.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-compatible.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-compatible.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-compatible.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.13. Version and Platform Compatibility

    19.13. Version and Platform Compatibility

    19.13.1. Previous PostgreSQL Versions

    array_nulls (boolean) +19.13. Version and Platform Compatibility

    19.13. Version and Platform Compatibility

    19.13.1. Previous PostgreSQL Versions

    array_nulls (boolean)

    This controls whether the array input parser recognizes unquoted NULL as specifying a null array element. @@ -153,4 +153,4 @@ involving the equals operator (such as IN). Thus, this option is not a general fix for bad programming.

    Refer to Section 9.2 for related information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-connection.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-connection.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-connection.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-connection.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.3. Connections and Authentication

    19.3. Connections and Authentication

    19.3.1. Connection Settings

    listen_addresses (string) +19.3. Connections and Authentication

    19.3. Connections and Authentication

    19.3.1. Connection Settings

    listen_addresses (string)

    Specifies the TCP/IP address(es) on which the server is to listen for connections from client applications. @@ -334,4 +334,4 @@

    Note

    This feature is intended as a temporary measure until a complete solution is found. At that time, this option will be removed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-custom.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-custom.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-custom.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-custom.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.16. Customized Options

    19.16. Customized Options

    This feature was designed to allow parameters not normally known to +19.16. Customized Options

    19.16. Customized Options

    This feature was designed to allow parameters not normally known to PostgreSQL to be added by add-on modules (such as procedural languages). This allows extension modules to be configured in the standard ways. @@ -14,4 +14,4 @@ its variable definitions, convert any placeholder values according to those definitions, and issue warnings for any unrecognized placeholders that begin with its extension name. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-developer.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-developer.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-developer.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-developer.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.17. Developer Options

    19.17. Developer Options

    The following parameters are intended for work on the +19.17. Developer Options

    19.17. Developer Options

    The following parameters are intended for work on the PostgreSQL source code, and in some cases to assist with recovery of severely damaged databases. There should be no reason to use them on a production database. @@ -187,4 +187,4 @@ the index before turning this parameter off again. The default setting is off, and it can only be changed by a superuser. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-error-handling.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-error-handling.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-error-handling.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-error-handling.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.14. Error Handling

    19.14. Error Handling

    exit_on_error (boolean) +19.14. Error Handling

    19.14. Error Handling

    exit_on_error (boolean)

    If true, any error will terminate the current session. By default, this is set to false, so that only FATAL errors will terminate the @@ -13,6 +13,8 @@ PostgreSQL is being invoked by clusterware, it may be useful to disable the restart so that the clusterware can gain control and take any actions it deems appropriate. +

    This parameter can only be set in the postgresql.conf + file or on the server command line.

    data_sync_retry (boolean)

    When set to false, which is the default, PostgreSQL @@ -32,4 +34,4 @@ operation can be retried in a later checkpoint. Only set it to true after investigating the operating system's treatment of buffered data in case of write-back failure. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-file-locations.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-file-locations.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-file-locations.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-file-locations.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.2. File Locations

    19.2. File Locations

    In addition to the postgresql.conf file +19.2. File Locations

    19.2. File Locations

    In addition to the postgresql.conf file already mentioned, PostgreSQL uses two other manually-edited configuration files, which control client authentication (their use is discussed in Chapter 20). By default, all three @@ -61,4 +61,4 @@

    When setting any of these parameters, a relative path will be interpreted with respect to the directory in which postgres is started. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config.html postgresql-10-10.19/doc/src/sgml/html/runtime-config.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,6 +1,6 @@ -Chapter 19. Server Configuration

    Chapter 19. Server Configuration

    Table of Contents

    19.1. Setting Parameters
    19.1.1. Parameter Names and Values
    19.1.2. Parameter Interaction via the Configuration File
    19.1.3. Parameter Interaction via SQL
    19.1.4. Parameter Interaction via the Shell
    19.1.5. Managing Configuration File Contents
    19.2. File Locations
    19.3. Connections and Authentication
    19.3.1. Connection Settings
    19.3.2. Security and Authentication
    19.4. Resource Consumption
    19.4.1. Memory
    19.4.2. Disk
    19.4.3. Kernel Resource Usage
    19.4.4. Cost-based Vacuum Delay
    19.4.5. Background Writer
    19.4.6. Asynchronous Behavior
    19.5. Write Ahead Log
    19.5.1. Settings
    19.5.2. Checkpoints
    19.5.3. Archiving
    19.6. Replication
    19.6.1. Sending Server(s)
    19.6.2. Master Server
    19.6.3. Standby Servers
    19.6.4. Subscribers
    19.7. Query Planning
    19.7.1. Planner Method Configuration
    19.7.2. Planner Cost Constants
    19.7.3. Genetic Query Optimizer
    19.7.4. Other Planner Options
    19.8. Error Reporting and Logging
    19.8.1. Where To Log
    19.8.2. When To Log
    19.8.3. What To Log
    19.8.4. Using CSV-Format Log Output
    19.8.5. Process Title
    19.9. Run-time Statistics
    19.9.1. Query and Index Statistics Collector
    19.9.2. Statistics Monitoring
    19.10. Automatic Vacuuming
    19.11. Client Connection Defaults
    19.11.1. Statement Behavior
    19.11.2. Locale and Formatting
    19.11.3. Shared Library Preloading
    19.11.4. Other Defaults
    19.12. Lock Management
    19.13. Version and Platform Compatibility
    19.13.1. Previous PostgreSQL Versions
    19.13.2. Platform and Client Compatibility
    19.14. Error Handling
    19.15. Preset Options
    19.16. Customized Options
    19.17. Developer Options
    19.18. Short Options

    There are many configuration parameters that affect the behavior of +Chapter 19. Server Configuration

    Chapter 19. Server Configuration

    Table of Contents

    19.1. Setting Parameters
    19.1.1. Parameter Names and Values
    19.1.2. Parameter Interaction via the Configuration File
    19.1.3. Parameter Interaction via SQL
    19.1.4. Parameter Interaction via the Shell
    19.1.5. Managing Configuration File Contents
    19.2. File Locations
    19.3. Connections and Authentication
    19.3.1. Connection Settings
    19.3.2. Security and Authentication
    19.4. Resource Consumption
    19.4.1. Memory
    19.4.2. Disk
    19.4.3. Kernel Resource Usage
    19.4.4. Cost-based Vacuum Delay
    19.4.5. Background Writer
    19.4.6. Asynchronous Behavior
    19.5. Write Ahead Log
    19.5.1. Settings
    19.5.2. Checkpoints
    19.5.3. Archiving
    19.6. Replication
    19.6.1. Sending Server(s)
    19.6.2. Master Server
    19.6.3. Standby Servers
    19.6.4. Subscribers
    19.7. Query Planning
    19.7.1. Planner Method Configuration
    19.7.2. Planner Cost Constants
    19.7.3. Genetic Query Optimizer
    19.7.4. Other Planner Options
    19.8. Error Reporting and Logging
    19.8.1. Where To Log
    19.8.2. When To Log
    19.8.3. What To Log
    19.8.4. Using CSV-Format Log Output
    19.8.5. Process Title
    19.9. Run-time Statistics
    19.9.1. Query and Index Statistics Collector
    19.9.2. Statistics Monitoring
    19.10. Automatic Vacuuming
    19.11. Client Connection Defaults
    19.11.1. Statement Behavior
    19.11.2. Locale and Formatting
    19.11.3. Shared Library Preloading
    19.11.4. Other Defaults
    19.12. Lock Management
    19.13. Version and Platform Compatibility
    19.13.1. Previous PostgreSQL Versions
    19.13.2. Platform and Client Compatibility
    19.14. Error Handling
    19.15. Preset Options
    19.16. Customized Options
    19.17. Developer Options
    19.18. Short Options

    There are many configuration parameters that affect the behavior of the database system. In the first section of this chapter we describe how to interact with configuration parameters. The subsequent sections discuss each parameter in detail. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-locks.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-locks.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-locks.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-locks.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.12. Lock Management

    19.12. Lock Management

    deadlock_timeout (integer) +19.12. Lock Management

    19.12. Lock Management

    deadlock_timeout (integer) @@ -71,4 +71,4 @@ before the lock is promoted to covering the whole page. The default is 2. This parameter can only be set in the postgresql.conf file or on the server command line. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-logging.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-logging.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-logging.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-logging.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.8. Error Reporting and Logging

    19.8. Error Reporting and Logging

    19.8.1. Where To Log

    log_destination (string) +19.8. Error Reporting and Logging

    19.8. Error Reporting and Logging

    19.8.1. Where To Log

    log_destination (string)

    PostgreSQL supports several methods for logging server messages, including @@ -628,4 +628,4 @@ defaults to off on Windows due to that platform's larger overhead for updating the process title. Only superusers can change this setting. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-preset.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-preset.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-preset.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-preset.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.15. Preset Options

    19.15. Preset Options

    The following parameters are read-only, and are determined +19.15. Preset Options

    19.15. Preset Options

    The following parameters are read-only, and are determined when PostgreSQL is compiled or when it is installed. As such, they have been excluded from the sample postgresql.conf file. These options report @@ -95,4 +95,4 @@ wal_segment_size multiplied by wal_block_size; by default this is 16MB. See Section 30.4 for more information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-query.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-query.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-query.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-query.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.7. Query Planning

    19.7. Query Planning

    19.7.1. Planner Method Configuration

    These configuration parameters provide a crude method of +19.7. Query Planning

    19.7. Query Planning

    19.7.1. Planner Method Configuration

    These configuration parameters provide a crude method of influencing the query plans chosen by the query optimizer. If the default plan chosen by the optimizer for a particular query is not optimal, a temporary solution is to use one @@ -373,4 +373,4 @@ the Gather nodes added to plans by this setting are hidden in EXPLAIN output so that the output matches what would be obtained if this setting were turned off. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-replication.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-replication.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-replication.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-replication.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.6. Replication

    19.6. Replication

    These settings control the behavior of the built-in +19.6. Replication

    19.6. Replication

    These settings control the behavior of the built-in streaming replication feature (see Section 26.2.5). Servers will be either a Master or a Standby server. Masters can send data, while Standby(s) @@ -331,7 +331,8 @@ both apply workers and table synchronization workers.

    Logical replication workers are taken from the pool defined by max_worker_processes. -

    The default value is 4. +

    The default value is 4. This parameter can only be set at server + start.

    max_sync_workers_per_subscription (integer)

    Maximum number of synchronization workers per subscription. This @@ -340,5 +341,7 @@

    Currently, there can be only one synchronization worker per table.

    The synchronization workers are taken from the pool defined by max_logical_replication_workers. -

    The default value is 2. -

    \ No newline at end of file +

    The default value is 2. This parameter can only be set in the + postgresql.conf file or on the server command + line. +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-resource.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-resource.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-resource.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-resource.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.4. Resource Consumption

    19.4. Resource Consumption

    19.4.1. Memory

    shared_buffers (integer) +19.4. Resource Consumption

    19.4. Resource Consumption

    19.4.1. Memory

    shared_buffers (integer)

    Sets the amount of memory the database server uses for shared memory buffers. The default is typically 128 megabytes @@ -102,6 +102,9 @@ may be allocated, so be careful not to set the default value too high. It may be useful to control for this by separately setting autovacuum_work_mem. +

    Note that for the collection of dead tuple identifiers, + VACUUM is only able to utilize up to a maximum of + 1GB of memory.

    replacement_sort_tuples (integer)

    When the number of tuples to be sorted is smaller than this number, @@ -134,6 +137,14 @@ the value of maintenance_work_mem should be used instead. The setting has no effect on the behavior of VACUUM when run in other contexts. + This parameter can only be set in the + postgresql.conf file or on the server command + line. +

    For the collection of dead tuple identifiers, autovacuum is only able + to utilize up to a maximum of 1GB of memory, so + setting autovacuum_work_mem to a value higher than + that has no effect on the number of dead tuples that autovacuum can + collect while scanning a table.

    max_stack_depth (integer)

    Specifies the maximum safe depth of the server's execution stack. @@ -472,4 +483,4 @@ affected by this setting, such as system catalogs. For such tables this setting will neither reduce bloat nor create a possibility of a snapshot too old error on scanning. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-short.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-short.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-short.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-short.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.18. Short Options

    19.18. Short Options

    For convenience there are also single letter command-line option +19.18. Short Options

    19.18. Short Options

    For convenience there are also single letter command-line option switches available for some parameters. They are described in Table 19.3. Some of these options exist for historical reasons, and their presence as a @@ -18,4 +18,4 @@ enable_tidscan = off -Ffsync = off-h xlisten_addresses = x-ilisten_addresses = '*'-k xunix_socket_directories = x-lssl = on-N xmax_connections = x-Oallow_system_table_mods = on-p xport = x-Pignore_system_indexes = on-slog_statement_stats = on-S xwork_mem = x-tpa, -tpl, -telog_parser_stats = on, log_planner_stats = on, - log_executor_stats = on-W xpost_auth_delay = x


    \ No newline at end of file + log_executor_stats = on-W xpost_auth_delay = x
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-statistics.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-statistics.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-statistics.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-statistics.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.9. Run-time Statistics

    19.9. Run-time Statistics

    19.9.1. Query and Index Statistics Collector

    These parameters control server-wide statistics collection features. +19.9. Run-time Statistics

    19.9. Run-time Statistics

    19.9.1. Query and Index Statistics Collector

    These parameters control server-wide statistics collection features. When statistics collection is enabled, the data that is produced can be accessed via the pg_stat and pg_statio family of system views. @@ -74,4 +74,4 @@ log_statement_stats cannot be enabled together with any of the per-module options. All of these options are disabled by default. Only superusers can change these settings. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime-config-wal.html postgresql-10-10.19/doc/src/sgml/html/runtime-config-wal.html --- postgresql-10-10.17/doc/src/sgml/html/runtime-config-wal.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime-config-wal.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -19.5. Write Ahead Log

    19.5. Write Ahead Log

    For additional information on tuning these settings, +19.5. Write Ahead Log

    19.5. Write Ahead Log

    For additional information on tuning these settings, see Section 30.4.

    19.5.1. Settings

    wal_level (enum) @@ -411,4 +411,4 @@ server more quickly than that. This parameter can only be set in the postgresql.conf file or on the server command line. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/runtime.html postgresql-10-10.19/doc/src/sgml/html/runtime.html --- postgresql-10-10.17/doc/src/sgml/html/runtime.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/runtime.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 18. Server Setup and Operation

    Chapter 18. Server Setup and Operation

    This chapter discusses how to set up and run the database server +Chapter 18. Server Setup and Operation

    \ No newline at end of file + Microsoft Windows SDK Home 18.1. The PostgreSQL User Account
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sasl-authentication.html postgresql-10-10.19/doc/src/sgml/html/sasl-authentication.html --- postgresql-10-10.17/doc/src/sgml/html/sasl-authentication.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sasl-authentication.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -52.3. SASL Authentication

    52.3. SASL Authentication

    SASL is a framework for authentication in connection-oriented +52.3. SASL Authentication

    52.3. SASL Authentication

    SASL is a framework for authentication in connection-oriented protocols. At the moment, PostgreSQL implements only one SASL authentication mechanism, SCRAM-SHA-256, but more might be added in the future. The below steps illustrate how SASL authentication is performed in @@ -47,4 +47,4 @@ server-first-message as the content.

  • Client sends a SASLResponse message, with SCRAM client-final-message as the content.

  • Server sends an AuthenticationSASLFinal message, with the SCRAM server-final-message, followed immediately by - an AuthenticationOk message.

  • \ No newline at end of file + an AuthenticationOk message.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/seg.html postgresql-10-10.19/doc/src/sgml/html/seg.html --- postgresql-10-10.17/doc/src/sgml/html/seg.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/seg.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.35. seg

    F.35. seg

    This module implements a data type seg for +F.35. seg

    F.35. seg

    This module implements a data type seg for representing line segments, or floating point intervals. seg can represent uncertainty in the interval endpoints, making it especially useful for representing laboratory measurements. @@ -141,4 +141,4 @@ myself to create my own world and live undisturbed in it. And I would like to acknowledge my gratitude to Argonne Lab and to the U.S. Department of Energy for the years of faithful support of my database research. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sepgsql.html postgresql-10-10.19/doc/src/sgml/html/sepgsql.html --- postgresql-10-10.17/doc/src/sgml/html/sepgsql.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sepgsql.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.36. sepgsql

    F.36. sepgsql

    sepgsql is a loadable module that supports label-based +F.36. sepgsql

    F.36. sepgsql

    sepgsql is a loadable module that supports label-based mandatory access control (MAC) based on SELinux security policy.

    Warning

    The current implementation has significant limitations, and does not @@ -382,11 +382,11 @@ contents.

    F.36.8. External Resources

    SE-PostgreSQL Introduction

    This wiki page provides a brief overview, security design, architecture, administration and upcoming features. -

    SELinux User's and Administrator's Guide

    This document provides a wide spectrum of knowledge to administer +

    SELinux User's and Administrator's Guide

    This document provides a wide spectrum of knowledge to administer SELinux on your systems. It focuses primarily on Red Hat operating systems, but is not limited to them.

    Fedora SELinux FAQ

    This document answers frequently asked questions about SELinux. It focuses primarily on Fedora, but is not limited to Fedora.

    F.36.9. Author

    KaiGai Kohei -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/server-programming.html postgresql-10-10.19/doc/src/sgml/html/server-programming.html --- postgresql-10-10.17/doc/src/sgml/html/server-programming.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/server-programming.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -Part V. Server Programming

    Part V. Server Programming

    This part is about extending the server functionality with +Part V. Server Programming

    Part V. Server Programming

    This part is about extending the server functionality with user-defined functions, data types, triggers, etc. These are advanced topics which should probably be approached only after all the other user documentation about PostgreSQL has @@ -9,4 +9,4 @@ general issues concerning server-side programming languages. It is essential to read at least the earlier sections of Chapter 37 (covering functions) before diving into the material about server-side programming languages. -

    Table of Contents

    37. Extending SQL
    37.1. How Extensibility Works
    37.2. The PostgreSQL Type System
    37.3. User-defined Functions
    37.4. Query Language (SQL) Functions
    37.5. Function Overloading
    37.6. Function Volatility Categories
    37.7. Procedural Language Functions
    37.8. Internal Functions
    37.9. C-Language Functions
    37.10. User-defined Aggregates
    37.11. User-defined Types
    37.12. User-defined Operators
    37.13. Operator Optimization Information
    37.14. Interfacing Extensions To Indexes
    37.15. Packaging Related Objects into an Extension
    37.16. Extension Building Infrastructure
    38. Triggers
    38.1. Overview of Trigger Behavior
    38.2. Visibility of Data Changes
    38.3. Writing Trigger Functions in C
    38.4. A Complete Trigger Example
    39. Event Triggers
    39.1. Overview of Event Trigger Behavior
    39.2. Event Trigger Firing Matrix
    39.3. Writing Event Trigger Functions in C
    39.4. A Complete Event Trigger Example
    39.5. A Table Rewrite Event Trigger Example
    40. The Rule System
    40.1. The Query Tree
    40.2. Views and the Rule System
    40.3. Materialized Views
    40.4. Rules on INSERT, UPDATE, and DELETE
    40.5. Rules and Privileges
    40.6. Rules and Command Status
    40.7. Rules Versus Triggers
    41. Procedural Languages
    41.1. Installing Procedural Languages
    42. PL/pgSQL - SQL Procedural Language
    42.1. Overview
    42.2. Structure of PL/pgSQL
    42.3. Declarations
    42.4. Expressions
    42.5. Basic Statements
    42.6. Control Structures
    42.7. Cursors
    42.8. Errors and Messages
    42.9. Trigger Procedures
    42.10. PL/pgSQL Under the Hood
    42.11. Tips for Developing in PL/pgSQL
    42.12. Porting from Oracle PL/SQL
    43. PL/Tcl - Tcl Procedural Language
    43.1. Overview
    43.2. PL/Tcl Functions and Arguments
    43.3. Data Values in PL/Tcl
    43.4. Global Data in PL/Tcl
    43.5. Database Access from PL/Tcl
    43.6. Trigger Procedures in PL/Tcl
    43.7. Event Trigger Procedures in PL/Tcl
    43.8. Error Handling in PL/Tcl
    43.9. Explicit Subtransactions in PL/Tcl
    43.10. PL/Tcl Configuration
    43.11. Tcl Procedure Names
    44. PL/Perl - Perl Procedural Language
    44.1. PL/Perl Functions and Arguments
    44.2. Data Values in PL/Perl
    44.3. Built-in Functions
    44.4. Global Values in PL/Perl
    44.5. Trusted and Untrusted PL/Perl
    44.6. PL/Perl Triggers
    44.7. PL/Perl Event Triggers
    44.8. PL/Perl Under the Hood
    45. PL/Python - Python Procedural Language
    45.1. Python 2 vs. Python 3
    45.2. PL/Python Functions
    45.3. Data Values
    45.4. Sharing Data
    45.5. Anonymous Code Blocks
    45.6. Trigger Functions
    45.7. Database Access
    45.8. Explicit Subtransactions
    45.9. Utility Functions
    45.10. Environment Variables
    46. Server Programming Interface
    46.1. Interface Functions
    46.2. Interface Support Functions
    46.3. Memory Management
    46.4. Visibility of Data Changes
    46.5. Examples
    47. Background Worker Processes
    48. Logical Decoding
    48.1. Logical Decoding Examples
    48.2. Logical Decoding Concepts
    48.3. Streaming Replication Protocol Interface
    48.4. Logical Decoding SQL Interface
    48.5. System Catalogs Related to Logical Decoding
    48.6. Logical Decoding Output Plugins
    48.7. Logical Decoding Output Writers
    48.8. Synchronous Replication Support for Logical Decoding
    49. Replication Progress Tracking
    \ No newline at end of file +

    Table of Contents

    37. Extending SQL
    37.1. How Extensibility Works
    37.2. The PostgreSQL Type System
    37.3. User-defined Functions
    37.4. Query Language (SQL) Functions
    37.5. Function Overloading
    37.6. Function Volatility Categories
    37.7. Procedural Language Functions
    37.8. Internal Functions
    37.9. C-Language Functions
    37.10. User-defined Aggregates
    37.11. User-defined Types
    37.12. User-defined Operators
    37.13. Operator Optimization Information
    37.14. Interfacing Extensions To Indexes
    37.15. Packaging Related Objects into an Extension
    37.16. Extension Building Infrastructure
    38. Triggers
    38.1. Overview of Trigger Behavior
    38.2. Visibility of Data Changes
    38.3. Writing Trigger Functions in C
    38.4. A Complete Trigger Example
    39. Event Triggers
    39.1. Overview of Event Trigger Behavior
    39.2. Event Trigger Firing Matrix
    39.3. Writing Event Trigger Functions in C
    39.4. A Complete Event Trigger Example
    39.5. A Table Rewrite Event Trigger Example
    40. The Rule System
    40.1. The Query Tree
    40.2. Views and the Rule System
    40.3. Materialized Views
    40.4. Rules on INSERT, UPDATE, and DELETE
    40.5. Rules and Privileges
    40.6. Rules and Command Status
    40.7. Rules Versus Triggers
    41. Procedural Languages
    41.1. Installing Procedural Languages
    42. PL/pgSQL - SQL Procedural Language
    42.1. Overview
    42.2. Structure of PL/pgSQL
    42.3. Declarations
    42.4. Expressions
    42.5. Basic Statements
    42.6. Control Structures
    42.7. Cursors
    42.8. Errors and Messages
    42.9. Trigger Procedures
    42.10. PL/pgSQL Under the Hood
    42.11. Tips for Developing in PL/pgSQL
    42.12. Porting from Oracle PL/SQL
    43. PL/Tcl - Tcl Procedural Language
    43.1. Overview
    43.2. PL/Tcl Functions and Arguments
    43.3. Data Values in PL/Tcl
    43.4. Global Data in PL/Tcl
    43.5. Database Access from PL/Tcl
    43.6. Trigger Procedures in PL/Tcl
    43.7. Event Trigger Procedures in PL/Tcl
    43.8. Error Handling in PL/Tcl
    43.9. Explicit Subtransactions in PL/Tcl
    43.10. PL/Tcl Configuration
    43.11. Tcl Procedure Names
    44. PL/Perl - Perl Procedural Language
    44.1. PL/Perl Functions and Arguments
    44.2. Data Values in PL/Perl
    44.3. Built-in Functions
    44.4. Global Values in PL/Perl
    44.5. Trusted and Untrusted PL/Perl
    44.6. PL/Perl Triggers
    44.7. PL/Perl Event Triggers
    44.8. PL/Perl Under the Hood
    45. PL/Python - Python Procedural Language
    45.1. Python 2 vs. Python 3
    45.2. PL/Python Functions
    45.3. Data Values
    45.4. Sharing Data
    45.5. Anonymous Code Blocks
    45.6. Trigger Functions
    45.7. Database Access
    45.8. Explicit Subtransactions
    45.9. Utility Functions
    45.10. Environment Variables
    46. Server Programming Interface
    46.1. Interface Functions
    46.2. Interface Support Functions
    46.3. Memory Management
    46.4. Visibility of Data Changes
    46.5. Examples
    47. Background Worker Processes
    48. Logical Decoding
    48.1. Logical Decoding Examples
    48.2. Logical Decoding Concepts
    48.3. Streaming Replication Protocol Interface
    48.4. Logical Decoding SQL Interface
    48.5. System Catalogs Related to Logical Decoding
    48.6. Logical Decoding Output Plugins
    48.7. Logical Decoding Output Writers
    48.8. Synchronous Replication Support for Logical Decoding
    49. Replication Progress Tracking
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/server-shutdown.html postgresql-10-10.19/doc/src/sgml/html/server-shutdown.html --- postgresql-10-10.17/doc/src/sgml/html/server-shutdown.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/server-shutdown.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.5. Shutting Down the Server

    18.5. Shutting Down the Server

    There are several ways to shut down the database server. You control +18.5. Shutting Down the Server

    18.5. Shutting Down the Server

    There are several ways to shut down the database server. You control the type of shutdown by sending different signals to the master postgres process. @@ -52,4 +52,4 @@ continue, use pg_terminate_backend() (see Table 9.78) or send a SIGTERM signal to the child process associated with the session. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/server-start.html postgresql-10-10.19/doc/src/sgml/html/server-start.html --- postgresql-10-10.17/doc/src/sgml/html/server-start.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/server-start.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.3. Starting the Database Server

    18.3. Starting the Database Server

    Before anyone can access the database, you must start the database +18.3. Starting the Database Server

    18.3. Starting the Database Server

    Before anyone can access the database, you must start the database server. The database server program is called postgres. The postgres program must know where to @@ -196,4 +196,4 @@ such as Connection timed out might indicate more fundamental problems, like lack of network connectivity. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/source-conventions.html postgresql-10-10.19/doc/src/sgml/html/source-conventions.html --- postgresql-10-10.17/doc/src/sgml/html/source-conventions.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/source-conventions.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -53.4. Miscellaneous Coding Conventions

    53.4. Miscellaneous Coding Conventions

    C Standard

    Code in PostgreSQL should only rely on language +53.4. Miscellaneous Coding Conventions

    53.4. Miscellaneous Coding Conventions

    C Standard

    Code in PostgreSQL should only rely on language features available in the C89 standard. That means a conforming C89 compiler has to be able to compile postgres, at least aside from a few platform dependent pieces. Features from later @@ -68,4 +68,4 @@ SetLatch() might change it. If that were not done interrupted code that's currently inspecting errno might see the wrong value. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/source-format.html postgresql-10-10.19/doc/src/sgml/html/source-format.html --- postgresql-10-10.17/doc/src/sgml/html/source-format.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/source-format.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -53.1. Formatting

    53.1. Formatting

    Source code formatting uses 4 column tab spacing, with +53.1. Formatting

    53.1. Formatting

    Source code formatting uses 4 column tab spacing, with tabs preserved (i.e., tabs are not expanded to spaces). Each logical indentation level is one additional tab stop.

    Layout rules (brace positioning, etc) follow BSD conventions. In @@ -42,4 +42,4 @@

    more -x4
     less -x4

    to make them show tabs appropriately. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/source.html postgresql-10-10.19/doc/src/sgml/html/source.html --- postgresql-10-10.17/doc/src/sgml/html/source.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/source.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 53. PostgreSQL Coding Conventions \ No newline at end of file +Chapter 53. PostgreSQL Coding Conventions \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sourcerepo.html postgresql-10-10.19/doc/src/sgml/html/sourcerepo.html --- postgresql-10-10.17/doc/src/sgml/html/sourcerepo.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sourcerepo.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix I. The Source Code Repository

    Appendix I. The Source Code Repository

    The PostgreSQL source code is stored and managed +Appendix I. The Source Code Repository

    Appendix I. The Source Code Repository

    The PostgreSQL source code is stored and managed using the Git version control system. A public mirror of the master repository is available; it is updated within a minute of any change to the master repository. @@ -11,4 +11,4 @@ to build from a distribution tarball, because the files that these tools are used to build are included in the tarball. Other tool requirements are the same as shown in Section 16.2. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spgist-builtin-opclasses.html postgresql-10-10.19/doc/src/sgml/html/spgist-builtin-opclasses.html --- postgresql-10-10.17/doc/src/sgml/html/spgist-builtin-opclasses.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spgist-builtin-opclasses.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -63.2. Built-in Operator Classes

    63.2. Built-in Operator Classes

    The core PostgreSQL distribution +63.2. Built-in Operator Classes

    63.2. Built-in Operator Classes

    The core PostgreSQL distribution includes the SP-GiST operator classes shown in Table 63.1.

    Table 63.1. Built-in SP-GiST Operator Classes

    NameIndexed Data TypeIndexable Operators
    kd_point_opspoint << @@ -59,4 +59,4 @@ quad_point_ops is the default. kd_point_ops supports the same operators but uses a different index data structure that may offer better performance in some applications. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spgist-examples.html postgresql-10-10.19/doc/src/sgml/html/spgist-examples.html --- postgresql-10-10.17/doc/src/sgml/html/spgist-examples.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spgist-examples.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,7 +1,7 @@ -63.5. Examples

    63.5. Examples

    The PostgreSQL source distribution includes +63.5. Examples

    63.5. Examples

    The PostgreSQL source distribution includes several examples of index operator classes for SP-GiST, as described in Table 63.1. Look into src/backend/access/spgist/ and src/backend/utils/adt/ to see the code. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spgist-extensibility.html postgresql-10-10.19/doc/src/sgml/html/spgist-extensibility.html --- postgresql-10-10.17/doc/src/sgml/html/spgist-extensibility.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spgist-extensibility.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -63.3. Extensibility

    63.3. Extensibility

    SP-GiST offers an interface with a high level of +63.3. Extensibility

    63.3. Extensibility

    SP-GiST offers an interface with a high level of abstraction, requiring the access method developer to implement only methods specific to a given data type. The SP-GiST core is responsible for efficient disk mapping and searching the tree structure. @@ -459,4 +459,4 @@

    If the indexed column is of a collatable data type, the index collation will be passed to all the support methods, using the standard PG_GET_COLLATION() mechanism. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spgist.html postgresql-10-10.19/doc/src/sgml/html/spgist.html --- postgresql-10-10.17/doc/src/sgml/html/spgist.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spgist.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 63. SP-GiST Indexes \ No newline at end of file +Chapter 63. SP-GiST Indexes \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spgist-implementation.html postgresql-10-10.19/doc/src/sgml/html/spgist-implementation.html --- postgresql-10-10.17/doc/src/sgml/html/spgist-implementation.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spgist-implementation.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -63.4. Implementation

    63.4. Implementation

    This section covers implementation details and other tricks that are +63.4. Implementation

    63.4. Implementation

    This section covers implementation details and other tricks that are useful for implementers of SP-GiST operator classes to know.

    63.4.1. SP-GiST Limits

    Individual leaf tuples and inner tuples must fit on a single index page @@ -26,6 +26,15 @@ node group. If the operator class's picksplit function fails to do that, the SP-GiST core resorts to extraordinary measures described in Section 63.4.3. +

    When longValuesOK is true, it is expected + that successive levels of the SP-GiST tree will + absorb more and more information into the prefixes and node labels of + the inner tuples, making the required leaf datum smaller and smaller, + so that eventually it will fit on a page. + To prevent bugs in operator classes from causing infinite insertion + loops, the SP-GiST core will raise an error if the + leaf datum does not become any smaller within ten cycles + of choose method calls.

    63.4.2. SP-GiST Without Node Labels

    Some tree algorithms use a fixed set of nodes for each inner tuple; for example, in a quad-tree there are always exactly four nodes corresponding to the four quadrants around the inner tuple's centroid @@ -68,4 +77,4 @@ all equivalent. This may or may not require any special-case code, depending on how much the inner_consistent function normally assumes about the meaning of the nodes. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spgist-intro.html postgresql-10-10.19/doc/src/sgml/html/spgist-intro.html --- postgresql-10-10.17/doc/src/sgml/html/spgist-intro.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spgist-intro.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -63.1. Introduction

    63.1. Introduction

    SP-GiST is an abbreviation for space-partitioned +63.1. Introduction

    63.1. Introduction

    SP-GiST is an abbreviation for space-partitioned GiST. SP-GiST supports partitioned search trees, which facilitate development of a wide range of different non-balanced data structures, such as quad-trees, k-d trees, and radix @@ -27,4 +27,4 @@ Sigaev and Oleg Bartunov, and there is more information on their web site. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-examples.html postgresql-10-10.19/doc/src/sgml/html/spi-examples.html --- postgresql-10-10.17/doc/src/sgml/html/spi-examples.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-examples.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -46.5. Examples

    46.5. Examples

    This section contains a very simple example of SPI usage. The +46.5. Examples

    46.5. Examples

    This section contains a very simple example of SPI usage. The procedure execq takes an SQL command as its first argument and a row count as its second, executes the command using SPI_exec and returns the number of rows @@ -142,4 +142,4 @@ 6 -- 3 rows (2 + 1 just inserted) * 2 (x in second row) (4 rows) ^^^^^^ rows visible to execq() in different invocations

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi.html postgresql-10-10.19/doc/src/sgml/html/spi.html --- postgresql-10-10.17/doc/src/sgml/html/spi.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 46. Server Programming Interface

    Chapter 46. Server Programming Interface

    Table of Contents

    46.1. Interface Functions
    SPI_connect — connect a procedure to the SPI manager
    SPI_finish — disconnect a procedure from the SPI manager
    SPI_execute — execute a command
    SPI_exec — execute a read/write command
    SPI_execute_with_args — execute a command with out-of-line parameters
    SPI_prepare — prepare a statement, without executing it yet
    SPI_prepare_cursor — prepare a statement, without executing it yet
    SPI_prepare_params — prepare a statement, without executing it yet
    SPI_getargcount — return the number of arguments needed by a statement +Chapter 46. Server Programming Interface

    Chapter 46. Server Programming Interface

    Table of Contents

    46.1. Interface Functions
    SPI_connect — connect a procedure to the SPI manager
    SPI_finish — disconnect a procedure from the SPI manager
    SPI_execute — execute a command
    SPI_exec — execute a read/write command
    SPI_execute_with_args — execute a command with out-of-line parameters
    SPI_prepare — prepare a statement, without executing it yet
    SPI_prepare_cursor — prepare a statement, without executing it yet
    SPI_prepare_params — prepare a statement, without executing it yet
    SPI_getargcount — return the number of arguments needed by a statement prepared by SPI_prepare
    SPI_getargtypeid — return the data type OID for an argument of a statement prepared by SPI_prepare
    SPI_is_cursor_plan — return true if a statement prepared by SPI_prepare can be used with @@ -34,4 +34,4 @@ error, a negative result or NULL will be returned.

    Source code files that use SPI must include the header file executor/spi.h. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-interface.html postgresql-10-10.19/doc/src/sgml/html/spi-interface.html --- postgresql-10-10.17/doc/src/sgml/html/spi-interface.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-interface.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,6 +1,6 @@ -46.1. Interface Functions

    46.1. Interface Functions

    SPI_connect — connect a procedure to the SPI manager
    SPI_finish — disconnect a procedure from the SPI manager
    SPI_execute — execute a command
    SPI_exec — execute a read/write command
    SPI_execute_with_args — execute a command with out-of-line parameters
    SPI_prepare — prepare a statement, without executing it yet
    SPI_prepare_cursor — prepare a statement, without executing it yet
    SPI_prepare_params — prepare a statement, without executing it yet
    SPI_getargcount — return the number of arguments needed by a statement +46.1. Interface Functions

    46.1. Interface Functions

    SPI_connect — connect a procedure to the SPI manager
    SPI_finish — disconnect a procedure from the SPI manager
    SPI_execute — execute a command
    SPI_exec — execute a read/write command
    SPI_execute_with_args — execute a command with out-of-line parameters
    SPI_prepare — prepare a statement, without executing it yet
    SPI_prepare_cursor — prepare a statement, without executing it yet
    SPI_prepare_params — prepare a statement, without executing it yet
    SPI_getargcount — return the number of arguments needed by a statement prepared by SPI_prepare
    SPI_getargtypeid — return the data type OID for an argument of a statement prepared by SPI_prepare
    SPI_is_cursor_plan — return true if a statement prepared by SPI_prepare can be used with - SPI_cursor_open
    SPI_execute_plan — execute a statement prepared by SPI_prepare
    SPI_execute_plan_with_paramlist — execute a statement prepared by SPI_prepare
    SPI_execp — execute a statement in read/write mode
    SPI_cursor_open — set up a cursor using a statement created with SPI_prepare
    SPI_cursor_open_with_args — set up a cursor using a query and parameters
    SPI_cursor_open_with_paramlist — set up a cursor using parameters
    SPI_cursor_find — find an existing cursor by name
    SPI_cursor_fetch — fetch some rows from a cursor
    SPI_cursor_move — move a cursor
    SPI_scroll_cursor_fetch — fetch some rows from a cursor
    SPI_scroll_cursor_move — move a cursor
    SPI_cursor_close — close a cursor
    SPI_keepplan — save a prepared statement
    SPI_saveplan — save a prepared statement
    SPI_register_relation — make an ephemeral named relation available by name in SPI queries
    SPI_unregister_relation — remove an ephemeral named relation from the registry
    SPI_register_trigger_data — make ephemeral trigger data available in SPI queries
    \ No newline at end of file + SPI_cursor_open
    SPI_execute_plan — execute a statement prepared by SPI_prepare
    SPI_execute_plan_with_paramlist — execute a statement prepared by SPI_prepare
    SPI_execp — execute a statement in read/write mode
    SPI_cursor_open — set up a cursor using a statement created with SPI_prepare
    SPI_cursor_open_with_args — set up a cursor using a query and parameters
    SPI_cursor_open_with_paramlist — set up a cursor using parameters
    SPI_cursor_find — find an existing cursor by name
    SPI_cursor_fetch — fetch some rows from a cursor
    SPI_cursor_move — move a cursor
    SPI_scroll_cursor_fetch — fetch some rows from a cursor
    SPI_scroll_cursor_move — move a cursor
    SPI_cursor_close — close a cursor
    SPI_keepplan — save a prepared statement
    SPI_saveplan — save a prepared statement
    SPI_register_relation — make an ephemeral named relation available by name in SPI queries
    SPI_unregister_relation — remove an ephemeral named relation from the registry
    SPI_register_trigger_data — make ephemeral trigger data available in SPI queries
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-interface-support.html postgresql-10-10.19/doc/src/sgml/html/spi-interface-support.html --- postgresql-10-10.17/doc/src/sgml/html/spi-interface-support.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-interface-support.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,7 +1,7 @@ -46.2. Interface Support Functions

    46.2. Interface Support Functions

    SPI_fname — determine the column name for the specified column number
    SPI_fnumber — determine the column number for the specified column name
    SPI_getvalue — return the string value of the specified column
    SPI_getbinval — return the binary value of the specified column
    SPI_gettype — return the data type name of the specified column
    SPI_gettypeid — return the data type OID of the specified column
    SPI_getrelname — return the name of the specified relation
    SPI_getnspname — return the namespace of the specified relation

    The functions described here provide an interface for extracting +46.2. Interface Support Functions

    46.2. Interface Support Functions

    SPI_fname — determine the column name for the specified column number
    SPI_fnumber — determine the column number for the specified column name
    SPI_getvalue — return the string value of the specified column
    SPI_getbinval — return the binary value of the specified column
    SPI_gettype — return the data type name of the specified column
    SPI_gettypeid — return the data type OID of the specified column
    SPI_getrelname — return the name of the specified relation
    SPI_getnspname — return the namespace of the specified relation

    The functions described here provide an interface for extracting information from result sets returned by SPI_execute and other SPI functions.

    All functions described in this section can be used by both connected and unconnected procedures. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-memory.html postgresql-10-10.19/doc/src/sgml/html/spi-memory.html --- postgresql-10-10.17/doc/src/sgml/html/spi-memory.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-memory.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -46.3. Memory Management

    46.3. Memory Management

    SPI_palloc — allocate memory in the upper executor context
    SPI_repalloc — reallocate memory in the upper executor context
    SPI_pfree — free memory in the upper executor context
    SPI_copytuple — make a copy of a row in the upper executor context
    SPI_returntuple — prepare to return a tuple as a Datum
    SPI_modifytuple — create a row by replacing selected fields of a given row
    SPI_freetuple — free a row allocated in the upper executor context
    SPI_freetuptable — free a row set created by SPI_execute or a similar +46.3. Memory Management

    46.3. Memory Management

    SPI_palloc — allocate memory in the upper executor context
    SPI_repalloc — reallocate memory in the upper executor context
    SPI_pfree — free memory in the upper executor context
    SPI_copytuple — make a copy of a row in the upper executor context
    SPI_returntuple — prepare to return a tuple as a Datum
    SPI_modifytuple — create a row by replacing selected fields of a given row
    SPI_freetuple — free a row allocated in the upper executor context
    SPI_freetuptable — free a row set created by SPI_execute or a similar function
    SPI_freeplan — free a previously saved prepared statement

    PostgreSQL allocates memory within memory contexts, which provide a convenient method of @@ -39,4 +39,4 @@ SPI_finish) the current context is restored to the upper executor context, and all allocations made in the procedure memory context are freed and cannot be used any more. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-realloc.html postgresql-10-10.19/doc/src/sgml/html/spi-realloc.html --- postgresql-10-10.17/doc/src/sgml/html/spi-realloc.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-realloc.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_repalloc

    SPI_repalloc

    SPI_repalloc — reallocate memory in the upper executor context

    Synopsis

    void * SPI_repalloc(void * pointer, Size size)

    Description

    SPI_repalloc changes the size of a memory +SPI_repalloc

    SPI_repalloc

    SPI_repalloc — reallocate memory in the upper executor context

    Synopsis

    void * SPI_repalloc(void * pointer, Size size)

    Description

    SPI_repalloc changes the size of a memory segment previously allocated using SPI_palloc.

    This function is no longer different from plain repalloc. It's kept just for backward @@ -8,4 +8,4 @@

    Size size

    size in bytes of storage to allocate

    Return Value

    pointer to new storage space of specified size with the contents copied from the existing area -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-connect.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-connect.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-connect.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-connect.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,8 +1,8 @@ -SPI_connect

    SPI_connect

    SPI_connect — connect a procedure to the SPI manager

    Synopsis

    int SPI_connect(void)

    Description

    SPI_connect opens a connection from a +SPI_connect

    SPI_connect

    SPI_connect — connect a procedure to the SPI manager

    Synopsis

    int SPI_connect(void)

    Description

    SPI_connect opens a connection from a procedure invocation to the SPI manager. You must call this function if you want to execute commands through SPI. Some utility SPI functions can be called from unconnected procedures.

    Return Value

    SPI_OK_CONNECT

    on success

    SPI_ERROR_CONNECT

    on error -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-copytuple.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-copytuple.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-copytuple.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-copytuple.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_copytuple

    SPI_copytuple

    SPI_copytuple — make a copy of a row in the upper executor context

    Synopsis

    HeapTuple SPI_copytuple(HeapTuple row)

    Description

    SPI_copytuple makes a copy of a row in the +SPI_copytuple

    SPI_copytuple

    SPI_copytuple — make a copy of a row in the upper executor context

    Synopsis

    HeapTuple SPI_copytuple(HeapTuple row)

    Description

    SPI_copytuple makes a copy of a row in the upper executor context. This is normally used to return a modified row from a trigger. In a function declared to return a composite type, use SPI_returntuple instead. @@ -9,4 +9,4 @@

    Arguments

    HeapTuple row

    row to be copied

    Return Value

    the copied row, or NULL on error (see SPI_result for an error indication) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-close.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-close.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-close.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-close.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,8 +1,8 @@ -SPI_cursor_close

    SPI_cursor_close

    SPI_cursor_close — close a cursor

    Synopsis

    void SPI_cursor_close(Portal portal)

    Description

    SPI_cursor_close closes a previously created +SPI_cursor_close

    SPI_cursor_close

    SPI_cursor_close — close a cursor

    Synopsis

    void SPI_cursor_close(Portal portal)

    Description

    SPI_cursor_close closes a previously created cursor and releases its portal storage.

    All open cursors are closed automatically at the end of a transaction. SPI_cursor_close need only be invoked if it is desirable to release resources sooner.

    Arguments

    Portal portal

    portal containing the cursor -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-fetch.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-fetch.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-fetch.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-fetch.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_cursor_fetch

    SPI_cursor_fetch

    SPI_cursor_fetch — fetch some rows from a cursor

    Synopsis

    void SPI_cursor_fetch(Portal portal, bool forward, long count)

    Description

    SPI_cursor_fetch fetches some rows from a +SPI_cursor_fetch

    SPI_cursor_fetch

    SPI_cursor_fetch — fetch some rows from a cursor

    Synopsis

    void SPI_cursor_fetch(Portal portal, bool forward, long count)

    Description

    SPI_cursor_fetch fetches some rows from a cursor. This is equivalent to a subset of the SQL command FETCH (see SPI_scroll_cursor_fetch for more functionality). @@ -11,4 +11,4 @@ SPI_execute if successful.

    Notes

    Fetching backward may fail if the cursor's plan was not created with the CURSOR_OPT_SCROLL option. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-find.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-find.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-find.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-find.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,8 +1,8 @@ -SPI_cursor_find

    SPI_cursor_find

    SPI_cursor_find — find an existing cursor by name

    Synopsis

    Portal SPI_cursor_find(const char * name)

    Description

    SPI_cursor_find finds an existing portal by +SPI_cursor_find

    SPI_cursor_find

    SPI_cursor_find — find an existing cursor by name

    Synopsis

    Portal SPI_cursor_find(const char * name)

    Description

    SPI_cursor_find finds an existing portal by name. This is primarily useful to resolve a cursor name returned as text by some other function.

    Arguments

    const char * name

    name of the portal

    Return Value

    pointer to the portal with the specified name, or NULL if none was found -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-move.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-move.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-move.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-move.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_cursor_move

    SPI_cursor_move

    SPI_cursor_move — move a cursor

    Synopsis

    void SPI_cursor_move(Portal portal, bool forward, long count)

    Description

    SPI_cursor_move skips over some number of rows +SPI_cursor_move

    SPI_cursor_move

    SPI_cursor_move — move a cursor

    Synopsis

    void SPI_cursor_move(Portal portal, bool forward, long count)

    Description

    SPI_cursor_move skips over some number of rows in a cursor. This is equivalent to a subset of the SQL command MOVE (see SPI_scroll_cursor_move for more functionality). @@ -8,4 +8,4 @@

    long count

    maximum number of rows to move

    Notes

    Moving backward may fail if the cursor's plan was not created with the CURSOR_OPT_SCROLL option. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-open.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-open.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-open.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-open.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_cursor_open

    SPI_cursor_open

    SPI_cursor_open — set up a cursor using a statement created with SPI_prepare

    Synopsis

    Portal SPI_cursor_open(const char * name, SPIPlanPtr plan,
    +SPI_cursor_open

    SPI_cursor_open

    SPI_cursor_open — set up a cursor using a statement created with SPI_prepare

    Synopsis

    Portal SPI_cursor_open(const char * name, SPIPlanPtr plan,
                            Datum * values, const char * nulls,
                            bool read_only)

    Description

    SPI_cursor_open sets up a cursor (internally, a portal) that will execute a statement prepared by @@ -33,4 +33,4 @@ it does not need a '\0' terminator.

    bool read_only

    true for read-only execution

    Return Value

    Pointer to portal containing the cursor. Note there is no error return convention; any error will be reported via elog. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-open-with-args.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-open-with-args.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-open-with-args.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-open-with-args.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_cursor_open_with_args

    SPI_cursor_open_with_args

    SPI_cursor_open_with_args — set up a cursor using a query and parameters

    Synopsis

    Portal SPI_cursor_open_with_args(const char *name,
    +SPI_cursor_open_with_args

    SPI_cursor_open_with_args

    SPI_cursor_open_with_args — set up a cursor using a query and parameters

    Synopsis

    Portal SPI_cursor_open_with_args(const char *name,
                                      const char *command,
                                      int nargs, Oid *argtypes,
                                      Datum *values, const char *nulls,
    @@ -38,4 +38,4 @@
          

    bool read_only

    true for read-only execution

    int cursorOptions

    integer bit mask of cursor options; zero produces default behavior

    Return Value

    Pointer to portal containing the cursor. Note there is no error return convention; any error will be reported via elog. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-open-with-paramlist.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-open-with-paramlist.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-cursor-open-with-paramlist.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-cursor-open-with-paramlist.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_cursor_open_with_paramlist

    SPI_cursor_open_with_paramlist

    SPI_cursor_open_with_paramlist — set up a cursor using parameters

    Synopsis

    Portal SPI_cursor_open_with_paramlist(const char *name,
    +SPI_cursor_open_with_paramlist

    SPI_cursor_open_with_paramlist

    SPI_cursor_open_with_paramlist — set up a cursor using parameters

    Synopsis

    Portal SPI_cursor_open_with_paramlist(const char *name,
                                           SPIPlanPtr plan,
                                           ParamListInfo params,
                                           bool read_only)

    Description

    SPI_cursor_open_with_paramlist sets up a cursor @@ -19,4 +19,4 @@

    ParamListInfo params

    data structure containing parameter types and values; NULL if none

    bool read_only

    true for read-only execution

    Return Value

    Pointer to portal containing the cursor. Note there is no error return convention; any error will be reported via elog. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-exec.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-exec.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-exec.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-exec.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_exec

    SPI_exec

    SPI_exec — execute a read/write command

    Synopsis

    int SPI_exec(const char * command, long count)

    Description

    SPI_exec is the same as +SPI_exec

    SPI_exec

    SPI_exec — execute a read/write command

    Synopsis

    int SPI_exec(const char * command, long count)

    Description

    SPI_exec is the same as SPI_execute, with the latter's read_only parameter always taken as false. @@ -7,4 +7,4 @@

    long count

    maximum number of rows to return, or 0 for no limit

    Return Value

    See SPI_execute. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-execp.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-execp.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-execp.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-execp.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_execp

    SPI_execp

    SPI_execp — execute a statement in read/write mode

    Synopsis

    int SPI_execp(SPIPlanPtr plan, Datum * values, const char * nulls, long count)

    Description

    SPI_execp is the same as +SPI_execp

    SPI_execp

    SPI_execp — execute a statement in read/write mode

    Synopsis

    int SPI_execp(SPIPlanPtr plan, Datum * values, const char * nulls, long count)

    Description

    SPI_execp is the same as SPI_execute_plan, with the latter's read_only parameter always taken as false. @@ -23,4 +23,4 @@

    SPI_processed and SPI_tuptable are set as in SPI_execute if successful. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-execute.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-execute.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-execute.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-execute.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_execute

    SPI_execute

    SPI_execute — execute a command

    Synopsis

    int SPI_execute(const char * command, bool read_only, long count)

    Description

    SPI_execute executes the specified SQL command +SPI_execute

    SPI_execute

    SPI_execute — execute a command

    Synopsis

    int SPI_execute(const char * command, bool read_only, long count)

    Description

    SPI_execute executes the specified SQL command for count rows. If read_only is true, the command must be read-only, and execution overhead is somewhat reduced. @@ -125,4 +125,4 @@ procedure variables if you need to access the result table of SPI_execute or another query-execution function across later calls. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-execute-plan.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-execute-plan.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-execute-plan.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-execute-plan.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_execute_plan

    SPI_execute_plan

    SPI_execute_plan — execute a statement prepared by SPI_prepare

    Synopsis

    int SPI_execute_plan(SPIPlanPtr plan, Datum * values, const char * nulls,
    +SPI_execute_plan

    SPI_execute_plan

    SPI_execute_plan — execute a statement prepared by SPI_prepare

    Synopsis

    int SPI_execute_plan(SPIPlanPtr plan, Datum * values, const char * nulls,
                          bool read_only, long count)

    Description

    SPI_execute_plan executes a statement prepared by SPI_prepare or one of its siblings. read_only and @@ -32,4 +32,4 @@

    SPI_processed and SPI_tuptable are set as in SPI_execute if successful. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-execute-plan-with-paramlist.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-execute-plan-with-paramlist.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-execute-plan-with-paramlist.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-execute-plan-with-paramlist.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_execute_plan_with_paramlist

    SPI_execute_plan_with_paramlist

    SPI_execute_plan_with_paramlist — execute a statement prepared by SPI_prepare

    Synopsis

    int SPI_execute_plan_with_paramlist(SPIPlanPtr plan,
    +SPI_execute_plan_with_paramlist

    SPI_execute_plan_with_paramlist

    SPI_execute_plan_with_paramlist — execute a statement prepared by SPI_prepare

    Synopsis

    int SPI_execute_plan_with_paramlist(SPIPlanPtr plan,
                                         ParamListInfo params,
                                         bool read_only,
                                         long count)

    Description

    SPI_execute_plan_with_paramlist executes a statement @@ -18,4 +18,4 @@

    SPI_processed and SPI_tuptable are set as in SPI_execute_plan if successful. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-execute-with-args.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-execute-with-args.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-execute-with-args.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-execute-with-args.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_execute_with_args

    SPI_execute_with_args

    SPI_execute_with_args — execute a command with out-of-line parameters

    Synopsis

    int SPI_execute_with_args(const char *command,
    +SPI_execute_with_args

    SPI_execute_with_args

    SPI_execute_with_args — execute a command with out-of-line parameters

    Synopsis

    int SPI_execute_with_args(const char *command,
                               int nargs, Oid *argtypes,
                               Datum *values, const char *nulls,
                               bool read_only, long count)

    Description

    SPI_execute_with_args executes a command that might @@ -43,4 +43,4 @@

    SPI_processed and SPI_tuptable are set as in SPI_execute if successful. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-finish.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-finish.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-finish.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-finish.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_finish

    SPI_finish

    SPI_finish — disconnect a procedure from the SPI manager

    Synopsis

    int SPI_finish(void)

    Description

    SPI_finish closes an existing connection to +SPI_finish

    SPI_finish

    SPI_finish — disconnect a procedure from the SPI manager

    Synopsis

    int SPI_finish(void)

    Description

    SPI_finish closes an existing connection to the SPI manager. You must call this function after completing the SPI operations needed during your procedure's current invocation. You do not need to worry about making this happen, however, if you @@ -7,4 +7,4 @@ case SPI will clean itself up automatically.

    Return Value

    SPI_OK_FINISH

    if properly disconnected

    SPI_ERROR_UNCONNECTED

    if called from an unconnected procedure -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-fname.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-fname.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-fname.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-fname.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_fname

    SPI_fname

    SPI_fname — determine the column name for the specified column number

    Synopsis

    char * SPI_fname(TupleDesc rowdesc, int colnumber)

    Description

    SPI_fname returns a copy of the column name of the +SPI_fname

    SPI_fname

    SPI_fname — determine the column name for the specified column number

    Synopsis

    char * SPI_fname(TupleDesc rowdesc, int colnumber)

    Description

    SPI_fname returns a copy of the column name of the specified column. (You can use pfree to release the copy of the name when you don't need it anymore.)

    Arguments

    TupleDesc rowdesc

    input row description @@ -8,4 +8,4 @@ colnumber is out of range. SPI_result set to SPI_ERROR_NOATTRIBUTE on error. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-fnumber.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-fnumber.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-fnumber.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-fnumber.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_fnumber

    SPI_fnumber

    SPI_fnumber — determine the column number for the specified column name

    Synopsis

    int SPI_fnumber(TupleDesc rowdesc, const char * colname)

    Description

    SPI_fnumber returns the column number for the +SPI_fnumber

    SPI_fnumber

    SPI_fnumber — determine the column number for the specified column name

    Synopsis

    int SPI_fnumber(TupleDesc rowdesc, const char * colname)

    Description

    SPI_fnumber returns the column number for the column with the specified name.

    If colname refers to a system column (e.g., oid) then the appropriate negative column number will @@ -12,4 +12,4 @@

    Return Value

    Column number (count starts at 1 for user-defined columns), or SPI_ERROR_NOATTRIBUTE if the named column was not found. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-freeplan.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-freeplan.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-freeplan.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-freeplan.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,9 +1,9 @@ -SPI_freeplan

    SPI_freeplan

    SPI_freeplan — free a previously saved prepared statement

    Synopsis

    int SPI_freeplan(SPIPlanPtr plan)

    Description

    SPI_freeplan releases a prepared statement +SPI_freeplan

    SPI_freeplan

    SPI_freeplan — free a previously saved prepared statement

    Synopsis

    int SPI_freeplan(SPIPlanPtr plan)

    Description

    SPI_freeplan releases a prepared statement previously returned by SPI_prepare or saved by SPI_keepplan or SPI_saveplan.

    Arguments

    SPIPlanPtr plan

    pointer to statement to free

    Return Value

    0 on success; SPI_ERROR_ARGUMENT if plan is NULL or invalid -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-freetuple.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-freetuple.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-freetuple.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-freetuple.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,8 +1,8 @@ -SPI_freetuple

    SPI_freetuple

    SPI_freetuple — free a row allocated in the upper executor context

    Synopsis

    void SPI_freetuple(HeapTuple row)

    Description

    SPI_freetuple frees a row previously allocated +SPI_freetuple

    SPI_freetuple

    SPI_freetuple — free a row allocated in the upper executor context

    Synopsis

    void SPI_freetuple(HeapTuple row)

    Description

    SPI_freetuple frees a row previously allocated in the upper executor context.

    This function is no longer different from plain heap_freetuple. It's kept just for backward compatibility of existing code.

    Arguments

    HeapTuple row

    row to free -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-freetupletable.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-freetupletable.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-freetupletable.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-freetupletable.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_freetuptable

    SPI_freetuptable

    SPI_freetuptable — free a row set created by SPI_execute or a similar +SPI_freetuptable

    SPI_freetuptable

    SPI_freetuptable — free a row set created by SPI_execute or a similar function

    Synopsis

    void SPI_freetuptable(SPITupleTable * tuptable)

    Description

    SPI_freetuptable frees a row set created by a prior SPI command execution function, such as SPI_execute. Therefore, this function is often called @@ -17,4 +17,4 @@ against duplicate deletion requests for the same row set. In previous releases, duplicate deletions would lead to crashes.

    Arguments

    SPITupleTable * tuptable

    pointer to row set to free, or NULL to do nothing -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-getargcount.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-getargcount.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-getargcount.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-getargcount.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_getargcount

    SPI_getargcount

    SPI_getargcount — return the number of arguments needed by a statement +SPI_getargcount

    SPI_getargcount

    SPI_getargcount — return the number of arguments needed by a statement prepared by SPI_prepare

    Synopsis

    int SPI_getargcount(SPIPlanPtr plan)

    Description

    SPI_getargcount returns the number of arguments needed to execute a statement prepared by SPI_prepare.

    Arguments

    SPIPlanPtr plan

    prepared statement (returned by SPI_prepare) @@ -7,4 +7,4 @@ If the plan is NULL or invalid, SPI_result is set to SPI_ERROR_ARGUMENT and -1 is returned. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-getargtypeid.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-getargtypeid.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-getargtypeid.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-getargtypeid.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_getargtypeid

    SPI_getargtypeid

    SPI_getargtypeid — return the data type OID for an argument of +SPI_getargtypeid

    SPI_getargtypeid

    SPI_getargtypeid — return the data type OID for an argument of a statement prepared by SPI_prepare

    Synopsis

    Oid SPI_getargtypeid(SPIPlanPtr plan, int argIndex)

    Description

    SPI_getargtypeid returns the OID representing the type for the argIndex'th argument of a statement prepared by SPI_prepare. First argument is at index zero. @@ -12,4 +12,4 @@ plan, SPI_result is set to SPI_ERROR_ARGUMENT and InvalidOid is returned. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-getbinval.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-getbinval.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-getbinval.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-getbinval.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_getbinval

    SPI_getbinval

    SPI_getbinval — return the binary value of the specified column

    Synopsis

    Datum SPI_getbinval(HeapTuple row, TupleDesc rowdesc, int colnumber,
    +SPI_getbinval

    SPI_getbinval

    SPI_getbinval — return the binary value of the specified column

    Synopsis

    Datum SPI_getbinval(HeapTuple row, TupleDesc rowdesc, int colnumber,
                         bool * isnull)

    Description

    SPI_getbinval returns the value of the specified column in the internal form (as type Datum).

    This function does not allocate new space for the datum. In the @@ -14,4 +14,4 @@ null, else to false.

    SPI_result is set to SPI_ERROR_NOATTRIBUTE on error. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-getnspname.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-getnspname.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-getnspname.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-getnspname.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,9 +1,9 @@ -SPI_getnspname

    SPI_getnspname

    SPI_getnspname — return the namespace of the specified relation

    Synopsis

    char * SPI_getnspname(Relation rel)

    Description

    SPI_getnspname returns a copy of the name of +SPI_getnspname

    SPI_getnspname

    SPI_getnspname — return the namespace of the specified relation

    Synopsis

    char * SPI_getnspname(Relation rel)

    Description

    SPI_getnspname returns a copy of the name of the namespace that the specified Relation belongs to. This is equivalent to the relation's schema. You should pfree the return value of this function when you are finished with it.

    Arguments

    Relation rel

    input relation

    Return Value

    The name of the specified relation's namespace. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-getrelname.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-getrelname.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-getrelname.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-getrelname.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,7 +1,7 @@ -SPI_getrelname

    SPI_getrelname

    SPI_getrelname — return the name of the specified relation

    Synopsis

    char * SPI_getrelname(Relation rel)

    Description

    SPI_getrelname returns a copy of the name of the +SPI_getrelname

    SPI_getrelname

    SPI_getrelname — return the name of the specified relation

    Synopsis

    char * SPI_getrelname(Relation rel)

    Description

    SPI_getrelname returns a copy of the name of the specified relation. (You can use pfree to release the copy of the name when you don't need it anymore.)

    Arguments

    Relation rel

    input relation

    Return Value

    The name of the specified relation. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-gettype.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-gettype.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-gettype.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-gettype.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_gettype

    SPI_gettype

    SPI_gettype — return the data type name of the specified column

    Synopsis

    char * SPI_gettype(TupleDesc rowdesc, int colnumber)

    Description

    SPI_gettype returns a copy of the data type name of the +SPI_gettype

    SPI_gettype

    SPI_gettype — return the data type name of the specified column

    Synopsis

    char * SPI_gettype(TupleDesc rowdesc, int colnumber)

    Description

    SPI_gettype returns a copy of the data type name of the specified column. (You can use pfree to release the copy of the name when you don't need it anymore.)

    Arguments

    TupleDesc rowdesc

    input row description @@ -7,4 +7,4 @@

    Return Value

    The data type name of the specified column, or NULL on error. SPI_result is set to SPI_ERROR_NOATTRIBUTE on error. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-gettypeid.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-gettypeid.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-gettypeid.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-gettypeid.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_gettypeid

    SPI_gettypeid

    SPI_gettypeid — return the data type OID of the specified column

    Synopsis

    Oid SPI_gettypeid(TupleDesc rowdesc, int colnumber)

    Description

    SPI_gettypeid returns the +SPI_gettypeid

    SPI_gettypeid

    SPI_gettypeid — return the data type OID of the specified column

    Synopsis

    Oid SPI_gettypeid(TupleDesc rowdesc, int colnumber)

    Description

    SPI_gettypeid returns the OID of the data type of the specified column.

    Arguments

    TupleDesc rowdesc

    input row description

    int colnumber

    column number (count starts at 1) @@ -7,4 +7,4 @@ or InvalidOid on error. On error, SPI_result is set to SPI_ERROR_NOATTRIBUTE. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-getvalue.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-getvalue.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-getvalue.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-getvalue.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_getvalue

    SPI_getvalue

    SPI_getvalue — return the string value of the specified column

    Synopsis

    char * SPI_getvalue(HeapTuple row, TupleDesc rowdesc, int colnumber)

    Description

    SPI_getvalue returns the string representation +SPI_getvalue

    SPI_getvalue

    SPI_getvalue — return the string value of the specified column

    Synopsis

    char * SPI_getvalue(HeapTuple row, TupleDesc rowdesc, int colnumber)

    Description

    SPI_getvalue returns the string representation of the value of the specified column.

    The result is returned in memory allocated using palloc. (You can use @@ -14,4 +14,4 @@ SPI_ERROR_NOATTRIBUTE), or no output function is available (SPI_result is set to SPI_ERROR_NOOUTFUNC). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-is-cursor-plan.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-is-cursor-plan.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-is-cursor-plan.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-is-cursor-plan.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_is_cursor_plan

    SPI_is_cursor_plan

    SPI_is_cursor_plan — return true if a statement +SPI_is_cursor_plan

    SPI_is_cursor_plan

    SPI_is_cursor_plan — return true if a statement prepared by SPI_prepare can be used with SPI_cursor_open

    Synopsis

    bool SPI_is_cursor_plan(SPIPlanPtr plan)

    Description

    SPI_is_cursor_plan returns true if a statement prepared by SPI_prepare can be passed @@ -19,4 +19,4 @@ or if called when not connected to SPI), then SPI_result is set to a suitable error code and false is returned. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-keepplan.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-keepplan.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-keepplan.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-keepplan.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_keepplan

    SPI_keepplan

    SPI_keepplan — save a prepared statement

    Synopsis

    int SPI_keepplan(SPIPlanPtr plan)

    Description

    SPI_keepplan saves a passed statement (prepared by +SPI_keepplan

    SPI_keepplan

    SPI_keepplan — save a prepared statement

    Synopsis

    int SPI_keepplan(SPIPlanPtr plan)

    Description

    SPI_keepplan saves a passed statement (prepared by SPI_prepare) so that it will not be freed by SPI_finish nor by the transaction manager. This gives you the ability to reuse prepared statements in the subsequent @@ -11,4 +11,4 @@

    Notes

    The passed-in statement is relocated to permanent storage by means of pointer adjustment (no data copying is required). If you later wish to delete it, use SPI_freeplan on it. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-modifytuple.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-modifytuple.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-modifytuple.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-modifytuple.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_modifytuple

    SPI_modifytuple

    SPI_modifytuple — create a row by replacing selected fields of a given row

    Synopsis

    HeapTuple SPI_modifytuple(Relation rel, HeapTuple row, int ncols,
    +SPI_modifytuple

    SPI_modifytuple

    SPI_modifytuple — create a row by replacing selected fields of a given row

    Synopsis

    HeapTuple SPI_modifytuple(Relation rel, HeapTuple row, int ncols,
                               int * colnum, Datum * values, const char * nulls)

    Description

    SPI_modifytuple creates a new row by substituting new values for selected columns, copying the original row's columns at other positions. The input row is not modified. @@ -40,4 +40,4 @@ row)

    SPI_ERROR_UNCONNECTED

    if SPI is not active

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-palloc.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-palloc.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-palloc.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-palloc.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,8 +1,8 @@ -SPI_palloc

    SPI_palloc

    SPI_palloc — allocate memory in the upper executor context

    Synopsis

    void * SPI_palloc(Size size)

    Description

    SPI_palloc allocates memory in the upper +SPI_palloc

    SPI_palloc

    SPI_palloc — allocate memory in the upper executor context

    Synopsis

    void * SPI_palloc(Size size)

    Description

    SPI_palloc allocates memory in the upper executor context.

    This function can only be used while connected to SPI. Otherwise, it throws an error.

    Arguments

    Size size

    size in bytes of storage to allocate

    Return Value

    pointer to new storage space of the specified size -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-pfree.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-pfree.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-pfree.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-pfree.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,9 +1,9 @@ -SPI_pfree

    SPI_pfree

    SPI_pfree — free memory in the upper executor context

    Synopsis

    void SPI_pfree(void * pointer)

    Description

    SPI_pfree frees memory previously allocated +SPI_pfree

    SPI_pfree

    SPI_pfree — free memory in the upper executor context

    Synopsis

    void SPI_pfree(void * pointer)

    Description

    SPI_pfree frees memory previously allocated using SPI_palloc or SPI_repalloc.

    This function is no longer different from plain pfree. It's kept just for backward compatibility of existing code.

    Arguments

    void * pointer

    pointer to existing storage to free -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-prepare-cursor.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-prepare-cursor.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-prepare-cursor.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-prepare-cursor.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_prepare_cursor

    SPI_prepare_cursor

    SPI_prepare_cursor — prepare a statement, without executing it yet

    Synopsis

    SPIPlanPtr SPI_prepare_cursor(const char * command, int nargs,
    +SPI_prepare_cursor

    SPI_prepare_cursor

    SPI_prepare_cursor — prepare a statement, without executing it yet

    Synopsis

    SPIPlanPtr SPI_prepare_cursor(const char * command, int nargs,
                                   Oid * argtypes, int cursorOptions)

    Description

    SPI_prepare_cursor is identical to SPI_prepare, except that it also allows specification of the planner's cursor options parameter. This is a bit mask @@ -20,4 +20,4 @@ CURSOR_OPT_GENERIC_PLAN, and CURSOR_OPT_CUSTOM_PLAN. Note in particular that CURSOR_OPT_HOLD is ignored. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-prepare.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-prepare.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-prepare.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-prepare.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_prepare

    SPI_prepare

    SPI_prepare — prepare a statement, without executing it yet

    Synopsis

    SPIPlanPtr SPI_prepare(const char * command, int nargs, Oid * argtypes)

    Description

    SPI_prepare creates and returns a prepared +SPI_prepare

    SPI_prepare

    SPI_prepare — prepare a statement, without executing it yet

    Synopsis

    SPIPlanPtr SPI_prepare(const char * command, int nargs, Oid * argtypes)

    Description

    SPI_prepare creates and returns a prepared statement for the specified command, but doesn't execute the command. The prepared statement can later be executed repeatedly using SPI_execute_plan. @@ -66,4 +66,4 @@ future revisions of PostgreSQL.

    The name SPIPlanPtr is somewhat historical, since the data structure no longer necessarily contains an execution plan. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-prepare-params.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-prepare-params.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-prepare-params.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-prepare-params.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_prepare_params

    SPI_prepare_params

    SPI_prepare_params — prepare a statement, without executing it yet

    Synopsis

    SPIPlanPtr SPI_prepare_params(const char * command,
    +SPI_prepare_params

    SPI_prepare_params

    SPI_prepare_params — prepare a statement, without executing it yet

    Synopsis

    SPIPlanPtr SPI_prepare_params(const char * command,
                                   ParserSetupHook parserSetup,
                                   void * parserSetupArg,
                                   int cursorOptions)

    Description

    SPI_prepare_params creates and returns a prepared @@ -13,4 +13,4 @@

    int cursorOptions

    integer bit mask of cursor options; zero produces default behavior

    Return Value

    SPI_prepare_params has the same return conventions as SPI_prepare. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-register-relation.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-register-relation.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-register-relation.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-register-relation.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_register_relation

    SPI_register_relation

    SPI_register_relation — make an ephemeral named relation available by name in SPI queries

    Synopsis

    int SPI_register_relation(EphemeralNamedRelation enr)

    Description

    SPI_register_relation makes an ephemeral named +SPI_register_relation

    SPI_register_relation

    SPI_register_relation — make an ephemeral named relation available by name in SPI queries

    Synopsis

    int SPI_register_relation(EphemeralNamedRelation enr)

    Description

    SPI_register_relation makes an ephemeral named relation, with associated information, available to queries planned and executed through the current SPI connection.

    Arguments

    EphemeralNamedRelation enr

    the ephemeral named relation registry entry @@ -16,4 +16,4 @@

    SPI_ERROR_REL_DUPLICATE

    if the name specified in the name field of enr is already registered for this connection

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-register-trigger-data.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-register-trigger-data.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-register-trigger-data.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-register-trigger-data.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_register_trigger_data

    SPI_register_trigger_data

    SPI_register_trigger_data — make ephemeral trigger data available in SPI queries

    Synopsis

    int SPI_register_trigger_data(TriggerData *tdata)

    Description

    SPI_register_trigger_data makes any ephemeral +SPI_register_trigger_data

    SPI_register_trigger_data

    SPI_register_trigger_data — make ephemeral trigger data available in SPI queries

    Synopsis

    int SPI_register_trigger_data(TriggerData *tdata)

    Description

    SPI_register_trigger_data makes any ephemeral relations captured by a trigger available to queries planned and executed through the current SPI connection. Currently, this means the transition tables captured by an AFTER trigger defined with a @@ -19,4 +19,4 @@

    SPI_ERROR_REL_DUPLICATE

    if the name of any trigger data transient relation is already registered for this connection

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-returntuple.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-returntuple.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-returntuple.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-returntuple.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_returntuple

    SPI_returntuple

    SPI_returntuple — prepare to return a tuple as a Datum

    Synopsis

    HeapTupleHeader SPI_returntuple(HeapTuple row, TupleDesc rowdesc)

    Description

    SPI_returntuple makes a copy of a row in +SPI_returntuple

    SPI_returntuple

    SPI_returntuple — prepare to return a tuple as a Datum

    Synopsis

    HeapTupleHeader SPI_returntuple(HeapTuple row, TupleDesc rowdesc)

    Description

    SPI_returntuple makes a copy of a row in the upper executor context, returning it in the form of a row type Datum. The returned pointer need only be converted to Datum via PointerGetDatum before returning. @@ -15,4 +15,4 @@

    Return Value

    HeapTupleHeader pointing to copied row, or NULL on error (see SPI_result for an error indication) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-saveplan.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-saveplan.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-saveplan.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-saveplan.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_saveplan

    SPI_saveplan

    SPI_saveplan — save a prepared statement

    Synopsis

    SPIPlanPtr SPI_saveplan(SPIPlanPtr plan)

    Description

    SPI_saveplan copies a passed statement (prepared by +SPI_saveplan

    SPI_saveplan

    SPI_saveplan — save a prepared statement

    Synopsis

    SPIPlanPtr SPI_saveplan(SPIPlanPtr plan)

    Description

    SPI_saveplan copies a passed statement (prepared by SPI_prepare) into memory that will not be freed by SPI_finish nor by the transaction manager, and returns a pointer to the copied statement. This gives you the @@ -18,4 +18,4 @@

    In most cases, SPI_keepplan is preferred to this function, since it accomplishes largely the same result without needing to physically copy the prepared statement's data structures. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-scroll-cursor-fetch.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-scroll-cursor-fetch.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-scroll-cursor-fetch.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-scroll-cursor-fetch.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_scroll_cursor_fetch

    SPI_scroll_cursor_fetch

    SPI_scroll_cursor_fetch — fetch some rows from a cursor

    Synopsis

    void SPI_scroll_cursor_fetch(Portal portal, FetchDirection direction,
    +SPI_scroll_cursor_fetch

    SPI_scroll_cursor_fetch

    SPI_scroll_cursor_fetch — fetch some rows from a cursor

    Synopsis

    void SPI_scroll_cursor_fetch(Portal portal, FetchDirection direction,
                                  long count)

    Description

    SPI_scroll_cursor_fetch fetches some rows from a cursor. This is equivalent to the SQL command FETCH.

    Arguments

    Portal portal

    portal containing the cursor @@ -22,4 +22,4 @@

    Direction values other than FETCH_FORWARD may fail if the cursor's plan was not created with the CURSOR_OPT_SCROLL option. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-scroll-cursor-move.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-scroll-cursor-move.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-scroll-cursor-move.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-scroll-cursor-move.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_scroll_cursor_move

    SPI_scroll_cursor_move

    SPI_scroll_cursor_move — move a cursor

    Synopsis

    void SPI_scroll_cursor_move(Portal portal, FetchDirection direction,
    +SPI_scroll_cursor_move

    SPI_scroll_cursor_move

    SPI_scroll_cursor_move — move a cursor

    Synopsis

    void SPI_scroll_cursor_move(Portal portal, FetchDirection direction,
                                 long count)

    Description

    SPI_scroll_cursor_move skips over some number of rows in a cursor. This is equivalent to the SQL command MOVE. @@ -24,4 +24,4 @@

    Direction values other than FETCH_FORWARD may fail if the cursor's plan was not created with the CURSOR_OPT_SCROLL option. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-spi-unregister-relation.html postgresql-10-10.19/doc/src/sgml/html/spi-spi-unregister-relation.html --- postgresql-10-10.17/doc/src/sgml/html/spi-spi-unregister-relation.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-spi-unregister-relation.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -SPI_unregister_relation

    SPI_unregister_relation

    SPI_unregister_relation — remove an ephemeral named relation from the registry

    Synopsis

    int SPI_unregister_relation(const char * name)

    Description

    SPI_unregister_relation removes an ephemeral named +SPI_unregister_relation

    SPI_unregister_relation

    SPI_unregister_relation — remove an ephemeral named relation from the registry

    Synopsis

    int SPI_unregister_relation(const char * name)

    Description

    SPI_unregister_relation removes an ephemeral named relation from the registry for the current connection.

    Arguments

    const char * name

    the relation registry entry name

    Return Value

    If the execution of the command was successful then the following @@ -14,4 +14,4 @@

    SPI_ERROR_REL_NOT_FOUND

    if name is not found in the registry for the current connection

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/spi-visibility.html postgresql-10-10.19/doc/src/sgml/html/spi-visibility.html --- postgresql-10-10.17/doc/src/sgml/html/spi-visibility.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/spi-visibility.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -46.4. Visibility of Data Changes

    46.4. Visibility of Data Changes

    The following rules govern the visibility of data changes in +46.4. Visibility of Data Changes

    46.4. Visibility of Data Changes

    The following rules govern the visibility of data changes in functions that use SPI (or any other C function):

    • During the execution of an SQL command, any data changes made by @@ -27,4 +27,4 @@

    The next section contains an example that illustrates the application of these rules. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-abort.html postgresql-10-10.19/doc/src/sgml/html/sql-abort.html --- postgresql-10-10.17/doc/src/sgml/html/sql-abort.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-abort.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ABORT

    ABORT

    ABORT — abort the current transaction

    Synopsis

    ABORT [ WORK | TRANSACTION ]

    Description

    ABORT rolls back the current transaction and causes +ABORT

    ABORT

    ABORT — abort the current transaction

    Synopsis

    ABORT [ WORK | TRANSACTION ]

    Description

    ABORT rolls back the current transaction and causes all the updates made by the transaction to be discarded. This command is identical in behavior to the standard SQL command @@ -14,4 +14,4 @@

    ABORT;

    Compatibility

    This command is a PostgreSQL extension present for historical reasons. ROLLBACK is the equivalent standard SQL command. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alteraggregate.html postgresql-10-10.19/doc/src/sgml/html/sql-alteraggregate.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alteraggregate.html 2021-05-10 20:58:16.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alteraggregate.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER AGGREGATE

    ALTER AGGREGATE

    ALTER AGGREGATE — change the definition of an aggregate function

    Synopsis

    ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
    +ALTER AGGREGATE

    ALTER AGGREGATE

    ALTER AGGREGATE — change the definition of an aggregate function

    Synopsis

    ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
     ALTER AGGREGATE name ( aggregate_signature )
                     OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema
    @@ -56,4 +56,4 @@
        This will work too:
     

    ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;

    Compatibility

    There is no ALTER AGGREGATE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altercollation.html postgresql-10-10.19/doc/src/sgml/html/sql-altercollation.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altercollation.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altercollation.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER COLLATION

    ALTER COLLATION

    ALTER COLLATION — change the definition of a collation

    Synopsis

    ALTER COLLATION name REFRESH VERSION
    +ALTER COLLATION

    ALTER COLLATION

    ALTER COLLATION — change the definition of a collation

    Synopsis

    ALTER COLLATION name REFRESH VERSION
     
     ALTER COLLATION name RENAME TO new_name
     ALTER COLLATION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
    @@ -54,4 +54,4 @@
        joe:
     

    ALTER COLLATION "en_US" OWNER TO joe;

    Compatibility

    There is no ALTER COLLATION statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterconversion.html postgresql-10-10.19/doc/src/sgml/html/sql-alterconversion.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterconversion.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterconversion.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER CONVERSION

    ALTER CONVERSION

    ALTER CONVERSION — change the definition of a conversion

    Synopsis

    ALTER CONVERSION name RENAME TO new_name
    +ALTER CONVERSION

    ALTER CONVERSION

    ALTER CONVERSION — change the definition of a conversion

    Synopsis

    ALTER CONVERSION name RENAME TO new_name
     ALTER CONVERSION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     ALTER CONVERSION name SET SCHEMA new_schema

    Description

    ALTER CONVERSION changes the definition of a conversion. @@ -21,4 +21,4 @@ joe:

    ALTER CONVERSION iso_8859_1_to_utf8 OWNER TO joe;

    Compatibility

    There is no ALTER CONVERSION statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterdatabase.html postgresql-10-10.19/doc/src/sgml/html/sql-alterdatabase.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterdatabase.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterdatabase.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER DATABASE

    ALTER DATABASE

    ALTER DATABASE — change a database

    Synopsis

    ALTER DATABASE name [ [ WITH ] option [ ... ] ]
    +ALTER DATABASE

    ALTER DATABASE

    ALTER DATABASE — change a database

    Synopsis

    ALTER DATABASE name [ [ WITH ] option [ ... ] ]
     
     where option can be:
     
    @@ -82,4 +82,4 @@
     
     

    ALTER DATABASE test SET enable_indexscan TO off;

    Compatibility

    The ALTER DATABASE statement is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterdefaultprivileges.html postgresql-10-10.19/doc/src/sgml/html/sql-alterdefaultprivileges.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterdefaultprivileges.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterdefaultprivileges.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER DEFAULT PRIVILEGES

    ALTER DEFAULT PRIVILEGES

    ALTER DEFAULT PRIVILEGES — define default access privileges

    Synopsis

    ALTER DEFAULT PRIVILEGES
    +ALTER DEFAULT PRIVILEGES

    ALTER DEFAULT PRIVILEGES

    ALTER DEFAULT PRIVILEGES — define default access privileges

    Synopsis

    ALTER DEFAULT PRIVILEGES
         [ FOR { ROLE | USER } target_role [, ...] ]
         [ IN SCHEMA schema_name [, ...] ]
         abbreviated_grant_or_revoke
    @@ -128,4 +128,4 @@
        the global setting, not remove privileges granted by it.
       

    Compatibility

    There is no ALTER DEFAULT PRIVILEGES statement in the SQL standard. -

    See Also

    GRANT, REVOKE
    \ No newline at end of file +

    See Also

    GRANT, REVOKE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterdomain.html postgresql-10-10.19/doc/src/sgml/html/sql-alterdomain.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterdomain.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterdomain.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER DOMAIN

    ALTER DOMAIN

    ALTER DOMAIN — change the definition of a domain +ALTER DOMAIN

    ALTER DOMAIN

    ALTER DOMAIN — change the definition of a domain

    Synopsis

    ALTER DOMAIN name
         { SET DEFAULT expression | DROP DEFAULT }
     ALTER DOMAIN name
    @@ -104,4 +104,4 @@
        PostgreSQL extensions.  The NOT VALID
        clause of the ADD CONSTRAINT variant is also a
        PostgreSQL extension.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altereventtrigger.html postgresql-10-10.19/doc/src/sgml/html/sql-altereventtrigger.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altereventtrigger.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altereventtrigger.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER EVENT TRIGGER

    ALTER EVENT TRIGGER

    ALTER EVENT TRIGGER — change the definition of an event trigger

    Synopsis

    ALTER EVENT TRIGGER name DISABLE
    +ALTER EVENT TRIGGER

    ALTER EVENT TRIGGER

    ALTER EVENT TRIGGER — change the definition of an event trigger

    Synopsis

    ALTER EVENT TRIGGER name DISABLE
     ALTER EVENT TRIGGER name ENABLE [ REPLICA | ALWAYS ]
     ALTER EVENT TRIGGER name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     ALTER EVENT TRIGGER name RENAME TO new_name

    Description

    ALTER EVENT TRIGGER changes properties of an @@ -13,4 +13,4 @@ event occurs. See also session_replication_role.

    Compatibility

    There is no ALTER EVENT TRIGGER statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterextension.html postgresql-10-10.19/doc/src/sgml/html/sql-alterextension.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterextension.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterextension.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER EXTENSION

    ALTER EXTENSION

    ALTER EXTENSION — change the definition of an extension +ALTER EXTENSION

    ALTER EXTENSION

    ALTER EXTENSION — change the definition of an extension

    Synopsis

    ALTER EXTENSION name UPDATE [ TO new_version ]
     ALTER EXTENSION name SET SCHEMA new_schema
     ALTER EXTENSION name ADD member_object
    @@ -103,4 +103,4 @@
       

    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. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterforeigndatawrapper.html postgresql-10-10.19/doc/src/sgml/html/sql-alterforeigndatawrapper.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterforeigndatawrapper.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterforeigndatawrapper.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER FOREIGN DATA WRAPPER

    ALTER FOREIGN DATA WRAPPER

    ALTER FOREIGN DATA WRAPPER — change the definition of a foreign-data wrapper

    Synopsis

    ALTER FOREIGN DATA WRAPPER name
    +ALTER FOREIGN DATA WRAPPER

    ALTER FOREIGN DATA WRAPPER

    ALTER FOREIGN DATA WRAPPER — change the definition of a foreign-data wrapper

    Synopsis

    ALTER FOREIGN DATA WRAPPER name
         [ HANDLER handler_function | NO HANDLER ]
         [ VALIDATOR validator_function | NO VALIDATOR ]
         [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]
    @@ -44,4 +44,4 @@
        9075-9 (SQL/MED), except that the HANDLER,
        VALIDATOR, OWNER TO, and RENAME
        clauses are extensions.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterforeigntable.html postgresql-10-10.19/doc/src/sgml/html/sql-alterforeigntable.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterforeigntable.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterforeigntable.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER FOREIGN TABLE

    ALTER FOREIGN TABLE

    ALTER FOREIGN TABLE — change the definition of a foreign table

    Synopsis

    ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    +ALTER FOREIGN TABLE

    ALTER FOREIGN TABLE

    ALTER FOREIGN TABLE — change the definition of a foreign table

    Synopsis

    ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
         action [, ... ]
     ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
         RENAME [ COLUMN ] column_name TO new_column_name
    @@ -191,4 +191,4 @@
       

    ALTER FOREIGN TABLE DROP COLUMN can be used to drop the only column of a foreign table, leaving a zero-column table. This is an extension of SQL, which disallows zero-column foreign tables. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterfunction.html postgresql-10-10.19/doc/src/sgml/html/sql-alterfunction.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterfunction.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterfunction.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER FUNCTION

    ALTER FUNCTION

    ALTER FUNCTION — change the definition of a function

    Synopsis

    ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    +ALTER FUNCTION

    ALTER FUNCTION

    ALTER FUNCTION — change the definition of a function

    Synopsis

    ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
         action [ ... ] [ RESTRICT ]
     ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
         RENAME TO new_name
    @@ -13,7 +13,8 @@
     where action is one of:
     
         CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    -    IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF
    +    IMMUTABLE | STABLE | VOLATILE
    +    [ NOT ] LEAKPROOF
         [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
         PARALLEL { UNSAFE | RESTRICTED | SAFE }
         COST execution_cost
    @@ -116,4 +117,4 @@
        or change the owner, schema, or volatility of a function. The standard also
        requires the RESTRICT key word, which is optional in
        PostgreSQL.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altergroup.html postgresql-10-10.19/doc/src/sgml/html/sql-altergroup.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altergroup.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altergroup.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER GROUP

    ALTER GROUP

    ALTER GROUP — change role name or membership

    Synopsis

    ALTER GROUP role_specification ADD USER user_name [, ... ]
    +ALTER GROUP

    ALTER GROUP

    ALTER GROUP — change role name or membership

    Synopsis

    ALTER GROUP role_specification ADD USER user_name [, ... ]
     ALTER GROUP role_specification DROP USER user_name [, ... ]
     
     where role_specification can be:
    @@ -35,4 +35,4 @@
     
     

    ALTER GROUP workers DROP USER beth;

    Compatibility

    There is no ALTER GROUP statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterindex.html postgresql-10-10.19/doc/src/sgml/html/sql-alterindex.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterindex.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterindex.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER INDEX

    ALTER INDEX

    ALTER INDEX — change the definition of an index

    Synopsis

    ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
    +ALTER INDEX

    ALTER INDEX

    ALTER INDEX — change the definition of an index

    Synopsis

    ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
     ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name
     ALTER INDEX name DEPENDS ON EXTENSION extension_name
     ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter [= value] [, ... ] )
    @@ -67,4 +67,4 @@
     

    ALTER INDEX distributors SET (fillfactor = 75);
     REINDEX INDEX distributors;

    Compatibility

    ALTER INDEX is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterlanguage.html postgresql-10-10.19/doc/src/sgml/html/sql-alterlanguage.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterlanguage.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterlanguage.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER LANGUAGE

    ALTER LANGUAGE

    ALTER LANGUAGE — change the definition of a procedural language

    Synopsis

    ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO new_name
    +ALTER LANGUAGE

    ALTER LANGUAGE

    ALTER LANGUAGE — change the definition of a procedural language

    Synopsis

    ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO new_name
     ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

    Description

    ALTER LANGUAGE changes the definition of a procedural language. The only functionality is to rename the language or assign a new owner. You must be superuser or owner of the language to @@ -9,4 +9,4 @@

    new_owner

    The new owner of the language

    Compatibility

    There is no ALTER LANGUAGE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterlargeobject.html postgresql-10-10.19/doc/src/sgml/html/sql-alterlargeobject.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterlargeobject.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterlargeobject.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER LARGE OBJECT

    ALTER LARGE OBJECT

    ALTER LARGE OBJECT — change the definition of a large object

    Synopsis

    ALTER LARGE OBJECT large_object_oid OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

    Description

    ALTER LARGE OBJECT changes the definition of a +ALTER LARGE OBJECT

    ALTER LARGE OBJECT

    ALTER LARGE OBJECT — change the definition of a large object

    Synopsis

    ALTER LARGE OBJECT large_object_oid OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

    Description

    ALTER LARGE OBJECT changes the definition of a large object.

    You must own the large object to use ALTER LARGE OBJECT. To alter the owner, you must also be a direct or indirect member of the new @@ -10,4 +10,4 @@

    new_owner

    The new owner of the large object

    Compatibility

    There is no ALTER LARGE OBJECT statement in the SQL standard. -

    See Also

    Chapter 34
    \ No newline at end of file +

    See Also

    Chapter 34
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altermaterializedview.html postgresql-10-10.19/doc/src/sgml/html/sql-altermaterializedview.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altermaterializedview.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altermaterializedview.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER MATERIALIZED VIEW

    ALTER MATERIALIZED VIEW

    ALTER MATERIALIZED VIEW — change the definition of a materialized view

    Synopsis

    ALTER MATERIALIZED VIEW [ IF EXISTS ] name
    +ALTER MATERIALIZED VIEW

    ALTER MATERIALIZED VIEW

    ALTER MATERIALIZED VIEW — change the definition of a materialized view

    Synopsis

    ALTER MATERIALIZED VIEW [ IF EXISTS ] name
         action [, ... ]
     ALTER MATERIALIZED VIEW name
         DEPENDS ON EXTENSION extension_name
    @@ -52,4 +52,4 @@
        bar:
     

    ALTER MATERIALIZED VIEW foo RENAME TO bar;

    Compatibility

    ALTER MATERIALIZED VIEW is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alteropclass.html postgresql-10-10.19/doc/src/sgml/html/sql-alteropclass.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alteropclass.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alteropclass.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER OPERATOR CLASS

    ALTER OPERATOR CLASS

    ALTER OPERATOR CLASS — change the definition of an operator class

    Synopsis

    ALTER OPERATOR CLASS name USING index_method
    +ALTER OPERATOR CLASS

    ALTER OPERATOR CLASS

    ALTER OPERATOR CLASS — change the definition of an operator class

    Synopsis

    ALTER OPERATOR CLASS name USING index_method
         RENAME TO new_name
     
     ALTER OPERATOR CLASS name USING index_method
    @@ -23,4 +23,4 @@
          

    new_schema

    The new schema for the operator class.

    Compatibility

    There is no ALTER OPERATOR CLASS statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alteroperator.html postgresql-10-10.19/doc/src/sgml/html/sql-alteroperator.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alteroperator.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alteroperator.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER OPERATOR

    ALTER OPERATOR

    ALTER OPERATOR — change the definition of an operator

    Synopsis

    ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
    +ALTER OPERATOR

    ALTER OPERATOR

    ALTER OPERATOR — change the definition of an operator

    Synopsis

    ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
         OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     
     ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
    @@ -29,4 +29,4 @@
     

    ALTER OPERATOR @@ (text, text) OWNER TO joe;

    Change the restriction and join selectivity estimator functions of a custom operator a && b for type int[]:

    ALTER OPERATOR && (_int4, _int4) SET (RESTRICT = _int_contsel, JOIN = _int_contjoinsel);

    Compatibility

    There is no ALTER OPERATOR statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alteropfamily.html postgresql-10-10.19/doc/src/sgml/html/sql-alteropfamily.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alteropfamily.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alteropfamily.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER OPERATOR FAMILY

    ALTER OPERATOR FAMILY

    ALTER OPERATOR FAMILY — change the definition of an operator family

    Synopsis

    ALTER OPERATOR FAMILY name USING index_method ADD
    +ALTER OPERATOR FAMILY

    ALTER OPERATOR FAMILY

    ALTER OPERATOR FAMILY — change the definition of an operator family

    Synopsis

    ALTER OPERATOR FAMILY name USING index_method ADD
       {  OPERATOR strategy_number operator_name ( op_type, op_type )
                   [ FOR SEARCH | FOR ORDER BY sort_family_name ]
        | FUNCTION support_number [ ( op_type [ , op_type ] ) ]
    @@ -143,4 +143,4 @@
       OPERATOR 5 (int2, int4) ,
       FUNCTION 1 (int2, int4) ;

    Compatibility

    There is no ALTER OPERATOR FAMILY statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterpolicy.html postgresql-10-10.19/doc/src/sgml/html/sql-alterpolicy.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterpolicy.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterpolicy.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER POLICY

    ALTER POLICY

    ALTER POLICY — change the definition of a row level security policy

    Synopsis

    ALTER POLICY name ON table_name RENAME TO new_name
    +ALTER POLICY

    ALTER POLICY

    ALTER POLICY — change the definition of a row level security policy

    Synopsis

    ALTER POLICY name ON table_name RENAME TO new_name
     
     ALTER POLICY name ON table_name
         [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]
    @@ -30,4 +30,4 @@
          

    check_expression

    The WITH CHECK expression for the policy. See CREATE POLICY for details.

    Compatibility

    ALTER POLICY is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterpublication.html postgresql-10-10.19/doc/src/sgml/html/sql-alterpublication.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterpublication.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterpublication.html 2021-11-08 22:24:59.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER PUBLICATION

    ALTER PUBLICATION

    ALTER PUBLICATION — change the definition of a publication

    Synopsis

    ALTER PUBLICATION name ADD TABLE [ ONLY ] table_name [ * ] [, ...]
    +ALTER PUBLICATION

    ALTER PUBLICATION

    ALTER PUBLICATION — change the definition of a publication

    Synopsis

    ALTER PUBLICATION name ADD TABLE [ ONLY ] table_name [ * ] [, ...]
     ALTER PUBLICATION name SET TABLE [ ONLY ] table_name [ * ] [, ...]
     ALTER PUBLICATION name DROP TABLE [ ONLY ] table_name [ * ] [, ...]
     ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] )
    @@ -41,4 +41,4 @@
       

    Add some tables to the publication:

    ALTER PUBLICATION mypublication ADD TABLE users, departments;

    Compatibility

    ALTER PUBLICATION is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterrole.html postgresql-10-10.19/doc/src/sgml/html/sql-alterrole.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterrole.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterrole.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER ROLE

    ALTER ROLE

    ALTER ROLE — change a database role

    Synopsis

    ALTER ROLE role_specification [ WITH ] option [ ... ]
    +ALTER ROLE

    ALTER ROLE

    ALTER ROLE — change a database role

    Synopsis

    ALTER ROLE role_specification [ WITH ] option [ ... ]
     
     where option can be:
     
    @@ -142,4 +142,4 @@
     
     

    ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;

    Compatibility

    The ALTER ROLE statement is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterrule.html postgresql-10-10.19/doc/src/sgml/html/sql-alterrule.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterrule.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterrule.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER RULE

    ALTER RULE

    ALTER RULE — change the definition of a rule

    Synopsis

    ALTER RULE name ON table_name RENAME TO new_name

    Description

    ALTER RULE changes properties of an existing +ALTER RULE

    ALTER RULE

    ALTER RULE — change the definition of a rule

    Synopsis

    ALTER RULE name ON table_name RENAME TO new_name

    Description

    ALTER RULE changes properties of an existing rule. Currently, the only available action is to change the rule's name.

    To use ALTER RULE, you must own the table or view that the rule applies to. @@ -11,4 +11,4 @@

    ALTER RULE notify_all ON emp RENAME TO notify_me;

    Compatibility

    ALTER RULE is a PostgreSQL language extension, as is the entire query rewrite system. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterschema.html postgresql-10-10.19/doc/src/sgml/html/sql-alterschema.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterschema.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterschema.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER SCHEMA

    ALTER SCHEMA

    ALTER SCHEMA — change the definition of a schema

    Synopsis

    ALTER SCHEMA name RENAME TO new_name
    +ALTER SCHEMA

    ALTER SCHEMA

    ALTER SCHEMA — change the definition of a schema

    Synopsis

    ALTER SCHEMA name RENAME TO new_name
     ALTER SCHEMA name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

    Description

    ALTER SCHEMA changes the definition of a schema.

    You must own the schema to use ALTER SCHEMA. To rename a schema you must also have the @@ -15,4 +15,4 @@

    new_owner

    The new owner of the schema.

    Compatibility

    There is no ALTER SCHEMA statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altersequence.html postgresql-10-10.19/doc/src/sgml/html/sql-altersequence.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altersequence.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altersequence.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER SEQUENCE

    ALTER SEQUENCE

    ALTER SEQUENCE — change the definition of a sequence generator +ALTER SEQUENCE

    ALTER SEQUENCE

    ALTER SEQUENCE — change the definition of a sequence generator

    Synopsis

    ALTER SEQUENCE [ IF EXISTS ] name
         [ AS data_type ]
         [ INCREMENT [ BY ] increment ]
    @@ -126,4 +126,4 @@
        OWNED BY, OWNER TO, RENAME TO, and
        SET SCHEMA clauses, which are
        PostgreSQL extensions.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterserver.html postgresql-10-10.19/doc/src/sgml/html/sql-alterserver.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterserver.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterserver.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER SERVER

    ALTER SERVER

    ALTER SERVER — change the definition of a foreign server

    Synopsis

    ALTER SERVER name [ VERSION 'new_version' ]
    +ALTER SERVER

    ALTER SERVER

    ALTER SERVER — change the definition of a foreign server

    Synopsis

    ALTER SERVER name [ VERSION 'new_version' ]
         [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]
     ALTER SERVER name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     ALTER SERVER name RENAME TO new_name

    Description

    ALTER SERVER changes the definition of a foreign @@ -29,4 +29,4 @@

    ALTER SERVER foo VERSION '8.4' OPTIONS (SET host 'baz');

    Compatibility

    ALTER SERVER conforms to ISO/IEC 9075-9 (SQL/MED). The OWNER TO and RENAME forms are PostgreSQL extensions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterstatistics.html postgresql-10-10.19/doc/src/sgml/html/sql-alterstatistics.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterstatistics.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterstatistics.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER STATISTICS

    ALTER STATISTICS

    ALTER STATISTICS — change the definition of an extended statistics object +ALTER STATISTICS

    ALTER STATISTICS

    ALTER STATISTICS — change the definition of an extended statistics object

    Synopsis

    ALTER STATISTICS name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     ALTER STATISTICS name RENAME TO new_name
     ALTER STATISTICS name SET SCHEMA new_schema

    Description

    ALTER STATISTICS changes the parameters of an existing @@ -21,4 +21,4 @@

    new_schema

    The new schema for the statistics object.

    Compatibility

    There is no ALTER STATISTICS command in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altersubscription.html postgresql-10-10.19/doc/src/sgml/html/sql-altersubscription.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altersubscription.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altersubscription.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER SUBSCRIPTION

    ALTER SUBSCRIPTION

    ALTER SUBSCRIPTION — change the definition of a subscription

    Synopsis

    ALTER SUBSCRIPTION name CONNECTION 'conninfo'
    +ALTER SUBSCRIPTION

    ALTER SUBSCRIPTION

    ALTER SUBSCRIPTION — change the definition of a subscription

    Synopsis

    ALTER SUBSCRIPTION name CONNECTION 'conninfo'
     ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( set_publication_option [= value] [, ... ] ) ]
     ALTER SUBSCRIPTION name REFRESH PUBLICATION [ WITH ( refresh_option [= value] [, ... ] ) ]
     ALTER SUBSCRIPTION name ENABLE
    @@ -60,4 +60,4 @@
       

    Disable (stop) the subscription:

    ALTER SUBSCRIPTION mysub DISABLE;

    Compatibility

    ALTER SUBSCRIPTION is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altersystem.html postgresql-10-10.19/doc/src/sgml/html/sql-altersystem.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altersystem.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altersystem.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER SYSTEM

    ALTER SYSTEM

    ALTER SYSTEM — change a server configuration parameter

    Synopsis

    ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
    +ALTER SYSTEM

    ALTER SYSTEM

    ALTER SYSTEM — change a server configuration parameter

    Synopsis

    ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
     
     ALTER SYSTEM RESET configuration_parameter
     ALTER SYSTEM RESET ALL

    Description

    ALTER SYSTEM is used for changing server configuration @@ -39,4 +39,4 @@ in postgresql.conf:

    ALTER SYSTEM RESET wal_level;

    Compatibility

    The ALTER SYSTEM statement is a PostgreSQL extension. -

    See Also

    SET, SHOW
    \ No newline at end of file +

    See Also

    SET, SHOW
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altertable.html postgresql-10-10.19/doc/src/sgml/html/sql-altertable.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altertable.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altertable.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER TABLE

    ALTER TABLE

    ALTER TABLE — change the definition of a table

    Synopsis

    ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    +ALTER TABLE

    ALTER TABLE

    ALTER TABLE — change the definition of a table

    Synopsis

    ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
         action [, ... ]
     ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
         RENAME [ COLUMN ] column_name TO new_column_name
    @@ -179,7 +179,7 @@
           at the penalty of increased storage space.  Note that
           SET STORAGE doesn't itself change anything in the table,
           it just sets the strategy to be pursued during future table updates.
    -      See Section 66.2 for more information.
    +      See Section 67.2 for more information.
          

    ADD table_constraint [ NOT VALID ]

    This form adds a new constraint to a table using the same constraint syntax as CREATE TABLE, plus the option NOT VALID, which is currently only allowed for foreign key @@ -684,4 +684,4 @@

    ALTER TABLE DROP COLUMN can be used to drop the only column of a table, leaving a zero-column table. This is an extension of SQL, which disallows zero-column tables. -

    See Also

    CREATE TABLE
    \ No newline at end of file +

    See Also

    CREATE TABLE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altertablespace.html postgresql-10-10.19/doc/src/sgml/html/sql-altertablespace.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altertablespace.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altertablespace.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER TABLESPACE

    ALTER TABLESPACE

    ALTER TABLESPACE — change the definition of a tablespace

    Synopsis

    ALTER TABLESPACE name RENAME TO new_name
    +ALTER TABLESPACE

    ALTER TABLESPACE

    ALTER TABLESPACE — change the definition of a tablespace

    Synopsis

    ALTER TABLESPACE name RENAME TO new_name
     ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] )
     ALTER TABLESPACE name RESET ( tablespace_option [, ... ] )

    Description

    ALTER TABLESPACE can be used to change the definition of @@ -29,4 +29,4 @@

    Change the owner of tablespace index_space:

    ALTER TABLESPACE index_space OWNER TO mary;

    Compatibility

    There is no ALTER TABLESPACE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altertrigger.html postgresql-10-10.19/doc/src/sgml/html/sql-altertrigger.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altertrigger.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altertrigger.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER TRIGGER

    ALTER TRIGGER

    ALTER TRIGGER — change the definition of a trigger

    Synopsis

    ALTER TRIGGER name ON table_name RENAME TO new_name
    +ALTER TRIGGER

    ALTER TRIGGER

    ALTER TRIGGER — change the definition of a trigger

    Synopsis

    ALTER TRIGGER name ON table_name RENAME TO new_name
     ALTER TRIGGER name ON table_name DEPENDS ON EXTENSION extension_name

    Description

    ALTER TRIGGER changes properties of an existing trigger. The RENAME clause changes the name of the given trigger without otherwise changing the trigger @@ -20,4 +20,4 @@

    ALTER TRIGGER emp_stamp ON emp RENAME TO emp_track_chgs;

    To mark a trigger as being dependent on an extension:

    ALTER TRIGGER emp_stamp ON emp DEPENDS ON EXTENSION emplib;

    Compatibility

    ALTER TRIGGER is a PostgreSQL extension of the SQL standard. -

    See Also

    ALTER TABLE
    \ No newline at end of file +

    See Also

    ALTER TABLE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altertsconfig.html postgresql-10-10.19/doc/src/sgml/html/sql-altertsconfig.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altertsconfig.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altertsconfig.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER TEXT SEARCH CONFIGURATION

    ALTER TEXT SEARCH CONFIGURATION

    ALTER TEXT SEARCH CONFIGURATION — change the definition of a text search configuration

    Synopsis

    ALTER TEXT SEARCH CONFIGURATION name
    +ALTER TEXT SEARCH CONFIGURATION

    ALTER TEXT SEARCH CONFIGURATION

    ALTER TEXT SEARCH CONFIGURATION — change the definition of a text search configuration

    Synopsis

    ALTER TEXT SEARCH CONFIGURATION name
         ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]
     ALTER TEXT SEARCH CONFIGURATION name
         ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]
    @@ -48,4 +48,4 @@
       

    ALTER TEXT SEARCH CONFIGURATION my_config
       ALTER MAPPING REPLACE english WITH swedish;

    Compatibility

    There is no ALTER TEXT SEARCH CONFIGURATION statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altertsdictionary.html postgresql-10-10.19/doc/src/sgml/html/sql-altertsdictionary.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altertsdictionary.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altertsdictionary.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER TEXT SEARCH DICTIONARY

    ALTER TEXT SEARCH DICTIONARY

    ALTER TEXT SEARCH DICTIONARY — change the definition of a text search dictionary

    Synopsis

    ALTER TEXT SEARCH DICTIONARY name (
    +ALTER TEXT SEARCH DICTIONARY

    ALTER TEXT SEARCH DICTIONARY

    ALTER TEXT SEARCH DICTIONARY — change the definition of a text search dictionary

    Synopsis

    ALTER TEXT SEARCH DICTIONARY name (
         option [ = value ] [, ... ]
     )
     ALTER TEXT SEARCH DICTIONARY name RENAME TO new_name
    @@ -36,4 +36,4 @@
        which otherwise they would never do if they had read them earlier.
       

    Compatibility

    There is no ALTER TEXT SEARCH DICTIONARY statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altertsparser.html postgresql-10-10.19/doc/src/sgml/html/sql-altertsparser.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altertsparser.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altertsparser.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER TEXT SEARCH PARSER

    ALTER TEXT SEARCH PARSER

    ALTER TEXT SEARCH PARSER — change the definition of a text search parser

    Synopsis

    ALTER TEXT SEARCH PARSER name RENAME TO new_name
    +ALTER TEXT SEARCH PARSER

    ALTER TEXT SEARCH PARSER

    ALTER TEXT SEARCH PARSER — change the definition of a text search parser

    Synopsis

    ALTER TEXT SEARCH PARSER name RENAME TO new_name
     ALTER TEXT SEARCH PARSER name SET SCHEMA new_schema

    Description

    ALTER TEXT SEARCH PARSER changes the definition of a text search parser. Currently, the only supported functionality is to change the parser's name. @@ -9,4 +9,4 @@

    new_schema

    The new schema for the text search parser.

    Compatibility

    There is no ALTER TEXT SEARCH PARSER statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altertstemplate.html postgresql-10-10.19/doc/src/sgml/html/sql-altertstemplate.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altertstemplate.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altertstemplate.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER TEXT SEARCH TEMPLATE

    ALTER TEXT SEARCH TEMPLATE

    ALTER TEXT SEARCH TEMPLATE — change the definition of a text search template

    Synopsis

    ALTER TEXT SEARCH TEMPLATE name RENAME TO new_name
    +ALTER TEXT SEARCH TEMPLATE

    ALTER TEXT SEARCH TEMPLATE

    ALTER TEXT SEARCH TEMPLATE — change the definition of a text search template

    Synopsis

    ALTER TEXT SEARCH TEMPLATE name RENAME TO new_name
     ALTER TEXT SEARCH TEMPLATE name SET SCHEMA new_schema

    Description

    ALTER TEXT SEARCH TEMPLATE changes the definition of a text search template. Currently, the only supported functionality is to change the template's name. @@ -9,4 +9,4 @@

    new_schema

    The new schema for the text search template.

    Compatibility

    There is no ALTER TEXT SEARCH TEMPLATE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-altertype.html postgresql-10-10.19/doc/src/sgml/html/sql-altertype.html --- postgresql-10-10.17/doc/src/sgml/html/sql-altertype.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-altertype.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER TYPE

    ALTER TYPE

    ALTER TYPE — change the definition of a type +ALTER TYPE

    ALTER TYPE

    ALTER TYPE — change the definition of a type

    Synopsis

    ALTER TYPE name action [, ... ]
     ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ]
    @@ -103,4 +103,4 @@
       

    To rename an enum value:

    ALTER TYPE colors RENAME VALUE 'purple' TO 'mauve';

    Compatibility

    The variants to add and drop attributes are part of the SQL standard; the other variants are PostgreSQL extensions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alteruser.html postgresql-10-10.19/doc/src/sgml/html/sql-alteruser.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alteruser.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alteruser.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER USER

    ALTER USER

    ALTER USER — change a database role

    Synopsis

    ALTER USER role_specification [ WITH ] option [ ... ]
    +ALTER USER

    ALTER USER

    ALTER USER — change a database role

    Synopsis

    ALTER USER role_specification [ WITH ] option [ ... ]
     
     where option can be:
     
    @@ -30,4 +30,4 @@
       

    Compatibility

    The ALTER USER statement is a PostgreSQL extension. The SQL standard leaves the definition of users to the implementation. -

    See Also

    ALTER ROLE
    \ No newline at end of file +

    See Also

    ALTER ROLE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterusermapping.html postgresql-10-10.19/doc/src/sgml/html/sql-alterusermapping.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterusermapping.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterusermapping.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER USER MAPPING

    ALTER USER MAPPING

    ALTER USER MAPPING — change the definition of a user mapping

    Synopsis

    ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | SESSION_USER | PUBLIC }
    +ALTER USER MAPPING

    ALTER USER MAPPING

    ALTER USER MAPPING — change the definition of a user mapping

    Synopsis

    ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | SESSION_USER | PUBLIC }
         SERVER server_name
         OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )

    Description

    ALTER USER MAPPING changes the definition of a user mapping. @@ -29,4 +29,4 @@ for ALTER USER MAPPING, PostgreSQL diverges from the standard here in the interest of consistency and interoperability. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-alterview.html postgresql-10-10.19/doc/src/sgml/html/sql-alterview.html --- postgresql-10-10.17/doc/src/sgml/html/sql-alterview.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-alterview.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ALTER VIEW

    ALTER VIEW

    ALTER VIEW — change the definition of a view

    Synopsis

    ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
    +ALTER VIEW

    ALTER VIEW

    ALTER VIEW — change the definition of a view

    Synopsis

    ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
     ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
     ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
     ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
    @@ -48,4 +48,4 @@
     INSERT INTO base_table(id) VALUES(1);  -- ts will receive a NULL
     INSERT INTO a_view(id) VALUES(2);  -- ts will receive the current time

    Compatibility

    ALTER VIEW is a PostgreSQL extension of the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-analyze.html postgresql-10-10.19/doc/src/sgml/html/sql-analyze.html --- postgresql-10-10.17/doc/src/sgml/html/sql-analyze.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-analyze.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -ANALYZE

    ANALYZE

    ANALYZE — collect statistics about a database

    Synopsis

    ANALYZE [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ]

    Description

    ANALYZE collects statistics about the contents +ANALYZE

    ANALYZE

    ANALYZE — collect statistics about a database

    Synopsis

    ANALYZE [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ]

    Description

    ANALYZE collects statistics about the contents of tables in the database, and stores the results in the pg_statistic system catalog. Subsequently, the query planner uses these statistics to help determine the most efficient execution plans for @@ -111,4 +111,4 @@ will not record new statistics for that table. Any existing statistics will be retained.

    Compatibility

    There is no ANALYZE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-begin.html postgresql-10-10.19/doc/src/sgml/html/sql-begin.html --- postgresql-10-10.17/doc/src/sgml/html/sql-begin.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-begin.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -BEGIN

    BEGIN

    BEGIN — start a transaction block

    Synopsis

    BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
    +BEGIN

    BEGIN

    BEGIN — start a transaction block

    Synopsis

    BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
     
     where transaction_mode is one of:
     
    @@ -51,4 +51,4 @@
       

    Incidentally, the BEGIN key word is used for a different purpose in embedded SQL. You are advised to be careful about the transaction semantics when porting database applications. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-checkpoint.html postgresql-10-10.19/doc/src/sgml/html/sql-checkpoint.html --- postgresql-10-10.17/doc/src/sgml/html/sql-checkpoint.html 2021-05-10 20:58:17.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-checkpoint.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CHECKPOINT

    CHECKPOINT

    CHECKPOINT — force a write-ahead log checkpoint

    Synopsis

    CHECKPOINT

    Description

    A checkpoint is a point in the write-ahead log sequence at which +CHECKPOINT

    CHECKPOINT

    CHECKPOINT — force a write-ahead log checkpoint

    Synopsis

    CHECKPOINT

    Description

    A checkpoint is a point in the write-ahead log sequence at which all data files have been updated to reflect the information in the log. All data files will be flushed to disk. Refer to Section 30.4 for more details about what happens @@ -16,4 +16,4 @@

    Only superusers can call CHECKPOINT.

    Compatibility

    The CHECKPOINT command is a PostgreSQL language extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-close.html postgresql-10-10.19/doc/src/sgml/html/sql-close.html --- postgresql-10-10.17/doc/src/sgml/html/sql-close.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-close.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CLOSE

    CLOSE

    CLOSE — close a cursor

    Synopsis

    CLOSE { name | ALL }

    Description

    CLOSE frees the resources associated with an open cursor. +CLOSE

    CLOSE

    CLOSE — close a cursor

    Synopsis

    CLOSE { name | ALL }

    Description

    CLOSE frees the resources associated with an open cursor. After the cursor is closed, no subsequent operations are allowed on it. A cursor should be closed when it is no longer needed. @@ -26,4 +26,4 @@

    CLOSE liahona;

    Compatibility

    CLOSE is fully conforming with the SQL standard. CLOSE ALL is a PostgreSQL extension. -

    See Also

    DECLARE, FETCH, MOVE
    \ No newline at end of file +

    See Also

    DECLARE, FETCH, MOVE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-cluster.html postgresql-10-10.19/doc/src/sgml/html/sql-cluster.html --- postgresql-10-10.17/doc/src/sgml/html/sql-cluster.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-cluster.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CLUSTER

    CLUSTER

    CLUSTER — cluster a table according to an index

    Synopsis

    CLUSTER [VERBOSE] table_name [ USING index_name ]
    +CLUSTER

    CLUSTER

    CLUSTER — cluster a table according to an index

    Synopsis

    CLUSTER [VERBOSE] table_name [ USING index_name ]
     CLUSTER [VERBOSE]

    Description

    CLUSTER instructs PostgreSQL to cluster the table specified by table_name @@ -84,4 +84,4 @@

    CLUSTER index_name ON table_name

    is also supported for compatibility with pre-8.3 PostgreSQL versions. -

    See Also

    clusterdb
    \ No newline at end of file +

    See Also

    clusterdb
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-commands.html postgresql-10-10.19/doc/src/sgml/html/sql-commands.html --- postgresql-10-10.17/doc/src/sgml/html/sql-commands.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-commands.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -SQL Commands

    SQL Commands


    This part contains reference information for the +SQL Commands

    SQL Commands


    This part contains reference information for the SQL commands supported by PostgreSQL. By SQL the language in general is meant; information about the standards @@ -10,4 +10,4 @@

    ALTER FOREIGN DATA WRAPPER — change the definition of a foreign-data wrapper
    ALTER FOREIGN TABLE — change the definition of a foreign table
    ALTER FUNCTION — change the definition of a function
    ALTER GROUP — change role name or membership
    ALTER INDEX — change the definition of an index
    ALTER LANGUAGE — change the definition of a procedural language
    ALTER LARGE OBJECT — change the definition of a large object
    ALTER MATERIALIZED VIEW — change the definition of a materialized view
    ALTER OPERATOR — change the definition of an operator
    ALTER OPERATOR CLASS — change the definition of an operator class
    ALTER OPERATOR FAMILY — change the definition of an operator family
    ALTER POLICY — change the definition of a row level security policy
    ALTER PUBLICATION — change the definition of a publication
    ALTER ROLE — change a database role
    ALTER RULE — change the definition of a rule
    ALTER SCHEMA — change the definition of a schema
    ALTER SEQUENCE — change the definition of a sequence generator
    ALTER SERVER — change the definition of a foreign server
    ALTER STATISTICS — change the definition of an extended statistics object
    ALTER SUBSCRIPTION — change the definition of a subscription
    ALTER SYSTEM — change a server configuration parameter
    ALTER TABLE — change the definition of a table
    ALTER TABLESPACE — change the definition of a tablespace
    ALTER TEXT SEARCH CONFIGURATION — change the definition of a text search configuration
    ALTER TEXT SEARCH DICTIONARY — change the definition of a text search dictionary
    ALTER TEXT SEARCH PARSER — change the definition of a text search parser
    ALTER TEXT SEARCH TEMPLATE — change the definition of a text search template
    ALTER TRIGGER — change the definition of a trigger
    ALTER TYPE — change the definition of a type -
    ALTER USER — change a database role
    ALTER USER MAPPING — change the definition of a user mapping
    ALTER VIEW — change the definition of a view
    ANALYZE — collect statistics about a database
    BEGIN — start a transaction block
    CHECKPOINT — force a write-ahead log checkpoint
    CLOSE — close a cursor
    CLUSTER — cluster a table according to an index
    COMMENT — define or change the comment of an object
    COMMIT — commit the current transaction
    COMMIT PREPARED — commit a transaction that was earlier prepared for two-phase commit
    COPY — copy data between a file and a table
    CREATE ACCESS METHOD — define a new access method
    CREATE AGGREGATE — define a new aggregate function
    CREATE CAST — define a new cast
    CREATE COLLATION — define a new collation
    CREATE CONVERSION — define a new encoding conversion
    CREATE DATABASE — create a new database
    CREATE DOMAIN — define a new domain
    CREATE EVENT TRIGGER — define a new event trigger
    CREATE EXTENSION — install an extension
    CREATE FOREIGN DATA WRAPPER — define a new foreign-data wrapper
    CREATE FOREIGN TABLE — define a new foreign table
    CREATE FUNCTION — define a new function
    CREATE GROUP — define a new database role
    CREATE INDEX — define a new index
    CREATE LANGUAGE — define a new procedural language
    CREATE MATERIALIZED VIEW — define a new materialized view
    CREATE OPERATOR — define a new operator
    CREATE OPERATOR CLASS — define a new operator class
    CREATE OPERATOR FAMILY — define a new operator family
    CREATE POLICY — define a new row level security policy for a table
    CREATE PUBLICATION — define a new publication
    CREATE ROLE — define a new database role
    CREATE RULE — define a new rewrite rule
    CREATE SCHEMA — define a new schema
    CREATE SEQUENCE — define a new sequence generator
    CREATE SERVER — define a new foreign server
    CREATE STATISTICS — define extended statistics
    CREATE SUBSCRIPTION — define a new subscription
    CREATE TABLE — define a new table
    CREATE TABLE AS — define a new table from the results of a query
    CREATE TABLESPACE — define a new tablespace
    CREATE TEXT SEARCH CONFIGURATION — define a new text search configuration
    CREATE TEXT SEARCH DICTIONARY — define a new text search dictionary
    CREATE TEXT SEARCH PARSER — define a new text search parser
    CREATE TEXT SEARCH TEMPLATE — define a new text search template
    CREATE TRANSFORM — define a new transform
    CREATE TRIGGER — define a new trigger
    CREATE TYPE — define a new data type
    CREATE USER — define a new database role
    CREATE USER MAPPING — define a new mapping of a user to a foreign server
    CREATE VIEW — define a new view
    DEALLOCATE — deallocate a prepared statement
    DECLARE — define a cursor
    DELETE — delete rows of a table
    DISCARD — discard session state
    DO — execute an anonymous code block
    DROP ACCESS METHOD — remove an access method
    DROP AGGREGATE — remove an aggregate function
    DROP CAST — remove a cast
    DROP COLLATION — remove a collation
    DROP CONVERSION — remove a conversion
    DROP DATABASE — remove a database
    DROP DOMAIN — remove a domain
    DROP EVENT TRIGGER — remove an event trigger
    DROP EXTENSION — remove an extension
    DROP FOREIGN DATA WRAPPER — remove a foreign-data wrapper
    DROP FOREIGN TABLE — remove a foreign table
    DROP FUNCTION — remove a function
    DROP GROUP — remove a database role
    DROP INDEX — remove an index
    DROP LANGUAGE — remove a procedural language
    DROP MATERIALIZED VIEW — remove a materialized view
    DROP OPERATOR — remove an operator
    DROP OPERATOR CLASS — remove an operator class
    DROP OPERATOR FAMILY — remove an operator family
    DROP OWNED — remove database objects owned by a database role
    DROP POLICY — remove a row level security policy from a table
    DROP PUBLICATION — remove a publication
    DROP ROLE — remove a database role
    DROP RULE — remove a rewrite rule
    DROP SCHEMA — remove a schema
    DROP SEQUENCE — remove a sequence
    DROP SERVER — remove a foreign server descriptor
    DROP STATISTICS — remove extended statistics
    DROP SUBSCRIPTION — remove a subscription
    DROP TABLE — remove a table
    DROP TABLESPACE — remove a tablespace
    DROP TEXT SEARCH CONFIGURATION — remove a text search configuration
    DROP TEXT SEARCH DICTIONARY — remove a text search dictionary
    DROP TEXT SEARCH PARSER — remove a text search parser
    DROP TEXT SEARCH TEMPLATE — remove a text search template
    DROP TRANSFORM — remove a transform
    DROP TRIGGER — remove a trigger
    DROP TYPE — remove a data type
    DROP USER — remove a database role
    DROP USER MAPPING — remove a user mapping for a foreign server
    DROP VIEW — remove a view
    END — commit the current transaction
    EXECUTE — execute a prepared statement
    EXPLAIN — show the execution plan of a statement
    FETCH — retrieve rows from a query using a cursor
    GRANT — define access privileges
    IMPORT FOREIGN SCHEMA — import table definitions from a foreign server
    INSERT — create new rows in a table
    LISTEN — listen for a notification
    LOAD — load a shared library file
    LOCK — lock a table
    MOVE — position a cursor
    NOTIFY — generate a notification
    PREPARE — prepare a statement for execution
    PREPARE TRANSACTION — prepare the current transaction for two-phase commit
    REASSIGN OWNED — change the ownership of database objects owned by a database role
    REFRESH MATERIALIZED VIEW — replace the contents of a materialized view
    REINDEX — rebuild indexes
    RELEASE SAVEPOINT — destroy a previously defined savepoint
    RESET — restore the value of a run-time parameter to the default value
    REVOKE — remove access privileges
    ROLLBACK — abort the current transaction
    ROLLBACK PREPARED — cancel a transaction that was earlier prepared for two-phase commit
    ROLLBACK TO SAVEPOINT — roll back to a savepoint
    SAVEPOINT — define a new savepoint within the current transaction
    SECURITY LABEL — define or change a security label applied to an object
    SELECT — retrieve rows from a table or view
    SELECT INTO — define a new table from the results of a query
    SET — change a run-time parameter
    SET CONSTRAINTS — set constraint check timing for the current transaction
    SET ROLE — set the current user identifier of the current session
    SET SESSION AUTHORIZATION — set the session user identifier and the current user identifier of the current session
    SET TRANSACTION — set the characteristics of the current transaction
    SHOW — show the value of a run-time parameter
    START TRANSACTION — start a transaction block
    TRUNCATE — empty a table or set of tables
    UNLISTEN — stop listening for a notification
    UPDATE — update rows of a table
    VACUUM — garbage-collect and optionally analyze a database
    VALUES — compute a set of rows
    \ No newline at end of file +
    ALTER USER — change a database role
    ALTER USER MAPPING — change the definition of a user mapping
    ALTER VIEW — change the definition of a view
    ANALYZE — collect statistics about a database
    BEGIN — start a transaction block
    CHECKPOINT — force a write-ahead log checkpoint
    CLOSE — close a cursor
    CLUSTER — cluster a table according to an index
    COMMENT — define or change the comment of an object
    COMMIT — commit the current transaction
    COMMIT PREPARED — commit a transaction that was earlier prepared for two-phase commit
    COPY — copy data between a file and a table
    CREATE ACCESS METHOD — define a new access method
    CREATE AGGREGATE — define a new aggregate function
    CREATE CAST — define a new cast
    CREATE COLLATION — define a new collation
    CREATE CONVERSION — define a new encoding conversion
    CREATE DATABASE — create a new database
    CREATE DOMAIN — define a new domain
    CREATE EVENT TRIGGER — define a new event trigger
    CREATE EXTENSION — install an extension
    CREATE FOREIGN DATA WRAPPER — define a new foreign-data wrapper
    CREATE FOREIGN TABLE — define a new foreign table
    CREATE FUNCTION — define a new function
    CREATE GROUP — define a new database role
    CREATE INDEX — define a new index
    CREATE LANGUAGE — define a new procedural language
    CREATE MATERIALIZED VIEW — define a new materialized view
    CREATE OPERATOR — define a new operator
    CREATE OPERATOR CLASS — define a new operator class
    CREATE OPERATOR FAMILY — define a new operator family
    CREATE POLICY — define a new row level security policy for a table
    CREATE PUBLICATION — define a new publication
    CREATE ROLE — define a new database role
    CREATE RULE — define a new rewrite rule
    CREATE SCHEMA — define a new schema
    CREATE SEQUENCE — define a new sequence generator
    CREATE SERVER — define a new foreign server
    CREATE STATISTICS — define extended statistics
    CREATE SUBSCRIPTION — define a new subscription
    CREATE TABLE — define a new table
    CREATE TABLE AS — define a new table from the results of a query
    CREATE TABLESPACE — define a new tablespace
    CREATE TEXT SEARCH CONFIGURATION — define a new text search configuration
    CREATE TEXT SEARCH DICTIONARY — define a new text search dictionary
    CREATE TEXT SEARCH PARSER — define a new text search parser
    CREATE TEXT SEARCH TEMPLATE — define a new text search template
    CREATE TRANSFORM — define a new transform
    CREATE TRIGGER — define a new trigger
    CREATE TYPE — define a new data type
    CREATE USER — define a new database role
    CREATE USER MAPPING — define a new mapping of a user to a foreign server
    CREATE VIEW — define a new view
    DEALLOCATE — deallocate a prepared statement
    DECLARE — define a cursor
    DELETE — delete rows of a table
    DISCARD — discard session state
    DO — execute an anonymous code block
    DROP ACCESS METHOD — remove an access method
    DROP AGGREGATE — remove an aggregate function
    DROP CAST — remove a cast
    DROP COLLATION — remove a collation
    DROP CONVERSION — remove a conversion
    DROP DATABASE — remove a database
    DROP DOMAIN — remove a domain
    DROP EVENT TRIGGER — remove an event trigger
    DROP EXTENSION — remove an extension
    DROP FOREIGN DATA WRAPPER — remove a foreign-data wrapper
    DROP FOREIGN TABLE — remove a foreign table
    DROP FUNCTION — remove a function
    DROP GROUP — remove a database role
    DROP INDEX — remove an index
    DROP LANGUAGE — remove a procedural language
    DROP MATERIALIZED VIEW — remove a materialized view
    DROP OPERATOR — remove an operator
    DROP OPERATOR CLASS — remove an operator class
    DROP OPERATOR FAMILY — remove an operator family
    DROP OWNED — remove database objects owned by a database role
    DROP POLICY — remove a row level security policy from a table
    DROP PUBLICATION — remove a publication
    DROP ROLE — remove a database role
    DROP RULE — remove a rewrite rule
    DROP SCHEMA — remove a schema
    DROP SEQUENCE — remove a sequence
    DROP SERVER — remove a foreign server descriptor
    DROP STATISTICS — remove extended statistics
    DROP SUBSCRIPTION — remove a subscription
    DROP TABLE — remove a table
    DROP TABLESPACE — remove a tablespace
    DROP TEXT SEARCH CONFIGURATION — remove a text search configuration
    DROP TEXT SEARCH DICTIONARY — remove a text search dictionary
    DROP TEXT SEARCH PARSER — remove a text search parser
    DROP TEXT SEARCH TEMPLATE — remove a text search template
    DROP TRANSFORM — remove a transform
    DROP TRIGGER — remove a trigger
    DROP TYPE — remove a data type
    DROP USER — remove a database role
    DROP USER MAPPING — remove a user mapping for a foreign server
    DROP VIEW — remove a view
    END — commit the current transaction
    EXECUTE — execute a prepared statement
    EXPLAIN — show the execution plan of a statement
    FETCH — retrieve rows from a query using a cursor
    GRANT — define access privileges
    IMPORT FOREIGN SCHEMA — import table definitions from a foreign server
    INSERT — create new rows in a table
    LISTEN — listen for a notification
    LOAD — load a shared library file
    LOCK — lock a table
    MOVE — position a cursor
    NOTIFY — generate a notification
    PREPARE — prepare a statement for execution
    PREPARE TRANSACTION — prepare the current transaction for two-phase commit
    REASSIGN OWNED — change the ownership of database objects owned by a database role
    REFRESH MATERIALIZED VIEW — replace the contents of a materialized view
    REINDEX — rebuild indexes
    RELEASE SAVEPOINT — destroy a previously defined savepoint
    RESET — restore the value of a run-time parameter to the default value
    REVOKE — remove access privileges
    ROLLBACK — abort the current transaction
    ROLLBACK PREPARED — cancel a transaction that was earlier prepared for two-phase commit
    ROLLBACK TO SAVEPOINT — roll back to a savepoint
    SAVEPOINT — define a new savepoint within the current transaction
    SECURITY LABEL — define or change a security label applied to an object
    SELECT — retrieve rows from a table or view
    SELECT INTO — define a new table from the results of a query
    SET — change a run-time parameter
    SET CONSTRAINTS — set constraint check timing for the current transaction
    SET ROLE — set the current user identifier of the current session
    SET SESSION AUTHORIZATION — set the session user identifier and the current user identifier of the current session
    SET TRANSACTION — set the characteristics of the current transaction
    SHOW — show the value of a run-time parameter
    START TRANSACTION — start a transaction block
    TRUNCATE — empty a table or set of tables
    UNLISTEN — stop listening for a notification
    UPDATE — update rows of a table
    VACUUM — garbage-collect and optionally analyze a database
    VALUES — compute a set of rows
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-comment.html postgresql-10-10.19/doc/src/sgml/html/sql-comment.html --- postgresql-10-10.17/doc/src/sgml/html/sql-comment.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-comment.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -COMMENT

    COMMENT

    COMMENT — define or change the comment of an object

    Synopsis

    COMMENT ON
    +COMMENT

    COMMENT

    COMMENT — define or change the comment of an object

    Synopsis

    COMMENT ON
     {
       ACCESS METHOD object_name |
       AGGREGATE aggregate_name ( aggregate_signature ) |
    @@ -157,4 +157,4 @@
     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';

    Compatibility

    There is no COMMENT command in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-commit.html postgresql-10-10.19/doc/src/sgml/html/sql-commit.html --- postgresql-10-10.17/doc/src/sgml/html/sql-commit.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-commit.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -COMMIT

    COMMIT

    COMMIT — commit the current transaction

    Synopsis

    COMMIT [ WORK | TRANSACTION ]

    Description

    COMMIT commits the current transaction. All +COMMIT

    COMMIT

    COMMIT — commit the current transaction

    Synopsis

    COMMIT [ WORK | TRANSACTION ]

    Description

    COMMIT commits the current transaction. All changes made by the transaction become visible to others and are guaranteed to be durable if a crash occurs.

    Parameters

    WORK
    TRANSACTION

    Optional key words. They have no effect. @@ -11,4 +11,4 @@

    COMMIT;

    Compatibility

    The SQL standard only specifies the two forms COMMIT and COMMIT WORK. Otherwise, this command is fully conforming. -

    See Also

    BEGIN, ROLLBACK
    \ No newline at end of file +

    See Also

    BEGIN, ROLLBACK
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-commit-prepared.html postgresql-10-10.19/doc/src/sgml/html/sql-commit-prepared.html --- postgresql-10-10.17/doc/src/sgml/html/sql-commit-prepared.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-commit-prepared.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -COMMIT PREPARED

    COMMIT PREPARED

    COMMIT PREPARED — commit a transaction that was earlier prepared for two-phase commit

    Synopsis

    COMMIT PREPARED transaction_id

    Description

    COMMIT PREPARED commits a transaction that is in +COMMIT PREPARED

    COMMIT PREPARED

    COMMIT PREPARED — commit a transaction that was earlier prepared for two-phase commit

    Synopsis

    COMMIT PREPARED transaction_id

    Description

    COMMIT PREPARED commits a transaction that is in prepared state.

    Parameters

    transaction_id

    The transaction identifier of the transaction that is to be committed. @@ -19,4 +19,4 @@ external transaction management systems, some of which are covered by standards (such as X/Open XA), but the SQL side of those systems is not standardized. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-copy.html postgresql-10-10.19/doc/src/sgml/html/sql-copy.html --- postgresql-10-10.17/doc/src/sgml/html/sql-copy.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-copy.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -COPY

    COPY

    COPY — copy data between a file and a table

    Synopsis

    COPY table_name [ ( column_name [, ...] ) ]
    +COPY

    COPY

    COPY — copy data between a file and a table

    Synopsis

    COPY table_name [ ( column_name [, ...] ) ]
         FROM { 'filename' | PROGRAM 'command' | STDIN }
         [ [ WITH ] ( option [, ...] ) ]
     
    @@ -271,8 +271,8 @@
         COPY FROM:
     
        

    SequenceRepresents
    \bBackspace (ASCII 8)
    \fForm feed (ASCII 12)
    \nNewline (ASCII 10)
    \rCarriage return (ASCII 13)
    \tTab (ASCII 9)
    \vVertical tab (ASCII 11)
    \digitsBackslash followed by one to three octal digits specifies - the character with that numeric code
    \xdigitsBackslash x followed by one or two hex digits specifies - the character with that numeric code

    + the byte with that numeric code

    \xdigitsBackslash x followed by one or two hex digits specifies + the byte with that numeric code

    Presently, COPY TO will never emit an octal or hex-digits backslash sequence, but it does use the other sequences @@ -292,6 +292,9 @@ They are also highly vulnerable to corruption if the COPY file is transferred across different machines (for example, from Unix to Windows or vice versa). +

    All backslash sequences are interpreted after encoding conversion. + The bytes specified with the octal and hex-digit backslash sequences must + form valid characters in the database encoding.

    COPY TO will terminate each row with a Unix-style newline (\n). Servers running on Microsoft Windows instead output carriage return/newline (\r\n), but only for @@ -503,4 +506,4 @@ COPY [ BINARY ] table_name [ WITH OIDS ] TO { 'filename' | STDOUT } [ [USING] DELIMITERS 'delimiter_character' ] - [ WITH NULL AS 'null_string' ]

    \ No newline at end of file + [ WITH NULL AS 'null_string' ]
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-create-access-method.html postgresql-10-10.19/doc/src/sgml/html/sql-create-access-method.html --- postgresql-10-10.17/doc/src/sgml/html/sql-create-access-method.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-create-access-method.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE ACCESS METHOD

    CREATE ACCESS METHOD

    CREATE ACCESS METHOD — define a new access method

    Synopsis

    CREATE ACCESS METHOD name
    +CREATE ACCESS METHOD

    CREATE ACCESS METHOD

    CREATE ACCESS METHOD — define a new access method

    Synopsis

    CREATE ACCESS METHOD name
         TYPE access_method_type
         HANDLER handler_function

    Description

    CREATE ACCESS METHOD creates a new access method.

    The access method name must be unique within the database. @@ -20,4 +20,4 @@ handler function heptree_handler:

    CREATE ACCESS METHOD heptree TYPE INDEX HANDLER heptree_handler;

    Compatibility

    CREATE ACCESS METHOD is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createaggregate.html postgresql-10-10.19/doc/src/sgml/html/sql-createaggregate.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createaggregate.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createaggregate.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE AGGREGATE

    CREATE AGGREGATE

    CREATE AGGREGATE — define a new aggregate function

    Synopsis

    CREATE AGGREGATE name ( [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
    +CREATE AGGREGATE

    CREATE AGGREGATE

    CREATE AGGREGATE — define a new aggregate function

    Synopsis

    CREATE AGGREGATE name ( [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
         SFUNC = sfunc,
         STYPE = state_data_type
         [ , SSPACE = state_data_size ]
    @@ -399,4 +399,4 @@
       

    Compatibility

    CREATE AGGREGATE is a PostgreSQL language extension. The SQL standard does not provide for user-defined aggregate functions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createcast.html postgresql-10-10.19/doc/src/sgml/html/sql-createcast.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createcast.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createcast.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE CAST

    CREATE CAST

    CREATE CAST — define a new cast

    Synopsis

    CREATE CAST (source_type AS target_type)
    +CREATE CAST

    CREATE CAST

    CREATE CAST — define a new cast

    Synopsis

    CREATE CAST (source_type AS target_type)
         WITH FUNCTION function_name [ (argument_type [, ...]) ]
         [ AS ASSIGNMENT | AS IMPLICIT ]
     
    @@ -210,4 +210,4 @@
       

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createcollation.html postgresql-10-10.19/doc/src/sgml/html/sql-createcollation.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createcollation.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createcollation.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE COLLATION

    CREATE COLLATION

    CREATE COLLATION — define a new collation

    Synopsis

    CREATE COLLATION [ IF NOT EXISTS ] name (
    +CREATE COLLATION

    CREATE COLLATION

    CREATE COLLATION — define a new collation

    Synopsis

    CREATE COLLATION [ IF NOT EXISTS ] name (
         [ LOCALE = locale, ]
         [ LC_COLLATE = lc_collate, ]
         [ LC_CTYPE = lc_ctype, ]
    @@ -63,4 +63,4 @@
        standard, but it is limited to copying an existing collation.  The
        syntax to create a new collation is
        a PostgreSQL extension.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createconversion.html postgresql-10-10.19/doc/src/sgml/html/sql-createconversion.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createconversion.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createconversion.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE CONVERSION

    CREATE CONVERSION

    CREATE CONVERSION — define a new encoding conversion

    Synopsis

    CREATE [ DEFAULT ] CONVERSION name
    +CREATE CONVERSION

    CREATE CONVERSION

    CREATE CONVERSION — define a new encoding conversion

    Synopsis

    CREATE [ DEFAULT ] CONVERSION name
         FOR source_encoding TO dest_encoding FROM function_name

    Description

    CREATE CONVERSION defines a new conversion between character set encodings. Also, conversions that are marked DEFAULT can be used for automatic encoding @@ -39,4 +39,4 @@ There is no CREATE CONVERSION statement in the SQL standard, but a CREATE TRANSLATION statement that is very similar in purpose and syntax. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createdatabase.html postgresql-10-10.19/doc/src/sgml/html/sql-createdatabase.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createdatabase.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createdatabase.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE DATABASE

    CREATE DATABASE

    CREATE DATABASE — create a new database

    Synopsis

    CREATE DATABASE name
    +CREATE DATABASE

    CREATE DATABASE

    CREATE DATABASE — create a new database

    Synopsis

    CREATE DATABASE name
         [ [ WITH ] [ OWNER [=] user_name ]
                [ TEMPLATE [=] template ]
                [ ENCODING [=] encoding ]
    @@ -136,4 +136,4 @@
       

    Compatibility

    There is no CREATE DATABASE statement in the SQL standard. Databases are equivalent to catalogs, whose creation is implementation-defined. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createdomain.html postgresql-10-10.19/doc/src/sgml/html/sql-createdomain.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createdomain.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createdomain.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE DOMAIN

    CREATE DOMAIN

    CREATE DOMAIN — define a new domain

    Synopsis

    CREATE DOMAIN name [ AS ] data_type
    +CREATE DOMAIN

    CREATE DOMAIN

    CREATE DOMAIN — define a new domain

    Synopsis

    CREATE DOMAIN name [ AS ] data_type
         [ COLLATE collation ]
         [ DEFAULT expression ]
         [ constraint [ ... ] ]
    @@ -117,4 +117,4 @@
       postal us_postal_code NOT NULL
     );

    Compatibility

    The command CREATE DOMAIN conforms to the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createeventtrigger.html postgresql-10-10.19/doc/src/sgml/html/sql-createeventtrigger.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createeventtrigger.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createeventtrigger.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,7 +1,7 @@ -CREATE EVENT TRIGGER

    CREATE EVENT TRIGGER

    CREATE EVENT TRIGGER — define a new event trigger

    Synopsis

    CREATE EVENT TRIGGER name
    +CREATE EVENT TRIGGER

    CREATE EVENT TRIGGER

    CREATE EVENT TRIGGER — define a new event trigger

    Synopsis

    CREATE EVENT TRIGGER name
         ON event
    -    [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ]
    +    [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ]
         EXECUTE PROCEDURE function_name()

    Description

    CREATE EVENT TRIGGER creates a new event trigger. Whenever the designated event occurs and the WHEN condition associated with the trigger, if any, is satisfied, the trigger function @@ -42,4 +42,4 @@ CREATE EVENT TRIGGER abort_ddl ON ddl_command_start EXECUTE PROCEDURE abort_any_command();

    Compatibility

    There is no CREATE EVENT TRIGGER statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createextension.html postgresql-10-10.19/doc/src/sgml/html/sql-createextension.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createextension.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createextension.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE EXTENSION

    CREATE EXTENSION

    CREATE EXTENSION — install an extension

    Synopsis

    CREATE EXTENSION [ IF NOT EXISTS ] extension_name
    +CREATE EXTENSION

    CREATE EXTENSION

    CREATE EXTENSION — install an extension

    Synopsis

    CREATE EXTENSION [ IF NOT EXISTS ] extension_name
         [ WITH ] [ SCHEMA schema_name ]
                  [ VERSION version ]
                  [ FROM old_version ]
    @@ -114,4 +114,4 @@
        hstore objects.
       

    Compatibility

    CREATE EXTENSION is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createforeigndatawrapper.html postgresql-10-10.19/doc/src/sgml/html/sql-createforeigndatawrapper.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createforeigndatawrapper.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createforeigndatawrapper.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE FOREIGN DATA WRAPPER

    CREATE FOREIGN DATA WRAPPER

    CREATE FOREIGN DATA WRAPPER — define a new foreign-data wrapper

    Synopsis

    CREATE FOREIGN DATA WRAPPER name
    +CREATE FOREIGN DATA WRAPPER

    CREATE FOREIGN DATA WRAPPER

    CREATE FOREIGN DATA WRAPPER — define a new foreign-data wrapper

    Synopsis

    CREATE FOREIGN DATA WRAPPER name
         [ HANDLER handler_function | NO HANDLER ]
         [ VALIDATOR validator_function | NO VALIDATOR ]
         [ OPTIONS ( option 'value' [, ... ] ) ]

    Description

    CREATE FOREIGN DATA WRAPPER creates a new @@ -54,4 +54,4 @@ are not implemented in PostgreSQL.

    Note, however, that the SQL/MED functionality as a whole is not yet conforming. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createforeigntable.html postgresql-10-10.19/doc/src/sgml/html/sql-createforeigntable.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createforeigntable.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createforeigntable.html 2021-11-08 22:25:00.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE FOREIGN TABLE

    CREATE FOREIGN TABLE

    CREATE FOREIGN TABLE — define a new foreign table

    Synopsis

    CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
    +CREATE FOREIGN TABLE

    CREATE FOREIGN TABLE

    CREATE FOREIGN TABLE — define a new foreign table

    Synopsis

    CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
       { column_name data_type [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ]
         | table_constraint }
         [, ... ]
    @@ -158,4 +158,4 @@
        The ability to specify column default values is also
        a PostgreSQL extension.  Table inheritance, in the form
        defined by PostgreSQL, is nonstandard.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createfunction.html postgresql-10-10.19/doc/src/sgml/html/sql-createfunction.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createfunction.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createfunction.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,14 +1,15 @@ -CREATE FUNCTION

    CREATE FUNCTION

    CREATE FUNCTION — define a new function

    Synopsis

    CREATE [ OR REPLACE ] FUNCTION
    +CREATE FUNCTION

    CREATE FUNCTION

    CREATE FUNCTION — define a new function

    Synopsis

    CREATE [ OR REPLACE ] FUNCTION
         name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
         [ RETURNS rettype
           | RETURNS TABLE ( column_name column_type [, ...] ) ]
       { LANGUAGE lang_name
         | TRANSFORM { FOR TYPE type_name } [, ... ]
         | WINDOW
    -    | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF
    -    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    -    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    +    | { IMMUTABLE | STABLE | VOLATILE }
    +    | [ NOT ] LEAKPROOF
    +    | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT }
    +    | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }
         | PARALLEL { UNSAFE | RESTRICTED | SAFE }
         | COST execution_cost
         | ROWS result_rows
    @@ -423,4 +424,4 @@
       

    For parameter defaults, the SQL standard specifies only the syntax with the DEFAULT key word. The syntax with = is used in T-SQL and Firebird. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-creategroup.html postgresql-10-10.19/doc/src/sgml/html/sql-creategroup.html --- postgresql-10-10.17/doc/src/sgml/html/sql-creategroup.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-creategroup.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE GROUP

    CREATE GROUP

    CREATE GROUP — define a new database role

    Synopsis

    CREATE GROUP name [ [ WITH ] option [ ... ] ]
    +CREATE GROUP

    CREATE GROUP

    CREATE GROUP — define a new database role

    Synopsis

    CREATE GROUP name [ [ WITH ] option [ ... ] ]
     
     where option can be:
     
    @@ -22,4 +22,4 @@
        CREATE ROLE.
       

    Compatibility

    There is no CREATE GROUP statement in the SQL standard. -

    See Also

    CREATE ROLE
    \ No newline at end of file +

    See Also

    CREATE ROLE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createindex.html postgresql-10-10.19/doc/src/sgml/html/sql-createindex.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createindex.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createindex.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE INDEX

    CREATE INDEX

    CREATE INDEX — define a new index

    Synopsis

    CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON table_name [ USING method ]
    +CREATE INDEX

    CREATE INDEX

    CREATE INDEX — define a new index

    Synopsis

    CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON table_name [ USING method ]
         ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
         [ WITH ( storage_parameter [= value] [, ... ] ) ]
         [ TABLESPACE tablespace_name ]
    @@ -293,4 +293,4 @@
     

    CREATE INDEX CONCURRENTLY sales_quantity_index ON sales_table (quantity);

    Compatibility

    CREATE INDEX is a PostgreSQL language extension. There are no provisions for indexes in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createlanguage.html postgresql-10-10.19/doc/src/sgml/html/sql-createlanguage.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createlanguage.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createlanguage.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE LANGUAGE

    CREATE LANGUAGE

    CREATE LANGUAGE — define a new procedural language

    Synopsis

    CREATE [ OR REPLACE ] [ PROCEDURAL ] LANGUAGE name
    +CREATE LANGUAGE

    CREATE LANGUAGE

    CREATE LANGUAGE — define a new procedural language

    Synopsis

    CREATE [ OR REPLACE ] [ PROCEDURAL ] LANGUAGE name
     CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name
         HANDLER call_handler [ INLINE inline_handler ] [ VALIDATOR valfunction ]

    Description

    CREATE LANGUAGE registers a new procedural language with a PostgreSQL @@ -147,4 +147,4 @@ CREATE LANGUAGE plsample HANDLER plsample_call_handler;

    Compatibility

    CREATE LANGUAGE is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-creatematerializedview.html postgresql-10-10.19/doc/src/sgml/html/sql-creatematerializedview.html --- postgresql-10-10.17/doc/src/sgml/html/sql-creatematerializedview.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-creatematerializedview.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE MATERIALIZED VIEW

    CREATE MATERIALIZED VIEW

    CREATE MATERIALIZED VIEW — define a new materialized view

    Synopsis

    CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
    +CREATE MATERIALIZED VIEW

    CREATE MATERIALIZED VIEW

    CREATE MATERIALIZED VIEW — define a new materialized view

    Synopsis

    CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
         [ (column_name [, ...] ) ]
         [ WITH ( storage_parameter [= value] [, ... ] ) ]
         [ TABLESPACE tablespace_name ]
    @@ -41,4 +41,4 @@
           MATERIALIZED VIEW is used.
          

    Compatibility

    CREATE MATERIALIZED VIEW is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createopclass.html postgresql-10-10.19/doc/src/sgml/html/sql-createopclass.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createopclass.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createopclass.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE OPERATOR CLASS

    CREATE OPERATOR CLASS

    CREATE OPERATOR CLASS — define a new operator class

    Synopsis

    CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type
    +CREATE OPERATOR CLASS

    CREATE OPERATOR CLASS

    CREATE OPERATOR CLASS — define a new operator class

    Synopsis

    CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type
       USING index_method [ FAMILY family_name ] AS
       {  OPERATOR strategy_number operator_name [ ( op_type, op_type ) ] [ FOR SEARCH | FOR ORDER BY sort_family_name ]
        | FUNCTION support_number [ ( op_type [ , op_type ] ) ] function_name ( argument_type [, ...] )
    @@ -116,4 +116,4 @@
        PostgreSQL extension.  There is no
        CREATE OPERATOR CLASS statement in the SQL
        standard.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createoperator.html postgresql-10-10.19/doc/src/sgml/html/sql-createoperator.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createoperator.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createoperator.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE OPERATOR

    CREATE OPERATOR

    CREATE OPERATOR — define a new operator

    Synopsis

    CREATE OPERATOR name (
    +CREATE OPERATOR

    CREATE OPERATOR

    CREATE OPERATOR — define a new operator

    Synopsis

    CREATE OPERATOR name (
         PROCEDURE = function_name
         [, LEFTARG = left_type ] [, RIGHTARG = right_type ]
         [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]
    @@ -95,4 +95,4 @@
     );

    Compatibility

    CREATE OPERATOR is a PostgreSQL extension. There are no provisions for user-defined operators in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createopfamily.html postgresql-10-10.19/doc/src/sgml/html/sql-createopfamily.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createopfamily.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createopfamily.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE OPERATOR FAMILY

    CREATE OPERATOR FAMILY

    CREATE OPERATOR FAMILY — define a new operator family

    Synopsis

    CREATE OPERATOR FAMILY name USING index_method

    Description

    CREATE OPERATOR FAMILY creates a new operator family. +CREATE OPERATOR FAMILY

    CREATE OPERATOR FAMILY

    CREATE OPERATOR FAMILY — define a new operator family

    Synopsis

    CREATE OPERATOR FAMILY name USING index_method

    Description

    CREATE OPERATOR FAMILY creates a new operator family. An operator family defines a collection of related operator classes, and perhaps some additional operators and support functions that are compatible with these operator classes but not essential for the @@ -30,4 +30,4 @@ PostgreSQL extension. There is no CREATE OPERATOR FAMILY statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createpolicy.html postgresql-10-10.19/doc/src/sgml/html/sql-createpolicy.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createpolicy.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createpolicy.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE POLICY

    CREATE POLICY

    CREATE POLICY — define a new row level security policy for a table

    Synopsis

    CREATE POLICY name ON table_name
    +CREATE POLICY

    CREATE POLICY

    CREATE POLICY — define a new row level security policy for a table

    Synopsis

    CREATE POLICY name ON table_name
         [ AS { PERMISSIVE | RESTRICTIVE } ]
         [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
         [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]
    @@ -300,4 +300,4 @@
        in Section 5.7.
       

    Compatibility

    CREATE POLICY is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createpublication.html postgresql-10-10.19/doc/src/sgml/html/sql-createpublication.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createpublication.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createpublication.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE PUBLICATION

    CREATE PUBLICATION

    CREATE PUBLICATION — define a new publication

    Synopsis

    CREATE PUBLICATION name
    +CREATE PUBLICATION

    CREATE PUBLICATION

    CREATE PUBLICATION — define a new publication

    Synopsis

    CREATE PUBLICATION name
         [ FOR TABLE [ ONLY ] table_name [ * ] [, ...]
           | FOR ALL TABLES ]
         [ WITH ( publication_parameter [= value] [, ... ] ) ]
    @@ -68,4 +68,4 @@
     

    CREATE PUBLICATION insert_only FOR TABLE mydata
         WITH (publish = 'insert');

    Compatibility

    CREATE PUBLICATION is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createrole.html postgresql-10-10.19/doc/src/sgml/html/sql-createrole.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createrole.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createrole.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE ROLE

    CREATE ROLE

    CREATE ROLE — define a new database role

    Synopsis

    CREATE ROLE name [ [ WITH ] option [ ... ] ]
    +CREATE ROLE

    CREATE ROLE

    CREATE ROLE — define a new database role

    Synopsis

    CREATE ROLE name [ [ WITH ] option [ ... ] ]
     
     where option can be:
     
    @@ -217,4 +217,4 @@
       

    The behavior specified by the SQL standard is most closely approximated by giving users the NOINHERIT attribute, while roles are given the INHERIT attribute. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createrule.html postgresql-10-10.19/doc/src/sgml/html/sql-createrule.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createrule.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createrule.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE RULE

    CREATE RULE

    CREATE RULE — define a new rewrite rule

    Synopsis

    CREATE [ OR REPLACE ] RULE name AS ON event
    +CREATE RULE

    CREATE RULE

    CREATE RULE — define a new rewrite rule

    Synopsis

    CREATE [ OR REPLACE ] RULE name AS ON event
         TO table_name [ WHERE condition ]
         DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }
     
    @@ -146,4 +146,4 @@
       

    Compatibility

    CREATE RULE is a PostgreSQL language extension, as is the entire query rewrite system. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createschema.html postgresql-10-10.19/doc/src/sgml/html/sql-createschema.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createschema.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createschema.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE SCHEMA

    CREATE SCHEMA

    CREATE SCHEMA — define a new schema

    Synopsis

    CREATE SCHEMA schema_name [ AUTHORIZATION role_specification ] [ schema_element [ ... ] ]
    +CREATE SCHEMA

    CREATE SCHEMA

    CREATE SCHEMA — define a new schema

    Synopsis

    CREATE SCHEMA schema_name [ AUTHORIZATION role_specification ] [ schema_element [ ... ] ]
     CREATE SCHEMA AUTHORIZATION role_specification [ schema_element [ ... ] ]
     CREATE SCHEMA IF NOT EXISTS schema_name [ AUTHORIZATION role_specification ]
     CREATE SCHEMA IF NOT EXISTS AUTHORIZATION role_specification
    @@ -85,4 +85,4 @@
        superuser chooses to create objects in it.
       

    The IF NOT EXISTS option is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createsequence.html postgresql-10-10.19/doc/src/sgml/html/sql-createsequence.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createsequence.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createsequence.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE SEQUENCE

    CREATE SEQUENCE

    CREATE SEQUENCE — define a new sequence generator

    Synopsis

    CREATE [ TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] name
    +CREATE SEQUENCE

    CREATE SEQUENCE

    CREATE SEQUENCE — define a new sequence generator

    Synopsis

    CREATE [ TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] name
         [ AS data_type ]
         [ INCREMENT [ BY ] increment ]
         [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    @@ -154,4 +154,4 @@
           expression.
          

  • The OWNED BY clause is a PostgreSQL extension. -

  • \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createserver.html postgresql-10-10.19/doc/src/sgml/html/sql-createserver.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createserver.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createserver.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE SERVER

    CREATE SERVER

    CREATE SERVER — define a new foreign server

    Synopsis

    CREATE SERVER [IF NOT EXISTS] server_name [ TYPE 'server_type' ] [ VERSION 'server_version' ]
    +CREATE SERVER

    CREATE SERVER

    CREATE SERVER — define a new foreign server

    Synopsis

    CREATE SERVER [IF NOT EXISTS] server_name [ TYPE 'server_type' ] [ VERSION 'server_version' ]
         FOREIGN DATA WRAPPER fdw_name
         [ OPTIONS ( option 'value' [, ... ] ) ]

    Description

    CREATE SERVER defines a new foreign server. The user who defines the server becomes its owner. @@ -33,4 +33,4 @@

    CREATE SERVER myserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'foo', dbname 'foodb', port '5432');

    See postgres_fdw for more details.

    Compatibility

    CREATE SERVER conforms to ISO/IEC 9075-9 (SQL/MED). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createstatistics.html postgresql-10-10.19/doc/src/sgml/html/sql-createstatistics.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createstatistics.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createstatistics.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE STATISTICS

    CREATE STATISTICS

    CREATE STATISTICS — define extended statistics

    Synopsis

    CREATE STATISTICS [ IF NOT EXISTS ] statistics_name
    +CREATE STATISTICS

    CREATE STATISTICS

    CREATE STATISTICS — define extended statistics

    Synopsis

    CREATE STATISTICS [ IF NOT EXISTS ] statistics_name
         [ ( statistics_kind [, ... ] ) ]
         ON column_name, column_name [, ...]
         FROM table_name

    Description

    CREATE STATISTICS will create a new extended statistics @@ -25,7 +25,7 @@ If this clause is omitted, all supported statistics kinds are included in the statistics object. For more information, see Section 14.2.2 - and Section 68.2. + and Section 69.2.

    column_name

    The name of a table column to be covered by the computed statistics. At least two column names must be given.

    table_name

    The name (optionally schema-qualified) of the table containing the @@ -65,4 +65,4 @@ With such statistics, the planner recognizes that the WHERE conditions are redundant and does not underestimate the rowcount.

    Compatibility

    There is no CREATE STATISTICS command in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createsubscription.html postgresql-10-10.19/doc/src/sgml/html/sql-createsubscription.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createsubscription.html 2021-05-10 20:58:18.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createsubscription.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE SUBSCRIPTION

    CREATE SUBSCRIPTION

    CREATE SUBSCRIPTION — define a new subscription

    Synopsis

    CREATE SUBSCRIPTION subscription_name
    +CREATE SUBSCRIPTION

    CREATE SUBSCRIPTION

    CREATE SUBSCRIPTION — define a new subscription

    Synopsis

    CREATE SUBSCRIPTION subscription_name
         CONNECTION 'conninfo'
         PUBLICATION publication_name [, ...]
         [ WITH ( subscription_parameter [= value] [, ... ] ) ]

    Description

    CREATE SUBSCRIPTION adds a new subscription for the @@ -99,4 +99,4 @@ PUBLICATION insert_only WITH (enabled = false);

    Compatibility

    CREATE SUBSCRIPTION is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtableas.html postgresql-10-10.19/doc/src/sgml/html/sql-createtableas.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtableas.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtableas.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TABLE AS

    CREATE TABLE AS

    CREATE TABLE AS — define a new table from the results of a query

    Synopsis

    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
    +CREATE TABLE AS

    CREATE TABLE AS

    CREATE TABLE AS — define a new table from the results of a query

    Synopsis

    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
         [ (column_name [, ...] ) ]
         [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
         [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    @@ -109,4 +109,4 @@
          

  • The PostgreSQL concept of tablespaces is not part of the standard. Hence, the clause TABLESPACE is an extension. -

  • \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtable.html postgresql-10-10.19/doc/src/sgml/html/sql-createtable.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtable.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtable.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TABLE

    CREATE TABLE

    CREATE TABLE — define a new table

    Synopsis

    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
    +CREATE TABLE

    CREATE TABLE

    CREATE TABLE — define a new table

    Synopsis

    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
       { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
         | table_constraint
         | LIKE source_table [ like_option ... ] }
    @@ -329,7 +329,7 @@
           default behavior is to exclude STORAGE settings, resulting
           in the copied columns in the new table having type-specific default
           settings.  For more on STORAGE settings, see
    -      Section 66.2.
    +      Section 67.2.
          

    Comments for the copied columns, constraints, and indexes will be copied only if INCLUDING COMMENTS is specified. The default behavior is to exclude comments, resulting in @@ -611,7 +611,7 @@ shown, there is an additional parameter with the same name prefixed with toast., which controls the behavior of the table's secondary TOAST table, if any - (see Section 66.2 for more information about TOAST). + (see Section 67.2 for more information about TOAST). If a table parameter value is set and the equivalent toast. parameter is not, the TOAST table will use the table's parameter value. @@ -991,4 +991,4 @@ PostgreSQL extension.

    PARTITION OF Clause

    The PARTITION OF clause is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtablespace.html postgresql-10-10.19/doc/src/sgml/html/sql-createtablespace.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtablespace.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtablespace.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TABLESPACE

    CREATE TABLESPACE

    CREATE TABLESPACE — define a new tablespace

    Synopsis

    CREATE TABLESPACE tablespace_name
    +CREATE TABLESPACE

    CREATE TABLESPACE

    CREATE TABLESPACE — define a new tablespace

    Synopsis

    CREATE TABLESPACE tablespace_name
         [ OWNER { new_owner | CURRENT_USER | SESSION_USER } ]
         LOCATION 'directory'
         [ WITH ( tablespace_option = value [, ... ] ) ]

    Description

    CREATE TABLESPACE registers a new cluster-wide @@ -46,4 +46,4 @@ owned by user genevieve:

    CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';

    Compatibility

    CREATE TABLESPACE is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtransform.html postgresql-10-10.19/doc/src/sgml/html/sql-createtransform.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtransform.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtransform.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TRANSFORM

    CREATE TRANSFORM

    CREATE TRANSFORM — define a new transform

    Synopsis

    CREATE [ OR REPLACE ] TRANSFORM FOR type_name LANGUAGE lang_name (
    +CREATE TRANSFORM

    CREATE TRANSFORM

    CREATE TRANSFORM — define a new transform

    Synopsis

    CREATE [ OR REPLACE ] TRANSFORM FOR type_name LANGUAGE lang_name (
         FROM SQL WITH FUNCTION from_sql_function_name [ (argument_type [, ...]) ],
         TO SQL WITH FUNCTION to_sql_function_name [ (argument_type [, ...]) ]
     );

    Description

    CREATE TRANSFORM defines a new transform. @@ -80,4 +80,4 @@ CREATE LANGUAGE, CREATE TYPE, DROP TRANSFORM -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtrigger.html postgresql-10-10.19/doc/src/sgml/html/sql-createtrigger.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtrigger.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtrigger.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TRIGGER

    CREATE TRIGGER

    CREATE TRIGGER — define a new trigger

    Synopsis

    CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
    +CREATE TRIGGER

    CREATE TRIGGER

    CREATE TRIGGER — define a new trigger

    Synopsis

    CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
         ON table_name
         [ FROM referenced_table_name ]
         [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]
    @@ -359,4 +359,4 @@
       

    CREATE CONSTRAINT TRIGGER is a PostgreSQL extension of the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtsconfig.html postgresql-10-10.19/doc/src/sgml/html/sql-createtsconfig.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtsconfig.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtsconfig.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TEXT SEARCH CONFIGURATION

    CREATE TEXT SEARCH CONFIGURATION

    CREATE TEXT SEARCH CONFIGURATION — define a new text search configuration

    Synopsis

    CREATE TEXT SEARCH CONFIGURATION name (
    +CREATE TEXT SEARCH CONFIGURATION

    CREATE TEXT SEARCH CONFIGURATION

    CREATE TEXT SEARCH CONFIGURATION — define a new text search configuration

    Synopsis

    CREATE TEXT SEARCH CONFIGURATION name (
         PARSER = parser_name |
         COPY = source_config
     )

    Description

    CREATE TEXT SEARCH CONFIGURATION creates a new text @@ -25,4 +25,4 @@ parser selection is copied too.

    Compatibility

    There is no CREATE TEXT SEARCH CONFIGURATION statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtsdictionary.html postgresql-10-10.19/doc/src/sgml/html/sql-createtsdictionary.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtsdictionary.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtsdictionary.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TEXT SEARCH DICTIONARY

    CREATE TEXT SEARCH DICTIONARY

    CREATE TEXT SEARCH DICTIONARY — define a new text search dictionary

    Synopsis

    CREATE TEXT SEARCH DICTIONARY name (
    +CREATE TEXT SEARCH DICTIONARY

    CREATE TEXT SEARCH DICTIONARY

    CREATE TEXT SEARCH DICTIONARY — define a new text search dictionary

    Synopsis

    CREATE TEXT SEARCH DICTIONARY name (
         TEMPLATE = template
         [, option = value [, ... ]]
     )

    Description

    CREATE TEXT SEARCH DICTIONARY creates a new text search @@ -29,4 +29,4 @@ stopwords = myrussian );

    Compatibility

    There is no CREATE TEXT SEARCH DICTIONARY statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtsparser.html postgresql-10-10.19/doc/src/sgml/html/sql-createtsparser.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtsparser.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtsparser.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TEXT SEARCH PARSER

    CREATE TEXT SEARCH PARSER

    CREATE TEXT SEARCH PARSER — define a new text search parser

    Synopsis

    CREATE TEXT SEARCH PARSER name (
    +CREATE TEXT SEARCH PARSER

    CREATE TEXT SEARCH PARSER

    CREATE TEXT SEARCH PARSER — define a new text search parser

    Synopsis

    CREATE TEXT SEARCH PARSER name (
         START = start_function ,
         GETTOKEN = gettoken_function ,
         END = end_function ,
    @@ -33,4 +33,4 @@
       

    Compatibility

    There is no CREATE TEXT SEARCH PARSER statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtstemplate.html postgresql-10-10.19/doc/src/sgml/html/sql-createtstemplate.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtstemplate.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtstemplate.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TEXT SEARCH TEMPLATE

    CREATE TEXT SEARCH TEMPLATE

    CREATE TEXT SEARCH TEMPLATE — define a new text search template

    Synopsis

    CREATE TEXT SEARCH TEMPLATE name (
    +CREATE TEXT SEARCH TEMPLATE

    CREATE TEXT SEARCH TEMPLATE

    CREATE TEXT SEARCH TEMPLATE — define a new text search template

    Synopsis

    CREATE TEXT SEARCH TEMPLATE name (
         [ INIT = init_function , ]
         LEXIZE = lexize_function
     )

    Description

    CREATE TEXT SEARCH TEMPLATE creates a new text search @@ -30,4 +30,4 @@

    Compatibility

    There is no CREATE TEXT SEARCH TEMPLATE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createtype.html postgresql-10-10.19/doc/src/sgml/html/sql-createtype.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createtype.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createtype.html 2021-11-08 22:25:01.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TYPE

    CREATE TYPE

    CREATE TYPE — define a new data type

    Synopsis

    CREATE TYPE name AS
    +CREATE TYPE

    CREATE TYPE

    CREATE TYPE — define a new data type

    Synopsis

    CREATE TYPE name AS
         ( [ attribute_name data_type [ COLLATE collation ] [, ... ] ] )
     
     CREATE TYPE name AS ENUM
    @@ -233,7 +233,7 @@
        by setting typlen to -1.)  The internal representation of all
        variable-length types must start with a 4-byte integer giving the total
        length of this value of the type.  (Note that the length field is often
    -   encoded, as described in Section 66.2; it's unwise
    +   encoded, as described in Section 67.2; it's unwise
        to access it directly.)
       

    The optional flag PASSEDBYVALUE indicates that values of this data type are passed by value, rather than by @@ -264,7 +264,7 @@

    All storage values other than plain imply that the functions of the data type can handle values that have been toasted, as described - in Section 66.2 and Section 37.11.1. + in Section 67.2 and Section 37.11.1. The specific other value given merely determines the default TOAST storage strategy for columns of a toastable data type; users can pick other strategies for individual columns using ALTER TABLE @@ -523,4 +523,4 @@

    The ability to create a composite type with zero attributes is a PostgreSQL-specific deviation from the standard (analogous to the same case in CREATE TABLE). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createuser.html postgresql-10-10.19/doc/src/sgml/html/sql-createuser.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createuser.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createuser.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE USER

    CREATE USER

    CREATE USER — define a new database role

    Synopsis

    CREATE USER name [ [ WITH ] option [ ... ] ]
    +CREATE USER

    CREATE USER

    CREATE USER — define a new database role

    Synopsis

    CREATE USER name [ [ WITH ] option [ ... ] ]
     
     where option can be:
     
    @@ -28,4 +28,4 @@
       

    Compatibility

    The CREATE USER statement is a PostgreSQL extension. The SQL standard leaves the definition of users to the implementation. -

    See Also

    CREATE ROLE
    \ No newline at end of file +

    See Also

    CREATE ROLE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createusermapping.html postgresql-10-10.19/doc/src/sgml/html/sql-createusermapping.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createusermapping.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createusermapping.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE USER MAPPING

    CREATE USER MAPPING

    CREATE USER MAPPING — define a new mapping of a user to a foreign server

    Synopsis

    CREATE USER MAPPING [IF NOT EXISTS] FOR { user_name | USER | CURRENT_USER | PUBLIC }
    +CREATE USER MAPPING

    CREATE USER MAPPING

    CREATE USER MAPPING — define a new mapping of a user to a foreign server

    Synopsis

    CREATE USER MAPPING [IF NOT EXISTS] FOR { user_name | USER | CURRENT_USER | PUBLIC }
         SERVER server_name
         [ OPTIONS ( option 'value' [ , ... ] ) ]

    Description

    CREATE USER MAPPING defines a mapping of a user to a foreign server. A user mapping typically encapsulates @@ -27,4 +27,4 @@ names and values are specific to the server's foreign-data wrapper.

    Examples

    Create a user mapping for user bob, server foo:

    CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'secret');

    Compatibility

    CREATE USER MAPPING conforms to ISO/IEC 9075-9 (SQL/MED). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-createview.html postgresql-10-10.19/doc/src/sgml/html/sql-createview.html --- postgresql-10-10.17/doc/src/sgml/html/sql-createview.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-createview.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE VIEW

    CREATE VIEW

    CREATE VIEW — define a new view

    Synopsis

    CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW name [ ( column_name [, ...] ) ]
    +CREATE VIEW

    CREATE VIEW

    CREATE VIEW — define a new view

    Synopsis

    CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW name [ ( column_name [, ...] ) ]
         [ WITH ( view_option_name [= view_option_value] [, ... ] ) ]
         AS query
         [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

    Description

    CREATE VIEW defines a view of a query. The view @@ -229,4 +229,4 @@ PostgreSQL language extension. So is the concept of a temporary view. The WITH ( ... ) clause is an extension as well. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-deallocate.html postgresql-10-10.19/doc/src/sgml/html/sql-deallocate.html --- postgresql-10-10.17/doc/src/sgml/html/sql-deallocate.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-deallocate.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DEALLOCATE

    DEALLOCATE

    DEALLOCATE — deallocate a prepared statement

    Synopsis

    DEALLOCATE [ PREPARE ] { name | ALL }

    Description

    DEALLOCATE is used to deallocate a previously +DEALLOCATE

    DEALLOCATE

    DEALLOCATE — deallocate a prepared statement

    Synopsis

    DEALLOCATE [ PREPARE ] { name | ALL }

    Description

    DEALLOCATE is used to deallocate a previously prepared SQL statement. If you do not explicitly deallocate a prepared statement, it is deallocated when the session ends.

    For more information on prepared statements, see PREPARE. @@ -8,4 +8,4 @@

    ALL

    Deallocate all prepared statements.

    Compatibility

    The SQL standard includes a DEALLOCATE statement, but it is only for use in embedded SQL. -

    See Also

    EXECUTE, PREPARE
    \ No newline at end of file +

    See Also

    EXECUTE, PREPARE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-declare.html postgresql-10-10.19/doc/src/sgml/html/sql-declare.html --- postgresql-10-10.17/doc/src/sgml/html/sql-declare.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-declare.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DECLARE

    DECLARE

    DECLARE — define a cursor

    Synopsis

    DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
    +DECLARE

    DECLARE

    DECLARE — define a cursor

    Synopsis

    DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
         CURSOR [ { WITH | WITHOUT } HOLD ] FOR query

    Description

    DECLARE allows a user to create cursors, which can be used to retrieve a small number of rows at a time out of a larger query. @@ -158,4 +158,4 @@ permits cursors to be used interactively.

    Binary cursors are a PostgreSQL extension. -

    See Also

    CLOSE, FETCH, MOVE
    \ No newline at end of file +

    See Also

    CLOSE, FETCH, MOVE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-delete.html postgresql-10-10.19/doc/src/sgml/html/sql-delete.html --- postgresql-10-10.17/doc/src/sgml/html/sql-delete.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-delete.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DELETE

    DELETE

    DELETE — delete rows of a table

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
    +DELETE

    DELETE

    DELETE — delete rows of a table

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
     DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
         [ USING from_item [, ...] ]
         [ WHERE condition | WHERE CURRENT OF cursor_name ]
    @@ -105,4 +105,4 @@
        that the USING and RETURNING clauses
        are PostgreSQL extensions, as is the ability
        to use WITH with DELETE.
    -  

    See Also

    TRUNCATE
    \ No newline at end of file +

    See Also

    TRUNCATE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-discard.html postgresql-10-10.19/doc/src/sgml/html/sql-discard.html --- postgresql-10-10.17/doc/src/sgml/html/sql-discard.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-discard.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DISCARD

    DISCARD

    DISCARD — discard session state

    Synopsis

    DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }

    Description

    DISCARD releases internal resources associated with a +DISCARD

    DISCARD

    DISCARD — discard session state

    Synopsis

    DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }

    Description

    DISCARD releases internal resources associated with a database session. This command is useful for partially or fully resetting the session's state. There are several subcommands to release different types of resources; the DISCARD ALL @@ -27,4 +27,4 @@ DISCARD SEQUENCES; DISCARD TEMP;

    Notes

    DISCARD ALL cannot be executed inside a transaction block.

    Compatibility

    DISCARD is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-do.html postgresql-10-10.19/doc/src/sgml/html/sql-do.html --- postgresql-10-10.17/doc/src/sgml/html/sql-do.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-do.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DO

    DO

    DO — execute an anonymous code block

    Synopsis

    DO [ LANGUAGE lang_name ] code

    Description

    DO executes an anonymous code block, or in other +DO

    DO

    DO — execute an anonymous code block

    Synopsis

    DO [ LANGUAGE lang_name ] code

    Description

    DO executes an anonymous code block, or in other words a transient anonymous function in a procedural language.

    The code block is treated as though it were the body of a function with no parameters, returning void. It is parsed and @@ -28,4 +28,4 @@ EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$;

    Compatibility

    There is no DO statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-drop-access-method.html postgresql-10-10.19/doc/src/sgml/html/sql-drop-access-method.html --- postgresql-10-10.17/doc/src/sgml/html/sql-drop-access-method.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-drop-access-method.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP ACCESS METHOD

    DROP ACCESS METHOD

    DROP ACCESS METHOD — remove an access method

    Synopsis

    DROP ACCESS METHOD [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP ACCESS METHOD removes an existing access method. +DROP ACCESS METHOD

    DROP ACCESS METHOD

    DROP ACCESS METHOD — remove an access method

    Synopsis

    DROP ACCESS METHOD [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP ACCESS METHOD removes an existing access method. Only superusers can drop access methods.

    Parameters

    IF EXISTS

    Do not throw an error if the access method does not exist. A notice is issued in this case. @@ -13,4 +13,4 @@

    Examples

    Drop the access method heptree:

    DROP ACCESS METHOD heptree;

    Compatibility

    DROP ACCESS METHOD is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropaggregate.html postgresql-10-10.19/doc/src/sgml/html/sql-dropaggregate.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropaggregate.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropaggregate.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP AGGREGATE

    DROP AGGREGATE

    DROP AGGREGATE — remove an aggregate function

    Synopsis

    DROP AGGREGATE [ IF EXISTS ] name ( aggregate_signature ) [, ...] [ CASCADE | RESTRICT ]
    +DROP AGGREGATE

    DROP AGGREGATE

    DROP AGGREGATE — remove an aggregate function

    Synopsis

    DROP AGGREGATE [ IF EXISTS ] name ( aggregate_signature ) [, ...] [ CASCADE | RESTRICT ]
     
     where aggregate_signature is:
     
    @@ -41,4 +41,4 @@
       

    To remove multiple aggregate functions in one command:

    DROP AGGREGATE myavg(integer), myavg(bigint);

    Compatibility

    There is no DROP AGGREGATE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropcast.html postgresql-10-10.19/doc/src/sgml/html/sql-dropcast.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropcast.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropcast.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP CAST

    DROP CAST

    DROP CAST — remove a cast

    Synopsis

    DROP CAST [ IF EXISTS ] (source_type AS target_type) [ CASCADE | RESTRICT ]

    Description

    DROP CAST removes a previously defined cast. +DROP CAST

    DROP CAST

    DROP CAST — remove a cast

    Synopsis

    DROP CAST [ IF EXISTS ] (source_type AS target_type) [ CASCADE | RESTRICT ]

    Description

    DROP CAST removes a previously defined cast.

    To be able to drop a cast, you must own the source or the target data type. These are the same privileges that are required to create a cast. @@ -11,4 +11,4 @@ dependencies on casts.

    Examples

    To drop the cast from type text to type int:

    DROP CAST (text AS int);

    Compatibility

    The DROP CAST command conforms to the SQL standard. -

    See Also

    CREATE CAST
    \ No newline at end of file +

    See Also

    CREATE CAST
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropcollation.html postgresql-10-10.19/doc/src/sgml/html/sql-dropcollation.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropcollation.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropcollation.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP COLLATION

    DROP COLLATION

    DROP COLLATION — remove a collation

    Synopsis

    DROP COLLATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP COLLATION removes a previously defined collation. +DROP COLLATION

    DROP COLLATION

    DROP COLLATION — remove a collation

    Synopsis

    DROP COLLATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP COLLATION removes a previously defined collation. To be able to drop a collation, you must own the collation.

    Parameters

    IF EXISTS

    Do not throw an error if the collation does not exist. A notice is issued in this case. @@ -14,4 +14,4 @@

    DROP COLLATION german;

    Compatibility

    The DROP COLLATION command conforms to the SQL standard, apart from the IF EXISTS option, which is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropconversion.html postgresql-10-10.19/doc/src/sgml/html/sql-dropconversion.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropconversion.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropconversion.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP CONVERSION

    DROP CONVERSION

    DROP CONVERSION — remove a conversion

    Synopsis

    DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP CONVERSION removes a previously defined conversion. +DROP CONVERSION

    DROP CONVERSION

    DROP CONVERSION — remove a conversion

    Synopsis

    DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP CONVERSION removes a previously defined conversion. To be able to drop a conversion, you must own the conversion.

    Parameters

    IF EXISTS

    Do not throw an error if the conversion does not exist. A notice is issued in this case. @@ -13,4 +13,4 @@ goes along with the CREATE TRANSLATION statement that is similar to the CREATE CONVERSION statement in PostgreSQL. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropdatabase.html postgresql-10-10.19/doc/src/sgml/html/sql-dropdatabase.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropdatabase.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropdatabase.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP DATABASE

    DROP DATABASE

    DROP DATABASE — remove a database

    Synopsis

    DROP DATABASE [ IF EXISTS ] name

    Description

    DROP DATABASE drops a database. It removes the +DROP DATABASE

    DROP DATABASE

    DROP DATABASE — remove a database

    Synopsis

    DROP DATABASE [ IF EXISTS ] name

    Description

    DROP DATABASE drops a database. It removes the catalog entries for the database and deletes the directory containing the data. It can only be executed by the database owner. Also, it cannot be executed while you or anyone else are connected @@ -16,4 +16,4 @@ dropdb instead, which is a wrapper around this command.

    Compatibility

    There is no DROP DATABASE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropdomain.html postgresql-10-10.19/doc/src/sgml/html/sql-dropdomain.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropdomain.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropdomain.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP DOMAIN

    DROP DOMAIN

    DROP DOMAIN — remove a domain

    Synopsis

    DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP DOMAIN removes a domain. Only the owner of +DROP DOMAIN

    DROP DOMAIN

    DROP DOMAIN — remove a domain

    Synopsis

    DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP DOMAIN removes a domain. Only the owner of a domain can remove it.

    Parameters

    IF EXISTS

    Do not throw an error if the domain does not exist. A notice is issued in this case. @@ -15,4 +15,4 @@

    DROP DOMAIN box;

    Compatibility

    This command conforms to the SQL standard, except for the IF EXISTS option, which is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropeventtrigger.html postgresql-10-10.19/doc/src/sgml/html/sql-dropeventtrigger.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropeventtrigger.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropeventtrigger.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP EVENT TRIGGER

    DROP EVENT TRIGGER

    DROP EVENT TRIGGER — remove an event trigger

    Synopsis

    DROP EVENT TRIGGER [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP EVENT TRIGGER removes an existing event trigger. +DROP EVENT TRIGGER

    DROP EVENT TRIGGER

    DROP EVENT TRIGGER — remove an event trigger

    Synopsis

    DROP EVENT TRIGGER [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP EVENT TRIGGER removes an existing event trigger. To execute this command, the current user must be the owner of the event trigger.

    Parameters

    IF EXISTS

    Do not throw an error if the event trigger does not exist. A notice @@ -14,4 +14,4 @@

    DROP EVENT TRIGGER snitch;

    Compatibility

    There is no DROP EVENT TRIGGER statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropextension.html postgresql-10-10.19/doc/src/sgml/html/sql-dropextension.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropextension.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropextension.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP EXTENSION

    DROP EXTENSION

    DROP EXTENSION — remove an extension

    Synopsis

    DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP EXTENSION removes extensions from the database. +DROP EXTENSION

    DROP EXTENSION

    DROP EXTENSION — remove an extension

    Synopsis

    DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP EXTENSION removes extensions from the database. Dropping an extension causes its component objects to be dropped as well.

    You must own the extension to use DROP EXTENSION.

    Parameters

    IF EXISTS

    Do not throw an error if the extension does not exist. A notice is issued @@ -20,4 +20,4 @@ forcibly remove those dependent objects as well.

    Compatibility

    DROP EXTENSION is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropforeigndatawrapper.html postgresql-10-10.19/doc/src/sgml/html/sql-dropforeigndatawrapper.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropforeigndatawrapper.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropforeigndatawrapper.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP FOREIGN DATA WRAPPER

    DROP FOREIGN DATA WRAPPER

    DROP FOREIGN DATA WRAPPER — remove a foreign-data wrapper

    Synopsis

    DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP FOREIGN DATA WRAPPER removes an existing +DROP FOREIGN DATA WRAPPER

    DROP FOREIGN DATA WRAPPER

    DROP FOREIGN DATA WRAPPER — remove a foreign-data wrapper

    Synopsis

    DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP FOREIGN DATA WRAPPER removes an existing foreign-data wrapper. To execute this command, the current user must be the owner of the foreign-data wrapper.

    Parameters

    IF EXISTS

    Do not throw an error if the foreign-data wrapper does not @@ -15,4 +15,4 @@

    DROP FOREIGN DATA WRAPPER dbi;

    Compatibility

    DROP FOREIGN DATA WRAPPER conforms to ISO/IEC 9075-9 (SQL/MED). The IF EXISTS clause is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropforeigntable.html postgresql-10-10.19/doc/src/sgml/html/sql-dropforeigntable.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropforeigntable.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropforeigntable.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP FOREIGN TABLE

    DROP FOREIGN TABLE

    DROP FOREIGN TABLE — remove a foreign table

    Synopsis

    DROP FOREIGN TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP FOREIGN TABLE removes a foreign table. +DROP FOREIGN TABLE

    DROP FOREIGN TABLE

    DROP FOREIGN TABLE — remove a foreign table

    Synopsis

    DROP FOREIGN TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP FOREIGN TABLE removes a foreign table. Only the owner of a foreign table can remove it.

    Parameters

    IF EXISTS

    Do not throw an error if the foreign table does not exist. A notice is issued in this case. @@ -16,4 +16,4 @@ standard only allows one foreign table to be dropped per command, and apart from the IF EXISTS option, which is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropfunction.html postgresql-10-10.19/doc/src/sgml/html/sql-dropfunction.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropfunction.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropfunction.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP FUNCTION

    DROP FUNCTION

    DROP FUNCTION — remove a function

    Synopsis

    DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
    +DROP FUNCTION

    DROP FUNCTION

    DROP FUNCTION — remove a function

    Synopsis

    DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
         [ CASCADE | RESTRICT ]

    Description

    DROP FUNCTION removes the definition of an existing function. To execute this command the user must be the owner of the function. The argument types to the @@ -43,4 +43,4 @@

    Compatibility

    This command conforms to the SQL standard, with these PostgreSQL extensions:

    • The standard only allows one function to be dropped per command.

    • The IF EXISTS option

    • The ability to specify argument modes and names

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropgroup.html postgresql-10-10.19/doc/src/sgml/html/sql-dropgroup.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropgroup.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropgroup.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP GROUP

    DROP GROUP

    DROP GROUP — remove a database role

    Synopsis

    DROP GROUP [ IF EXISTS ] name [, ...]

    Description

    DROP GROUP is now an alias for +DROP GROUP

    DROP GROUP

    DROP GROUP — remove a database role

    Synopsis

    DROP GROUP [ IF EXISTS ] name [, ...]

    Description

    DROP GROUP is now an alias for DROP ROLE.

    Compatibility

    There is no DROP GROUP statement in the SQL standard. -

    See Also

    DROP ROLE
    \ No newline at end of file +

    See Also

    DROP ROLE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropindex.html postgresql-10-10.19/doc/src/sgml/html/sql-dropindex.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropindex.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropindex.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP INDEX

    DROP INDEX

    DROP INDEX — remove an index

    Synopsis

    DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP INDEX drops an existing index from the database +DROP INDEX

    DROP INDEX

    DROP INDEX — remove an index

    Synopsis

    DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP INDEX drops an existing index from the database system. To execute this command you must be the owner of the index.

    Parameters

    CONCURRENTLY

    Drop the index without locking out concurrent selects, inserts, updates, @@ -30,4 +30,4 @@

    DROP INDEX title_idx;

    Compatibility

    DROP INDEX is a PostgreSQL language extension. There are no provisions for indexes in the SQL standard. -

    See Also

    CREATE INDEX
    \ No newline at end of file +

    See Also

    CREATE INDEX
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droplanguage.html postgresql-10-10.19/doc/src/sgml/html/sql-droplanguage.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droplanguage.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droplanguage.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP LANGUAGE

    DROP LANGUAGE

    DROP LANGUAGE — remove a procedural language

    Synopsis

    DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP LANGUAGE removes the definition of a +DROP LANGUAGE

    DROP LANGUAGE

    DROP LANGUAGE — remove a procedural language

    Synopsis

    DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP LANGUAGE removes the definition of a previously registered procedural language. You must be a superuser or the owner of the language to use DROP LANGUAGE.

    Note

    As of PostgreSQL 9.1, most procedural @@ -21,4 +21,4 @@

    DROP LANGUAGE plsample;

    Compatibility

    There is no DROP LANGUAGE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropmaterializedview.html postgresql-10-10.19/doc/src/sgml/html/sql-dropmaterializedview.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropmaterializedview.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropmaterializedview.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP MATERIALIZED VIEW

    DROP MATERIALIZED VIEW

    DROP MATERIALIZED VIEW — remove a materialized view

    Synopsis

    DROP MATERIALIZED VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP MATERIALIZED VIEW drops an existing materialized +DROP MATERIALIZED VIEW

    DROP MATERIALIZED VIEW

    DROP MATERIALIZED VIEW — remove a materialized view

    Synopsis

    DROP MATERIALIZED VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP MATERIALIZED VIEW drops an existing materialized view. To execute this command you must be the owner of the materialized view.

    Parameters

    IF EXISTS

    Do not throw an error if the materialized view does not exist. A notice @@ -16,4 +16,4 @@ order_summary:

    DROP MATERIALIZED VIEW order_summary;

    Compatibility

    DROP MATERIALIZED VIEW is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropopclass.html postgresql-10-10.19/doc/src/sgml/html/sql-dropopclass.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropopclass.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropopclass.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP OPERATOR CLASS

    DROP OPERATOR CLASS

    DROP OPERATOR CLASS — remove an operator class

    Synopsis

    DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]

    Description

    DROP OPERATOR CLASS drops an existing operator class. +DROP OPERATOR CLASS

    DROP OPERATOR CLASS

    DROP OPERATOR CLASS — remove an operator class

    Synopsis

    DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]

    Description

    DROP OPERATOR CLASS drops an existing operator class. To execute this command you must be the owner of the operator class.

    DROP OPERATOR CLASS does not drop any of the operators or functions referenced by the class. If there are any indexes depending @@ -30,4 +30,4 @@ such indexes along with the operator class.

    Compatibility

    There is no DROP OPERATOR CLASS statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropoperator.html postgresql-10-10.19/doc/src/sgml/html/sql-dropoperator.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropoperator.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropoperator.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP OPERATOR

    DROP OPERATOR

    DROP OPERATOR — remove an operator

    Synopsis

    DROP OPERATOR [ IF EXISTS ] name ( { left_type | NONE } , { right_type | NONE } ) [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP OPERATOR drops an existing operator from +DROP OPERATOR

    DROP OPERATOR

    DROP OPERATOR — remove an operator

    Synopsis

    DROP OPERATOR [ IF EXISTS ] name ( { left_type | NONE } , { right_type | NONE } ) [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP OPERATOR drops an existing operator from the database system. To execute this command you must be the owner of the operator.

    Parameters

    IF EXISTS

    Do not throw an error if the operator does not exist. A notice is issued @@ -23,4 +23,4 @@ for type bigint:

    DROP OPERATOR ! (bigint, none);

    Remove multiple operators in one command:

    DROP OPERATOR ~ (none, bit), ! (bigint, none);

    Compatibility

    There is no DROP OPERATOR statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropopfamily.html postgresql-10-10.19/doc/src/sgml/html/sql-dropopfamily.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropopfamily.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropopfamily.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP OPERATOR FAMILY

    DROP OPERATOR FAMILY

    DROP OPERATOR FAMILY — remove an operator family

    Synopsis

    DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]

    Description

    DROP OPERATOR FAMILY drops an existing operator family. +DROP OPERATOR FAMILY

    DROP OPERATOR FAMILY

    DROP OPERATOR FAMILY — remove an operator family

    Synopsis

    DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]

    Description

    DROP OPERATOR FAMILY drops an existing operator family. To execute this command you must be the owner of the operator family.

    DROP OPERATOR FAMILY includes dropping any operator classes contained in the family, but it does not drop any of the operators @@ -24,4 +24,4 @@ drop such indexes along with the operator family.

    Compatibility

    There is no DROP OPERATOR FAMILY statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-drop-owned.html postgresql-10-10.19/doc/src/sgml/html/sql-drop-owned.html --- postgresql-10-10.17/doc/src/sgml/html/sql-drop-owned.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-drop-owned.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP OWNED

    DROP OWNED

    DROP OWNED — remove database objects owned by a database role

    Synopsis

    DROP OWNED BY { name | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP OWNED drops all the objects within the current +DROP OWNED

    DROP OWNED

    DROP OWNED — remove database objects owned by a database role

    Synopsis

    DROP OWNED BY { name | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]

    Description

    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 or on shared objects (databases, tablespaces) will also be @@ -26,4 +26,4 @@

    See Section 21.4 for more discussion.

    Compatibility

    The DROP OWNED command is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droppolicy.html postgresql-10-10.19/doc/src/sgml/html/sql-droppolicy.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droppolicy.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droppolicy.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP POLICY

    DROP POLICY

    DROP POLICY — remove a row level security policy from a table

    Synopsis

    DROP POLICY [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]

    Description

    DROP POLICY removes the specified policy from the table. +DROP POLICY

    DROP POLICY

    DROP POLICY — remove a row level security policy from a table

    Synopsis

    DROP POLICY [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]

    Description

    DROP POLICY removes the specified policy from the table. Note that if the last policy is removed for a table and the table still has row level security enabled via ALTER TABLE, then the default-deny policy will be used. ALTER TABLE ... DISABLE ROW @@ -16,4 +16,4 @@ my_table:

    DROP POLICY p1 ON my_table;

    Compatibility

    DROP POLICY is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droppublication.html postgresql-10-10.19/doc/src/sgml/html/sql-droppublication.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droppublication.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droppublication.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP PUBLICATION

    DROP PUBLICATION

    DROP PUBLICATION — remove a publication

    Synopsis

    DROP PUBLICATION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP PUBLICATION removes an existing publication from +DROP PUBLICATION

    DROP PUBLICATION

    DROP PUBLICATION — remove a publication

    Synopsis

    DROP PUBLICATION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP PUBLICATION removes an existing publication from the database.

    A publication can only be dropped by its owner or a superuser.

    Parameters

    IF EXISTS

    Do not throw an error if the publication does not exist. A notice is @@ -10,4 +10,4 @@

    Examples

    Drop a publication:

    DROP PUBLICATION mypublication;

    Compatibility

    DROP PUBLICATION is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droprole.html postgresql-10-10.19/doc/src/sgml/html/sql-droprole.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droprole.html 2021-05-10 20:58:19.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droprole.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP ROLE

    DROP ROLE

    DROP ROLE — remove a database role

    Synopsis

    DROP ROLE [ IF EXISTS ] name [, ...]

    Description

    DROP ROLE removes the specified role(s). +DROP ROLE

    DROP ROLE

    DROP ROLE — remove a database role

    Synopsis

    DROP ROLE [ IF EXISTS ] name [, ...]

    Description

    DROP ROLE removes the specified role(s). To drop a superuser role, you must be a superuser yourself; to drop non-superuser roles, you must have CREATEROLE privilege. @@ -24,4 +24,4 @@

    DROP ROLE jonathan;

    Compatibility

    The SQL standard defines DROP ROLE, but it allows only one role to be dropped at a time, and it specifies different privilege requirements than PostgreSQL uses. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droprule.html postgresql-10-10.19/doc/src/sgml/html/sql-droprule.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droprule.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droprule.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP RULE

    DROP RULE

    DROP RULE — remove a rewrite rule

    Synopsis

    DROP RULE [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]

    Description

    DROP RULE drops a rewrite rule. +DROP RULE

    DROP RULE

    DROP RULE — remove a rewrite rule

    Synopsis

    DROP RULE [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]

    Description

    DROP RULE drops a rewrite rule.

    Parameters

    IF EXISTS

    Do not throw an error if the rule does not exist. A notice is issued in this case.

    name

    The name of the rule to drop. @@ -15,4 +15,4 @@

    DROP RULE newrule ON mytable;

    Compatibility

    DROP RULE is a PostgreSQL language extension, as is the entire query rewrite system. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropschema.html postgresql-10-10.19/doc/src/sgml/html/sql-dropschema.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropschema.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropschema.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP SCHEMA

    DROP SCHEMA

    DROP SCHEMA — remove a schema

    Synopsis

    DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP SCHEMA removes schemas from the database. +DROP SCHEMA

    DROP SCHEMA

    DROP SCHEMA — remove a schema

    Synopsis

    DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP SCHEMA removes schemas from the database.

    A schema can only be dropped by its owner or a superuser. Note that the owner can drop the schema (and thereby all contained objects) even if they do not own some of the objects within the schema. @@ -22,4 +22,4 @@ dropped per command, and apart from the IF EXISTS option, which is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropsequence.html postgresql-10-10.19/doc/src/sgml/html/sql-dropsequence.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropsequence.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropsequence.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP SEQUENCE

    DROP SEQUENCE

    DROP SEQUENCE — remove a sequence

    Synopsis

    DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP SEQUENCE removes sequence number +DROP SEQUENCE

    DROP SEQUENCE

    DROP SEQUENCE — remove a sequence

    Synopsis

    DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP SEQUENCE removes sequence number generators. A sequence can only be dropped by its owner or a superuser.

    Parameters

    IF EXISTS

    Do not throw an error if the sequence does not exist. A notice is issued in this case. @@ -16,4 +16,4 @@ sequence to be dropped per command, and apart from the IF EXISTS option, which is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropserver.html postgresql-10-10.19/doc/src/sgml/html/sql-dropserver.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropserver.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropserver.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP SERVER

    DROP SERVER

    DROP SERVER — remove a foreign server descriptor

    Synopsis

    DROP SERVER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP SERVER removes an existing foreign server +DROP SERVER

    DROP SERVER

    DROP SERVER — remove a foreign server descriptor

    Synopsis

    DROP SERVER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP SERVER removes an existing foreign server descriptor. To execute this command, the current user must be the owner of the server.

    Parameters

    IF EXISTS

    Do not throw an error if the server does not exist. A notice is @@ -15,4 +15,4 @@

    DROP SERVER IF EXISTS foo;

    Compatibility

    DROP SERVER conforms to ISO/IEC 9075-9 (SQL/MED). The IF EXISTS clause is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropstatistics.html postgresql-10-10.19/doc/src/sgml/html/sql-dropstatistics.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropstatistics.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropstatistics.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,14 +1,16 @@ -DROP STATISTICS

    DROP STATISTICS

    DROP STATISTICS — remove extended statistics

    Synopsis

    DROP STATISTICS [ IF EXISTS ] name [, ...]

    Description

    DROP STATISTICS removes statistics object(s) from the +DROP STATISTICS

    DROP STATISTICS

    DROP STATISTICS — remove extended statistics

    Synopsis

    DROP STATISTICS [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP STATISTICS removes statistics object(s) from the database. Only the statistics object's owner, the schema owner, or a superuser can drop a statistics object.

    Parameters

    IF EXISTS

    Do not throw an error if the statistics object does not exist. A notice is issued in this case.

    name

    The name (optionally schema-qualified) of the statistics object to drop. +

    CASCADE
    RESTRICT

    These key words do not have any effect, since there are no dependencies + on statistics.

    Examples

    To destroy two statistics objects in different schemas, without failing if they don't exist:

    DROP STATISTICS IF EXISTS
         accounting.users_uid_creation,
         public.grants_user_role;

    Compatibility

    There is no DROP STATISTICS command in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropsubscription.html postgresql-10-10.19/doc/src/sgml/html/sql-dropsubscription.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropsubscription.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropsubscription.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP SUBSCRIPTION

    DROP SUBSCRIPTION

    DROP SUBSCRIPTION — remove a subscription

    Synopsis

    DROP SUBSCRIPTION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP SUBSCRIPTION removes a subscription from the +DROP SUBSCRIPTION

    DROP SUBSCRIPTION

    DROP SUBSCRIPTION — remove a subscription

    Synopsis

    DROP SUBSCRIPTION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP SUBSCRIPTION removes a subscription from the database cluster.

    A subscription can only be dropped by a superuser.

    DROP SUBSCRIPTION cannot be executed inside a @@ -29,4 +29,4 @@

    Examples

    Drop a subscription:

    DROP SUBSCRIPTION mysub;

    Compatibility

    DROP SUBSCRIPTION is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptable.html postgresql-10-10.19/doc/src/sgml/html/sql-droptable.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptable.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptable.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TABLE

    DROP TABLE

    DROP TABLE — remove a table

    Synopsis

    DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP TABLE removes tables from the database. +DROP TABLE

    DROP TABLE

    DROP TABLE — remove a table

    Synopsis

    DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP TABLE removes tables from the database. Only the table owner, the schema owner, and superuser can drop a table. To empty a table of rows without destroying the table, use DELETE @@ -27,4 +27,4 @@ allows one table to be dropped per command, and apart from the IF EXISTS option, which is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptablespace.html postgresql-10-10.19/doc/src/sgml/html/sql-droptablespace.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptablespace.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptablespace.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TABLESPACE

    DROP TABLESPACE

    DROP TABLESPACE — remove a tablespace

    Synopsis

    DROP TABLESPACE [ IF EXISTS ] name

    Description

    DROP TABLESPACE removes a tablespace from the system. +DROP TABLESPACE

    DROP TABLESPACE

    DROP TABLESPACE — remove a tablespace

    Synopsis

    DROP TABLESPACE [ IF EXISTS ] name

    Description

    DROP TABLESPACE removes a tablespace from the system.

    A tablespace can only be dropped by its owner or a superuser. The tablespace must be empty of all database objects before it can be dropped. It is possible that objects in other databases might still reside @@ -14,4 +14,4 @@

    Examples

    To remove tablespace mystuff from the system:

    DROP TABLESPACE mystuff;

    Compatibility

    DROP TABLESPACE is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptransform.html postgresql-10-10.19/doc/src/sgml/html/sql-droptransform.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptransform.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptransform.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TRANSFORM

    DROP TRANSFORM

    DROP TRANSFORM — remove a transform

    Synopsis

    DROP TRANSFORM [ IF EXISTS ] FOR type_name LANGUAGE lang_name [ CASCADE | RESTRICT ]

    Description

    DROP TRANSFORM removes a previously defined transform. +DROP TRANSFORM

    DROP TRANSFORM

    DROP TRANSFORM — remove a transform

    Synopsis

    DROP TRANSFORM [ IF EXISTS ] FOR type_name LANGUAGE lang_name [ CASCADE | RESTRICT ]

    Description

    DROP TRANSFORM removes a previously defined transform.

    To be able to drop a transform, you must own the type and the language. These are the same privileges that are required to create a transform.

    Parameters

    IF EXISTS

    Do not throw an error if the transform does not exist. A notice is issued @@ -15,4 +15,4 @@ plpythonu:

    DROP TRANSFORM FOR hstore LANGUAGE plpythonu;

    Compatibility

    This form of DROP TRANSFORM is a PostgreSQL extension. See CREATE TRANSFORM for details. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptrigger.html postgresql-10-10.19/doc/src/sgml/html/sql-droptrigger.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptrigger.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptrigger.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TRIGGER

    DROP TRIGGER

    DROP TRIGGER — remove a trigger

    Synopsis

    DROP TRIGGER [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]

    Description

    DROP TRIGGER removes an existing +DROP TRIGGER

    DROP TRIGGER

    DROP TRIGGER — remove a trigger

    Synopsis

    DROP TRIGGER [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]

    Description

    DROP TRIGGER removes an existing trigger definition. To execute this command, the current user must be the owner of the table for which the trigger is defined.

    Parameters

    IF EXISTS

    Do not throw an error if the trigger does not exist. A notice is issued @@ -20,4 +20,4 @@ standard. In the SQL standard, trigger names are not local to tables, so the command is simply DROP TRIGGER name. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptsconfig.html postgresql-10-10.19/doc/src/sgml/html/sql-droptsconfig.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptsconfig.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptsconfig.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TEXT SEARCH CONFIGURATION

    DROP TEXT SEARCH CONFIGURATION

    DROP TEXT SEARCH CONFIGURATION — remove a text search configuration

    Synopsis

    DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP TEXT SEARCH CONFIGURATION drops an existing text +DROP TEXT SEARCH CONFIGURATION

    DROP TEXT SEARCH CONFIGURATION

    DROP TEXT SEARCH CONFIGURATION — remove a text search configuration

    Synopsis

    DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP TEXT SEARCH CONFIGURATION drops an existing text search configuration. To execute this command you must be the owner of the configuration.

    Parameters

    IF EXISTS

    Do not throw an error if the text search configuration does not exist. @@ -21,4 +21,4 @@ drop such indexes along with the text search configuration.

    Compatibility

    There is no DROP TEXT SEARCH CONFIGURATION statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptsdictionary.html postgresql-10-10.19/doc/src/sgml/html/sql-droptsdictionary.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptsdictionary.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptsdictionary.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TEXT SEARCH DICTIONARY

    DROP TEXT SEARCH DICTIONARY

    DROP TEXT SEARCH DICTIONARY — remove a text search dictionary

    Synopsis

    DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP TEXT SEARCH DICTIONARY drops an existing text +DROP TEXT SEARCH DICTIONARY

    DROP TEXT SEARCH DICTIONARY

    DROP TEXT SEARCH DICTIONARY — remove a text search dictionary

    Synopsis

    DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP TEXT SEARCH DICTIONARY drops an existing text search dictionary. To execute this command you must be the owner of the dictionary.

    Parameters

    IF EXISTS

    Do not throw an error if the text search dictionary does not exist. @@ -20,4 +20,4 @@ drop such configurations along with the dictionary.

    Compatibility

    There is no DROP TEXT SEARCH DICTIONARY statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptsparser.html postgresql-10-10.19/doc/src/sgml/html/sql-droptsparser.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptsparser.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptsparser.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TEXT SEARCH PARSER

    DROP TEXT SEARCH PARSER

    DROP TEXT SEARCH PARSER — remove a text search parser

    Synopsis

    DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP TEXT SEARCH PARSER drops an existing text search +DROP TEXT SEARCH PARSER

    DROP TEXT SEARCH PARSER

    DROP TEXT SEARCH PARSER — remove a text search parser

    Synopsis

    DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP TEXT SEARCH PARSER drops an existing text search parser. You must be a superuser to use this command.

    Parameters

    IF EXISTS

    Do not throw an error if the text search parser does not exist. A notice is issued in this case. @@ -18,4 +18,4 @@ drop such configurations along with the parser.

    Compatibility

    There is no DROP TEXT SEARCH PARSER statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptstemplate.html postgresql-10-10.19/doc/src/sgml/html/sql-droptstemplate.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptstemplate.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptstemplate.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TEXT SEARCH TEMPLATE

    DROP TEXT SEARCH TEMPLATE

    DROP TEXT SEARCH TEMPLATE — remove a text search template

    Synopsis

    DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP TEXT SEARCH TEMPLATE drops an existing text search +DROP TEXT SEARCH TEMPLATE

    DROP TEXT SEARCH TEMPLATE

    DROP TEXT SEARCH TEMPLATE — remove a text search template

    Synopsis

    DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]

    Description

    DROP TEXT SEARCH TEMPLATE drops an existing text search template. You must be a superuser to use this command.

    Parameters

    IF EXISTS

    Do not throw an error if the text search template does not exist. A notice is issued in this case. @@ -19,4 +19,4 @@ drop such dictionaries along with the template.

    Compatibility

    There is no DROP TEXT SEARCH TEMPLATE statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-droptype.html postgresql-10-10.19/doc/src/sgml/html/sql-droptype.html --- postgresql-10-10.17/doc/src/sgml/html/sql-droptype.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-droptype.html 2021-11-08 22:25:02.000000000 +0000 @@ -1,5 +1,5 @@ -DROP TYPE

    DROP TYPE

    DROP TYPE — remove a data type

    Synopsis

    DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP TYPE removes a user-defined data type. +DROP TYPE

    DROP TYPE

    DROP TYPE — remove a data type

    Synopsis

    DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP TYPE removes a user-defined data type. Only the owner of a type can remove it.

    Parameters

    IF EXISTS

    Do not throw an error if the type does not exist. A notice is issued in this case. @@ -17,4 +17,4 @@ But note that much of the CREATE TYPE command and the data type extension mechanisms in PostgreSQL differ from the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropuser.html postgresql-10-10.19/doc/src/sgml/html/sql-dropuser.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropuser.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropuser.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,7 +1,7 @@ -DROP USER

    DROP USER

    DROP USER — remove a database role

    Synopsis

    DROP USER [ IF EXISTS ] name [, ...]

    Description

    DROP USER is simply an alternate spelling of +DROP USER

    DROP USER

    DROP USER — remove a database role

    Synopsis

    DROP USER [ IF EXISTS ] name [, ...]

    Description

    DROP USER is simply an alternate spelling of DROP ROLE.

    Compatibility

    The DROP USER statement is a PostgreSQL extension. The SQL standard leaves the definition of users to the implementation. -

    See Also

    DROP ROLE
    \ No newline at end of file +

    See Also

    DROP ROLE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropusermapping.html postgresql-10-10.19/doc/src/sgml/html/sql-dropusermapping.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropusermapping.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropusermapping.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -DROP USER MAPPING

    DROP USER MAPPING

    DROP USER MAPPING — remove a user mapping for a foreign server

    Synopsis

    DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name

    Description

    DROP USER MAPPING removes an existing user +DROP USER MAPPING

    DROP USER MAPPING

    DROP USER MAPPING — remove a user mapping for a foreign server

    Synopsis

    DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name

    Description

    DROP USER MAPPING removes an existing user mapping from foreign server.

    The owner of a foreign server can drop user mappings for that server for any user. Also, a user can drop a user mapping for their own @@ -16,4 +16,4 @@

    DROP USER MAPPING IF EXISTS FOR bob SERVER foo;

    Compatibility

    DROP USER MAPPING conforms to ISO/IEC 9075-9 (SQL/MED). The IF EXISTS clause is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-dropview.html postgresql-10-10.19/doc/src/sgml/html/sql-dropview.html --- postgresql-10-10.17/doc/src/sgml/html/sql-dropview.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-dropview.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -DROP VIEW

    DROP VIEW

    DROP VIEW — remove a view

    Synopsis

    DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP VIEW drops an existing view. To execute +DROP VIEW

    DROP VIEW

    DROP VIEW — remove a view

    Synopsis

    DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

    Description

    DROP VIEW drops an existing view. To execute this command you must be the owner of the view.

    Parameters

    IF EXISTS

    Do not throw an error if the view does not exist. A notice is issued in this case. @@ -15,4 +15,4 @@ allows one view to be dropped per command, and apart from the IF EXISTS option, which is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-end.html postgresql-10-10.19/doc/src/sgml/html/sql-end.html --- postgresql-10-10.17/doc/src/sgml/html/sql-end.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-end.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -END

    END

    END — commit the current transaction

    Synopsis

    END [ WORK | TRANSACTION ]

    Description

    END commits the current transaction. All changes +END

    END

    END — commit the current transaction

    Synopsis

    END [ WORK | TRANSACTION ]

    Description

    END commits the current transaction. All changes made by the transaction become visible to others and are guaranteed to be durable if a crash occurs. This command is a PostgreSQL extension @@ -13,4 +13,4 @@

    END;

    Compatibility

    END is a PostgreSQL extension that provides functionality equivalent to COMMIT, which is specified in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-execute.html postgresql-10-10.19/doc/src/sgml/html/sql-execute.html --- postgresql-10-10.17/doc/src/sgml/html/sql-execute.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-execute.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -EXECUTE

    EXECUTE

    EXECUTE — execute a prepared statement

    Synopsis

    EXECUTE name [ ( parameter [, ...] ) ]

    Description

    EXECUTE is used to execute a previously prepared +EXECUTE

    EXECUTE

    EXECUTE — execute a prepared statement

    Synopsis

    EXECUTE name [ ( parameter [, ...] ) ]

    Description

    EXECUTE is used to execute a previously prepared statement. Since prepared statements only exist for the duration of a session, the prepared statement must have been created by a PREPARE statement executed earlier in the @@ -24,4 +24,4 @@ but it is only for use in embedded SQL. This version of the EXECUTE statement also uses a somewhat different syntax. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-explain.html postgresql-10-10.19/doc/src/sgml/html/sql-explain.html --- postgresql-10-10.17/doc/src/sgml/html/sql-explain.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-explain.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -EXPLAIN

    EXPLAIN

    EXPLAIN — show the execution plan of a statement

    Synopsis

    EXPLAIN [ ( option [, ...] ) ] statement
    +EXPLAIN

    EXPLAIN

    EXPLAIN — show the execution plan of a statement

    Synopsis

    EXPLAIN [ ( option [, ...] ) ] statement
     EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
     
     where option can be one of:
    @@ -243,4 +243,4 @@
        ANALYZE, even if the actual distribution of data
        in the table has not changed.
       

    Compatibility

    There is no EXPLAIN statement defined in the SQL standard. -

    See Also

    ANALYZE
    \ No newline at end of file +

    See Also

    ANALYZE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-expressions.html postgresql-10-10.19/doc/src/sgml/html/sql-expressions.html --- postgresql-10-10.17/doc/src/sgml/html/sql-expressions.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-expressions.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -4.2. Value Expressions

    4.2. Value Expressions

    Value expressions are used in a variety of contexts, such +4.2. Value Expressions

    4.2. Value Expressions

    Value expressions are used in a variety of contexts, such as in the target list of the SELECT command, as new column values in INSERT or UPDATE, or in search conditions in a number of @@ -738,4 +738,4 @@ min(). Instead, use a WHERE or FILTER clause to prevent problematic input rows from reaching an aggregate function in the first place. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-fetch.html postgresql-10-10.19/doc/src/sgml/html/sql-fetch.html --- postgresql-10-10.17/doc/src/sgml/html/sql-fetch.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-fetch.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -FETCH

    FETCH

    FETCH — retrieve rows from a query using a cursor

    Synopsis

    FETCH [ direction [ FROM | IN ] ] cursor_name
    +FETCH

    FETCH

    FETCH — retrieve rows from a query using a cursor

    Synopsis

    FETCH [ direction [ FROM | IN ] ] cursor_name
     
     where direction can be empty or one of:
     
    @@ -152,4 +152,4 @@
       

    The SQL standard allows only FROM preceding the cursor name; the option to use IN, or to leave them out altogether, is an extension. -

    See Also

    CLOSE, DECLARE, MOVE
    \ No newline at end of file +

    See Also

    CLOSE, DECLARE, MOVE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-grant.html postgresql-10-10.19/doc/src/sgml/html/sql-grant.html --- postgresql-10-10.17/doc/src/sgml/html/sql-grant.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-grant.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -GRANT

    GRANT

    GRANT — define access privileges

    Synopsis

    GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    +GRANT

    GRANT

    GRANT — define access privileges

    Synopsis

    GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
         [, ...] | ALL [ PRIVILEGES ] }
         ON { [ TABLE ] table_name [, ...]
              | ALL TABLES IN SCHEMA schema_name [, ...] }
    @@ -403,4 +403,4 @@
         is the function itself).
        

    Privileges on databases, tablespaces, schemas, and languages are PostgreSQL extensions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql.html postgresql-10-10.19/doc/src/sgml/html/sql.html --- postgresql-10-10.17/doc/src/sgml/html/sql.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -Part II. The SQL Language

    Part II. The SQL Language

    This part describes the use of the SQL language +Part II. The SQL Language

    Part II. The SQL Language

    This part describes the use of the SQL language in PostgreSQL. We start with describing the general syntax of SQL, then explain how to create the structures to hold data, how to populate @@ -24,4 +24,4 @@ using the PostgreSQL interactive terminal psql, but other programs that have similar functionality can be used as well. -

    Table of Contents

    4. SQL Syntax
    4.1. Lexical Structure
    4.2. Value Expressions
    4.3. Calling Functions
    5. Data Definition
    5.1. Table Basics
    5.2. Default Values
    5.3. Constraints
    5.4. System Columns
    5.5. Modifying Tables
    5.6. Privileges
    5.7. Row Security Policies
    5.8. Schemas
    5.9. Inheritance
    5.10. Table Partitioning
    5.11. Foreign Data
    5.12. Other Database Objects
    5.13. Dependency Tracking
    6. Data Manipulation
    6.1. Inserting Data
    6.2. Updating Data
    6.3. Deleting Data
    6.4. Returning Data From Modified Rows
    7. Queries
    7.1. Overview
    7.2. Table Expressions
    7.3. Select Lists
    7.4. Combining Queries
    7.5. Sorting Rows
    7.6. LIMIT and OFFSET
    7.7. VALUES Lists
    7.8. WITH Queries (Common Table Expressions)
    8. Data Types
    8.1. Numeric Types
    8.2. Monetary Types
    8.3. Character Types
    8.4. Binary Data Types
    8.5. Date/Time Types
    8.6. Boolean Type
    8.7. Enumerated Types
    8.8. Geometric Types
    8.9. Network Address Types
    8.10. Bit String Types
    8.11. Text Search Types
    8.12. UUID Type
    8.13. XML Type
    8.14. JSON Types
    8.15. Arrays
    8.16. Composite Types
    8.17. Range Types
    8.18. Object Identifier Types
    8.19. pg_lsn Type
    8.20. Pseudo-Types
    9. Functions and Operators
    9.1. Logical Operators
    9.2. Comparison Functions and Operators
    9.3. Mathematical Functions and Operators
    9.4. String Functions and Operators
    9.5. Binary String Functions and Operators
    9.6. Bit String Functions and Operators
    9.7. Pattern Matching
    9.8. Data Type Formatting Functions
    9.9. Date/Time Functions and Operators
    9.10. Enum Support Functions
    9.11. Geometric Functions and Operators
    9.12. Network Address Functions and Operators
    9.13. Text Search Functions and Operators
    9.14. XML Functions
    9.15. JSON Functions and Operators
    9.16. Sequence Manipulation Functions
    9.17. Conditional Expressions
    9.18. Array Functions and Operators
    9.19. Range Functions and Operators
    9.20. Aggregate Functions
    9.21. Window Functions
    9.22. Subquery Expressions
    9.23. Row and Array Comparisons
    9.24. Set Returning Functions
    9.25. System Information Functions
    9.26. System Administration Functions
    9.27. Trigger Functions
    9.28. Event Trigger Functions
    10. Type Conversion
    10.1. Overview
    10.2. Operators
    10.3. Functions
    10.4. Value Storage
    10.5. UNION, CASE, and Related Constructs
    10.6. SELECT Output Columns
    11. Indexes
    11.1. Introduction
    11.2. Index Types
    11.3. Multicolumn Indexes
    11.4. Indexes and ORDER BY
    11.5. Combining Multiple Indexes
    11.6. Unique Indexes
    11.7. Indexes on Expressions
    11.8. Partial Indexes
    11.9. Operator Classes and Operator Families
    11.10. Indexes and Collations
    11.11. Index-Only Scans
    11.12. Examining Index Usage
    12. Full Text Search
    12.1. Introduction
    12.2. Tables and Indexes
    12.3. Controlling Text Search
    12.4. Additional Features
    12.5. Parsers
    12.6. Dictionaries
    12.7. Configuration Example
    12.8. Testing and Debugging Text Search
    12.9. GIN and GiST Index Types
    12.10. psql Support
    12.11. Limitations
    13. Concurrency Control
    13.1. Introduction
    13.2. Transaction Isolation
    13.3. Explicit Locking
    13.4. Data Consistency Checks at the Application Level
    13.5. Caveats
    13.6. Locking and Indexes
    14. Performance Tips
    14.1. Using EXPLAIN
    14.2. Statistics Used by the Planner
    14.3. Controlling the Planner with Explicit JOIN Clauses
    14.4. Populating a Database
    14.5. Non-Durable Settings
    15. Parallel Query
    15.1. How Parallel Query Works
    15.2. When Can Parallel Query Be Used?
    15.3. Parallel Plans
    15.4. Parallel Safety
    \ No newline at end of file +

    Table of Contents

    4. SQL Syntax
    4.1. Lexical Structure
    4.2. Value Expressions
    4.3. Calling Functions
    5. Data Definition
    5.1. Table Basics
    5.2. Default Values
    5.3. Constraints
    5.4. System Columns
    5.5. Modifying Tables
    5.6. Privileges
    5.7. Row Security Policies
    5.8. Schemas
    5.9. Inheritance
    5.10. Table Partitioning
    5.11. Foreign Data
    5.12. Other Database Objects
    5.13. Dependency Tracking
    6. Data Manipulation
    6.1. Inserting Data
    6.2. Updating Data
    6.3. Deleting Data
    6.4. Returning Data From Modified Rows
    7. Queries
    7.1. Overview
    7.2. Table Expressions
    7.3. Select Lists
    7.4. Combining Queries
    7.5. Sorting Rows
    7.6. LIMIT and OFFSET
    7.7. VALUES Lists
    7.8. WITH Queries (Common Table Expressions)
    8. Data Types
    8.1. Numeric Types
    8.2. Monetary Types
    8.3. Character Types
    8.4. Binary Data Types
    8.5. Date/Time Types
    8.6. Boolean Type
    8.7. Enumerated Types
    8.8. Geometric Types
    8.9. Network Address Types
    8.10. Bit String Types
    8.11. Text Search Types
    8.12. UUID Type
    8.13. XML Type
    8.14. JSON Types
    8.15. Arrays
    8.16. Composite Types
    8.17. Range Types
    8.18. Object Identifier Types
    8.19. pg_lsn Type
    8.20. Pseudo-Types
    9. Functions and Operators
    9.1. Logical Operators
    9.2. Comparison Functions and Operators
    9.3. Mathematical Functions and Operators
    9.4. String Functions and Operators
    9.5. Binary String Functions and Operators
    9.6. Bit String Functions and Operators
    9.7. Pattern Matching
    9.8. Data Type Formatting Functions
    9.9. Date/Time Functions and Operators
    9.10. Enum Support Functions
    9.11. Geometric Functions and Operators
    9.12. Network Address Functions and Operators
    9.13. Text Search Functions and Operators
    9.14. XML Functions
    9.15. JSON Functions and Operators
    9.16. Sequence Manipulation Functions
    9.17. Conditional Expressions
    9.18. Array Functions and Operators
    9.19. Range Functions and Operators
    9.20. Aggregate Functions
    9.21. Window Functions
    9.22. Subquery Expressions
    9.23. Row and Array Comparisons
    9.24. Set Returning Functions
    9.25. System Information Functions
    9.26. System Administration Functions
    9.27. Trigger Functions
    9.28. Event Trigger Functions
    10. Type Conversion
    10.1. Overview
    10.2. Operators
    10.3. Functions
    10.4. Value Storage
    10.5. UNION, CASE, and Related Constructs
    10.6. SELECT Output Columns
    11. Indexes
    11.1. Introduction
    11.2. Index Types
    11.3. Multicolumn Indexes
    11.4. Indexes and ORDER BY
    11.5. Combining Multiple Indexes
    11.6. Unique Indexes
    11.7. Indexes on Expressions
    11.8. Partial Indexes
    11.9. Operator Classes and Operator Families
    11.10. Indexes and Collations
    11.11. Index-Only Scans
    11.12. Examining Index Usage
    12. Full Text Search
    12.1. Introduction
    12.2. Tables and Indexes
    12.3. Controlling Text Search
    12.4. Additional Features
    12.5. Parsers
    12.6. Dictionaries
    12.7. Configuration Example
    12.8. Testing and Debugging Text Search
    12.9. GIN and GiST Index Types
    12.10. psql Support
    12.11. Limitations
    13. Concurrency Control
    13.1. Introduction
    13.2. Transaction Isolation
    13.3. Explicit Locking
    13.4. Data Consistency Checks at the Application Level
    13.5. Caveats
    13.6. Locking and Indexes
    14. Performance Tips
    14.1. Using EXPLAIN
    14.2. Statistics Used by the Planner
    14.3. Controlling the Planner with Explicit JOIN Clauses
    14.4. Populating a Database
    14.5. Non-Durable Settings
    15. Parallel Query
    15.1. How Parallel Query Works
    15.2. When Can Parallel Query Be Used?
    15.3. Parallel Plans
    15.4. Parallel Safety
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-importforeignschema.html postgresql-10-10.19/doc/src/sgml/html/sql-importforeignschema.html --- postgresql-10-10.17/doc/src/sgml/html/sql-importforeignschema.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-importforeignschema.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -IMPORT FOREIGN SCHEMA

    IMPORT FOREIGN SCHEMA

    IMPORT FOREIGN SCHEMA — import table definitions from a foreign server

    Synopsis

    IMPORT FOREIGN SCHEMA remote_schema
    +IMPORT FOREIGN SCHEMA

    IMPORT FOREIGN SCHEMA

    IMPORT FOREIGN SCHEMA — import table definitions from a foreign server

    Synopsis

    IMPORT FOREIGN SCHEMA remote_schema
         [ { LIMIT TO | EXCEPT } ( table_name [, ...] ) ]
         FROM SERVER server_name
         INTO local_schema
    @@ -39,4 +39,4 @@
         FROM SERVER film_server INTO films;

    Compatibility

    The IMPORT FOREIGN SCHEMA command conforms to the SQL standard, except that the OPTIONS clause is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-insert.html postgresql-10-10.19/doc/src/sgml/html/sql-insert.html --- postgresql-10-10.17/doc/src/sgml/html/sql-insert.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-insert.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -INSERT

    INSERT

    INSERT — create new rows in a table

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
    +INSERT

    INSERT

    INSERT — create new rows in a table

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
     INSERT INTO table_name [ AS alias ] [ ( column_name [, ...] ) ]
         [ OVERRIDING { SYSTEM | USER } VALUE ]
         { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
    @@ -365,4 +365,4 @@
        not applicable.
       

    Possible limitations of the query clause are documented under SELECT. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-keywords-appendix.html postgresql-10-10.19/doc/src/sgml/html/sql-keywords-appendix.html --- postgresql-10-10.17/doc/src/sgml/html/sql-keywords-appendix.html 2021-05-10 20:58:26.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-keywords-appendix.html 2021-11-08 22:25:09.000000000 +0000 @@ -1,7 +1,7 @@ -Appendix C. SQL Key Words

    Appendix C. SQL Key Words

    Table C.1 lists all tokens that are key words +Appendix C. SQL Key Words

    Appendix C. SQL Key Words

    Table C.1 lists all tokens that are key words in the SQL standard and in PostgreSQL - 10.17. Background information can be found in Section 4.1.1. + 10.19. Background information can be found in Section 4.1.1. (For space reasons, only the latest two versions of the SQL standard, and SQL-92 for historical comparison, are included. The differences between those and the other intermediate standard versions are small.) @@ -46,4 +46,4 @@ reserved in PostgreSQL does not mean that the feature related to the word is not implemented. Conversely, the presence of a key word does not indicate the existence of a feature. -

    Table C.1. SQL Key Words

    Key WordPostgreSQLSQL:2011SQL:2008SQL-92
    A non-reservednon-reserved 
    ABORTnon-reserved   
    ABS reservedreserved 
    ABSENT non-reservednon-reserved 
    ABSOLUTEnon-reservednon-reservednon-reservedreserved
    ACCESSnon-reserved   
    ACCORDING non-reservednon-reserved 
    ACTIONnon-reservednon-reservednon-reservedreserved
    ADA non-reservednon-reservednon-reserved
    ADDnon-reservednon-reservednon-reservedreserved
    ADMINnon-reservednon-reservednon-reserved 
    AFTERnon-reservednon-reservednon-reserved 
    AGGREGATEnon-reserved   
    ALLreservedreservedreservedreserved
    ALLOCATE reservedreservedreserved
    ALSOnon-reserved   
    ALTERnon-reservedreservedreservedreserved
    ALWAYSnon-reservednon-reservednon-reserved 
    ANALYSEreserved   
    ANALYZEreserved   
    ANDreservedreservedreservedreserved
    ANYreservedreservedreservedreserved
    ARE reservedreservedreserved
    ARRAYreservedreservedreserved 
    ARRAY_AGG reservedreserved 
    ARRAY_MAX_CARDINALITY reserved  
    ASreservedreservedreservedreserved
    ASCreservednon-reservednon-reservedreserved
    ASENSITIVE reservedreserved 
    ASSERTIONnon-reservednon-reservednon-reservedreserved
    ASSIGNMENTnon-reservednon-reservednon-reserved 
    ASYMMETRICreservedreservedreserved 
    ATnon-reservedreservedreservedreserved
    ATOMIC reservedreserved 
    ATTACHnon-reserved   
    ATTRIBUTEnon-reservednon-reservednon-reserved 
    ATTRIBUTES non-reservednon-reserved 
    AUTHORIZATIONreserved (can be function or type)reservedreservedreserved
    AVG reservedreservedreserved
    BACKWARDnon-reserved   
    BASE64 non-reservednon-reserved 
    BEFOREnon-reservednon-reservednon-reserved 
    BEGINnon-reservedreservedreservedreserved
    BEGIN_FRAME reserved  
    BEGIN_PARTITION reserved  
    BERNOULLI non-reservednon-reserved 
    BETWEENnon-reserved (cannot be function or type)reservedreservedreserved
    BIGINTnon-reserved (cannot be function or type)reservedreserved 
    BINARYreserved (can be function or type)reservedreserved 
    BITnon-reserved (cannot be function or type)  reserved
    BIT_LENGTH   reserved
    BLOB reservedreserved 
    BLOCKED non-reservednon-reserved 
    BOM non-reservednon-reserved 
    BOOLEANnon-reserved (cannot be function or type)reservedreserved 
    BOTHreservedreservedreservedreserved
    BREADTH non-reservednon-reserved 
    BYnon-reservedreservedreservedreserved
    C non-reservednon-reservednon-reserved
    CACHEnon-reserved   
    CALL reservedreserved 
    CALLEDnon-reservedreservedreserved 
    CARDINALITY reservedreserved 
    CASCADEnon-reservednon-reservednon-reservedreserved
    CASCADEDnon-reservedreservedreservedreserved
    CASEreservedreservedreservedreserved
    CASTreservedreservedreservedreserved
    CATALOGnon-reservednon-reservednon-reservedreserved
    CATALOG_NAME non-reservednon-reservednon-reserved
    CEIL reservedreserved 
    CEILING reservedreserved 
    CHAINnon-reservednon-reservednon-reserved 
    CHARnon-reserved (cannot be function or type)reservedreservedreserved
    CHARACTERnon-reserved (cannot be function or type)reservedreservedreserved
    CHARACTERISTICSnon-reservednon-reservednon-reserved 
    CHARACTERS non-reservednon-reserved 
    CHARACTER_LENGTH reservedreservedreserved
    CHARACTER_SET_CATALOG non-reservednon-reservednon-reserved
    CHARACTER_SET_NAME non-reservednon-reservednon-reserved
    CHARACTER_SET_SCHEMA non-reservednon-reservednon-reserved
    CHAR_LENGTH reservedreservedreserved
    CHECKreservedreservedreservedreserved
    CHECKPOINTnon-reserved   
    CLASSnon-reserved   
    CLASS_ORIGIN non-reservednon-reservednon-reserved
    CLOB reservedreserved 
    CLOSEnon-reservedreservedreservedreserved
    CLUSTERnon-reserved   
    COALESCEnon-reserved (cannot be function or type)reservedreservedreserved
    COBOL non-reservednon-reservednon-reserved
    COLLATEreservedreservedreservedreserved
    COLLATIONreserved (can be function or type)non-reservednon-reservedreserved
    COLLATION_CATALOG non-reservednon-reservednon-reserved
    COLLATION_NAME non-reservednon-reservednon-reserved
    COLLATION_SCHEMA non-reservednon-reservednon-reserved
    COLLECT reservedreserved 
    COLUMNreservedreservedreservedreserved
    COLUMNSnon-reservednon-reservednon-reserved 
    COLUMN_NAME non-reservednon-reservednon-reserved
    COMMAND_FUNCTION non-reservednon-reservednon-reserved
    COMMAND_FUNCTION_CODE non-reservednon-reserved 
    COMMENTnon-reserved   
    COMMENTSnon-reserved   
    COMMITnon-reservedreservedreservedreserved
    COMMITTEDnon-reservednon-reservednon-reservednon-reserved
    CONCURRENTLYreserved (can be function or type)   
    CONDITION reservedreserved 
    CONDITION_NUMBER non-reservednon-reservednon-reserved
    CONFIGURATIONnon-reserved   
    CONFLICTnon-reserved   
    CONNECT reservedreservedreserved
    CONNECTIONnon-reservednon-reservednon-reservedreserved
    CONNECTION_NAME non-reservednon-reservednon-reserved
    CONSTRAINTreservedreservedreservedreserved
    CONSTRAINTSnon-reservednon-reservednon-reservedreserved
    CONSTRAINT_CATALOG non-reservednon-reservednon-reserved
    CONSTRAINT_NAME non-reservednon-reservednon-reserved
    CONSTRAINT_SCHEMA non-reservednon-reservednon-reserved
    CONSTRUCTOR non-reservednon-reserved 
    CONTAINS reservednon-reserved 
    CONTENTnon-reservednon-reservednon-reserved 
    CONTINUEnon-reservednon-reservednon-reservedreserved
    CONTROL non-reservednon-reserved 
    CONVERSIONnon-reserved   
    CONVERT reservedreservedreserved
    COPYnon-reserved   
    CORR reservedreserved 
    CORRESPONDING reservedreservedreserved
    COSTnon-reserved   
    COUNT reservedreservedreserved
    COVAR_POP reservedreserved 
    COVAR_SAMP reservedreserved 
    CREATEreservedreservedreservedreserved
    CROSSreserved (can be function or type)reservedreservedreserved
    CSVnon-reserved   
    CUBEnon-reservedreservedreserved 
    CUME_DIST reservedreserved 
    CURRENTnon-reservedreservedreservedreserved
    CURRENT_CATALOGreservedreservedreserved 
    CURRENT_DATEreservedreservedreservedreserved
    CURRENT_DEFAULT_TRANSFORM_GROUP reservedreserved 
    CURRENT_PATH reservedreserved 
    CURRENT_ROLEreservedreservedreserved 
    CURRENT_ROW reserved  
    CURRENT_SCHEMAreserved (can be function or type)reservedreserved 
    CURRENT_TIMEreservedreservedreservedreserved
    CURRENT_TIMESTAMPreservedreservedreservedreserved
    CURRENT_TRANSFORM_GROUP_FOR_TYPE reservedreserved 
    CURRENT_USERreservedreservedreservedreserved
    CURSORnon-reservedreservedreservedreserved
    CURSOR_NAME non-reservednon-reservednon-reserved
    CYCLEnon-reservedreservedreserved 
    DATAnon-reservednon-reservednon-reservednon-reserved
    DATABASEnon-reserved   
    DATALINK reservedreserved 
    DATE reservedreservedreserved
    DATETIME_INTERVAL_CODE non-reservednon-reservednon-reserved
    DATETIME_INTERVAL_PRECISION non-reservednon-reservednon-reserved
    DAYnon-reservedreservedreservedreserved
    DB non-reservednon-reserved 
    DEALLOCATEnon-reservedreservedreservedreserved
    DECnon-reserved (cannot be function or type)reservedreservedreserved
    DECIMALnon-reserved (cannot be function or type)reservedreservedreserved
    DECLAREnon-reservedreservedreservedreserved
    DEFAULTreservedreservedreservedreserved
    DEFAULTSnon-reservednon-reservednon-reserved 
    DEFERRABLEreservednon-reservednon-reservedreserved
    DEFERREDnon-reservednon-reservednon-reservedreserved
    DEFINED non-reservednon-reserved 
    DEFINERnon-reservednon-reservednon-reserved 
    DEGREE non-reservednon-reserved 
    DELETEnon-reservedreservedreservedreserved
    DELIMITERnon-reserved   
    DELIMITERSnon-reserved   
    DENSE_RANK reservedreserved 
    DEPENDSnon-reserved   
    DEPTH non-reservednon-reserved 
    DEREF reservedreserved 
    DERIVED non-reservednon-reserved 
    DESCreservednon-reservednon-reservedreserved
    DESCRIBE reservedreservedreserved
    DESCRIPTOR non-reservednon-reservedreserved
    DETACHnon-reserved   
    DETERMINISTIC reservedreserved 
    DIAGNOSTICS non-reservednon-reservedreserved
    DICTIONARYnon-reserved   
    DISABLEnon-reserved   
    DISCARDnon-reserved   
    DISCONNECT reservedreservedreserved
    DISPATCH non-reservednon-reserved 
    DISTINCTreservedreservedreservedreserved
    DLNEWCOPY reservedreserved 
    DLPREVIOUSCOPY reservedreserved 
    DLURLCOMPLETE reservedreserved 
    DLURLCOMPLETEONLY reservedreserved 
    DLURLCOMPLETEWRITE reservedreserved 
    DLURLPATH reservedreserved 
    DLURLPATHONLY reservedreserved 
    DLURLPATHWRITE reservedreserved 
    DLURLSCHEME reservedreserved 
    DLURLSERVER reservedreserved 
    DLVALUE reservedreserved 
    DOreserved   
    DOCUMENTnon-reservednon-reservednon-reserved 
    DOMAINnon-reservednon-reservednon-reservedreserved
    DOUBLEnon-reservedreservedreservedreserved
    DROPnon-reservedreservedreservedreserved
    DYNAMIC reservedreserved 
    DYNAMIC_FUNCTION non-reservednon-reservednon-reserved
    DYNAMIC_FUNCTION_CODE non-reservednon-reserved 
    EACHnon-reservedreservedreserved 
    ELEMENT reservedreserved 
    ELSEreservedreservedreservedreserved
    EMPTY non-reservednon-reserved 
    ENABLEnon-reserved   
    ENCODINGnon-reservednon-reservednon-reserved 
    ENCRYPTEDnon-reserved   
    ENDreservedreservedreservedreserved
    END-EXEC reservedreservedreserved
    END_FRAME reserved  
    END_PARTITION reserved  
    ENFORCED non-reserved  
    ENUMnon-reserved   
    EQUALS reservednon-reserved 
    ESCAPEnon-reservedreservedreservedreserved
    EVENTnon-reserved   
    EVERY reservedreserved 
    EXCEPTreservedreservedreservedreserved
    EXCEPTION   reserved
    EXCLUDEnon-reservednon-reservednon-reserved 
    EXCLUDINGnon-reservednon-reservednon-reserved 
    EXCLUSIVEnon-reserved   
    EXEC reservedreservedreserved
    EXECUTEnon-reservedreservedreservedreserved
    EXISTSnon-reserved (cannot be function or type)reservedreservedreserved
    EXP reservedreserved 
    EXPLAINnon-reserved   
    EXPRESSION non-reserved  
    EXTENSIONnon-reserved   
    EXTERNALnon-reservedreservedreservedreserved
    EXTRACTnon-reserved (cannot be function or type)reservedreservedreserved
    FALSEreservedreservedreservedreserved
    FAMILYnon-reserved   
    FETCHreservedreservedreservedreserved
    FILE non-reservednon-reserved 
    FILTERnon-reservedreservedreserved 
    FINAL non-reservednon-reserved 
    FIRSTnon-reservednon-reservednon-reservedreserved
    FIRST_VALUE reservedreserved 
    FLAG non-reservednon-reserved 
    FLOATnon-reserved (cannot be function or type)reservedreservedreserved
    FLOOR reservedreserved 
    FOLLOWINGnon-reservednon-reservednon-reserved 
    FORreservedreservedreservedreserved
    FORCEnon-reserved   
    FOREIGNreservedreservedreservedreserved
    FORTRAN non-reservednon-reservednon-reserved
    FORWARDnon-reserved   
    FOUND non-reservednon-reservedreserved
    FRAME_ROW reserved  
    FREE reservedreserved 
    FREEZEreserved (can be function or type)   
    FROMreservedreservedreservedreserved
    FS non-reservednon-reserved 
    FULLreserved (can be function or type)reservedreservedreserved
    FUNCTIONnon-reservedreservedreserved 
    FUNCTIONSnon-reserved   
    FUSION reservedreserved 
    G non-reservednon-reserved 
    GENERAL non-reservednon-reserved 
    GENERATEDnon-reservednon-reservednon-reserved 
    GET reservedreservedreserved
    GLOBALnon-reservedreservedreservedreserved
    GO non-reservednon-reservedreserved
    GOTO non-reservednon-reservedreserved
    GRANTreservedreservedreservedreserved
    GRANTEDnon-reservednon-reservednon-reserved 
    GREATESTnon-reserved (cannot be function or type)   
    GROUPreservedreservedreservedreserved
    GROUPINGnon-reserved (cannot be function or type)reservedreserved 
    GROUPS reserved  
    HANDLERnon-reserved   
    HAVINGreservedreservedreservedreserved
    HEADERnon-reserved   
    HEX non-reservednon-reserved 
    HIERARCHY non-reservednon-reserved 
    HOLDnon-reservedreservedreserved 
    HOURnon-reservedreservedreservedreserved
    ID non-reservednon-reserved 
    IDENTITYnon-reservedreservedreservedreserved
    IFnon-reserved   
    IGNORE non-reservednon-reserved 
    ILIKEreserved (can be function or type)   
    IMMEDIATEnon-reservednon-reservednon-reservedreserved
    IMMEDIATELY non-reserved  
    IMMUTABLEnon-reserved   
    IMPLEMENTATION non-reservednon-reserved 
    IMPLICITnon-reserved   
    IMPORTnon-reservedreservedreserved 
    INreservedreservedreservedreserved
    INCLUDINGnon-reservednon-reservednon-reserved 
    INCREMENTnon-reservednon-reservednon-reserved 
    INDENT non-reservednon-reserved 
    INDEXnon-reserved   
    INDEXESnon-reserved   
    INDICATOR reservedreservedreserved
    INHERITnon-reserved   
    INHERITSnon-reserved   
    INITIALLYreservednon-reservednon-reservedreserved
    INLINEnon-reserved   
    INNERreserved (can be function or type)reservedreservedreserved
    INOUTnon-reserved (cannot be function or type)reservedreserved 
    INPUTnon-reservednon-reservednon-reservedreserved
    INSENSITIVEnon-reservedreservedreservedreserved
    INSERTnon-reservedreservedreservedreserved
    INSTANCE non-reservednon-reserved 
    INSTANTIABLE non-reservednon-reserved 
    INSTEADnon-reservednon-reservednon-reserved 
    INTnon-reserved (cannot be function or type)reservedreservedreserved
    INTEGERnon-reserved (cannot be function or type)reservedreservedreserved
    INTEGRITY non-reservednon-reserved 
    INTERSECTreservedreservedreservedreserved
    INTERSECTION reservedreserved 
    INTERVALnon-reserved (cannot be function or type)reservedreservedreserved
    INTOreservedreservedreservedreserved
    INVOKERnon-reservednon-reservednon-reserved 
    ISreserved (can be function or type)reservedreservedreserved
    ISNULLreserved (can be function or type)   
    ISOLATIONnon-reservednon-reservednon-reservedreserved
    JOINreserved (can be function or type)reservedreservedreserved
    K non-reservednon-reserved 
    KEYnon-reservednon-reservednon-reservedreserved
    KEY_MEMBER non-reservednon-reserved 
    KEY_TYPE non-reservednon-reserved 
    LABELnon-reserved   
    LAG reservedreserved 
    LANGUAGEnon-reservedreservedreservedreserved
    LARGEnon-reservedreservedreserved 
    LASTnon-reservednon-reservednon-reservedreserved
    LAST_VALUE reservedreserved 
    LATERALreservedreservedreserved 
    LEAD reservedreserved 
    LEADINGreservedreservedreservedreserved
    LEAKPROOFnon-reserved   
    LEASTnon-reserved (cannot be function or type)   
    LEFTreserved (can be function or type)reservedreservedreserved
    LENGTH non-reservednon-reservednon-reserved
    LEVELnon-reservednon-reservednon-reservedreserved
    LIBRARY non-reservednon-reserved 
    LIKEreserved (can be function or type)reservedreservedreserved
    LIKE_REGEX reservedreserved 
    LIMITreservednon-reservednon-reserved 
    LINK non-reservednon-reserved 
    LISTENnon-reserved   
    LN reservedreserved 
    LOADnon-reserved   
    LOCALnon-reservedreservedreservedreserved
    LOCALTIMEreservedreservedreserved 
    LOCALTIMESTAMPreservedreservedreserved 
    LOCATIONnon-reservednon-reservednon-reserved 
    LOCATOR non-reservednon-reserved 
    LOCKnon-reserved   
    LOCKEDnon-reserved   
    LOGGEDnon-reserved   
    LOWER reservedreservedreserved
    M non-reservednon-reserved 
    MAP non-reservednon-reserved 
    MAPPINGnon-reservednon-reservednon-reserved 
    MATCHnon-reservedreservedreservedreserved
    MATCHED non-reservednon-reserved 
    MATERIALIZEDnon-reserved   
    MAX reservedreservedreserved
    MAXVALUEnon-reservednon-reservednon-reserved 
    MAX_CARDINALITY  reserved 
    MEMBER reservedreserved 
    MERGE reservedreserved 
    MESSAGE_LENGTH non-reservednon-reservednon-reserved
    MESSAGE_OCTET_LENGTH non-reservednon-reservednon-reserved
    MESSAGE_TEXT non-reservednon-reservednon-reserved
    METHODnon-reservedreservedreserved 
    MIN reservedreservedreserved
    MINUTEnon-reservedreservedreservedreserved
    MINVALUEnon-reservednon-reservednon-reserved 
    MOD reservedreserved 
    MODEnon-reserved   
    MODIFIES reservedreserved 
    MODULE reservedreservedreserved
    MONTHnon-reservedreservedreservedreserved
    MORE non-reservednon-reservednon-reserved
    MOVEnon-reserved   
    MULTISET reservedreserved 
    MUMPS non-reservednon-reservednon-reserved
    NAMEnon-reservednon-reservednon-reservednon-reserved
    NAMESnon-reservednon-reservednon-reservedreserved
    NAMESPACE non-reservednon-reserved 
    NATIONALnon-reserved (cannot be function or type)reservedreservedreserved
    NATURALreserved (can be function or type)reservedreservedreserved
    NCHARnon-reserved (cannot be function or type)reservedreservedreserved
    NCLOB reservedreserved 
    NESTING non-reservednon-reserved 
    NEWnon-reservedreservedreserved 
    NEXTnon-reservednon-reservednon-reservedreserved
    NFC non-reservednon-reserved 
    NFD non-reservednon-reserved 
    NFKC non-reservednon-reserved 
    NFKD non-reservednon-reserved 
    NIL non-reservednon-reserved 
    NOnon-reservedreservedreservedreserved
    NONEnon-reserved (cannot be function or type)reservedreserved 
    NORMALIZE reservedreserved 
    NORMALIZED non-reservednon-reserved 
    NOTreservedreservedreservedreserved
    NOTHINGnon-reserved   
    NOTIFYnon-reserved   
    NOTNULLreserved (can be function or type)   
    NOWAITnon-reserved   
    NTH_VALUE reservedreserved 
    NTILE reservedreserved 
    NULLreservedreservedreservedreserved
    NULLABLE non-reservednon-reservednon-reserved
    NULLIFnon-reserved (cannot be function or type)reservedreservedreserved
    NULLSnon-reservednon-reservednon-reserved 
    NUMBER non-reservednon-reservednon-reserved
    NUMERICnon-reserved (cannot be function or type)reservedreservedreserved
    OBJECTnon-reservednon-reservednon-reserved 
    OCCURRENCES_REGEX reservedreserved 
    OCTETS non-reservednon-reserved 
    OCTET_LENGTH reservedreservedreserved
    OFnon-reservedreservedreservedreserved
    OFFnon-reservednon-reservednon-reserved 
    OFFSETreservedreservedreserved 
    OIDSnon-reserved   
    OLDnon-reservedreservedreserved 
    ONreservedreservedreservedreserved
    ONLYreservedreservedreservedreserved
    OPEN reservedreservedreserved
    OPERATORnon-reserved   
    OPTIONnon-reservednon-reservednon-reservedreserved
    OPTIONSnon-reservednon-reservednon-reserved 
    ORreservedreservedreservedreserved
    ORDERreservedreservedreservedreserved
    ORDERING non-reservednon-reserved 
    ORDINALITYnon-reservednon-reservednon-reserved 
    OTHERS non-reservednon-reserved 
    OUTnon-reserved (cannot be function or type)reservedreserved 
    OUTERreserved (can be function or type)reservedreservedreserved
    OUTPUT non-reservednon-reservedreserved
    OVERnon-reservedreservedreserved 
    OVERLAPSreserved (can be function or type)reservedreservedreserved
    OVERLAYnon-reserved (cannot be function or type)reservedreserved 
    OVERRIDINGnon-reservednon-reservednon-reserved 
    OWNEDnon-reserved   
    OWNERnon-reserved   
    P non-reservednon-reserved 
    PAD non-reservednon-reservedreserved
    PARALLELnon-reserved   
    PARAMETER reservedreserved 
    PARAMETER_MODE non-reservednon-reserved 
    PARAMETER_NAME non-reservednon-reserved 
    PARAMETER_ORDINAL_POSITION non-reservednon-reserved 
    PARAMETER_SPECIFIC_CATALOG non-reservednon-reserved 
    PARAMETER_SPECIFIC_NAME non-reservednon-reserved 
    PARAMETER_SPECIFIC_SCHEMA non-reservednon-reserved 
    PARSERnon-reserved   
    PARTIALnon-reservednon-reservednon-reservedreserved
    PARTITIONnon-reservedreservedreserved 
    PASCAL non-reservednon-reservednon-reserved
    PASSINGnon-reservednon-reservednon-reserved 
    PASSTHROUGH non-reservednon-reserved 
    PASSWORDnon-reserved   
    PATH non-reservednon-reserved 
    PERCENT reserved  
    PERCENTILE_CONT reservedreserved 
    PERCENTILE_DISC reservedreserved 
    PERCENT_RANK reservedreserved 
    PERIOD reserved  
    PERMISSION non-reservednon-reserved 
    PLACINGreservednon-reservednon-reserved 
    PLANSnon-reserved   
    PLI non-reservednon-reservednon-reserved
    POLICYnon-reserved   
    PORTION reserved  
    POSITIONnon-reserved (cannot be function or type)reservedreservedreserved
    POSITION_REGEX reservedreserved 
    POWER reservedreserved 
    PRECEDES reserved  
    PRECEDINGnon-reservednon-reservednon-reserved 
    PRECISIONnon-reserved (cannot be function or type)reservedreservedreserved
    PREPAREnon-reservedreservedreservedreserved
    PREPAREDnon-reserved   
    PRESERVEnon-reservednon-reservednon-reservedreserved
    PRIMARYreservedreservedreservedreserved
    PRIORnon-reservednon-reservednon-reservedreserved
    PRIVILEGESnon-reservednon-reservednon-reservedreserved
    PROCEDURALnon-reserved   
    PROCEDUREnon-reservedreservedreservedreserved
    PROGRAMnon-reserved   
    PUBLIC non-reservednon-reservedreserved
    PUBLICATIONnon-reserved   
    QUOTEnon-reserved   
    RANGEnon-reservedreservedreserved 
    RANK reservedreserved 
    READnon-reservednon-reservednon-reservedreserved
    READS reservedreserved 
    REALnon-reserved (cannot be function or type)reservedreservedreserved
    REASSIGNnon-reserved   
    RECHECKnon-reserved   
    RECOVERY non-reservednon-reserved 
    RECURSIVEnon-reservedreservedreserved 
    REFnon-reservedreservedreserved 
    REFERENCESreservedreservedreservedreserved
    REFERENCINGnon-reservedreservedreserved 
    REFRESHnon-reserved   
    REGR_AVGX reservedreserved 
    REGR_AVGY reservedreserved 
    REGR_COUNT reservedreserved 
    REGR_INTERCEPT reservedreserved 
    REGR_R2 reservedreserved 
    REGR_SLOPE reservedreserved 
    REGR_SXX reservedreserved 
    REGR_SXY reservedreserved 
    REGR_SYY reservedreserved 
    REINDEXnon-reserved   
    RELATIVEnon-reservednon-reservednon-reservedreserved
    RELEASEnon-reservedreservedreserved 
    RENAMEnon-reserved   
    REPEATABLEnon-reservednon-reservednon-reservednon-reserved
    REPLACEnon-reserved   
    REPLICAnon-reserved   
    REQUIRING non-reservednon-reserved 
    RESETnon-reserved   
    RESPECT non-reservednon-reserved 
    RESTARTnon-reservednon-reservednon-reserved 
    RESTORE non-reservednon-reserved 
    RESTRICTnon-reservednon-reservednon-reservedreserved
    RESULT reservedreserved 
    RETURN reservedreserved 
    RETURNED_CARDINALITY non-reservednon-reserved 
    RETURNED_LENGTH non-reservednon-reservednon-reserved
    RETURNED_OCTET_LENGTH non-reservednon-reservednon-reserved
    RETURNED_SQLSTATE non-reservednon-reservednon-reserved
    RETURNINGreservednon-reservednon-reserved 
    RETURNSnon-reservedreservedreserved 
    REVOKEnon-reservedreservedreservedreserved
    RIGHTreserved (can be function or type)reservedreservedreserved
    ROLEnon-reservednon-reservednon-reserved 
    ROLLBACKnon-reservedreservedreservedreserved
    ROLLUPnon-reservedreservedreserved 
    ROUTINE non-reservednon-reserved 
    ROUTINE_CATALOG non-reservednon-reserved 
    ROUTINE_NAME non-reservednon-reserved 
    ROUTINE_SCHEMA non-reservednon-reserved 
    ROWnon-reserved (cannot be function or type)reservedreserved 
    ROWSnon-reservedreservedreservedreserved
    ROW_COUNT non-reservednon-reservednon-reserved
    ROW_NUMBER reservedreserved 
    RULEnon-reserved   
    SAVEPOINTnon-reservedreservedreserved 
    SCALE non-reservednon-reservednon-reserved
    SCHEMAnon-reservednon-reservednon-reservedreserved
    SCHEMASnon-reserved   
    SCHEMA_NAME non-reservednon-reservednon-reserved
    SCOPE reservedreserved 
    SCOPE_CATALOG non-reservednon-reserved 
    SCOPE_NAME non-reservednon-reserved 
    SCOPE_SCHEMA non-reservednon-reserved 
    SCROLLnon-reservedreservedreservedreserved
    SEARCHnon-reservedreservedreserved 
    SECONDnon-reservedreservedreservedreserved
    SECTION non-reservednon-reservedreserved
    SECURITYnon-reservednon-reservednon-reserved 
    SELECTreservedreservedreservedreserved
    SELECTIVE non-reservednon-reserved 
    SELF non-reservednon-reserved 
    SENSITIVE reservedreserved 
    SEQUENCEnon-reservednon-reservednon-reserved 
    SEQUENCESnon-reserved   
    SERIALIZABLEnon-reservednon-reservednon-reservednon-reserved
    SERVERnon-reservednon-reservednon-reserved 
    SERVER_NAME non-reservednon-reservednon-reserved
    SESSIONnon-reservednon-reservednon-reservedreserved
    SESSION_USERreservedreservedreservedreserved
    SETnon-reservedreservedreservedreserved
    SETOFnon-reserved (cannot be function or type)   
    SETSnon-reservednon-reservednon-reserved 
    SHAREnon-reserved   
    SHOWnon-reserved   
    SIMILARreserved (can be function or type)reservedreserved 
    SIMPLEnon-reservednon-reservednon-reserved 
    SIZE non-reservednon-reservedreserved
    SKIPnon-reserved   
    SMALLINTnon-reserved (cannot be function or type)reservedreservedreserved
    SNAPSHOTnon-reserved   
    SOMEreservedreservedreservedreserved
    SOURCE non-reservednon-reserved 
    SPACE non-reservednon-reservedreserved
    SPECIFIC reservedreserved 
    SPECIFICTYPE reservedreserved 
    SPECIFIC_NAME non-reservednon-reserved 
    SQLnon-reservedreservedreservedreserved
    SQLCODE   reserved
    SQLERROR   reserved
    SQLEXCEPTION reservedreserved 
    SQLSTATE reservedreservedreserved
    SQLWARNING reservedreserved 
    SQRT reservedreserved 
    STABLEnon-reserved   
    STANDALONEnon-reservednon-reservednon-reserved 
    STARTnon-reservedreservedreserved 
    STATE non-reservednon-reserved 
    STATEMENTnon-reservednon-reservednon-reserved 
    STATIC reservedreserved 
    STATISTICSnon-reserved   
    STDDEV_POP reservedreserved 
    STDDEV_SAMP reservedreserved 
    STDINnon-reserved   
    STDOUTnon-reserved   
    STORAGEnon-reserved   
    STRICTnon-reserved   
    STRIPnon-reservednon-reservednon-reserved 
    STRUCTURE non-reservednon-reserved 
    STYLE non-reservednon-reserved 
    SUBCLASS_ORIGIN non-reservednon-reservednon-reserved
    SUBMULTISET reservedreserved 
    SUBSCRIPTIONnon-reserved   
    SUBSTRINGnon-reserved (cannot be function or type)reservedreservedreserved
    SUBSTRING_REGEX reservedreserved 
    SUCCEEDS reserved  
    SUM reservedreservedreserved
    SYMMETRICreservedreservedreserved 
    SYSIDnon-reserved   
    SYSTEMnon-reservedreservedreserved 
    SYSTEM_TIME reserved  
    SYSTEM_USER reservedreservedreserved
    T non-reservednon-reserved 
    TABLEreservedreservedreservedreserved
    TABLESnon-reserved   
    TABLESAMPLEreserved (can be function or type)reservedreserved 
    TABLESPACEnon-reserved   
    TABLE_NAME non-reservednon-reservednon-reserved
    TEMPnon-reserved   
    TEMPLATEnon-reserved   
    TEMPORARYnon-reservednon-reservednon-reservedreserved
    TEXTnon-reserved   
    THENreservedreservedreservedreserved
    TIES non-reservednon-reserved 
    TIMEnon-reserved (cannot be function or type)reservedreservedreserved
    TIMESTAMPnon-reserved (cannot be function or type)reservedreservedreserved
    TIMEZONE_HOUR reservedreservedreserved
    TIMEZONE_MINUTE reservedreservedreserved
    TOreservedreservedreservedreserved
    TOKEN non-reservednon-reserved 
    TOP_LEVEL_COUNT non-reservednon-reserved 
    TRAILINGreservedreservedreservedreserved
    TRANSACTIONnon-reservednon-reservednon-reservedreserved
    TRANSACTIONS_COMMITTED non-reservednon-reserved 
    TRANSACTIONS_ROLLED_BACK non-reservednon-reserved 
    TRANSACTION_ACTIVE non-reservednon-reserved 
    TRANSFORMnon-reservednon-reservednon-reserved 
    TRANSFORMS non-reservednon-reserved 
    TRANSLATE reservedreservedreserved
    TRANSLATE_REGEX reservedreserved 
    TRANSLATION reservedreservedreserved
    TREATnon-reserved (cannot be function or type)reservedreserved 
    TRIGGERnon-reservedreservedreserved 
    TRIGGER_CATALOG non-reservednon-reserved 
    TRIGGER_NAME non-reservednon-reserved 
    TRIGGER_SCHEMA non-reservednon-reserved 
    TRIMnon-reserved (cannot be function or type)reservedreservedreserved
    TRIM_ARRAY reservedreserved 
    TRUEreservedreservedreservedreserved
    TRUNCATEnon-reservedreservedreserved 
    TRUSTEDnon-reserved   
    TYPEnon-reservednon-reservednon-reservednon-reserved
    TYPESnon-reserved   
    UESCAPE reservedreserved 
    UNBOUNDEDnon-reservednon-reservednon-reserved 
    UNCOMMITTEDnon-reservednon-reservednon-reservednon-reserved
    UNDER non-reservednon-reserved 
    UNENCRYPTEDnon-reserved   
    UNIONreservedreservedreservedreserved
    UNIQUEreservedreservedreservedreserved
    UNKNOWNnon-reservedreservedreservedreserved
    UNLINK non-reservednon-reserved 
    UNLISTENnon-reserved   
    UNLOGGEDnon-reserved   
    UNNAMED non-reservednon-reservednon-reserved
    UNNEST reservedreserved 
    UNTILnon-reserved   
    UNTYPED non-reservednon-reserved 
    UPDATEnon-reservedreservedreservedreserved
    UPPER reservedreservedreserved
    URI non-reservednon-reserved 
    USAGE non-reservednon-reservedreserved
    USERreservedreservedreservedreserved
    USER_DEFINED_TYPE_CATALOG non-reservednon-reserved 
    USER_DEFINED_TYPE_CODE non-reservednon-reserved 
    USER_DEFINED_TYPE_NAME non-reservednon-reserved 
    USER_DEFINED_TYPE_SCHEMA non-reservednon-reserved 
    USINGreservedreservedreservedreserved
    VACUUMnon-reserved   
    VALIDnon-reservednon-reservednon-reserved 
    VALIDATEnon-reserved   
    VALIDATORnon-reserved   
    VALUEnon-reservedreservedreservedreserved
    VALUESnon-reserved (cannot be function or type)reservedreservedreserved
    VALUE_OF reserved  
    VARBINARY reservedreserved 
    VARCHARnon-reserved (cannot be function or type)reservedreservedreserved
    VARIADICreserved   
    VARYINGnon-reservedreservedreservedreserved
    VAR_POP reservedreserved 
    VAR_SAMP reservedreserved 
    VERBOSEreserved (can be function or type)   
    VERSIONnon-reservednon-reservednon-reserved 
    VERSIONING reserved  
    VIEWnon-reservednon-reservednon-reservedreserved
    VIEWSnon-reserved   
    VOLATILEnon-reserved   
    WHENreservedreservedreservedreserved
    WHENEVER reservedreservedreserved
    WHEREreservedreservedreservedreserved
    WHITESPACEnon-reservednon-reservednon-reserved 
    WIDTH_BUCKET reservedreserved 
    WINDOWreservedreservedreserved 
    WITHreservedreservedreservedreserved
    WITHINnon-reservedreservedreserved 
    WITHOUTnon-reservedreservedreserved 
    WORKnon-reservednon-reservednon-reservedreserved
    WRAPPERnon-reservednon-reservednon-reserved 
    WRITEnon-reservednon-reservednon-reservedreserved
    XMLnon-reservedreservedreserved 
    XMLAGG reservedreserved 
    XMLATTRIBUTESnon-reserved (cannot be function or type)reservedreserved 
    XMLBINARY reservedreserved 
    XMLCAST reservedreserved 
    XMLCOMMENT reservedreserved 
    XMLCONCATnon-reserved (cannot be function or type)reservedreserved 
    XMLDECLARATION non-reservednon-reserved 
    XMLDOCUMENT reservedreserved 
    XMLELEMENTnon-reserved (cannot be function or type)reservedreserved 
    XMLEXISTSnon-reserved (cannot be function or type)reservedreserved 
    XMLFORESTnon-reserved (cannot be function or type)reservedreserved 
    XMLITERATE reservedreserved 
    XMLNAMESPACESnon-reserved (cannot be function or type)reservedreserved 
    XMLPARSEnon-reserved (cannot be function or type)reservedreserved 
    XMLPInon-reserved (cannot be function or type)reservedreserved 
    XMLQUERY reservedreserved 
    XMLROOTnon-reserved (cannot be function or type)   
    XMLSCHEMA non-reservednon-reserved 
    XMLSERIALIZEnon-reserved (cannot be function or type)reservedreserved 
    XMLTABLEnon-reserved (cannot be function or type)reservedreserved 
    XMLTEXT reservedreserved 
    XMLVALIDATE reservedreserved 
    YEARnon-reservedreservedreservedreserved
    YESnon-reservednon-reservednon-reserved 
    ZONEnon-reservednon-reservednon-reservedreserved

    \ No newline at end of file +

    Table C.1. SQL Key Words

    Key WordPostgreSQLSQL:2011SQL:2008SQL-92
    A non-reservednon-reserved 
    ABORTnon-reserved   
    ABS reservedreserved 
    ABSENT non-reservednon-reserved 
    ABSOLUTEnon-reservednon-reservednon-reservedreserved
    ACCESSnon-reserved   
    ACCORDING non-reservednon-reserved 
    ACTIONnon-reservednon-reservednon-reservedreserved
    ADA non-reservednon-reservednon-reserved
    ADDnon-reservednon-reservednon-reservedreserved
    ADMINnon-reservednon-reservednon-reserved 
    AFTERnon-reservednon-reservednon-reserved 
    AGGREGATEnon-reserved   
    ALLreservedreservedreservedreserved
    ALLOCATE reservedreservedreserved
    ALSOnon-reserved   
    ALTERnon-reservedreservedreservedreserved
    ALWAYSnon-reservednon-reservednon-reserved 
    ANALYSEreserved   
    ANALYZEreserved   
    ANDreservedreservedreservedreserved
    ANYreservedreservedreservedreserved
    ARE reservedreservedreserved
    ARRAYreservedreservedreserved 
    ARRAY_AGG reservedreserved 
    ARRAY_MAX_CARDINALITY reserved  
    ASreservedreservedreservedreserved
    ASCreservednon-reservednon-reservedreserved
    ASENSITIVE reservedreserved 
    ASSERTIONnon-reservednon-reservednon-reservedreserved
    ASSIGNMENTnon-reservednon-reservednon-reserved 
    ASYMMETRICreservedreservedreserved 
    ATnon-reservedreservedreservedreserved
    ATOMIC reservedreserved 
    ATTACHnon-reserved   
    ATTRIBUTEnon-reservednon-reservednon-reserved 
    ATTRIBUTES non-reservednon-reserved 
    AUTHORIZATIONreserved (can be function or type)reservedreservedreserved
    AVG reservedreservedreserved
    BACKWARDnon-reserved   
    BASE64 non-reservednon-reserved 
    BEFOREnon-reservednon-reservednon-reserved 
    BEGINnon-reservedreservedreservedreserved
    BEGIN_FRAME reserved  
    BEGIN_PARTITION reserved  
    BERNOULLI non-reservednon-reserved 
    BETWEENnon-reserved (cannot be function or type)reservedreservedreserved
    BIGINTnon-reserved (cannot be function or type)reservedreserved 
    BINARYreserved (can be function or type)reservedreserved 
    BITnon-reserved (cannot be function or type)  reserved
    BIT_LENGTH   reserved
    BLOB reservedreserved 
    BLOCKED non-reservednon-reserved 
    BOM non-reservednon-reserved 
    BOOLEANnon-reserved (cannot be function or type)reservedreserved 
    BOTHreservedreservedreservedreserved
    BREADTH non-reservednon-reserved 
    BYnon-reservedreservedreservedreserved
    C non-reservednon-reservednon-reserved
    CACHEnon-reserved   
    CALL reservedreserved 
    CALLEDnon-reservedreservedreserved 
    CARDINALITY reservedreserved 
    CASCADEnon-reservednon-reservednon-reservedreserved
    CASCADEDnon-reservedreservedreservedreserved
    CASEreservedreservedreservedreserved
    CASTreservedreservedreservedreserved
    CATALOGnon-reservednon-reservednon-reservedreserved
    CATALOG_NAME non-reservednon-reservednon-reserved
    CEIL reservedreserved 
    CEILING reservedreserved 
    CHAINnon-reservednon-reservednon-reserved 
    CHARnon-reserved (cannot be function or type)reservedreservedreserved
    CHARACTERnon-reserved (cannot be function or type)reservedreservedreserved
    CHARACTERISTICSnon-reservednon-reservednon-reserved 
    CHARACTERS non-reservednon-reserved 
    CHARACTER_LENGTH reservedreservedreserved
    CHARACTER_SET_CATALOG non-reservednon-reservednon-reserved
    CHARACTER_SET_NAME non-reservednon-reservednon-reserved
    CHARACTER_SET_SCHEMA non-reservednon-reservednon-reserved
    CHAR_LENGTH reservedreservedreserved
    CHECKreservedreservedreservedreserved
    CHECKPOINTnon-reserved   
    CLASSnon-reserved   
    CLASS_ORIGIN non-reservednon-reservednon-reserved
    CLOB reservedreserved 
    CLOSEnon-reservedreservedreservedreserved
    CLUSTERnon-reserved   
    COALESCEnon-reserved (cannot be function or type)reservedreservedreserved
    COBOL non-reservednon-reservednon-reserved
    COLLATEreservedreservedreservedreserved
    COLLATIONreserved (can be function or type)non-reservednon-reservedreserved
    COLLATION_CATALOG non-reservednon-reservednon-reserved
    COLLATION_NAME non-reservednon-reservednon-reserved
    COLLATION_SCHEMA non-reservednon-reservednon-reserved
    COLLECT reservedreserved 
    COLUMNreservedreservedreservedreserved
    COLUMNSnon-reservednon-reservednon-reserved 
    COLUMN_NAME non-reservednon-reservednon-reserved
    COMMAND_FUNCTION non-reservednon-reservednon-reserved
    COMMAND_FUNCTION_CODE non-reservednon-reserved 
    COMMENTnon-reserved   
    COMMENTSnon-reserved   
    COMMITnon-reservedreservedreservedreserved
    COMMITTEDnon-reservednon-reservednon-reservednon-reserved
    CONCURRENTLYreserved (can be function or type)   
    CONDITION reservedreserved 
    CONDITION_NUMBER non-reservednon-reservednon-reserved
    CONFIGURATIONnon-reserved   
    CONFLICTnon-reserved   
    CONNECT reservedreservedreserved
    CONNECTIONnon-reservednon-reservednon-reservedreserved
    CONNECTION_NAME non-reservednon-reservednon-reserved
    CONSTRAINTreservedreservedreservedreserved
    CONSTRAINTSnon-reservednon-reservednon-reservedreserved
    CONSTRAINT_CATALOG non-reservednon-reservednon-reserved
    CONSTRAINT_NAME non-reservednon-reservednon-reserved
    CONSTRAINT_SCHEMA non-reservednon-reservednon-reserved
    CONSTRUCTOR non-reservednon-reserved 
    CONTAINS reservednon-reserved 
    CONTENTnon-reservednon-reservednon-reserved 
    CONTINUEnon-reservednon-reservednon-reservedreserved
    CONTROL non-reservednon-reserved 
    CONVERSIONnon-reserved   
    CONVERT reservedreservedreserved
    COPYnon-reserved   
    CORR reservedreserved 
    CORRESPONDING reservedreservedreserved
    COSTnon-reserved   
    COUNT reservedreservedreserved
    COVAR_POP reservedreserved 
    COVAR_SAMP reservedreserved 
    CREATEreservedreservedreservedreserved
    CROSSreserved (can be function or type)reservedreservedreserved
    CSVnon-reserved   
    CUBEnon-reservedreservedreserved 
    CUME_DIST reservedreserved 
    CURRENTnon-reservedreservedreservedreserved
    CURRENT_CATALOGreservedreservedreserved 
    CURRENT_DATEreservedreservedreservedreserved
    CURRENT_DEFAULT_TRANSFORM_GROUP reservedreserved 
    CURRENT_PATH reservedreserved 
    CURRENT_ROLEreservedreservedreserved 
    CURRENT_ROW reserved  
    CURRENT_SCHEMAreserved (can be function or type)reservedreserved 
    CURRENT_TIMEreservedreservedreservedreserved
    CURRENT_TIMESTAMPreservedreservedreservedreserved
    CURRENT_TRANSFORM_GROUP_FOR_TYPE reservedreserved 
    CURRENT_USERreservedreservedreservedreserved
    CURSORnon-reservedreservedreservedreserved
    CURSOR_NAME non-reservednon-reservednon-reserved
    CYCLEnon-reservedreservedreserved 
    DATAnon-reservednon-reservednon-reservednon-reserved
    DATABASEnon-reserved   
    DATALINK reservedreserved 
    DATE reservedreservedreserved
    DATETIME_INTERVAL_CODE non-reservednon-reservednon-reserved
    DATETIME_INTERVAL_PRECISION non-reservednon-reservednon-reserved
    DAYnon-reservedreservedreservedreserved
    DB non-reservednon-reserved 
    DEALLOCATEnon-reservedreservedreservedreserved
    DECnon-reserved (cannot be function or type)reservedreservedreserved
    DECIMALnon-reserved (cannot be function or type)reservedreservedreserved
    DECLAREnon-reservedreservedreservedreserved
    DEFAULTreservedreservedreservedreserved
    DEFAULTSnon-reservednon-reservednon-reserved 
    DEFERRABLEreservednon-reservednon-reservedreserved
    DEFERREDnon-reservednon-reservednon-reservedreserved
    DEFINED non-reservednon-reserved 
    DEFINERnon-reservednon-reservednon-reserved 
    DEGREE non-reservednon-reserved 
    DELETEnon-reservedreservedreservedreserved
    DELIMITERnon-reserved   
    DELIMITERSnon-reserved   
    DENSE_RANK reservedreserved 
    DEPENDSnon-reserved   
    DEPTH non-reservednon-reserved 
    DEREF reservedreserved 
    DERIVED non-reservednon-reserved 
    DESCreservednon-reservednon-reservedreserved
    DESCRIBE reservedreservedreserved
    DESCRIPTOR non-reservednon-reservedreserved
    DETACHnon-reserved   
    DETERMINISTIC reservedreserved 
    DIAGNOSTICS non-reservednon-reservedreserved
    DICTIONARYnon-reserved   
    DISABLEnon-reserved   
    DISCARDnon-reserved   
    DISCONNECT reservedreservedreserved
    DISPATCH non-reservednon-reserved 
    DISTINCTreservedreservedreservedreserved
    DLNEWCOPY reservedreserved 
    DLPREVIOUSCOPY reservedreserved 
    DLURLCOMPLETE reservedreserved 
    DLURLCOMPLETEONLY reservedreserved 
    DLURLCOMPLETEWRITE reservedreserved 
    DLURLPATH reservedreserved 
    DLURLPATHONLY reservedreserved 
    DLURLPATHWRITE reservedreserved 
    DLURLSCHEME reservedreserved 
    DLURLSERVER reservedreserved 
    DLVALUE reservedreserved 
    DOreserved   
    DOCUMENTnon-reservednon-reservednon-reserved 
    DOMAINnon-reservednon-reservednon-reservedreserved
    DOUBLEnon-reservedreservedreservedreserved
    DROPnon-reservedreservedreservedreserved
    DYNAMIC reservedreserved 
    DYNAMIC_FUNCTION non-reservednon-reservednon-reserved
    DYNAMIC_FUNCTION_CODE non-reservednon-reserved 
    EACHnon-reservedreservedreserved 
    ELEMENT reservedreserved 
    ELSEreservedreservedreservedreserved
    EMPTY non-reservednon-reserved 
    ENABLEnon-reserved   
    ENCODINGnon-reservednon-reservednon-reserved 
    ENCRYPTEDnon-reserved   
    ENDreservedreservedreservedreserved
    END-EXEC reservedreservedreserved
    END_FRAME reserved  
    END_PARTITION reserved  
    ENFORCED non-reserved  
    ENUMnon-reserved   
    EQUALS reservednon-reserved 
    ESCAPEnon-reservedreservedreservedreserved
    EVENTnon-reserved   
    EVERY reservedreserved 
    EXCEPTreservedreservedreservedreserved
    EXCEPTION   reserved
    EXCLUDEnon-reservednon-reservednon-reserved 
    EXCLUDINGnon-reservednon-reservednon-reserved 
    EXCLUSIVEnon-reserved   
    EXEC reservedreservedreserved
    EXECUTEnon-reservedreservedreservedreserved
    EXISTSnon-reserved (cannot be function or type)reservedreservedreserved
    EXP reservedreserved 
    EXPLAINnon-reserved   
    EXPRESSION non-reserved  
    EXTENSIONnon-reserved   
    EXTERNALnon-reservedreservedreservedreserved
    EXTRACTnon-reserved (cannot be function or type)reservedreservedreserved
    FALSEreservedreservedreservedreserved
    FAMILYnon-reserved   
    FETCHreservedreservedreservedreserved
    FILE non-reservednon-reserved 
    FILTERnon-reservedreservedreserved 
    FINAL non-reservednon-reserved 
    FIRSTnon-reservednon-reservednon-reservedreserved
    FIRST_VALUE reservedreserved 
    FLAG non-reservednon-reserved 
    FLOATnon-reserved (cannot be function or type)reservedreservedreserved
    FLOOR reservedreserved 
    FOLLOWINGnon-reservednon-reservednon-reserved 
    FORreservedreservedreservedreserved
    FORCEnon-reserved   
    FOREIGNreservedreservedreservedreserved
    FORTRAN non-reservednon-reservednon-reserved
    FORWARDnon-reserved   
    FOUND non-reservednon-reservedreserved
    FRAME_ROW reserved  
    FREE reservedreserved 
    FREEZEreserved (can be function or type)   
    FROMreservedreservedreservedreserved
    FS non-reservednon-reserved 
    FULLreserved (can be function or type)reservedreservedreserved
    FUNCTIONnon-reservedreservedreserved 
    FUNCTIONSnon-reserved   
    FUSION reservedreserved 
    G non-reservednon-reserved 
    GENERAL non-reservednon-reserved 
    GENERATEDnon-reservednon-reservednon-reserved 
    GET reservedreservedreserved
    GLOBALnon-reservedreservedreservedreserved
    GO non-reservednon-reservedreserved
    GOTO non-reservednon-reservedreserved
    GRANTreservedreservedreservedreserved
    GRANTEDnon-reservednon-reservednon-reserved 
    GREATESTnon-reserved (cannot be function or type)   
    GROUPreservedreservedreservedreserved
    GROUPINGnon-reserved (cannot be function or type)reservedreserved 
    GROUPS reserved  
    HANDLERnon-reserved   
    HAVINGreservedreservedreservedreserved
    HEADERnon-reserved   
    HEX non-reservednon-reserved 
    HIERARCHY non-reservednon-reserved 
    HOLDnon-reservedreservedreserved 
    HOURnon-reservedreservedreservedreserved
    ID non-reservednon-reserved 
    IDENTITYnon-reservedreservedreservedreserved
    IFnon-reserved   
    IGNORE non-reservednon-reserved 
    ILIKEreserved (can be function or type)   
    IMMEDIATEnon-reservednon-reservednon-reservedreserved
    IMMEDIATELY non-reserved  
    IMMUTABLEnon-reserved   
    IMPLEMENTATION non-reservednon-reserved 
    IMPLICITnon-reserved   
    IMPORTnon-reservedreservedreserved 
    INreservedreservedreservedreserved
    INCLUDINGnon-reservednon-reservednon-reserved 
    INCREMENTnon-reservednon-reservednon-reserved 
    INDENT non-reservednon-reserved 
    INDEXnon-reserved   
    INDEXESnon-reserved   
    INDICATOR reservedreservedreserved
    INHERITnon-reserved   
    INHERITSnon-reserved   
    INITIALLYreservednon-reservednon-reservedreserved
    INLINEnon-reserved   
    INNERreserved (can be function or type)reservedreservedreserved
    INOUTnon-reserved (cannot be function or type)reservedreserved 
    INPUTnon-reservednon-reservednon-reservedreserved
    INSENSITIVEnon-reservedreservedreservedreserved
    INSERTnon-reservedreservedreservedreserved
    INSTANCE non-reservednon-reserved 
    INSTANTIABLE non-reservednon-reserved 
    INSTEADnon-reservednon-reservednon-reserved 
    INTnon-reserved (cannot be function or type)reservedreservedreserved
    INTEGERnon-reserved (cannot be function or type)reservedreservedreserved
    INTEGRITY non-reservednon-reserved 
    INTERSECTreservedreservedreservedreserved
    INTERSECTION reservedreserved 
    INTERVALnon-reserved (cannot be function or type)reservedreservedreserved
    INTOreservedreservedreservedreserved
    INVOKERnon-reservednon-reservednon-reserved 
    ISreserved (can be function or type)reservedreservedreserved
    ISNULLreserved (can be function or type)   
    ISOLATIONnon-reservednon-reservednon-reservedreserved
    JOINreserved (can be function or type)reservedreservedreserved
    K non-reservednon-reserved 
    KEYnon-reservednon-reservednon-reservedreserved
    KEY_MEMBER non-reservednon-reserved 
    KEY_TYPE non-reservednon-reserved 
    LABELnon-reserved   
    LAG reservedreserved 
    LANGUAGEnon-reservedreservedreservedreserved
    LARGEnon-reservedreservedreserved 
    LASTnon-reservednon-reservednon-reservedreserved
    LAST_VALUE reservedreserved 
    LATERALreservedreservedreserved 
    LEAD reservedreserved 
    LEADINGreservedreservedreservedreserved
    LEAKPROOFnon-reserved   
    LEASTnon-reserved (cannot be function or type)   
    LEFTreserved (can be function or type)reservedreservedreserved
    LENGTH non-reservednon-reservednon-reserved
    LEVELnon-reservednon-reservednon-reservedreserved
    LIBRARY non-reservednon-reserved 
    LIKEreserved (can be function or type)reservedreservedreserved
    LIKE_REGEX reservedreserved 
    LIMITreservednon-reservednon-reserved 
    LINK non-reservednon-reserved 
    LISTENnon-reserved   
    LN reservedreserved 
    LOADnon-reserved   
    LOCALnon-reservedreservedreservedreserved
    LOCALTIMEreservedreservedreserved 
    LOCALTIMESTAMPreservedreservedreserved 
    LOCATIONnon-reservednon-reservednon-reserved 
    LOCATOR non-reservednon-reserved 
    LOCKnon-reserved   
    LOCKEDnon-reserved   
    LOGGEDnon-reserved   
    LOWER reservedreservedreserved
    M non-reservednon-reserved 
    MAP non-reservednon-reserved 
    MAPPINGnon-reservednon-reservednon-reserved 
    MATCHnon-reservedreservedreservedreserved
    MATCHED non-reservednon-reserved 
    MATERIALIZEDnon-reserved   
    MAX reservedreservedreserved
    MAXVALUEnon-reservednon-reservednon-reserved 
    MAX_CARDINALITY  reserved 
    MEMBER reservedreserved 
    MERGE reservedreserved 
    MESSAGE_LENGTH non-reservednon-reservednon-reserved
    MESSAGE_OCTET_LENGTH non-reservednon-reservednon-reserved
    MESSAGE_TEXT non-reservednon-reservednon-reserved
    METHODnon-reservedreservedreserved 
    MIN reservedreservedreserved
    MINUTEnon-reservedreservedreservedreserved
    MINVALUEnon-reservednon-reservednon-reserved 
    MOD reservedreserved 
    MODEnon-reserved   
    MODIFIES reservedreserved 
    MODULE reservedreservedreserved
    MONTHnon-reservedreservedreservedreserved
    MORE non-reservednon-reservednon-reserved
    MOVEnon-reserved   
    MULTISET reservedreserved 
    MUMPS non-reservednon-reservednon-reserved
    NAMEnon-reservednon-reservednon-reservednon-reserved
    NAMESnon-reservednon-reservednon-reservedreserved
    NAMESPACE non-reservednon-reserved 
    NATIONALnon-reserved (cannot be function or type)reservedreservedreserved
    NATURALreserved (can be function or type)reservedreservedreserved
    NCHARnon-reserved (cannot be function or type)reservedreservedreserved
    NCLOB reservedreserved 
    NESTING non-reservednon-reserved 
    NEWnon-reservedreservedreserved 
    NEXTnon-reservednon-reservednon-reservedreserved
    NFC non-reservednon-reserved 
    NFD non-reservednon-reserved 
    NFKC non-reservednon-reserved 
    NFKD non-reservednon-reserved 
    NIL non-reservednon-reserved 
    NOnon-reservedreservedreservedreserved
    NONEnon-reserved (cannot be function or type)reservedreserved 
    NORMALIZE reservedreserved 
    NORMALIZED non-reservednon-reserved 
    NOTreservedreservedreservedreserved
    NOTHINGnon-reserved   
    NOTIFYnon-reserved   
    NOTNULLreserved (can be function or type)   
    NOWAITnon-reserved   
    NTH_VALUE reservedreserved 
    NTILE reservedreserved 
    NULLreservedreservedreservedreserved
    NULLABLE non-reservednon-reservednon-reserved
    NULLIFnon-reserved (cannot be function or type)reservedreservedreserved
    NULLSnon-reservednon-reservednon-reserved 
    NUMBER non-reservednon-reservednon-reserved
    NUMERICnon-reserved (cannot be function or type)reservedreservedreserved
    OBJECTnon-reservednon-reservednon-reserved 
    OCCURRENCES_REGEX reservedreserved 
    OCTETS non-reservednon-reserved 
    OCTET_LENGTH reservedreservedreserved
    OFnon-reservedreservedreservedreserved
    OFFnon-reservednon-reservednon-reserved 
    OFFSETreservedreservedreserved 
    OIDSnon-reserved   
    OLDnon-reservedreservedreserved 
    ONreservedreservedreservedreserved
    ONLYreservedreservedreservedreserved
    OPEN reservedreservedreserved
    OPERATORnon-reserved   
    OPTIONnon-reservednon-reservednon-reservedreserved
    OPTIONSnon-reservednon-reservednon-reserved 
    ORreservedreservedreservedreserved
    ORDERreservedreservedreservedreserved
    ORDERING non-reservednon-reserved 
    ORDINALITYnon-reservednon-reservednon-reserved 
    OTHERS non-reservednon-reserved 
    OUTnon-reserved (cannot be function or type)reservedreserved 
    OUTERreserved (can be function or type)reservedreservedreserved
    OUTPUT non-reservednon-reservedreserved
    OVERnon-reservedreservedreserved 
    OVERLAPSreserved (can be function or type)reservedreservedreserved
    OVERLAYnon-reserved (cannot be function or type)reservedreserved 
    OVERRIDINGnon-reservednon-reservednon-reserved 
    OWNEDnon-reserved   
    OWNERnon-reserved   
    P non-reservednon-reserved 
    PAD non-reservednon-reservedreserved
    PARALLELnon-reserved   
    PARAMETER reservedreserved 
    PARAMETER_MODE non-reservednon-reserved 
    PARAMETER_NAME non-reservednon-reserved 
    PARAMETER_ORDINAL_POSITION non-reservednon-reserved 
    PARAMETER_SPECIFIC_CATALOG non-reservednon-reserved 
    PARAMETER_SPECIFIC_NAME non-reservednon-reserved 
    PARAMETER_SPECIFIC_SCHEMA non-reservednon-reserved 
    PARSERnon-reserved   
    PARTIALnon-reservednon-reservednon-reservedreserved
    PARTITIONnon-reservedreservedreserved 
    PASCAL non-reservednon-reservednon-reserved
    PASSINGnon-reservednon-reservednon-reserved 
    PASSTHROUGH non-reservednon-reserved 
    PASSWORDnon-reserved   
    PATH non-reservednon-reserved 
    PERCENT reserved  
    PERCENTILE_CONT reservedreserved 
    PERCENTILE_DISC reservedreserved 
    PERCENT_RANK reservedreserved 
    PERIOD reserved  
    PERMISSION non-reservednon-reserved 
    PLACINGreservednon-reservednon-reserved 
    PLANSnon-reserved   
    PLI non-reservednon-reservednon-reserved
    POLICYnon-reserved   
    PORTION reserved  
    POSITIONnon-reserved (cannot be function or type)reservedreservedreserved
    POSITION_REGEX reservedreserved 
    POWER reservedreserved 
    PRECEDES reserved  
    PRECEDINGnon-reservednon-reservednon-reserved 
    PRECISIONnon-reserved (cannot be function or type)reservedreservedreserved
    PREPAREnon-reservedreservedreservedreserved
    PREPAREDnon-reserved   
    PRESERVEnon-reservednon-reservednon-reservedreserved
    PRIMARYreservedreservedreservedreserved
    PRIORnon-reservednon-reservednon-reservedreserved
    PRIVILEGESnon-reservednon-reservednon-reservedreserved
    PROCEDURALnon-reserved   
    PROCEDUREnon-reservedreservedreservedreserved
    PROGRAMnon-reserved   
    PUBLIC non-reservednon-reservedreserved
    PUBLICATIONnon-reserved   
    QUOTEnon-reserved   
    RANGEnon-reservedreservedreserved 
    RANK reservedreserved 
    READnon-reservednon-reservednon-reservedreserved
    READS reservedreserved 
    REALnon-reserved (cannot be function or type)reservedreservedreserved
    REASSIGNnon-reserved   
    RECHECKnon-reserved   
    RECOVERY non-reservednon-reserved 
    RECURSIVEnon-reservedreservedreserved 
    REFnon-reservedreservedreserved 
    REFERENCESreservedreservedreservedreserved
    REFERENCINGnon-reservedreservedreserved 
    REFRESHnon-reserved   
    REGR_AVGX reservedreserved 
    REGR_AVGY reservedreserved 
    REGR_COUNT reservedreserved 
    REGR_INTERCEPT reservedreserved 
    REGR_R2 reservedreserved 
    REGR_SLOPE reservedreserved 
    REGR_SXX reservedreserved 
    REGR_SXY reservedreserved 
    REGR_SYY reservedreserved 
    REINDEXnon-reserved   
    RELATIVEnon-reservednon-reservednon-reservedreserved
    RELEASEnon-reservedreservedreserved 
    RENAMEnon-reserved   
    REPEATABLEnon-reservednon-reservednon-reservednon-reserved
    REPLACEnon-reserved   
    REPLICAnon-reserved   
    REQUIRING non-reservednon-reserved 
    RESETnon-reserved   
    RESPECT non-reservednon-reserved 
    RESTARTnon-reservednon-reservednon-reserved 
    RESTORE non-reservednon-reserved 
    RESTRICTnon-reservednon-reservednon-reservedreserved
    RESULT reservedreserved 
    RETURN reservedreserved 
    RETURNED_CARDINALITY non-reservednon-reserved 
    RETURNED_LENGTH non-reservednon-reservednon-reserved
    RETURNED_OCTET_LENGTH non-reservednon-reservednon-reserved
    RETURNED_SQLSTATE non-reservednon-reservednon-reserved
    RETURNINGreservednon-reservednon-reserved 
    RETURNSnon-reservedreservedreserved 
    REVOKEnon-reservedreservedreservedreserved
    RIGHTreserved (can be function or type)reservedreservedreserved
    ROLEnon-reservednon-reservednon-reserved 
    ROLLBACKnon-reservedreservedreservedreserved
    ROLLUPnon-reservedreservedreserved 
    ROUTINE non-reservednon-reserved 
    ROUTINE_CATALOG non-reservednon-reserved 
    ROUTINE_NAME non-reservednon-reserved 
    ROUTINE_SCHEMA non-reservednon-reserved 
    ROWnon-reserved (cannot be function or type)reservedreserved 
    ROWSnon-reservedreservedreservedreserved
    ROW_COUNT non-reservednon-reservednon-reserved
    ROW_NUMBER reservedreserved 
    RULEnon-reserved   
    SAVEPOINTnon-reservedreservedreserved 
    SCALE non-reservednon-reservednon-reserved
    SCHEMAnon-reservednon-reservednon-reservedreserved
    SCHEMASnon-reserved   
    SCHEMA_NAME non-reservednon-reservednon-reserved
    SCOPE reservedreserved 
    SCOPE_CATALOG non-reservednon-reserved 
    SCOPE_NAME non-reservednon-reserved 
    SCOPE_SCHEMA non-reservednon-reserved 
    SCROLLnon-reservedreservedreservedreserved
    SEARCHnon-reservedreservedreserved 
    SECONDnon-reservedreservedreservedreserved
    SECTION non-reservednon-reservedreserved
    SECURITYnon-reservednon-reservednon-reserved 
    SELECTreservedreservedreservedreserved
    SELECTIVE non-reservednon-reserved 
    SELF non-reservednon-reserved 
    SENSITIVE reservedreserved 
    SEQUENCEnon-reservednon-reservednon-reserved 
    SEQUENCESnon-reserved   
    SERIALIZABLEnon-reservednon-reservednon-reservednon-reserved
    SERVERnon-reservednon-reservednon-reserved 
    SERVER_NAME non-reservednon-reservednon-reserved
    SESSIONnon-reservednon-reservednon-reservedreserved
    SESSION_USERreservedreservedreservedreserved
    SETnon-reservedreservedreservedreserved
    SETOFnon-reserved (cannot be function or type)   
    SETSnon-reservednon-reservednon-reserved 
    SHAREnon-reserved   
    SHOWnon-reserved   
    SIMILARreserved (can be function or type)reservedreserved 
    SIMPLEnon-reservednon-reservednon-reserved 
    SIZE non-reservednon-reservedreserved
    SKIPnon-reserved   
    SMALLINTnon-reserved (cannot be function or type)reservedreservedreserved
    SNAPSHOTnon-reserved   
    SOMEreservedreservedreservedreserved
    SOURCE non-reservednon-reserved 
    SPACE non-reservednon-reservedreserved
    SPECIFIC reservedreserved 
    SPECIFICTYPE reservedreserved 
    SPECIFIC_NAME non-reservednon-reserved 
    SQLnon-reservedreservedreservedreserved
    SQLCODE   reserved
    SQLERROR   reserved
    SQLEXCEPTION reservedreserved 
    SQLSTATE reservedreservedreserved
    SQLWARNING reservedreserved 
    SQRT reservedreserved 
    STABLEnon-reserved   
    STANDALONEnon-reservednon-reservednon-reserved 
    STARTnon-reservedreservedreserved 
    STATE non-reservednon-reserved 
    STATEMENTnon-reservednon-reservednon-reserved 
    STATIC reservedreserved 
    STATISTICSnon-reserved   
    STDDEV_POP reservedreserved 
    STDDEV_SAMP reservedreserved 
    STDINnon-reserved   
    STDOUTnon-reserved   
    STORAGEnon-reserved   
    STRICTnon-reserved   
    STRIPnon-reservednon-reservednon-reserved 
    STRUCTURE non-reservednon-reserved 
    STYLE non-reservednon-reserved 
    SUBCLASS_ORIGIN non-reservednon-reservednon-reserved
    SUBMULTISET reservedreserved 
    SUBSCRIPTIONnon-reserved   
    SUBSTRINGnon-reserved (cannot be function or type)reservedreservedreserved
    SUBSTRING_REGEX reservedreserved 
    SUCCEEDS reserved  
    SUM reservedreservedreserved
    SYMMETRICreservedreservedreserved 
    SYSIDnon-reserved   
    SYSTEMnon-reservedreservedreserved 
    SYSTEM_TIME reserved  
    SYSTEM_USER reservedreservedreserved
    T non-reservednon-reserved 
    TABLEreservedreservedreservedreserved
    TABLESnon-reserved   
    TABLESAMPLEreserved (can be function or type)reservedreserved 
    TABLESPACEnon-reserved   
    TABLE_NAME non-reservednon-reservednon-reserved
    TEMPnon-reserved   
    TEMPLATEnon-reserved   
    TEMPORARYnon-reservednon-reservednon-reservedreserved
    TEXTnon-reserved   
    THENreservedreservedreservedreserved
    TIES non-reservednon-reserved 
    TIMEnon-reserved (cannot be function or type)reservedreservedreserved
    TIMESTAMPnon-reserved (cannot be function or type)reservedreservedreserved
    TIMEZONE_HOUR reservedreservedreserved
    TIMEZONE_MINUTE reservedreservedreserved
    TOreservedreservedreservedreserved
    TOKEN non-reservednon-reserved 
    TOP_LEVEL_COUNT non-reservednon-reserved 
    TRAILINGreservedreservedreservedreserved
    TRANSACTIONnon-reservednon-reservednon-reservedreserved
    TRANSACTIONS_COMMITTED non-reservednon-reserved 
    TRANSACTIONS_ROLLED_BACK non-reservednon-reserved 
    TRANSACTION_ACTIVE non-reservednon-reserved 
    TRANSFORMnon-reservednon-reservednon-reserved 
    TRANSFORMS non-reservednon-reserved 
    TRANSLATE reservedreservedreserved
    TRANSLATE_REGEX reservedreserved 
    TRANSLATION reservedreservedreserved
    TREATnon-reserved (cannot be function or type)reservedreserved 
    TRIGGERnon-reservedreservedreserved 
    TRIGGER_CATALOG non-reservednon-reserved 
    TRIGGER_NAME non-reservednon-reserved 
    TRIGGER_SCHEMA non-reservednon-reserved 
    TRIMnon-reserved (cannot be function or type)reservedreservedreserved
    TRIM_ARRAY reservedreserved 
    TRUEreservedreservedreservedreserved
    TRUNCATEnon-reservedreservedreserved 
    TRUSTEDnon-reserved   
    TYPEnon-reservednon-reservednon-reservednon-reserved
    TYPESnon-reserved   
    UESCAPE reservedreserved 
    UNBOUNDEDnon-reservednon-reservednon-reserved 
    UNCOMMITTEDnon-reservednon-reservednon-reservednon-reserved
    UNDER non-reservednon-reserved 
    UNENCRYPTEDnon-reserved   
    UNIONreservedreservedreservedreserved
    UNIQUEreservedreservedreservedreserved
    UNKNOWNnon-reservedreservedreservedreserved
    UNLINK non-reservednon-reserved 
    UNLISTENnon-reserved   
    UNLOGGEDnon-reserved   
    UNNAMED non-reservednon-reservednon-reserved
    UNNEST reservedreserved 
    UNTILnon-reserved   
    UNTYPED non-reservednon-reserved 
    UPDATEnon-reservedreservedreservedreserved
    UPPER reservedreservedreserved
    URI non-reservednon-reserved 
    USAGE non-reservednon-reservedreserved
    USERreservedreservedreservedreserved
    USER_DEFINED_TYPE_CATALOG non-reservednon-reserved 
    USER_DEFINED_TYPE_CODE non-reservednon-reserved 
    USER_DEFINED_TYPE_NAME non-reservednon-reserved 
    USER_DEFINED_TYPE_SCHEMA non-reservednon-reserved 
    USINGreservedreservedreservedreserved
    VACUUMnon-reserved   
    VALIDnon-reservednon-reservednon-reserved 
    VALIDATEnon-reserved   
    VALIDATORnon-reserved   
    VALUEnon-reservedreservedreservedreserved
    VALUESnon-reserved (cannot be function or type)reservedreservedreserved
    VALUE_OF reserved  
    VARBINARY reservedreserved 
    VARCHARnon-reserved (cannot be function or type)reservedreservedreserved
    VARIADICreserved   
    VARYINGnon-reservedreservedreservedreserved
    VAR_POP reservedreserved 
    VAR_SAMP reservedreserved 
    VERBOSEreserved (can be function or type)   
    VERSIONnon-reservednon-reservednon-reserved 
    VERSIONING reserved  
    VIEWnon-reservednon-reservednon-reservedreserved
    VIEWSnon-reserved   
    VOLATILEnon-reserved   
    WHENreservedreservedreservedreserved
    WHENEVER reservedreservedreserved
    WHEREreservedreservedreservedreserved
    WHITESPACEnon-reservednon-reservednon-reserved 
    WIDTH_BUCKET reservedreserved 
    WINDOWreservedreservedreserved 
    WITHreservedreservedreservedreserved
    WITHINnon-reservedreservedreserved 
    WITHOUTnon-reservedreservedreserved 
    WORKnon-reservednon-reservednon-reservedreserved
    WRAPPERnon-reservednon-reservednon-reserved 
    WRITEnon-reservednon-reservednon-reservedreserved
    XMLnon-reservedreservedreserved 
    XMLAGG reservedreserved 
    XMLATTRIBUTESnon-reserved (cannot be function or type)reservedreserved 
    XMLBINARY reservedreserved 
    XMLCAST reservedreserved 
    XMLCOMMENT reservedreserved 
    XMLCONCATnon-reserved (cannot be function or type)reservedreserved 
    XMLDECLARATION non-reservednon-reserved 
    XMLDOCUMENT reservedreserved 
    XMLELEMENTnon-reserved (cannot be function or type)reservedreserved 
    XMLEXISTSnon-reserved (cannot be function or type)reservedreserved 
    XMLFORESTnon-reserved (cannot be function or type)reservedreserved 
    XMLITERATE reservedreserved 
    XMLNAMESPACESnon-reserved (cannot be function or type)reservedreserved 
    XMLPARSEnon-reserved (cannot be function or type)reservedreserved 
    XMLPInon-reserved (cannot be function or type)reservedreserved 
    XMLQUERY reservedreserved 
    XMLROOTnon-reserved (cannot be function or type)   
    XMLSCHEMA non-reservednon-reserved 
    XMLSERIALIZEnon-reserved (cannot be function or type)reservedreserved 
    XMLTABLEnon-reserved (cannot be function or type)reservedreserved 
    XMLTEXT reservedreserved 
    XMLVALIDATE reservedreserved 
    YEARnon-reservedreservedreservedreserved
    YESnon-reservednon-reservednon-reserved 
    ZONEnon-reservednon-reservednon-reservedreserved

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-listen.html postgresql-10-10.19/doc/src/sgml/html/sql-listen.html --- postgresql-10-10.17/doc/src/sgml/html/sql-listen.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-listen.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -LISTEN

    LISTEN

    LISTEN — listen for a notification

    Synopsis

    LISTEN channel

    Description

    LISTEN registers the current session as a +LISTEN

    LISTEN

    LISTEN — listen for a notification

    Synopsis

    LISTEN channel

    Description

    LISTEN registers the current session as a listener on the notification channel named channel. If the current session is already registered as a listener for this notification channel, nothing is done. @@ -39,4 +39,4 @@ NOTIFY virtual; Asynchronous notification "virtual" received from server process with PID 8448.

    Compatibility

    There is no LISTEN statement in the SQL standard. -

    See Also

    NOTIFY, UNLISTEN
    \ No newline at end of file +

    See Also

    NOTIFY, UNLISTEN
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-load.html postgresql-10-10.19/doc/src/sgml/html/sql-load.html --- postgresql-10-10.17/doc/src/sgml/html/sql-load.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-load.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -LOAD

    LOAD

    LOAD — load a shared library file

    Synopsis

    LOAD 'filename'

    Description

    This command loads a shared library file into the PostgreSQL +LOAD

    LOAD

    LOAD — load a shared library file

    Synopsis

    LOAD 'filename'

    Description

    This command loads a shared library file into the PostgreSQL server's address space. If the file has been loaded already, the command does nothing. Shared library files that contain C functions are automatically loaded whenever one of their functions is called. @@ -21,4 +21,4 @@

    Compatibility

    LOAD is a PostgreSQL extension.

    See Also

    CREATE FUNCTION -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-lock.html postgresql-10-10.19/doc/src/sgml/html/sql-lock.html --- postgresql-10-10.17/doc/src/sgml/html/sql-lock.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-lock.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -LOCK

    LOCK

    LOCK — lock a table

    Synopsis

    LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]
    +LOCK

    LOCK

    LOCK — lock a table

    Synopsis

    LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]
     
     where lockmode is one of:
     
    @@ -128,4 +128,4 @@
        PostgreSQL lock modes and the
        LOCK TABLE syntax are compatible with those
        present in Oracle.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-move.html postgresql-10-10.19/doc/src/sgml/html/sql-move.html --- postgresql-10-10.17/doc/src/sgml/html/sql-move.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-move.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -MOVE

    MOVE

    MOVE — position a cursor

    Synopsis

    MOVE [ direction [ FROM | IN ] ] cursor_name
    +MOVE

    MOVE

    MOVE — position a cursor

    Synopsis

    MOVE [ direction [ FROM | IN ] ] cursor_name
     
     where direction can be empty or one of:
     
    @@ -46,4 +46,4 @@
     -- Close the cursor liahona and end the transaction:
     CLOSE liahona;
     COMMIT WORK;

    Compatibility

    There is no MOVE statement in the SQL standard. -

    See Also

    CLOSE, DECLARE, FETCH
    \ No newline at end of file +

    See Also

    CLOSE, DECLARE, FETCH
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-notify.html postgresql-10-10.19/doc/src/sgml/html/sql-notify.html --- postgresql-10-10.17/doc/src/sgml/html/sql-notify.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-notify.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -NOTIFY

    NOTIFY

    NOTIFY — generate a notification

    Synopsis

    NOTIFY channel [ , payload ]

    Description

    The NOTIFY command sends a notification event together +NOTIFY

    NOTIFY

    NOTIFY — generate a notification

    Synopsis

    NOTIFY channel [ , payload ]

    Description

    The NOTIFY command sends a notification event together with an optional payload string to each client application that has previously executed LISTEN channel @@ -109,4 +109,4 @@ SELECT pg_notify('fo' || 'o', 'pay' || 'load'); Asynchronous notification "foo" with payload "payload" received from server process with PID 14728.

    Compatibility

    There is no NOTIFY statement in the SQL standard. -

    See Also

    LISTEN, UNLISTEN
    \ No newline at end of file +

    See Also

    LISTEN, UNLISTEN
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-prepare.html postgresql-10-10.19/doc/src/sgml/html/sql-prepare.html --- postgresql-10-10.17/doc/src/sgml/html/sql-prepare.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-prepare.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -PREPARE

    PREPARE

    PREPARE — prepare a statement for execution

    Synopsis

    PREPARE name [ ( data_type [, ...] ) ] AS statement

    Description

    PREPARE creates a prepared statement. A prepared +PREPARE

    PREPARE

    PREPARE — prepare a statement for execution

    Synopsis

    PREPARE name [ ( data_type [, ...] ) ] AS statement

    Description

    PREPARE creates a prepared statement. A prepared statement is a server-side object that can be used to optimize performance. When the PREPARE statement is executed, the specified statement is parsed, analyzed, and rewritten. @@ -117,4 +117,4 @@ but it is only for use in embedded SQL. This version of the PREPARE statement also uses a somewhat different syntax. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-prepare-transaction.html postgresql-10-10.19/doc/src/sgml/html/sql-prepare-transaction.html --- postgresql-10-10.17/doc/src/sgml/html/sql-prepare-transaction.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-prepare-transaction.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -PREPARE TRANSACTION

    PREPARE TRANSACTION

    PREPARE TRANSACTION — prepare the current transaction for two-phase commit

    Synopsis

    PREPARE TRANSACTION transaction_id

    Description

    PREPARE TRANSACTION prepares the current transaction +PREPARE TRANSACTION

    PREPARE TRANSACTION

    PREPARE TRANSACTION — prepare the current transaction for two-phase commit

    Synopsis

    PREPARE TRANSACTION transaction_id

    Description

    PREPARE TRANSACTION prepares the current transaction for two-phase commit. After this command, the transaction is no longer associated with the current session; instead, its state is fully stored on disk, and there is a very high probability that it can be committed @@ -69,4 +69,4 @@ external transaction management systems, some of which are covered by standards (such as X/Open XA), but the SQL side of those systems is not standardized. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-reassign-owned.html postgresql-10-10.19/doc/src/sgml/html/sql-reassign-owned.html --- postgresql-10-10.17/doc/src/sgml/html/sql-reassign-owned.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-reassign-owned.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -REASSIGN OWNED

    REASSIGN OWNED

    REASSIGN OWNED — change the ownership of database objects owned by a database role

    Synopsis

    REASSIGN OWNED BY { old_role | CURRENT_USER | SESSION_USER } [, ...]
    +REASSIGN OWNED

    REASSIGN OWNED

    REASSIGN OWNED — change the ownership of database objects owned by a database role

    Synopsis

    REASSIGN OWNED BY { old_role | CURRENT_USER | SESSION_USER } [, ...]
                    TO { new_role | CURRENT_USER | SESSION_USER }

    Description

    REASSIGN OWNED instructs the system to change the ownership of database objects owned by any of the old_roles to @@ -28,4 +28,4 @@

    See Section 21.4 for more discussion.

    Compatibility

    The REASSIGN OWNED command is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-refreshmaterializedview.html postgresql-10-10.19/doc/src/sgml/html/sql-refreshmaterializedview.html --- postgresql-10-10.17/doc/src/sgml/html/sql-refreshmaterializedview.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-refreshmaterializedview.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -REFRESH MATERIALIZED VIEW

    REFRESH MATERIALIZED VIEW

    REFRESH MATERIALIZED VIEW — replace the contents of a materialized view

    Synopsis

    REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
    +REFRESH MATERIALIZED VIEW

    REFRESH MATERIALIZED VIEW

    REFRESH MATERIALIZED VIEW — replace the contents of a materialized view

    Synopsis

    REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
         [ WITH [ NO ] DATA ]

    Description

    REFRESH MATERIALIZED VIEW completely replaces the contents of a materialized view. To execute this command you must be the owner of the materialized view. The old contents are discarded. If @@ -41,4 +41,4 @@ state:

    REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;

    Compatibility

    REFRESH MATERIALIZED VIEW is a PostgreSQL extension. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-reindex.html postgresql-10-10.19/doc/src/sgml/html/sql-reindex.html --- postgresql-10-10.17/doc/src/sgml/html/sql-reindex.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-reindex.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -REINDEX

    REINDEX

    REINDEX — rebuild indexes

    Synopsis

    REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } name

    Description

    REINDEX rebuilds an index using the data +REINDEX

    REINDEX

    REINDEX — rebuild indexes

    Synopsis

    REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } name

    Description

    REINDEX rebuilds an index using the data stored in the index's table, replacing the old copy of the index. There are several scenarios in which to use REINDEX: @@ -108,4 +108,4 @@ ... broken_db=> REINDEX DATABASE broken_db; broken_db=> \q

    Compatibility

    There is no REINDEX command in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-release-savepoint.html postgresql-10-10.19/doc/src/sgml/html/sql-release-savepoint.html --- postgresql-10-10.17/doc/src/sgml/html/sql-release-savepoint.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-release-savepoint.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -RELEASE SAVEPOINT

    RELEASE SAVEPOINT

    RELEASE SAVEPOINT — destroy a previously defined savepoint

    Synopsis

    RELEASE [ SAVEPOINT ] savepoint_name

    Description

    RELEASE SAVEPOINT destroys a savepoint previously defined +RELEASE SAVEPOINT

    RELEASE SAVEPOINT

    RELEASE SAVEPOINT — destroy a previously defined savepoint

    Synopsis

    RELEASE [ SAVEPOINT ] savepoint_name

    Description

    RELEASE SAVEPOINT destroys a savepoint previously defined in the current transaction.

    Destroying a savepoint makes it unavailable as a rollback point, but it has no other user visible behavior. It does not undo the @@ -28,4 +28,4 @@ specifies that the key word SAVEPOINT is mandatory, but PostgreSQL allows it to be omitted. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-reset.html postgresql-10-10.19/doc/src/sgml/html/sql-reset.html --- postgresql-10-10.17/doc/src/sgml/html/sql-reset.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-reset.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -RESET

    RESET

    RESET — restore the value of a run-time parameter to the default value

    Synopsis

    RESET configuration_parameter
    +RESET

    RESET

    RESET — restore the value of a run-time parameter to the default value

    Synopsis

    RESET configuration_parameter
     RESET ALL

    Description

    RESET restores run-time parameters to their default values. RESET is an alternative spelling for @@ -23,4 +23,4 @@

    ALL

    Resets all settable run-time parameters to default values.

    Examples

    Set the timezone configuration variable to its default value:

    RESET timezone;

    Compatibility

    RESET is a PostgreSQL extension. -

    See Also

    SET, SHOW
    \ No newline at end of file +

    See Also

    SET, SHOW
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-revoke.html postgresql-10-10.19/doc/src/sgml/html/sql-revoke.html --- postgresql-10-10.17/doc/src/sgml/html/sql-revoke.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-revoke.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -REVOKE

    REVOKE

    REVOKE — remove access privileges

    Synopsis

    REVOKE [ GRANT OPTION FOR ]
    +REVOKE

    REVOKE

    REVOKE — remove access privileges

    Synopsis

    REVOKE [ GRANT OPTION FOR ]
         { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
         [, ...] | ALL [ PRIVILEGES ] }
         ON { [ TABLE ] table_name [, ...]
    @@ -203,4 +203,4 @@
         is required according to the standard, but PostgreSQL
         assumes RESTRICT by default.
        

    See Also

    GRANT -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-rollback.html postgresql-10-10.19/doc/src/sgml/html/sql-rollback.html --- postgresql-10-10.17/doc/src/sgml/html/sql-rollback.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-rollback.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -ROLLBACK

    ROLLBACK

    ROLLBACK — abort the current transaction

    Synopsis

    ROLLBACK [ WORK | TRANSACTION ]

    Description

    ROLLBACK rolls back the current transaction and causes +ROLLBACK

    ROLLBACK

    ROLLBACK — abort the current transaction

    Synopsis

    ROLLBACK [ WORK | TRANSACTION ]

    Description

    ROLLBACK rolls back the current transaction and causes all the updates made by the transaction to be discarded.

    Parameters

    WORK
    TRANSACTION

    Optional key words. They have no effect.

    Notes

    Use COMMIT to @@ -10,4 +10,4 @@

    ROLLBACK;

    Compatibility

    The SQL standard only specifies the two forms ROLLBACK and ROLLBACK WORK. Otherwise, this command is fully conforming. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-rollback-prepared.html postgresql-10-10.19/doc/src/sgml/html/sql-rollback-prepared.html --- postgresql-10-10.17/doc/src/sgml/html/sql-rollback-prepared.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-rollback-prepared.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -ROLLBACK PREPARED

    ROLLBACK PREPARED

    ROLLBACK PREPARED — cancel a transaction that was earlier prepared for two-phase commit

    Synopsis

    ROLLBACK PREPARED transaction_id

    Description

    ROLLBACK PREPARED rolls back a transaction that is in +ROLLBACK PREPARED

    ROLLBACK PREPARED

    ROLLBACK PREPARED — cancel a transaction that was earlier prepared for two-phase commit

    Synopsis

    ROLLBACK PREPARED transaction_id

    Description

    ROLLBACK PREPARED rolls back a transaction that is in prepared state.

    Parameters

    transaction_id

    The transaction identifier of the transaction that is to be rolled back. @@ -19,4 +19,4 @@ external transaction management systems, some of which are covered by standards (such as X/Open XA), but the SQL side of those systems is not standardized. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-rollback-to.html postgresql-10-10.19/doc/src/sgml/html/sql-rollback-to.html --- postgresql-10-10.17/doc/src/sgml/html/sql-rollback-to.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-rollback-to.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -ROLLBACK TO SAVEPOINT

    ROLLBACK TO SAVEPOINT

    ROLLBACK TO SAVEPOINT — roll back to a savepoint

    Synopsis

    ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name

    Description

    Roll back all commands that were executed after the savepoint was +ROLLBACK TO SAVEPOINT

    ROLLBACK TO SAVEPOINT

    ROLLBACK TO SAVEPOINT — roll back to a savepoint

    Synopsis

    ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name

    Description

    Roll back all commands that were executed after the savepoint was established. The savepoint remains valid and can be rolled back to again later, if needed.

    ROLLBACK TO SAVEPOINT implicitly destroys all savepoints that @@ -53,4 +53,4 @@ AND [ NO ] CHAIN which is not currently supported by PostgreSQL. Otherwise, this command conforms to the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-savepoint.html postgresql-10-10.19/doc/src/sgml/html/sql-savepoint.html --- postgresql-10-10.17/doc/src/sgml/html/sql-savepoint.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-savepoint.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SAVEPOINT

    SAVEPOINT

    SAVEPOINT — define a new savepoint within the current transaction

    Synopsis

    SAVEPOINT savepoint_name

    Description

    SAVEPOINT establishes a new savepoint within +SAVEPOINT

    SAVEPOINT

    SAVEPOINT — define a new savepoint within the current transaction

    Synopsis

    SAVEPOINT savepoint_name

    Description

    SAVEPOINT establishes a new savepoint within the current transaction.

    A savepoint is a special mark inside a transaction that allows all commands that are executed after it was established to be rolled back, restoring @@ -37,4 +37,4 @@ to again become accessible to ROLLBACK TO SAVEPOINT and RELEASE SAVEPOINT.) Otherwise, SAVEPOINT is fully SQL conforming. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-security-label.html postgresql-10-10.19/doc/src/sgml/html/sql-security-label.html --- postgresql-10-10.17/doc/src/sgml/html/sql-security-label.html 2021-05-10 20:58:20.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-security-label.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SECURITY LABEL

    SECURITY LABEL

    SECURITY LABEL — define or change a security label applied to an object

    Synopsis

    SECURITY LABEL [ FOR provider ] ON
    +SECURITY LABEL

    SECURITY LABEL

    SECURITY LABEL — define or change a security label applied to an object

    Synopsis

    SECURITY LABEL [ FOR provider ] ON
     {
       TABLE object_name |
       COLUMN table_name.column_name |
    @@ -72,4 +72,4 @@
        be changed.
     
     

    SECURITY LABEL FOR selinux ON TABLE mytable IS 'system_u:object_r:sepgsql_table_t:s0';

    Compatibility

    There is no SECURITY LABEL command in the SQL standard. -

    See Also

    sepgsql, src/test/modules/dummy_seclabel
    \ No newline at end of file +

    See Also

    sepgsql, src/test/modules/dummy_seclabel
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-select.html postgresql-10-10.19/doc/src/sgml/html/sql-select.html --- postgresql-10-10.17/doc/src/sgml/html/sql-select.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-select.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SELECT

    SELECT

    SELECT, TABLE, WITH — retrieve rows from a table or view

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
    +SELECT

    SELECT

    SELECT, TABLE, WITH — retrieve rows from a table or view

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
     SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
         [ * | expression [ [ AS ] output_name ] [, ...] ]
         [ FROM from_item [, ...] ]
    @@ -1255,4 +1255,4 @@
        

    Nonstandard Clauses

    DISTINCT ON ( ... ) is an extension of the SQL standard.

    ROWS FROM( ... ) is an extension of the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-selectinto.html postgresql-10-10.19/doc/src/sgml/html/sql-selectinto.html --- postgresql-10-10.17/doc/src/sgml/html/sql-selectinto.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-selectinto.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SELECT INTO

    SELECT INTO

    SELECT INTO — define a new table from the results of a query

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
    +SELECT INTO

    SELECT INTO

    SELECT INTO — define a new table from the results of a query

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
     SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
         * | expression [ [ AS ] output_name ] [, ...]
         INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table
    @@ -48,4 +48,4 @@
        INTO to represent table creation is historical.  It is
        best to use CREATE TABLE AS for this purpose in
        new code.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-set-constraints.html postgresql-10-10.19/doc/src/sgml/html/sql-set-constraints.html --- postgresql-10-10.17/doc/src/sgml/html/sql-set-constraints.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-set-constraints.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SET CONSTRAINTS

    SET CONSTRAINTS

    SET CONSTRAINTS — set constraint check timing for the current transaction

    Synopsis

    SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }

    Description

    SET CONSTRAINTS sets the behavior of constraint +SET CONSTRAINTS

    SET CONSTRAINTS

    SET CONSTRAINTS — set constraint check timing for the current transaction

    Synopsis

    SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }

    Description

    SET CONSTRAINTS sets the behavior of constraint checking within the current transaction. IMMEDIATE constraints are checked at the end of each statement. DEFERRED constraints are not checked until @@ -57,4 +57,4 @@ Also, PostgreSQL checks non-deferrable uniqueness constraints immediately, not at end of statement as the standard would suggest. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-set.html postgresql-10-10.19/doc/src/sgml/html/sql-set.html --- postgresql-10-10.17/doc/src/sgml/html/sql-set.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-set.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SET

    SET

    SET — change a run-time parameter

    Synopsis

    SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
    +SET

    SET

    SET — change a run-time parameter

    Synopsis

    SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
     SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }

    Description

    The SET command changes run-time configuration parameters. Many of the run-time parameters listed in Chapter 19 can be changed on-the-fly with @@ -112,4 +112,4 @@ PostgreSQL allows more flexible time-zone specifications. All other SET features are PostgreSQL extensions. -

    See Also

    RESET, SHOW
    \ No newline at end of file +

    See Also

    RESET, SHOW
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-set-role.html postgresql-10-10.19/doc/src/sgml/html/sql-set-role.html --- postgresql-10-10.17/doc/src/sgml/html/sql-set-role.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-set-role.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SET ROLE

    SET ROLE

    SET ROLE — set the current user identifier of the current session

    Synopsis

    SET [ SESSION | LOCAL ] ROLE role_name
    +SET ROLE

    SET ROLE

    SET ROLE — set the current user identifier of the current session

    Synopsis

    SET [ SESSION | LOCAL ] ROLE role_name
     SET [ SESSION | LOCAL ] ROLE NONE
     RESET ROLE

    Description

    This command sets the current user identifier of the current SQL session to be role_name. The role name can be @@ -68,4 +68,4 @@ The SESSION and LOCAL modifiers are a PostgreSQL extension, as is the RESET syntax. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-set-session-authorization.html postgresql-10-10.19/doc/src/sgml/html/sql-set-session-authorization.html --- postgresql-10-10.17/doc/src/sgml/html/sql-set-session-authorization.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-set-session-authorization.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SET SESSION AUTHORIZATION

    SET SESSION AUTHORIZATION

    SET SESSION AUTHORIZATION — set the session user identifier and the current user identifier of the current session

    Synopsis

    SET [ SESSION | LOCAL ] SESSION AUTHORIZATION user_name
    +SET SESSION AUTHORIZATION

    SET SESSION AUTHORIZATION

    SET SESSION AUTHORIZATION — set the session user identifier and the current user identifier of the current session

    Synopsis

    SET [ SESSION | LOCAL ] SESSION AUTHORIZATION user_name
     SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
     RESET SESSION AUTHORIZATION

    Description

    This command sets the session user identifier and the current user identifier of the current SQL session to be user_name. The user name can be @@ -49,4 +49,4 @@ RESET syntax.

    The privileges necessary to execute this command are left implementation-defined by the standard. -

    See Also

    SET ROLE
    \ No newline at end of file +

    See Also

    SET ROLE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-set-transaction.html postgresql-10-10.19/doc/src/sgml/html/sql-set-transaction.html --- postgresql-10-10.17/doc/src/sgml/html/sql-set-transaction.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-set-transaction.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SET TRANSACTION

    SET TRANSACTION

    SET TRANSACTION — set the characteristics of the current transaction

    Synopsis

    SET TRANSACTION transaction_mode [, ...]
    +SET TRANSACTION

    SET TRANSACTION

    SET TRANSACTION — set the characteristics of the current transaction

    Synopsis

    SET TRANSACTION transaction_mode [, ...]
     SET TRANSACTION SNAPSHOT snapshot_id
     SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]
     
    @@ -99,7 +99,7 @@
        BEGIN or START TRANSACTION.
        But that option is not available for SET TRANSACTION
        SNAPSHOT.
    -  

    The session default transaction modes can also be set by setting the +

    The session default transaction modes can also be set or examined via the configuration parameters default_transaction_isolation, default_transaction_read_only, and default_transaction_deferrable. @@ -108,6 +108,14 @@ This means the defaults can be set in the configuration file, via ALTER DATABASE, etc. Consult Chapter 19 for more information. +

    The current transaction's modes can similarly be set or examined via the + configuration parameters transaction_isolation, + transaction_read_only, and + transaction_deferrable. Setting one of these + parameters acts the same as the corresponding SET + TRANSACTION option, with the same restrictions on when it can + be done. However, these parameters cannot be set in the configuration + file, or from any source other than live SQL.

    Examples

    To begin a new transaction with the same snapshot as an already existing transaction, first export the snapshot from the existing transaction. That will return the snapshot identifier, for example: @@ -140,4 +148,4 @@

    The SQL standard requires commas between successive transaction_modes, but for historical reasons PostgreSQL allows the commas to be omitted. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-show.html postgresql-10-10.19/doc/src/sgml/html/sql-show.html --- postgresql-10-10.17/doc/src/sgml/html/sql-show.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-show.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -SHOW

    SHOW

    SHOW — show the value of a run-time parameter

    Synopsis

    SHOW name
    +SHOW

    SHOW

    SHOW — show the value of a run-time parameter

    Synopsis

    SHOW name
     SHOW ALL

    Description

    SHOW will display the current setting of run-time parameters. These variables can be set using the SET statement, by editing the @@ -58,4 +58,4 @@ zero_damaged_pages | off | Continues processing past damaged page headers. (196 rows)

    Compatibility

    The SHOW command is a PostgreSQL extension. -

    See Also

    SET, RESET
    \ No newline at end of file +

    See Also

    SET, RESET
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-start-transaction.html postgresql-10-10.19/doc/src/sgml/html/sql-start-transaction.html --- postgresql-10-10.17/doc/src/sgml/html/sql-start-transaction.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-start-transaction.html 2021-11-08 22:25:03.000000000 +0000 @@ -1,5 +1,5 @@ -START TRANSACTION

    START TRANSACTION

    START TRANSACTION — start a transaction block

    Synopsis

    START TRANSACTION [ transaction_mode [, ...] ]
    +START TRANSACTION

    START TRANSACTION

    START TRANSACTION — start a transaction block

    Synopsis

    START TRANSACTION [ transaction_mode [, ...] ]
     
     where transaction_mode is one of:
     
    @@ -26,4 +26,4 @@
        reasons PostgreSQL allows the commas to be
        omitted.
       

    See also the compatibility section of SET TRANSACTION. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-syntax-calling-funcs.html postgresql-10-10.19/doc/src/sgml/html/sql-syntax-calling-funcs.html --- postgresql-10-10.17/doc/src/sgml/html/sql-syntax-calling-funcs.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-syntax-calling-funcs.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -4.3. Calling Functions

    4.3. Calling Functions

    PostgreSQL allows functions that have named +4.3. Calling Functions

    4.3. Calling Functions

    PostgreSQL allows functions that have named parameters to be called using either positional or named notation. Named notation is especially useful for functions that have a large number of parameters, since it @@ -106,4 +106,4 @@

    Note

    Named and mixed call notations currently cannot be used when calling an aggregate function (but they do work when an aggregate function is used as a window function). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-syntax.html postgresql-10-10.19/doc/src/sgml/html/sql-syntax.html --- postgresql-10-10.17/doc/src/sgml/html/sql-syntax.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-syntax.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,9 +1,9 @@ -Chapter 4. SQL Syntax

    Chapter 4. SQL Syntax

    This chapter describes the syntax of SQL. It forms the foundation +Chapter 4. SQL Syntax

    Chapter 4. SQL Syntax

    This chapter describes the syntax of SQL. It forms the foundation for understanding the following chapters which will go into detail about how SQL commands are applied to define and modify data.

    We also advise users who are already familiar with SQL to read this chapter carefully because it contains several rules and concepts that are implemented inconsistently among SQL databases or that are specific to PostgreSQL. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-syntax-lexical.html postgresql-10-10.19/doc/src/sgml/html/sql-syntax-lexical.html --- postgresql-10-10.17/doc/src/sgml/html/sql-syntax-lexical.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-syntax-lexical.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -4.1. Lexical Structure

    4.1. Lexical Structure

    SQL input consists of a sequence of +4.1. Lexical Structure

    4.1. Lexical Structure

    SQL input consists of a sequence of commands. A command is composed of a sequence of tokens, terminated by a semicolon (;). The end of the input stream also @@ -544,4 +544,4 @@ you can test your application with the configuration parameter operator_precedence_warning turned on to see if any warnings are logged. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-truncate.html postgresql-10-10.19/doc/src/sgml/html/sql-truncate.html --- postgresql-10-10.17/doc/src/sgml/html/sql-truncate.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-truncate.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -TRUNCATE

    TRUNCATE

    TRUNCATE — empty a table or set of tables

    Synopsis

    TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]
    +TRUNCATE

    TRUNCATE

    TRUNCATE — empty a table or set of tables

    Synopsis

    TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]
         [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]

    Description

    TRUNCATE quickly removes all rows from a set of tables. It has the same effect as an unqualified DELETE on each table, but since it does not actually @@ -87,4 +87,4 @@ meanings. Some of the concurrency behavior of this command is left implementation-defined by the standard, so the above notes should be considered and compared with other implementations if necessary. -

    See Also

    DELETE
    \ No newline at end of file +

    See Also

    DELETE
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-unlisten.html postgresql-10-10.19/doc/src/sgml/html/sql-unlisten.html --- postgresql-10-10.17/doc/src/sgml/html/sql-unlisten.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-unlisten.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -UNLISTEN

    UNLISTEN

    UNLISTEN — stop listening for a notification

    Synopsis

    UNLISTEN { channel | * }

    Description

    UNLISTEN is used to remove an existing +UNLISTEN

    UNLISTEN

    UNLISTEN — stop listening for a notification

    Synopsis

    UNLISTEN { channel | * }

    Description

    UNLISTEN is used to remove an existing registration for NOTIFY events. UNLISTEN cancels any existing registration of the current PostgreSQL session as a @@ -29,4 +29,4 @@

    UNLISTEN virtual;
     NOTIFY virtual;
     -- no NOTIFY event is received

    Compatibility

    There is no UNLISTEN command in the SQL standard. -

    See Also

    LISTEN, NOTIFY
    \ No newline at end of file +

    See Also

    LISTEN, NOTIFY
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-update.html postgresql-10-10.19/doc/src/sgml/html/sql-update.html --- postgresql-10-10.17/doc/src/sgml/html/sql-update.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-update.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -UPDATE

    UPDATE

    UPDATE — update rows of a table

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
    +UPDATE

    UPDATE

    UPDATE — update rows of a table

    Synopsis

    [ WITH [ RECURSIVE ] with_query [, ...] ]
     UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
         SET { column_name = { expression | DEFAULT } |
               ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |
    @@ -197,4 +197,4 @@
        constructor or a sub-SELECT.  An individual column's
        updated value can be specified as DEFAULT in the
        row-constructor case, but not inside a sub-SELECT.
    -  

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-vacuum.html postgresql-10-10.19/doc/src/sgml/html/sql-vacuum.html --- postgresql-10-10.17/doc/src/sgml/html/sql-vacuum.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-vacuum.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -VACUUM

    VACUUM

    VACUUM — garbage-collect and optionally analyze a database

    Synopsis

    VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE | DISABLE_PAGE_SKIPPING } [, ...] ) ] [ table_name [ (column_name [, ...] ) ] ]
    +VACUUM

    VACUUM

    VACUUM — garbage-collect and optionally analyze a database

    Synopsis

    VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE | DISABLE_PAGE_SKIPPING } [, ...] ) ] [ table_name [ (column_name [, ...] ) ] ]
     VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table_name ]
     VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table_name [ (column_name [, ...] ) ] ]

    Description

    VACUUM reclaims storage occupied by dead tuples. In normal PostgreSQL operation, tuples that @@ -107,4 +107,4 @@ the optimizer and print a detailed vacuum activity report:

    VACUUM (VERBOSE, ANALYZE) onek;

    Compatibility

    There is no VACUUM statement in the SQL standard. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sql-values.html postgresql-10-10.19/doc/src/sgml/html/sql-values.html --- postgresql-10-10.17/doc/src/sgml/html/sql-values.html 2021-05-10 20:58:21.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sql-values.html 2021-11-08 22:25:04.000000000 +0000 @@ -1,5 +1,5 @@ -VALUES

    VALUES

    VALUES — compute a set of rows

    Synopsis

    VALUES ( expression [, ...] ) [, ...]
    +VALUES

    VALUES

    VALUES — compute a set of rows

    Synopsis

    VALUES ( expression [, ...] ) [, ...]
         [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]
         [ LIMIT { count | ALL } ]
         [ OFFSET start [ ROW | ROWS ] ]
    @@ -103,4 +103,4 @@
        LIMIT and OFFSET are
        PostgreSQL extensions; see also
        under SELECT.
    -  

    See Also

    INSERT, SELECT
    \ No newline at end of file +

    See Also

    INSERT, SELECT
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ssh-tunnels.html postgresql-10-10.19/doc/src/sgml/html/ssh-tunnels.html --- postgresql-10-10.17/doc/src/sgml/html/ssh-tunnels.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ssh-tunnels.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.10. Secure TCP/IP Connections with SSH Tunnels

    18.10. Secure TCP/IP Connections with SSH Tunnels

    It is possible to use SSH to encrypt the network +18.10. Secure TCP/IP Connections with SSH Tunnels

    18.10. Secure TCP/IP Connections with SSH Tunnels

    It is possible to use SSH to encrypt the network connection between clients and a PostgreSQL server. Done properly, this provides an adequately secure network connection, even for non-SSL-capable @@ -59,4 +59,4 @@ documentation for details.

    Tip

    Several other applications exist that can provide secure tunnels using a procedure similar in concept to the one just described. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/sslinfo.html postgresql-10-10.19/doc/src/sgml/html/sslinfo.html --- postgresql-10-10.17/doc/src/sgml/html/sslinfo.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/sslinfo.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.38. sslinfo

    F.38. sslinfo

    The sslinfo module provides information about the SSL +F.38. sslinfo

    F.38. sslinfo

    The sslinfo module provides information about the SSL certificate that the current client provided when connecting to PostgreSQL. The module is useless (most functions will return NULL) if the current connection does not use SSL. @@ -96,4 +96,4 @@

    Dmitry Voronin

    E-Mail of Cryptocom OpenSSL development group: -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/ssl-tcp.html postgresql-10-10.19/doc/src/sgml/html/ssl-tcp.html --- postgresql-10-10.17/doc/src/sgml/html/ssl-tcp.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/ssl-tcp.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.9. Secure TCP/IP Connections with SSL

    18.9. Secure TCP/IP Connections with SSL

    PostgreSQL has native support for using +18.9. Secure TCP/IP Connections with SSL

    18.9. Secure TCP/IP Connections with SSL

    PostgreSQL has native support for using SSL connections to encrypt client/server communications for increased security. This requires that OpenSSL is installed on both client and @@ -188,4 +188,4 @@ by a chain of certificates linked to its trusted root certificate. root.key and intermediate.key should be stored offline for use in creating future certificates. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/standby-settings.html postgresql-10-10.19/doc/src/sgml/html/standby-settings.html --- postgresql-10-10.17/doc/src/sgml/html/standby-settings.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/standby-settings.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -27.3. Standby Server Settings

    27.3. Standby Server Settings

    standby_mode (boolean) +27.3. Standby Server Settings

    27.3. Standby Server Settings

    standby_mode (boolean)

    Specifies whether to start the PostgreSQL server as a standby. If this parameter is on, the server will @@ -82,4 +82,4 @@ is set to remote_apply; every COMMIT will need to wait to be applied.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/storage-file-layout.html postgresql-10-10.19/doc/src/sgml/html/storage-file-layout.html --- postgresql-10-10.17/doc/src/sgml/html/storage-file-layout.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/storage-file-layout.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,16 +1,16 @@ -66.1. Database File Layout

    66.1. Database File Layout

    This section describes the storage format at the level of files and +67.1. Database File Layout

    67.1. Database File Layout

    This section describes the storage format at the level of files and directories.

    Traditionally, the configuration and data files used by a database cluster are stored together within the cluster's data directory, commonly referred to as PGDATA (after the name of the environment variable that can be used to define it). A common location for PGDATA is /var/lib/pgsql/data. Multiple clusters, managed by different server instances, can exist on the same machine.

    The PGDATA directory contains several subdirectories and control -files, as shown in Table 66.1. In addition to +files, as shown in Table 67.1. In addition to these required items, the cluster configuration files postgresql.conf, pg_hba.conf, and pg_ident.conf are traditionally stored in -PGDATA, although it is possible to place them elsewhere.

    Table 66.1. Contents of PGDATA

    ItemDescription
    PG_VERSIONA file containing the major version number of PostgreSQL
    baseSubdirectory containing per-database subdirectories
    current_logfilesFile recording the log file(s) currently written to by the logging +PGDATA, although it is possible to place them elsewhere.

    Table 67.1. Contents of PGDATA

    ItemDescription
    PG_VERSIONA file containing the major version number of PostgreSQL
    baseSubdirectory containing per-database subdirectories
    current_logfilesFile recording the log file(s) currently written to by the logging collector
    globalSubdirectory containing cluster-wide tables, such as pg_database
    pg_commit_tsSubdirectory containing transaction commit timestamp data
    pg_dynshmemSubdirectory containing files used by the dynamic shared memory subsystem
    pg_logicalSubdirectory containing status data for logical decoding
    pg_multixactSubdirectory containing multitransaction status data @@ -37,14 +37,14 @@ tBBB_FFF, where BBB is the backend ID of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a -main fork), each table and index has a free space map (see Section 66.3), which stores information about free space available in +main fork), each table and index has a free space map (see Section 67.3), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm. Tables also have a visibility map, stored in a fork with the suffix _vm, to track which pages are known to have no dead tuples. The visibility map is -described further in Section 66.4. Unlogged tables and indexes +described further in Section 67.4. Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork -with the suffix _init (see Section 66.5).

    Caution

    Note that while a table's filenode often matches its OID, this is +with the suffix _init (see Section 67.5).

    Caution

    Note that while a table's filenode often matches its OID, this is not necessarily the case; some operations, like TRUNCATE, REINDEX, CLUSTER and some forms of ALTER TABLE, can change the filenode while preserving the OID. @@ -66,8 +66,8 @@ field values that are too large to keep in the table rows proper. pg_class.reltoastrelid links from a table to its TOAST table, if any. -See Section 66.2 for more information.

    The contents of tables and indexes are discussed further in -Section 66.6.

    Tablespaces make the scenario more complicated. Each user-defined tablespace +See Section 67.2 for more information.

    The contents of tables and indexes are discussed further in +Section 67.6.

    Tablespaces make the scenario more complicated. Each user-defined tablespace has a symbolic link inside the PGDATA/pg_tblspc directory, which points to the physical tablespace directory (i.e., the location specified in the tablespace's CREATE TABLESPACE command). @@ -98,4 +98,4 @@ The name of a temporary file has the form pgsql_tmpPPP.NNN, where PPP is the PID of the owning backend and -NNN distinguishes different temporary files of that backend.

    \ No newline at end of file +NNN distinguishes different temporary files of that backend.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/storage-fsm.html postgresql-10-10.19/doc/src/sgml/html/storage-fsm.html --- postgresql-10-10.17/doc/src/sgml/html/storage-fsm.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/storage-fsm.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -66.3. Free Space Map

    66.3. Free Space Map

    Each heap and index relation, except for hash indexes, has a Free Space Map +67.3. Free Space Map

    67.3. Free Space Map

    Each heap and index relation, except for hash indexes, has a Free Space Map (FSM) to keep track of available space in the relation. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _fsm suffix. For example, @@ -14,4 +14,4 @@ at the root.

    See src/backend/storage/freespace/README for more details on how the FSM is structured, and how it's updated and searched. The pg_freespacemap module -can be used to examine the information stored in free space maps.

    \ No newline at end of file +can be used to examine the information stored in free space maps.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/storage.html postgresql-10-10.19/doc/src/sgml/html/storage.html --- postgresql-10-10.17/doc/src/sgml/html/storage.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/storage.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,3 +1,3 @@ -Chapter 66. Database Physical Storage

    Chapter 66. Database Physical Storage

    This chapter provides an overview of the physical storage format used by -PostgreSQL databases.

    \ No newline at end of file +Chapter 67. Database Physical Storage

    Chapter 67. Database Physical Storage

    This chapter provides an overview of the physical storage format used by +PostgreSQL databases.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/storage-init.html postgresql-10-10.19/doc/src/sgml/html/storage-init.html --- postgresql-10-10.17/doc/src/sgml/html/storage-init.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/storage-init.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,6 +1,6 @@ -66.5. The Initialization Fork

    66.5. The Initialization Fork

    Each unlogged table, and each index on an unlogged table, has an initialization +67.5. The Initialization Fork

    67.5. The Initialization Fork

    Each unlogged table, and each index on an unlogged table, has an initialization fork. The initialization fork is an empty table or index of the appropriate type. When an unlogged table must be reset to empty due to a crash, the initialization fork is copied over the main fork, and any other forks are -erased (they will be recreated automatically as needed).

    \ No newline at end of file +erased (they will be recreated automatically as needed).

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/storage-page-layout.html postgresql-10-10.19/doc/src/sgml/html/storage-page-layout.html --- postgresql-10-10.17/doc/src/sgml/html/storage-page-layout.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/storage-page-layout.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,6 +1,6 @@ -66.6. Database Page Layout

    66.6. Database Page Layout

    This section provides an overview of the page format used within -PostgreSQL tables and indexes.[15] +67.6. Database Page Layout

    67.6. Database Page Layout

    This section provides an overview of the page format used within +PostgreSQL tables and indexes.[15] Sequences and TOAST tables are formatted just like a regular table.

    In the following explanation, a byte is assumed to contain 8 bits. In addition, the term @@ -12,14 +12,14 @@ equivalent, so a particular item (row) can be stored in any page. In indexes, the first page is generally reserved as a metapage holding control information, and there can be different types of pages -within the index, depending on the index access method.

    Table 66.2 shows the overall layout of a page. -There are five parts to each page.

    Table 66.2. Overall Page Layout

    ItemDescription
    PageHeaderData24 bytes long. Contains general information about the page, including +within the index, depending on the index access method.

    Table 67.2 shows the overall layout of a page. +There are five parts to each page.

    Table 67.2. Overall Page Layout

    ItemDescription
    PageHeaderData24 bytes long. Contains general information about the page, including free space pointers.
    ItemIdDataArray of item identifiers pointing to the actual items. Each entry is an (offset,length) pair. 4 bytes per item.
    Free spaceThe unallocated space. New item identifiers are allocated from the start of this area, new items from the end.
    ItemsThe actual items themselves.
    Special spaceIndex access method specific data. Different methods store different data. Empty in ordinary tables.

    The first 24 bytes of each page consists of a page header - (PageHeaderData). Its format is detailed in Table 66.3. The first field tracks the most + (PageHeaderData). Its format is detailed in Table 67.3. The first field tracks the most recent WAL entry related to this page. The second field contains the page checksum if data checksums are enabled. Next is a 2-byte field containing flag bits. This is followed @@ -42,7 +42,7 @@ The last field is a hint that shows whether pruning the page is likely to be profitable: it tracks the oldest un-pruned XMAX on the page. -

    Table 66.3. PageHeaderData Layout

    FieldTypeLengthDescription
    pd_lsnPageXLogRecPtr8 bytesLSN: next byte after last byte of WAL record for last change +

    Table 67.3. PageHeaderData Layout

    FieldTypeLengthDescription
    pd_lsnPageXLogRecPtr8 bytesLSN: next byte after last byte of WAL record for last change to this page
    pd_checksumuint162 bytesPage checksum
    pd_flagsuint162 bytesFlag bits
    pd_lowerLocationIndex2 bytesOffset to start of free space
    pd_upperLocationIndex2 bytesOffset to end of free space
    pd_specialLocationIndex2 bytesOffset to start of special space
    pd_pagesize_versionuint162 bytesPage size and layout version number information
    pd_prune_xidTransactionId4 bytesOldest unpruned XMAX on page, or zero if none

    All the details can be found in src/include/storage/bufpage.h.

    @@ -83,7 +83,7 @@ header (occupying 23 bytes on most machines), followed by an optional null bitmap, an optional object ID field, and the user data. The header is detailed - in Table 66.4. The actual user data + in Table 67.4. The actual user data (columns of the row) begins at the offset indicated by t_hoff, which must always be a multiple of the MAXALIGN distance for the platform. @@ -101,7 +101,7 @@ bitmap and the object ID. (This in turn ensures that the object ID is suitably aligned.) -

    Table 66.4. HeapTupleHeaderData Layout

    FieldTypeLengthDescription
    t_xminTransactionId4 bytesinsert XID stamp
    t_xmaxTransactionId4 bytesdelete XID stamp
    t_cidCommandId4 bytesinsert and/or delete CID stamp (overlays with t_xvac)
    t_xvacTransactionId4 bytesXID for VACUUM operation moving a row version
    t_ctidItemPointerData6 bytescurrent TID of this or newer row version
    t_infomask2uint162 bytesnumber of attributes, plus various flag bits
    t_infomaskuint162 bytesvarious flag bits
    t_hoffuint81 byteoffset to user data

    All the details can be found in +

    Table 67.4. HeapTupleHeaderData Layout

    FieldTypeLengthDescription
    t_xminTransactionId4 bytesinsert XID stamp
    t_xmaxTransactionId4 bytesdelete XID stamp
    t_cidCommandId4 bytesinsert and/or delete CID stamp (overlays with t_xvac)
    t_xvacTransactionId4 bytesXID for VACUUM operation moving a row version
    t_ctidItemPointerData6 bytescurrent TID of this or newer row version
    t_infomask2uint162 bytesnumber of attributes, plus various flag bits
    t_infomaskuint162 bytesvarious flag bits
    t_hoffuint81 byteoffset to user data

    All the details can be found in src/include/access/htup_details.h.

    Interpreting the actual data can only be done with information obtained @@ -124,10 +124,10 @@ struct varlena, which includes the total length of the stored value and some flag bits. Depending on the flags, the data can be either inline or in a TOAST table; - it might be compressed, too (see Section 66.2). + it might be compressed, too (see Section 67.2). -



    [15] Actually, index access methods need not use this page format. +



    [15] Actually, index access methods need not use this page format. All the existing index methods do use this basic format, but the data kept on index metapages usually doesn't follow the item layout rules. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/storage-toast.html postgresql-10-10.19/doc/src/sgml/html/storage-toast.html --- postgresql-10-10.17/doc/src/sgml/html/storage-toast.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/storage-toast.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -66.2. TOAST

    66.2. TOAST

    This section provides an overview of TOAST (The +67.2. TOAST

    67.2. TOAST

    This section provides an overview of TOAST (The Oversized-Attribute Storage Technique).

    PostgreSQL uses a fixed page size (commonly 8 kB), and does not allow tuples to span multiple pages. Therefore, it is not possible to store very large field values directly. To overcome @@ -56,15 +56,15 @@ itself. These on-disk pointer datums are created by the TOAST management code (in access/heap/tuptoaster.c) when a tuple to be stored on disk is too large to be stored as-is. -Further details appear in Section 66.2.1. +Further details appear in Section 67.2.1. Alternatively, a TOAST pointer datum can contain a pointer to out-of-line data that appears elsewhere in memory. Such datums are necessarily short-lived, and will never appear on-disk, but they are very useful for avoiding copying and redundant processing of large data values. -Further details appear in Section 66.2.2.

    The compression technique used for either in-line or out-of-line compressed +Further details appear in Section 67.2.2.

    The compression technique used for either in-line or out-of-line compressed data is a fairly simple and very fast member of the LZ family of compression techniques. See -src/common/pg_lzcompress.c for the details.

    66.2.1. Out-of-line, on-disk TOAST storage

    If any of the columns of a table are TOAST-able, the table will +src/common/pg_lzcompress.c for the details.

    67.2.1. Out-of-line, on-disk TOAST storage

    If any of the columns of a table are TOAST-able, the table will have an associated TOAST table, whose OID is stored in the table's pg_class.reltoastrelid entry. On-disk TOASTed values are kept in the TOAST table, as @@ -133,7 +133,7 @@ raw data size including the TOAST table, and that the main table contained only about 10% of the entire data (the URLs and some small HTML pages). There was no run time difference compared to an un-TOASTed -comparison table, in which all the HTML pages were cut down to 7 kB to fit.

    66.2.2. Out-of-line, in-memory TOAST storage

    TOAST pointers can point to data that is not on disk, but is +comparison table, in which all the HTML pages were cut down to 7 kB to fit.

    67.2.2. Out-of-line, in-memory TOAST storage

    TOAST pointers can point to data that is not on disk, but is elsewhere in the memory of the current server process. Such pointers obviously cannot be long-lived, but they are nonetheless useful. There are currently two sub-cases: @@ -179,4 +179,4 @@ stored on disk. In-memory TOAST pointers are automatically expanded to normal in-line varlena values before storage — and then possibly converted to on-disk TOAST pointers, if the containing -tuple would otherwise be too big.

    \ No newline at end of file +tuple would otherwise be too big.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/storage-vm.html postgresql-10-10.19/doc/src/sgml/html/storage-vm.html --- postgresql-10-10.17/doc/src/sgml/html/storage-vm.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/storage-vm.html 2021-11-08 22:25:08.000000000 +0000 @@ -1,5 +1,5 @@ -66.4. Visibility Map

    66.4. Visibility Map

    Each heap relation has a Visibility Map +67.4. Visibility Map

    67.4. Visibility Map

    Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored @@ -18,4 +18,4 @@ set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.

    The pg_visibility module can be used to examine the -information stored in the visibility map.

    \ No newline at end of file +information stored in the visibility map.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/supported-platforms.html postgresql-10-10.19/doc/src/sgml/html/supported-platforms.html --- postgresql-10-10.17/doc/src/sgml/html/supported-platforms.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/supported-platforms.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -16.6. Supported Platforms

    16.6. Supported Platforms

    A platform (that is, a CPU architecture and operating system combination) +16.6. Supported Platforms

    16.6. Supported Platforms

    A platform (that is, a CPU architecture and operating system combination) is considered supported by the PostgreSQL development community if the code contains provisions to work on that platform and it has recently been verified to build and pass its regression tests @@ -32,4 +32,4 @@ in porting PostgreSQL to a new platform, is the appropriate place to discuss that. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tablefunc.html postgresql-10-10.19/doc/src/sgml/html/tablefunc.html --- postgresql-10-10.17/doc/src/sgml/html/tablefunc.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tablefunc.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.39. tablefunc

    F.39. tablefunc

    The tablefunc module includes various functions that return +F.39. tablefunc

    F.39. tablefunc

    The tablefunc module includes various functions that return tables (that is, multiple rows). These functions are useful both in their own right and as examples of how to write C functions that return multiple rows. @@ -482,4 +482,4 @@ row8 | row6 | 3 | 6 (6 rows)

    F.39.2. Author

    Joe Conway -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tablesample-method.html postgresql-10-10.19/doc/src/sgml/html/tablesample-method.html --- postgresql-10-10.17/doc/src/sgml/html/tablesample-method.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tablesample-method.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 57. Writing A Table Sampling Method

    Chapter 57. Writing A Table Sampling Method

    PostgreSQL's implementation of the TABLESAMPLE +Chapter 57. Writing A Table Sampling Method

    Chapter 57. Writing A Table Sampling Method

    PostgreSQL's implementation of the TABLESAMPLE clause supports custom table sampling methods, in addition to the BERNOULLI and SYSTEM methods that are required by the SQL standard. The sampling method determines which rows of the @@ -44,4 +44,4 @@ the src/backend/access/tablesample subdirectory of the source tree for the built-in sampling methods, and into the contrib subdirectory for add-on methods. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tablesample-support-functions.html postgresql-10-10.19/doc/src/sgml/html/tablesample-support-functions.html --- postgresql-10-10.17/doc/src/sgml/html/tablesample-support-functions.html 2021-05-10 20:58:25.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tablesample-support-functions.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -57.1. Sampling Method Support Functions

    57.1. Sampling Method Support Functions

    The TSM handler function returns a palloc'd TsmRoutine struct +57.1. Sampling Method Support Functions

    57.1. Sampling Method Support Functions

    The TSM handler function returns a palloc'd TsmRoutine struct containing pointers to the support functions described below. Most of the functions are required, but some are optional, and those pointers can be NULL. @@ -135,4 +135,4 @@ should be cleaned up. This function can be omitted (set the pointer to NULL) in the common case where no such resources exist. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tcn.html postgresql-10-10.19/doc/src/sgml/html/tcn.html --- postgresql-10-10.17/doc/src/sgml/html/tcn.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tcn.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.40. tcn

    F.40. tcn

    The tcn module provides a trigger function that notifies +F.40. tcn

    F.40. tcn

    The tcn module provides a trigger function that notifies listeners of changes to any table on which it is attached. It must be used as an AFTER trigger FOR EACH ROW.

    Only one parameter may be supplied to the function in a @@ -42,4 +42,4 @@ test=# delete from tcndata where a = 1 and b = date '2012-12-22'; DELETE 1 Asynchronous notification "tcn" with payload ""tcndata",D,"a"='1',"b"='2012-12-22'" received from server process with PID 22770.

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/test-decoding.html postgresql-10-10.19/doc/src/sgml/html/test-decoding.html --- postgresql-10-10.17/doc/src/sgml/html/test-decoding.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/test-decoding.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.41. test_decoding

    F.41. test_decoding

    test_decoding is an example of a logical decoding +F.41. test_decoding

    F.41. test_decoding

    test_decoding is an example of a logical decoding output plugin. It doesn't do anything especially useful, but can serve as a starting point for developing your own output plugin.

    test_decoding receives WAL through the logical decoding @@ -20,4 +20,4 @@ 0/16D3398 | 692 | table public.data: DELETE: id[int4]:3 0/16D3398 | 692 | COMMIT (8 rows)

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-configuration.html postgresql-10-10.19/doc/src/sgml/html/textsearch-configuration.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-configuration.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-configuration.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.7. Configuration Example

    12.7. Configuration Example

    A text search configuration specifies all options necessary to transform a +12.7. Configuration Example

    12.7. Configuration Example

    A text search configuration specifies all options necessary to transform a document into a tsvector: the parser to use to break text into tokens, and the dictionaries to use to transform each token into a lexeme. Every call of @@ -83,4 +83,4 @@ default_text_search_config ---------------------------- public.pg

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-controls.html postgresql-10-10.19/doc/src/sgml/html/textsearch-controls.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-controls.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-controls.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.3. Controlling Text Search

    12.3. Controlling Text Search

    To implement full text searching there must be a function to create a +12.3. Controlling Text Search

    12.3. Controlling Text Search

    To implement full text searching there must be a function to create a tsvector from a document and a tsquery from a user query. Also, we need to return results in a useful order, so we need a function that compares documents with respect to their relevance to @@ -392,4 +392,4 @@

    ts_headline uses the original document, not a tsvector summary, so it can be slow and should be used with care. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-debugging.html postgresql-10-10.19/doc/src/sgml/html/textsearch-debugging.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-debugging.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-debugging.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.8. Testing and Debugging Text Search

    12.8. Testing and Debugging Text Search

    The behavior of a custom text search configuration can easily become +12.8. Testing and Debugging Text Search

    12.8. Testing and Debugging Text Search

    The behavior of a custom text search configuration can easily become confusing. The functions described in this section are useful for testing text search objects. You can test a complete configuration, or test parsers and dictionaries separately. @@ -202,4 +202,4 @@ plainto_tsquery ----------------- 'sn'

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-dictionaries.html postgresql-10-10.19/doc/src/sgml/html/textsearch-dictionaries.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-dictionaries.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-dictionaries.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.6. Dictionaries

    12.6. Dictionaries

    Dictionaries are used to eliminate words that should not be considered in a +12.6. Dictionaries

    12.6. Dictionaries

    Dictionaries are used to eliminate words that should not be considered in a search (stop words), and to normalize words so that different derived forms of the same word will match. A successfully normalized word is called a lexeme. Aside from @@ -531,4 +531,4 @@ at the end of the dictionary list. It is useless to have it before any other dictionary because a token will never pass through it to the next dictionary. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-features.html postgresql-10-10.19/doc/src/sgml/html/textsearch-features.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-features.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-features.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.4. Additional Features

    12.4. Additional Features

    This section describes additional functions and operators that are +12.4. Additional Features

    12.4. Additional Features

    This section describes additional functions and operators that are useful in connection with text search.

    12.4.1. Manipulating Documents

    Section 12.3.1 showed how raw textual documents can be converted into tsvector values. @@ -304,4 +304,4 @@

    SELECT * FROM ts_stat('SELECT vector FROM apod', 'ab')
     ORDER BY nentry DESC, ndoc DESC, word
     LIMIT 10;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch.html postgresql-10-10.19/doc/src/sgml/html/textsearch.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 12. Full Text Search \ No newline at end of file +Chapter 12. Full Text Search \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-indexes.html postgresql-10-10.19/doc/src/sgml/html/textsearch-indexes.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-indexes.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-indexes.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.9. GIN and GiST Index Types

    12.9. GIN and GiST Index Types

    There are two kinds of indexes that can be used to speed up full text +12.9. GIN and GiST Index Types

    12.9. GIN and GiST Index Types

    There are two kinds of indexes that can be used to speed up full text searches. Note that indexes are not mandatory for full text searching, but in cases where a column is searched on a regular basis, an index is @@ -52,4 +52,4 @@ servers and collecting search results using the dblink module. The latter is possible because ranking functions use only local information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-intro.html postgresql-10-10.19/doc/src/sgml/html/textsearch-intro.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-intro.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-intro.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.1. Introduction

    12.1. Introduction

    Full Text Searching (or just text search) provides +12.1. Introduction

    12.1. Introduction

    Full Text Searching (or just text search) provides the capability to identify natural-language documents that satisfy a query, and optionally to sort them by relevance to the query. The most common type of search @@ -283,4 +283,4 @@ parsers and templates, no special privilege is needed to create a new dictionary or configuration. Examples of creating custom dictionaries and configurations appear later in this chapter. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-limitations.html postgresql-10-10.19/doc/src/sgml/html/textsearch-limitations.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-limitations.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-limitations.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.11. Limitations

    12.11. Limitations

    The current limitations of PostgreSQL's +12.11. Limitations

    12.11. Limitations

    The current limitations of PostgreSQL's text search features are:

    • The length of each lexeme must be less than 2K bytes

    • The length of a tsvector (lexemes + positions) must be less than 1 megabyte

    • The number of lexemes must be less than @@ -15,4 +15,4 @@

      Another example — the PostgreSQL mailing list archives contained 910,989 unique words with 57,491,343 lexemes in 461,020 messages. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-parsers.html postgresql-10-10.19/doc/src/sgml/html/textsearch-parsers.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-parsers.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-parsers.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.5. Parsers

    12.5. Parsers

    Text search parsers are responsible for splitting raw document text +12.5. Parsers

    12.5. Parsers

    Text search parsers are responsible for splitting raw document text into tokens and identifying each token's type, where the set of possible types is defined by the parser itself. Note that a parser does not modify the text at all — it simply @@ -47,4 +47,4 @@ url | URL | example.com/stuff/index.html host | Host | example.com url_path | URL path | /stuff/index.html

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-psql.html postgresql-10-10.19/doc/src/sgml/html/textsearch-psql.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-psql.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-psql.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.10. psql Support

    12.10. psql Support

    Information about text search configuration objects can be obtained +12.10. psql Support

    12.10. psql Support

    Information about text search configuration objects can be obtained in psql using a set of commands:

    \dF{d,p,t}[+] [PATTERN]

    An optional + produces more details. @@ -129,4 +129,4 @@ pg_catalog | snowball | snowball stemmer pg_catalog | synonym | synonym dictionary: replace word by its synonym pg_catalog | thesaurus | thesaurus dictionary: phrase by phrase substitution

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/textsearch-tables.html postgresql-10-10.19/doc/src/sgml/html/textsearch-tables.html --- postgresql-10-10.17/doc/src/sgml/html/textsearch-tables.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/textsearch-tables.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -12.2. Tables and Indexes

    12.2. Tables and Indexes

    The examples in the previous section illustrated full text matching using +12.2. Tables and Indexes

    12.2. Tables and Indexes

    The examples in the previous section illustrated full text matching using simple constant strings. This section shows how to search table data, optionally using indexes.

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/transaction-iso.html postgresql-10-10.19/doc/src/sgml/html/transaction-iso.html --- postgresql-10-10.17/doc/src/sgml/html/transaction-iso.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/transaction-iso.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -13.2. Transaction Isolation

    13.2. Transaction Isolation

    The SQL standard defines four levels of +13.2. Transaction Isolation

    13.2. Transaction Isolation

    The SQL standard defines four levels of transaction isolation. The most strict is Serializable, which is defined by the standard in a paragraph which says that any concurrent execution of a set of Serializable transactions is guaranteed @@ -418,4 +418,4 @@ Some differences in behavior and performance may be observed when compared with other systems that use a traditional locking technique. Please see [ports12] for detailed information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/trigger-datachanges.html postgresql-10-10.19/doc/src/sgml/html/trigger-datachanges.html --- postgresql-10-10.17/doc/src/sgml/html/trigger-datachanges.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/trigger-datachanges.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -38.2. Visibility of Data Changes

    38.2. Visibility of Data Changes

    If you execute SQL commands in your trigger function, and these +38.2. Visibility of Data Changes

    38.2. Visibility of Data Changes

    If you execute SQL commands in your trigger function, and these commands access the table that the trigger is for, then you need to be aware of the data visibility rules, because they determine whether these SQL commands will see the data change that the trigger @@ -35,4 +35,4 @@ the calling command in any case.

    Further information about data visibility rules can be found in Section 46.4. The example in Section 38.4 contains a demonstration of these rules. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/trigger-definition.html postgresql-10-10.19/doc/src/sgml/html/trigger-definition.html --- postgresql-10-10.17/doc/src/sgml/html/trigger-definition.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/trigger-definition.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -38.1. Overview of Trigger Behavior

    38.1. Overview of Trigger Behavior

    A trigger is a specification that the database should automatically +38.1. Overview of Trigger Behavior

    38.1. Overview of Trigger Behavior

    A trigger is a specification that the database should automatically execute a particular function whenever a certain type of operation is performed. Triggers can be attached to tables (partitioned or not), views, and foreign tables. @@ -229,4 +229,4 @@ that is being used, but the typical approach is to make the transition tables act like read-only temporary tables that can be accessed by SQL commands issued within the trigger function. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/trigger-example.html postgresql-10-10.19/doc/src/sgml/html/trigger-example.html --- postgresql-10-10.17/doc/src/sgml/html/trigger-example.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/trigger-example.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -38.4. A Complete Trigger Example

    38.4. A Complete Trigger Example

    Here is a very simple example of a trigger function written in C. +38.4. A Complete Trigger Example

    38.4. A Complete Trigger Example

    Here is a very simple example of a trigger function written in C. (Examples of triggers written in procedural languages can be found in the documentation of the procedural languages.)

    The function trigf reports the number of rows in the @@ -161,4 +161,4 @@

    There are more complex examples in src/test/regress/regress.c and in spi. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/trigger-interface.html postgresql-10-10.19/doc/src/sgml/html/trigger-interface.html --- postgresql-10-10.17/doc/src/sgml/html/trigger-interface.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/trigger-interface.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -38.3. Writing Trigger Functions in C

    38.3. Writing Trigger Functions in C

    This section describes the low-level details of the interface to a +38.3. Writing Trigger Functions in C

    38.3. Writing Trigger Functions in C

    This section describes the low-level details of the interface to a trigger function. This information is only needed when writing trigger functions in C. If you are using a higher-level language then these details are handled for you. In most cases you should consider @@ -132,4 +132,4 @@ Be careful to return either tg_trigtuple or tg_newtuple, as appropriate, if you don't want to modify the row being operated on. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/triggers.html postgresql-10-10.19/doc/src/sgml/html/triggers.html --- postgresql-10-10.17/doc/src/sgml/html/triggers.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/triggers.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 38. Triggers

    Chapter 38. Triggers

    This chapter provides general information about writing trigger functions. +Chapter 38. Triggers

    Chapter 38. Triggers

    This chapter provides general information about writing trigger functions. Trigger functions can be written in most of the available procedural languages, including PL/pgSQL (Chapter 42), @@ -13,4 +13,4 @@ most people find it easier to use one of the procedural languages. It is not currently possible to write a trigger function in the plain SQL function language. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tsm-system-rows.html postgresql-10-10.19/doc/src/sgml/html/tsm-system-rows.html --- postgresql-10-10.17/doc/src/sgml/html/tsm-system-rows.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tsm-system-rows.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.42. tsm_system_rows

    F.42. tsm_system_rows

    The tsm_system_rows module provides the table sampling method +F.42. tsm_system_rows

    F.42. tsm_system_rows

    The tsm_system_rows module provides the table sampling method SYSTEM_ROWS, which can be used in the TABLESAMPLE clause of a SELECT command. @@ -21,4 +21,4 @@

    This command will return a sample of 100 rows from the table my_table (unless the table does not have 100 visible rows, in which case all its rows are returned). -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tsm-system-time.html postgresql-10-10.19/doc/src/sgml/html/tsm-system-time.html --- postgresql-10-10.17/doc/src/sgml/html/tsm-system-time.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tsm-system-time.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.43. tsm_system_time

    F.43. tsm_system_time

    The tsm_system_time module provides the table sampling method +F.43. tsm_system_time

    F.43. tsm_system_time

    The tsm_system_time module provides the table sampling method SYSTEM_TIME, which can be used in the TABLESAMPLE clause of a SELECT command. @@ -23,4 +23,4 @@

    This command will return as large a sample of my_table as it can read in 1 second (1000 milliseconds). Of course, if the whole table can be read in under 1 second, all its rows will be returned. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-accessdb.html postgresql-10-10.19/doc/src/sgml/html/tutorial-accessdb.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-accessdb.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-accessdb.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -1.4. Accessing a Database

    1.4. Accessing a Database

    Once you have created a database, you can access it by: +1.4. Accessing a Database

    1.4. Accessing a Database

    Once you have created a database, you can access it by:

    • Running the PostgreSQL interactive terminal program, called psql, which allows you @@ -24,7 +24,7 @@ previous section using createdb.

      In psql, you will be greeted with the following message: -

      psql (10.17)
      +

      psql (10.19)
       Type "help" for help.
       
       mydb=>

      @@ -49,7 +49,7 @@

      mydb=> SELECT version();
                                                version
       ------------------------------------------------------------------------------------------
      - PostgreSQL 10.17 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
      + PostgreSQL 10.19 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
       (1 row)
       
       mydb=> SELECT current_date;
      @@ -79,4 +79,4 @@
           full capabilities of psql are documented in
           psql.  In this tutorial we will not use these
           features explicitly, but you can use them yourself when it is helpful.
      -   

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-advanced.html postgresql-10-10.19/doc/src/sgml/html/tutorial-advanced.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-advanced.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-advanced.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 3. Advanced Features \ No newline at end of file +Chapter 3. Advanced Features \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-advanced-intro.html postgresql-10-10.19/doc/src/sgml/html/tutorial-advanced-intro.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-advanced-intro.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-advanced-intro.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -3.1. Introduction

    3.1. Introduction

    In the previous chapter we have covered the basics of using +3.1. Introduction

    3.1. Introduction

    In the previous chapter we have covered the basics of using SQL to store and access your data in PostgreSQL. We will now discuss some more advanced features of SQL that simplify @@ -13,4 +13,4 @@ file also contains some sample data to load, which is not repeated here. (Refer to Section 2.1 for how to use the file.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-agg.html postgresql-10-10.19/doc/src/sgml/html/tutorial-agg.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-agg.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-agg.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.7. Aggregate Functions

    2.7. Aggregate Functions

    Like most other relational database products, +2.7. Aggregate Functions

    2.7. Aggregate Functions

    Like most other relational database products, PostgreSQL supports aggregate functions. An aggregate function computes a single result from multiple input rows. @@ -110,4 +110,4 @@ more efficient than adding the restriction to HAVING, because we avoid doing the grouping and aggregate calculations for all rows that fail the WHERE check. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-arch.html postgresql-10-10.19/doc/src/sgml/html/tutorial-arch.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-arch.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-arch.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -1.2. Architectural Fundamentals

    1.2. Architectural Fundamentals

    Before we proceed, you should understand the basic +1.2. Architectural Fundamentals

    1.2. Architectural Fundamentals

    Before we proceed, you should understand the basic PostgreSQL system architecture. Understanding how the parts of PostgreSQL interact will make this @@ -40,4 +40,4 @@ client connections, whereas client and associated server processes come and go. (All of this is of course invisible to the user. We only mention it here for completeness.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-concepts.html postgresql-10-10.19/doc/src/sgml/html/tutorial-concepts.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-concepts.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-concepts.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.2. Concepts

    2.2. Concepts

    +2.2. Concepts

    2.2. Concepts

    @@ -31,4 +31,4 @@ Tables are grouped into databases, and a collection of databases managed by a single PostgreSQL server instance constitutes a database cluster. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-conclusion.html postgresql-10-10.19/doc/src/sgml/html/tutorial-conclusion.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-conclusion.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-conclusion.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -3.7. Conclusion

    3.7. Conclusion

    PostgreSQL has many features not +3.7. Conclusion

    3.7. Conclusion

    PostgreSQL has many features not touched upon in this tutorial introduction, which has been oriented toward newer users of SQL. These features are discussed in more detail in the remainder of this @@ -7,4 +7,4 @@

    If you feel you need more introductory material, please visit the PostgreSQL web site for links to more resources. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-createdb.html postgresql-10-10.19/doc/src/sgml/html/tutorial-createdb.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-createdb.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-createdb.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -1.3. Creating a Database

    1.3. Creating a Database

    The first test to see whether you can access the database server +1.3. Creating a Database

    1.3. Creating a Database

    The first test to see whether you can access the database server is to try to create a database. A running PostgreSQL server can manage many databases. Typically, a separate database is used for each @@ -89,4 +89,4 @@ create databases. Instead of logging in as that user you can also specify the -U option everywhere to select a PostgreSQL user name to connect as. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-delete.html postgresql-10-10.19/doc/src/sgml/html/tutorial-delete.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-delete.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-delete.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.9. Deletions

    2.9. Deletions

    Rows can be removed from a table using the DELETE +2.9. Deletions

    2.9. Deletions

    Rows can be removed from a table using the DELETE command. Suppose you are no longer interested in the weather of Hayward. Then you can do the following to delete those rows from the table: @@ -21,4 +21,4 @@ remove all rows from the given table, leaving it empty. The system will not request confirmation before doing this! -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-fk.html postgresql-10-10.19/doc/src/sgml/html/tutorial-fk.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-fk.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-fk.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -3.3. Foreign Keys

    3.3. Foreign Keys

    Recall the weather and +3.3. Foreign Keys

    3.3. Foreign Keys

    Recall the weather and cities tables from Chapter 2. Consider the following problem: You want to make sure that no one can insert rows in the weather table that do not have a matching @@ -15,12 +15,12 @@

    The new declaration of the tables would look like this:

    CREATE TABLE cities (
    -        city     varchar(80) primary key,
    +        name     varchar(80) primary key,
             location point
     );
     
     CREATE TABLE weather (
    -        city      varchar(80) references cities(city),
    +        city      varchar(80) references cities(name),
             temp_lo   int,
             temp_hi   int,
             prcp      real,
    @@ -39,4 +39,4 @@
         for more information.  Making correct use of
         foreign keys will definitely improve the quality of your database
         applications, so you are strongly encouraged to learn about them.
    -   

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial.html postgresql-10-10.19/doc/src/sgml/html/tutorial.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -Part I. Tutorial

    Part I. Tutorial

    Welcome to the PostgreSQL Tutorial. The +Part I. Tutorial

    Part I. Tutorial

    Welcome to the PostgreSQL Tutorial. The following few chapters are intended to give a simple introduction to PostgreSQL, relational database concepts, and the SQL language to those who are new to any one of @@ -15,4 +15,4 @@ information about developing applications for PostgreSQL. Those who set up and manage their own server should also read Part III. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-inheritance.html postgresql-10-10.19/doc/src/sgml/html/tutorial-inheritance.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-inheritance.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-inheritance.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -3.6. Inheritance

    3.6. Inheritance

    Inheritance is a concept from object-oriented databases. It opens +3.6. Inheritance

    3.6. Inheritance

    Inheritance is a concept from object-oriented databases. It opens up interesting new possibilities of database design.

    Let's create two tables: A table cities and a table capitals. Naturally, capitals @@ -90,4 +90,4 @@

    Note

    Although inheritance is frequently useful, it has not been integrated with unique constraints or foreign keys, which limits its usefulness. See Section 5.9 for more detail. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-install.html postgresql-10-10.19/doc/src/sgml/html/tutorial-install.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-install.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-install.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -1.1. Installation

    1.1. Installation

    Before you can use PostgreSQL you need +1.1. Installation

    1.1. Installation

    Before you can use PostgreSQL you need to install it, of course. It is possible that PostgreSQL is already installed at your site, either because it was included in your operating system @@ -31,4 +31,4 @@ site administrator or, if that is you, the documentation to make sure that your environment is properly set up. If you did not understand the preceding paragraph then read the next section. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-join.html postgresql-10-10.19/doc/src/sgml/html/tutorial-join.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-join.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-join.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.6. Joins Between Tables

    2.6. Joins Between Tables

    Thus far, our queries have only accessed one table at a time. +2.6. Joins Between Tables

    2.6. Joins Between Tables

    Thus far, our queries have only accessed one table at a time. Queries can access multiple tables at once, or access the same table in such a way that multiple rows of the table are being processed at the same time. A query that accesses multiple rows @@ -132,4 +132,4 @@ FROM weather w, cities c WHERE w.city = c.name;

    You will encounter this style of abbreviating quite frequently. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-populate.html postgresql-10-10.19/doc/src/sgml/html/tutorial-populate.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-populate.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-populate.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.4. Populating a Table With Rows

    2.4. Populating a Table With Rows

    The INSERT statement is used to populate a table with +2.4. Populating a Table With Rows

    2.4. Populating a Table With Rows

    The INSERT statement is used to populate a table with rows:

    INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

    @@ -41,4 +41,4 @@ machine running the backend process, not the client, since the backend process reads the file directly. You can read more about the COPY command in COPY. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-select.html postgresql-10-10.19/doc/src/sgml/html/tutorial-select.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-select.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-select.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.5. Querying a Table

    2.5. Querying a Table

    +2.5. Querying a Table

    2.5. Querying a Table

    To retrieve data from a table, the table is @@ -106,4 +106,4 @@ required by the SQL standard, and current PostgreSQL does not guarantee that DISTINCT causes the rows to be ordered. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-sql.html postgresql-10-10.19/doc/src/sgml/html/tutorial-sql.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-sql.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-sql.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 2. The SQL Language \ No newline at end of file +Chapter 2. The SQL Language \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-sql-intro.html postgresql-10-10.19/doc/src/sgml/html/tutorial-sql-intro.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-sql-intro.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-sql-intro.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.1. Introduction

    2.1. Introduction

    This chapter provides an overview of how to use +2.1. Introduction

    2.1. Introduction

    This chapter provides an overview of how to use SQL to perform simple operations. This tutorial is only intended to give you an introduction and is in no way a complete tutorial on SQL. Numerous books @@ -31,4 +31,4 @@ single step mode which pauses before sending each statement to the server. The commands used in this section are in the file basics.sql. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-start.html postgresql-10-10.19/doc/src/sgml/html/tutorial-start.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-start.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-start.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,2 +1,2 @@ -Chapter 1. Getting Started \ No newline at end of file +Chapter 1. Getting Started \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-table.html postgresql-10-10.19/doc/src/sgml/html/tutorial-table.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-table.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-table.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.3. Creating a New Table

    2.3. Creating a New Table

    You can create a new table by specifying the table +2.3. Creating a New Table

    2.3. Creating a New Table

    You can create a new table by specifying the table name, along with all column names and their types:

    CREATE TABLE weather (
    @@ -54,4 +54,4 @@
         longer or want to recreate it differently you can remove it using
         the following command:
     

    DROP TABLE tablename;

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-transactions.html postgresql-10-10.19/doc/src/sgml/html/tutorial-transactions.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-transactions.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-transactions.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -3.4. Transactions

    3.4. Transactions

    Transactions are a fundamental concept of all database +3.4. Transactions

    3.4. Transactions

    Transactions are a fundamental concept of all database systems. The essential point of a transaction is that it bundles multiple steps into a single, all-or-nothing operation. The intermediate states between the steps are not visible to other concurrent transactions, @@ -119,4 +119,4 @@ transaction block that was put in aborted state by the system due to an error, short of rolling it back completely and starting again. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-update.html postgresql-10-10.19/doc/src/sgml/html/tutorial-update.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-update.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-update.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -2.8. Updates

    2.8. Updates

    You can update existing rows using the +2.8. Updates

    2.8. Updates

    You can update existing rows using the UPDATE command. Suppose you discover the temperature readings are all off by 2 degrees after November 28. You can correct the @@ -17,4 +17,4 @@ San Francisco | 41 | 55 | 0 | 1994-11-29 Hayward | 35 | 52 | | 1994-11-29 (3 rows)

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-views.html postgresql-10-10.19/doc/src/sgml/html/tutorial-views.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-views.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-views.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -3.2. Views

    3.2. Views

    Refer back to the queries in Section 2.6. +3.2. Views

    3.2. Views

    Refer back to the queries in Section 2.6. Suppose the combined listing of weather records and city location is of particular interest to your application, but you do not want to type the query each time you need it. You can create a @@ -7,7 +7,7 @@ the query that you can refer to like an ordinary table:

    CREATE VIEW myview AS
    -    SELECT city, temp_lo, temp_hi, prcp, date, location
    +    SELECT name, temp_lo, temp_hi, prcp, date, location
             FROM weather, cities
             WHERE city = name;
     
    @@ -18,4 +18,4 @@
         evolves, behind consistent interfaces.
        

    Views can be used in almost any place a real table can be used. Building views upon other views is not uncommon. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/tutorial-window.html postgresql-10-10.19/doc/src/sgml/html/tutorial-window.html --- postgresql-10-10.17/doc/src/sgml/html/tutorial-window.html 2021-05-10 20:58:05.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/tutorial-window.html 2021-11-08 22:24:48.000000000 +0000 @@ -1,5 +1,5 @@ -3.5. Window Functions

    3.5. Window Functions

    A window function performs a calculation across a set of +3.5. Window Functions

    3.5. Window Functions

    A window function performs a calculation across a set of table rows that are somehow related to the current row. This is comparable to the type of calculation that can be done with an aggregate function. However, window functions do not cause rows to become grouped into a single @@ -165,4 +165,4 @@



    [4] There are options to define the window frame in other ways, but this tutorial does not cover them. See Section 4.2.8 for details. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/typeconv-func.html postgresql-10-10.19/doc/src/sgml/html/typeconv-func.html --- postgresql-10-10.17/doc/src/sgml/html/typeconv-func.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/typeconv-func.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -10.3. Functions

    10.3. Functions

    The specific function that is referenced by a function call +10.3. Functions

    10.3. Functions

    The specific function that is referenced by a function call is determined using the following procedure.

    Function Type Resolution

    1. Select the functions to be considered from the pg_proc system catalog. If a non-schema-qualified @@ -192,4 +192,4 @@ is no need to have a special case. See CREATE CAST for additional commentary. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/typeconv.html postgresql-10-10.19/doc/src/sgml/html/typeconv.html --- postgresql-10-10.17/doc/src/sgml/html/typeconv.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/typeconv.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 10. Type Conversion

    Chapter 10. Type Conversion

    SQL statements can, intentionally or not, require +Chapter 10. Type Conversion

    Chapter 10. Type Conversion

    SQL statements can, intentionally or not, require the mixing of different data types in the same expression. PostgreSQL has extensive facilities for evaluating mixed-type expressions.

    In many cases a user does not need @@ -10,4 +10,4 @@ type conversion mechanisms and conventions. Refer to the relevant sections in Chapter 8 and Chapter 9 for more information on specific data types and allowed functions and -operators.

    \ No newline at end of file +operators.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/typeconv-oper.html postgresql-10-10.19/doc/src/sgml/html/typeconv-oper.html --- postgresql-10-10.17/doc/src/sgml/html/typeconv-oper.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/typeconv-oper.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -10.2. Operators

    10.2. Operators

    The specific operator that is referenced by an operator expression +10.2. Operators

    10.2. Operators

    The specific operator that is referenced by an operator expression is determined using the following procedure. Note that this procedure is indirectly affected by the precedence of the operators involved, since that will determine @@ -175,4 +175,4 @@ search path containing schemas that permit untrusted users to create objects is not a secure schema usage pattern. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/typeconv-overview.html postgresql-10-10.19/doc/src/sgml/html/typeconv-overview.html --- postgresql-10-10.17/doc/src/sgml/html/typeconv-overview.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/typeconv-overview.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -10.1. Overview

    10.1. Overview

    SQL is a strongly typed language. That is, every data item +10.1. Overview

    10.1. Overview

    SQL is a strongly typed language. That is, every data item has an associated data type which determines its behavior and allowed usage. PostgreSQL has an extensible type system that is more general and flexible than other SQL implementations. @@ -74,4 +74,4 @@ without spending extra time in the parser and without introducing unnecessary implicit conversion calls in the query.

  • Additionally, if a query usually requires an implicit conversion for a function, and if then the user defines a new function with the correct argument types, the parser -should use this new function and no longer do implicit conversion to use the old function.

  • \ No newline at end of file +should use this new function and no longer do implicit conversion to use the old function.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/typeconv-query.html postgresql-10-10.19/doc/src/sgml/html/typeconv-query.html --- postgresql-10-10.17/doc/src/sgml/html/typeconv-query.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/typeconv-query.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -10.4. Value Storage

    10.4. Value Storage

    Values to be inserted into a table are converted to the destination +10.4. Value Storage

    10.4. Value Storage

    Values to be inserted into a table are converted to the destination column's data type according to the following steps.

    Value Storage Type Conversion

    1. Check for an exact match with the target.

    2. Otherwise, try to convert the expression to the target type. This is possible @@ -39,4 +39,4 @@ 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.


    \ No newline at end of file +padding spaces.


    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/typeconv-select.html postgresql-10-10.19/doc/src/sgml/html/typeconv-select.html --- postgresql-10-10.17/doc/src/sgml/html/typeconv-select.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/typeconv-select.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -10.6. SELECT Output Columns

    10.6. SELECT Output Columns

    The rules given in the preceding sections will result in assignment +10.6. SELECT Output Columns

    10.6. SELECT Output Columns

    The rules given in the preceding sections will result in assignment of non-unknown data types to all expressions in a SQL query, except for unspecified-type literals that appear as simple output columns of a SELECT command. For example, in @@ -18,4 +18,4 @@ unspecified-type literals in a SELECT output list were left as type unknown. That had assorted bad consequences, so it's been changed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/typeconv-union-case.html postgresql-10-10.19/doc/src/sgml/html/typeconv-union-case.html --- postgresql-10-10.17/doc/src/sgml/html/typeconv-union-case.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/typeconv-union-case.html 2021-11-08 22:24:51.000000000 +0000 @@ -1,5 +1,5 @@ -10.5. UNION, CASE, and Related Constructs

    10.5. UNION, CASE, and Related Constructs

    SQL UNION constructs must match up possibly dissimilar +10.5. UNION, CASE, and Related Constructs

    10.5. UNION, CASE, and Related Constructs

    SQL UNION constructs must match up possibly dissimilar types to become a single result set. The resolution algorithm is applied separately to each output column of a union query. The INTERSECT and EXCEPT constructs resolve @@ -73,4 +73,4 @@ input, with the THEN clauses(s) considered after that. In all other cases, left to right means the order in which the expressions appear in the query text. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/unaccent.html postgresql-10-10.19/doc/src/sgml/html/unaccent.html --- postgresql-10-10.17/doc/src/sgml/html/unaccent.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/unaccent.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.44. unaccent

    F.44. unaccent

    unaccent is a text search dictionary that removes accents +F.44. unaccent

    F.44. unaccent

    unaccent is a text search dictionary that removes accents (diacritic signs) from lexemes. It's a filtering dictionary, which means its output is always passed to the next dictionary (if any), unlike the normal @@ -96,4 +96,4 @@

    For example:

    SELECT unaccent('unaccent', 'Hôtel');
     SELECT unaccent('Hôtel');

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/unsupported-features-sql-standard.html postgresql-10-10.19/doc/src/sgml/html/unsupported-features-sql-standard.html --- postgresql-10-10.17/doc/src/sgml/html/unsupported-features-sql-standard.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/unsupported-features-sql-standard.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,8 +1,8 @@ -D.2. Unsupported Features

    D.2. Unsupported Features

    The following features defined in SQL:2011 are not +D.2. Unsupported Features

    D.2. Unsupported Features

    The following features defined in SQL:2011 are not implemented in this release of PostgreSQL. In a few cases, equivalent functionality is available.

    IdentifierPackageDescriptionComment
    B011 Embedded Ada 
    B013 Embedded COBOL 
    B014 Embedded Fortran 
    B015 Embedded MUMPS 
    B016 Embedded Pascal 
    B017 Embedded PL/I 
    B031 Basic dynamic SQL 
    B032 Extended dynamic SQL 
    B032-01 <describe input statement> 
    B033 Untyped SQL-invoked function arguments 
    B034 Dynamic specification of cursor attributes 
    B035 Non-extended descriptor names 
    B041 Extensions to embedded SQL exception declarations 
    B051 Enhanced execution rights 
    B111 Module language Ada 
    B112 Module language C 
    B113 Module language COBOL 
    B114 Module language Fortran 
    B115 Module language MUMPS 
    B116 Module language Pascal 
    B117 Module language PL/I 
    B121 Routine language Ada 
    B122 Routine language C 
    B123 Routine language COBOL 
    B124 Routine language Fortran 
    B125 Routine language MUMPS 
    B126 Routine language Pascal 
    B127 Routine language PL/I 
    B128 Routine language SQL 
    B211 Module language Ada: VARCHAR and NUMERIC support 
    B221 Routine language Ada: VARCHAR and NUMERIC support 
    E182CoreModule language 
    F054 TIMESTAMP in DATE type precedence list 
    F121 Basic diagnostics management 
    F121-01 GET DIAGNOSTICS statement 
    F121-02 SET TRANSACTION statement: DIAGNOSTICS SIZE clause 
    F122 Enhanced diagnostics management 
    F123 All diagnostics 
    F181CoreMultiple module support 
    F263 Comma-separated predicates in simple CASE expression 
    F291 UNIQUE predicate 
    F301 CORRESPONDING in query expressions 
    F311CoreSchema definition statement 
    F312 MERGE statementconsider INSERT ... ON CONFLICT DO UPDATE
    F313 Enhanced MERGE statement 
    F314 MERGE statement with DELETE branch 
    F341 Usage tablesno ROUTINE_*_USAGE tables
    F385 Drop column generation expression clause 
    F394 Optional normal form specification 
    F403 Partitioned joined tables 
    F451 Character set definition 
    F461 Named character sets 
    F492 Optional table constraint enforcement 
    F521Enhanced integrity managementAssertions 
    F671Enhanced integrity managementSubqueries in CHECKintentionally omitted
    F693 SQL-session and client module collations 
    F695 Translation support 
    F696 Additional translation documentation 
    F721 Deferrable constraintsforeign and unique keys only
    F741 Referential MATCH typesno partial match yet
    F812CoreBasic flagging 
    F813 Extended flagging 
    F821 Local table references 
    F831 Full cursor update 
    F831-01 Updatable scrollable cursors 
    F831-02 Updatable ordered cursors 
    F841 LIKE_REGEX predicate 
    F842 OCCURRENCES_REGEX function 
    F843 POSITION_REGEX function 
    F844 SUBSTRING_REGEX function 
    F845 TRANSLATE_REGEX function 
    F846 Octet support in regular expression operators 
    F847 Nonconstant regular expressions 
    F866 FETCH FIRST clause: PERCENT option 
    F867 FETCH FIRST clause: WITH TIES option 
    S011CoreDistinct data types 
    S011-01CoreUSER_DEFINED_TYPES view 
    S023Basic object supportBasic structured types 
    S024Enhanced object supportEnhanced structured types 
    S025 Final structured types 
    S026 Self-referencing structured types 
    S027 Create method by specific method name 
    S028 Permutable UDT options list 
    S041Basic object supportBasic reference types 
    S043Enhanced object supportEnhanced reference types 
    S051Basic object supportCreate table of typepartially supported
    S081Enhanced object supportSubtables 
    S091 Basic array supportpartially supported
    S091-01 Arrays of built-in data types 
    S091-02 Arrays of distinct types 
    S091-03 Array expressions 
    S094 Arrays of reference types 
    S097 Array element assignment 
    S151Basic object supportType predicate 
    S161Enhanced object supportSubtype treatment 
    S162 Subtype treatment for references 
    S202 SQL-invoked routines on multisets 
    S231Enhanced object supportStructured type locators 
    S232 Array locators 
    S233 Multiset locators 
    S241 Transform functions 
    S242 Alter transform statement 
    S251 User-defined orderings 
    S261 Specific type method 
    S271 Basic multiset support 
    S272 Multisets of user-defined types 
    S274 Multisets of reference types 
    S275 Advanced multiset support 
    S281 Nested collection types 
    S291 Unique constraint on entire row 
    S401 Distinct types based on array types 
    S402 Distinct types based on distinct types 
    S403 ARRAY_MAX_CARDINALITY 
    S404 TRIM_ARRAY 
    T011 Timestamp in Information Schema 
    T021 BINARY and VARBINARY data types 
    T022 Advanced support for BINARY and VARBINARY data types 
    T023 Compound binary literal 
    T024 Spaces in binary literals 
    T041Basic object supportBasic LOB data type support 
    T041-01Basic object supportBLOB data type 
    T041-02Basic object supportCLOB data type 
    T041-03Basic object supportPOSITION, LENGTH, LOWER, TRIM, UPPER, and SUBSTRING functions for LOB data types 
    T041-04Basic object supportConcatenation of LOB data types 
    T041-05Basic object supportLOB locator: non-holdable 
    T042 Extended LOB data type support 
    T043 Multiplier T 
    T044 Multiplier P 
    T051 Row types 
    T052 MAX and MIN for row types 
    T053 Explicit aliases for all-fields reference 
    T061 UCS support 
    T101 Enhanced nullability determination 
    T111 Updatable joins, unions, and columns 
    T175 Generated columns 
    T176 Sequence generator support 
    T180 System-versioned tables 
    T181 Application-time period tables 
    T211Active database, Enhanced integrity managementBasic trigger capability 
    T211-06Active database, Enhanced integrity managementSupport for run-time rules for the interaction of triggers and constraints 
    T211-08Active database, Enhanced integrity managementMultiple triggers for the same event are executed in the order in which they were created in the catalogintentionally omitted
    T251 SET TRANSACTION statement: LOCAL option 
    T261 Chained transactions 
    T272 Enhanced savepoint management 
    T301 Functional dependenciespartially supported
    T321CoreBasic SQL-invoked routines 
    T321-02CoreUser-defined stored procedures with no overloading 
    T321-04CoreCALL statement 
    T321-05CoreRETURN statement 
    T322PSMDeclared data type attributes 
    T324 Explicit security for SQL routines 
    T326 Table functions 
    T332 Extended rolesmostly supported
    T434 GROUP BY DISTINCT 
    T471 Result sets return value 
    T472 DESCRIBE CURSOR 
    T495 Combined data change and retrievaldifferent syntax
    T502 Period predicates 
    T511 Transaction counts 
    T521 Named arguments in CALL statement 
    T522 Default values for IN parameters of SQL-invoked proceduressupported except DEFAULT key word in invocation
    T561 Holdable locators 
    T571 Array-returning external SQL-invoked functions 
    T572 Multiset-returning external SQL-invoked functions 
    T601 Local cursor references 
    T612 Advanced OLAP operationssome forms supported
    T616 Null treatment option for LEAD and LAG functions 
    T618 NTH_VALUE functionfunction exists, but some options missing
    T619 Nested window functions 
    T620 WINDOW clause: GROUPS option 
    T641 Multiple column assignmentonly some syntax variants supported
    T652 SQL-dynamic statements in SQL routines 
    T653 SQL-schema statements in external routines 
    T654 SQL-dynamic statements in external routines 
    M001 Datalinks 
    M002 Datalinks via SQL/CLI 
    M003 Datalinks via Embedded SQL 
    M004 Foreign data supportpartially supported
    M005 Foreign schema support 
    M006 GetSQLString routine 
    M007 TransmitRequest 
    M009 GetOpts and GetStatistics routines 
    M010 Foreign data wrapper supportdifferent API
    M011 Datalinks via Ada 
    M012 Datalinks via C 
    M013 Datalinks via COBOL 
    M014 Datalinks via Fortran 
    M015 Datalinks via M 
    M016 Datalinks via Pascal 
    M017 Datalinks via PL/I 
    M018 Foreign data wrapper interface routines in Ada 
    M019 Foreign data wrapper interface routines in Cdifferent API
    M020 Foreign data wrapper interface routines in COBOL 
    M021 Foreign data wrapper interface routines in Fortran 
    M022 Foreign data wrapper interface routines in MUMPS 
    M023 Foreign data wrapper interface routines in Pascal 
    M024 Foreign data wrapper interface routines in PL/I 
    M030 SQL-server foreign data support 
    M031 Foreign data wrapper general routines 
    X012 Multisets of XML type 
    X013 Distinct types of XML type 
    X015 Fields of XML type 
    X025 XMLCast 
    X030 XMLDocument 
    X038 XMLText 
    X065 XMLParse: BLOB input and CONTENT option 
    X066 XMLParse: BLOB input and DOCUMENT option 
    X068 XMLSerialize: BOM 
    X069 XMLSerialize: INDENT 
    X073 XMLSerialize: BLOB serialization and CONTENT option 
    X074 XMLSerialize: BLOB serialization and DOCUMENT option 
    X075 XMLSerialize: BLOB serialization 
    X076 XMLSerialize: VERSION 
    X077 XMLSerialize: explicit ENCODING option 
    X078 XMLSerialize: explicit XML declaration 
    X080 Namespaces in XML publishing 
    X081 Query-level XML namespace declarations 
    X082 XML namespace declarations in DML 
    X083 XML namespace declarations in DDL 
    X084 XML namespace declarations in compound statements 
    X085 Predefined namespace prefixes 
    X086 XML namespace declarations in XMLTable 
    X091 XML content predicate 
    X096 XMLExistsXPath 1.0 only
    X100 Host language support for XML: CONTENT option 
    X101 Host language support for XML: DOCUMENT option 
    X110 Host language support for XML: VARCHAR mapping 
    X111 Host language support for XML: CLOB mapping 
    X112 Host language support for XML: BLOB mapping 
    X113 Host language support for XML: STRIP WHITESPACE option 
    X114 Host language support for XML: PRESERVE WHITESPACE option 
    X131 Query-level XMLBINARY clause 
    X132 XMLBINARY clause in DML 
    X133 XMLBINARY clause in DDL 
    X134 XMLBINARY clause in compound statements 
    X135 XMLBINARY clause in subqueries 
    X141 IS VALID predicate: data-driven case 
    X142 IS VALID predicate: ACCORDING TO clause 
    X143 IS VALID predicate: ELEMENT clause 
    X144 IS VALID predicate: schema location 
    X145 IS VALID predicate outside check constraints 
    X151 IS VALID predicate with DOCUMENT option 
    X152 IS VALID predicate with CONTENT option 
    X153 IS VALID predicate with SEQUENCE option 
    X155 IS VALID predicate: NAMESPACE without ELEMENT clause 
    X157 IS VALID predicate: NO NAMESPACE with ELEMENT clause 
    X160 Basic Information Schema for registered XML Schemas 
    X161 Advanced Information Schema for registered XML Schemas 
    X170 XML null handling options 
    X171 NIL ON NO CONTENT option 
    X181 XML(DOCUMENT(UNTYPED)) type 
    X182 XML(DOCUMENT(ANY)) type 
    X190 XML(SEQUENCE) type 
    X191 XML(DOCUMENT(XMLSCHEMA)) type 
    X192 XML(CONTENT(XMLSCHEMA)) type 
    X200 XMLQuery 
    X201 XMLQuery: RETURNING CONTENT 
    X202 XMLQuery: RETURNING SEQUENCE 
    X203 XMLQuery: passing a context item 
    X204 XMLQuery: initializing an XQuery variable 
    X205 XMLQuery: EMPTY ON EMPTY option 
    X206 XMLQuery: NULL ON EMPTY option 
    X211 XML 1.1 support 
    X221 XML passing mechanism BY VALUE 
    X231 XML(CONTENT(UNTYPED)) type 
    X232 XML(CONTENT(ANY)) type 
    X241 RETURNING CONTENT in XML publishing 
    X242 RETURNING SEQUENCE in XML publishing 
    X251 Persistent XML values of XML(DOCUMENT(UNTYPED)) type 
    X252 Persistent XML values of XML(DOCUMENT(ANY)) type 
    X253 Persistent XML values of XML(CONTENT(UNTYPED)) type 
    X254 Persistent XML values of XML(CONTENT(ANY)) type 
    X255 Persistent XML values of XML(SEQUENCE) type 
    X256 Persistent XML values of XML(DOCUMENT(XMLSCHEMA)) type 
    X257 Persistent XML values of XML(CONTENT(XMLSCHEMA)) type 
    X260 XML type: ELEMENT clause 
    X261 XML type: NAMESPACE without ELEMENT clause 
    X263 XML type: NO NAMESPACE with ELEMENT clause 
    X264 XML type: schema location 
    X271 XMLValidate: data-driven case 
    X272 XMLValidate: ACCORDING TO clause 
    X273 XMLValidate: ELEMENT clause 
    X274 XMLValidate: schema location 
    X281 XMLValidate with DOCUMENT option 
    X282 XMLValidate with CONTENT option 
    X283 XMLValidate with SEQUENCE option 
    X284 XMLValidate: NAMESPACE without ELEMENT clause 
    X286 XMLValidate: NO NAMESPACE with ELEMENT clause 
    X300 XMLTableXPath 1.0 only
    X305 XMLTable: initializing an XQuery variable 

    -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/upgrading.html postgresql-10-10.19/doc/src/sgml/html/upgrading.html --- postgresql-10-10.17/doc/src/sgml/html/upgrading.html 2021-05-10 20:58:10.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/upgrading.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -18.6. Upgrading a PostgreSQL Cluster

    18.6. Upgrading a PostgreSQL Cluster

    This section discusses how to upgrade your database data from one +18.6. Upgrading a PostgreSQL Cluster

    18.6. Upgrading a PostgreSQL Cluster

    This section discusses how to upgrade your database data from one PostgreSQL release to a newer one.

    Current PostgreSQL version numbers consist of a major and a minor version number. For example, in the version number 10.1, @@ -77,7 +77,7 @@

    To make the backup, you can use the pg_dumpall command from the version you are currently running; see Section 25.1.2 for more details. For best results, however, try to use the pg_dumpall - command from PostgreSQL 10.17, + command from PostgreSQL 10.19, since this version contains bug fixes and improvements over older versions. While this advice might seem idiosyncratic since you haven't installed the new version yet, it is advisable to follow @@ -140,4 +140,4 @@ switch masters and make the standby the master and shut down the older database instance. Such a switch-over results in only several seconds of downtime for an upgrade. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/user-manag.html postgresql-10-10.19/doc/src/sgml/html/user-manag.html --- postgresql-10-10.17/doc/src/sgml/html/user-manag.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/user-manag.html 2021-11-08 22:24:53.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 21. Database Roles

    Chapter 21. Database Roles

    PostgreSQL manages database access permissions +Chapter 21. Database Roles

    Chapter 21. Database Roles

    PostgreSQL manages database access permissions using the concept of roles. A role can be thought of as either a database user, or a group of database users, depending on how the role is set up. Roles can own database objects (for example, tables @@ -14,4 +14,4 @@

    This chapter describes how to create and manage roles. More information about the effects of role privileges on various database objects can be found in Section 5.6. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/using-explain.html postgresql-10-10.19/doc/src/sgml/html/using-explain.html --- postgresql-10-10.17/doc/src/sgml/html/using-explain.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/using-explain.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,5 +1,5 @@ -14.1. Using EXPLAIN

    14.1. Using EXPLAIN

    PostgreSQL devises a query +14.1. Using EXPLAIN

    14.1. Using EXPLAIN

    PostgreSQL devises a query plan for each query it receives. Choosing the right plan to match the query structure and the properties of the data is absolutely critical for good performance, so the system includes @@ -654,4 +654,4 @@ of rows that are actually in the inner relation.

    BitmapAnd and BitmapOr nodes always report their actual row counts as zero, due to implementation limitations. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/uuid-ossp.html postgresql-10-10.19/doc/src/sgml/html/uuid-ossp.html --- postgresql-10-10.17/doc/src/sgml/html/uuid-ossp.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/uuid-ossp.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.45. uuid-ossp

    F.45. uuid-ossp

    The uuid-ossp module provides functions to generate universally +F.45. uuid-ossp

    F.45. uuid-ossp

    The uuid-ossp module provides functions to generate universally unique identifiers (UUIDs) using one of several standard algorithms. There are also functions to produce certain special UUID constants.

    F.45.1. uuid-ossp Functions

    Table F.33 shows the functions available to @@ -77,4 +77,4 @@ consider using the gen_random_uuid() function from the pgcrypto module instead.

    F.45.3. Author

    Peter Eisentraut -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/vacuumlo.html postgresql-10-10.19/doc/src/sgml/html/vacuumlo.html --- postgresql-10-10.17/doc/src/sgml/html/vacuumlo.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/vacuumlo.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -vacuumlo

    vacuumlo

    vacuumlo — remove orphaned large objects from a PostgreSQL database

    Synopsis

    vacuumlo [option...] dbname...

    Description

    vacuumlo is a simple utility program that will remove any +vacuumlo

    vacuumlo

    vacuumlo — remove orphaned large objects from a PostgreSQL database

    Synopsis

    vacuumlo [option...] dbname...

    Description

    vacuumlo is a simple utility program that will remove any orphaned large objects from a PostgreSQL database. An orphaned large object (LO) is considered to be any LO whose OID does not appear in any oid or @@ -47,4 +47,4 @@ domains over them are not considered.) The remaining entries in the temporary table identify orphaned LOs. These are removed.

    Author

    Peter Mount -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-available-extensions.html postgresql-10-10.19/doc/src/sgml/html/view-pg-available-extensions.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-available-extensions.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-available-extensions.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.65. pg_available_extensions

    51.65. pg_available_extensions

    The pg_available_extensions view lists the +51.65. pg_available_extensions

    51.65. pg_available_extensions

    The pg_available_extensions view lists the extensions that are available for installation. See also the pg_extension @@ -7,4 +7,4 @@

    Table 51.66. pg_available_extensions Columns

    NameTypeDescription
    namenameExtension name
    default_versiontextName of default version, or NULL if none is specified
    installed_versiontextCurrently installed version of the extension, or NULL if not installed
    commenttextComment string from the extension's control file

    The pg_available_extensions view is read only. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-available-extension-versions.html postgresql-10-10.19/doc/src/sgml/html/view-pg-available-extension-versions.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-available-extension-versions.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-available-extension-versions.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.66. pg_available_extension_versions

    51.66. pg_available_extension_versions

    The pg_available_extension_versions view lists the +51.66. pg_available_extension_versions

    51.66. pg_available_extension_versions

    The pg_available_extension_versions view lists the specific extension versions that are available for installation. See also the pg_extension catalog, which shows the extensions currently installed. @@ -8,4 +8,4 @@ or NULL if partially or fully relocatable

    requiresname[]Names of prerequisite extensions, or NULL if none
    commenttextComment string from the extension's control file

    The pg_available_extension_versions view is read only. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-config.html postgresql-10-10.19/doc/src/sgml/html/view-pg-config.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-config.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-config.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.67. pg_config

    51.67. pg_config

    The view pg_config describes the +51.67. pg_config

    51.67. pg_config

    The view pg_config describes the compile-time configuration parameters of the currently installed version of PostgreSQL. It is intended, for example, to be used by software packages that want to interface to @@ -9,4 +9,4 @@ application.

    By default, the pg_config view can be read only by superusers. -

    Table 51.68. pg_config Columns

    NameTypeDescription
    nametextThe parameter name
    settingtextThe parameter value

    \ No newline at end of file +

    Table 51.68. pg_config Columns

    NameTypeDescription
    nametextThe parameter name
    settingtextThe parameter value

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-cursors.html postgresql-10-10.19/doc/src/sgml/html/view-pg-cursors.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-cursors.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-cursors.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.68. pg_cursors

    51.68. pg_cursors

    The pg_cursors view lists the cursors that +51.68. pg_cursors

    51.68. pg_cursors

    The pg_cursors view lists the cursors that are currently available. Cursors can be defined in several ways:

    • via the DECLARE statement in SQL @@ -31,4 +31,4 @@ allows rows to be retrieved in a nonsequential manner); false otherwise

    creation_timetimestamptzThe time at which the cursor was declared

    The pg_cursors view is read only. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-file-settings.html postgresql-10-10.19/doc/src/sgml/html/view-pg-file-settings.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-file-settings.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-file-settings.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.69. pg_file_settings

    51.69. pg_file_settings

    The view pg_file_settings provides a summary of +51.69. pg_file_settings

    51.69. pg_file_settings

    The view pg_file_settings provides a summary of the contents of the server's configuration file(s). A row appears in this view for each name = value entry appearing in the files, with annotations indicating whether the value could be applied @@ -30,4 +30,4 @@ the error field.

    See Section 19.1 for more information about the various ways to change run-time parameters. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-group.html postgresql-10-10.19/doc/src/sgml/html/view-pg-group.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-group.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-group.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,8 +1,8 @@ -51.70. pg_group

    51.70. pg_group

    The view pg_group exists for backwards +51.70. pg_group

    51.70. pg_group

    The view pg_group exists for backwards compatibility: it emulates a catalog that existed in PostgreSQL before version 8.1. It shows the names and members of all roles that are marked as not rolcanlogin, which is an approximation to the set of roles that are being used as groups. -

    Table 51.71. pg_group Columns

    NameTypeReferencesDescription
    gronamenamepg_authid.rolnameName of the group
    grosysidoidpg_authid.oidID of this group
    grolistoid[]pg_authid.oidAn array containing the IDs of the roles in this group

    \ No newline at end of file +

    Table 51.71. pg_group Columns

    NameTypeReferencesDescription
    gronamenamepg_authid.rolnameName of the group
    grosysidoidpg_authid.oidID of this group
    grolistoid[]pg_authid.oidAn array containing the IDs of the roles in this group

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-hba-file-rules.html postgresql-10-10.19/doc/src/sgml/html/view-pg-hba-file-rules.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-hba-file-rules.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-hba-file-rules.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.71. pg_hba_file_rules

    51.71. pg_hba_file_rules

    The view pg_hba_file_rules provides a summary of +51.71. pg_hba_file_rules

    51.71. pg_hba_file_rules

    The view pg_hba_file_rules provides a summary of the contents of the client authentication configuration file, pg_hba.conf. A row appears in this view for each non-empty, non-comment line in the file, with annotations indicating @@ -20,4 +20,4 @@ the line_number and error fields.

    See Chapter 20 for more information about client authentication configuration. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-indexes.html postgresql-10-10.19/doc/src/sgml/html/view-pg-indexes.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-indexes.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-indexes.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.72. pg_indexes

    51.72. pg_indexes

    The view pg_indexes provides access to +51.72. pg_indexes

    51.72. pg_indexes

    The view pg_indexes provides access to useful information about each index in the database.

    Table 51.73. pg_indexes Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing table and index
    tablenamenamepg_class.relnameName of table the index is for
    indexnamenamepg_class.relnameName of index
    tablespacenamepg_tablespace.spcnameName of tablespace containing index (null if default for database)
    indexdeftext Index definition (a reconstructed CREATE INDEX - command)

    \ No newline at end of file + command)

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-locks.html postgresql-10-10.19/doc/src/sgml/html/view-pg-locks.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-locks.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-locks.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.73. pg_locks

    51.73. pg_locks

    The view pg_locks provides access to +51.73. pg_locks

    51.73. pg_locks

    The view pg_locks provides access to information about the locks held by active processes within the database server. See Chapter 13 for more discussion of locking. @@ -151,4 +151,4 @@ The locks are held only for the minimum amount of time necessary to obtain data from the lock managers, but this does not completely eliminate the possibility of a performance impact. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-matviews.html postgresql-10-10.19/doc/src/sgml/html/view-pg-matviews.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-matviews.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-matviews.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,4 +1,4 @@ -51.74. pg_matviews

    51.74. pg_matviews

    The view pg_matviews provides access to +51.74. pg_matviews

    51.74. pg_matviews

    The view pg_matviews provides access to useful information about each materialized view in the database. -

    Table 51.75. pg_matviews Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing materialized view
    matviewnamenamepg_class.relnameName of materialized view
    matviewownernamepg_authid.rolnameName of materialized view's owner
    tablespacenamepg_tablespace.spcnameName of tablespace containing materialized view (null if default for database)
    hasindexesboolean True if materialized view has (or recently had) any indexes
    ispopulatedboolean True if materialized view is currently populated
    definitiontext Materialized view definition (a reconstructed SELECT query)

    \ No newline at end of file +

    Table 51.75. pg_matviews Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing materialized view
    matviewnamenamepg_class.relnameName of materialized view
    matviewownernamepg_authid.rolnameName of materialized view's owner
    tablespacenamepg_tablespace.spcnameName of tablespace containing materialized view (null if default for database)
    hasindexesboolean True if materialized view has (or recently had) any indexes
    ispopulatedboolean True if materialized view is currently populated
    definitiontext Materialized view definition (a reconstructed SELECT query)

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-policies.html postgresql-10-10.19/doc/src/sgml/html/view-pg-policies.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-policies.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-policies.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,6 +1,6 @@ -51.75. pg_policies

    51.75. pg_policies

    The view pg_policies provides access to +51.75. pg_policies

    51.75. pg_policies

    The view pg_policies provides access to useful information about each row-level security policy in the database.

    Table 51.76. pg_policies Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing table policy is on
    tablenamenamepg_class.relnameName of table policy is on
    policynamenamepg_policy.polnameName of policy
    polpermissivetext Is the policy permissive or restrictive?
    rolesname[] The roles to which this policy applies
    cmdtext The command type to which the policy is applied
    qualtext The expression added to the security barrier qualifications for queries that this policy applies to
    with_checktext The expression added to the WITH CHECK qualifications for - queries that attempt to add rows to this table

    \ No newline at end of file + queries that attempt to add rows to this table

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-prepared-statements.html postgresql-10-10.19/doc/src/sgml/html/view-pg-prepared-statements.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-prepared-statements.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-prepared-statements.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.76. pg_prepared_statements

    51.76. pg_prepared_statements

    The pg_prepared_statements view displays +51.76. pg_prepared_statements

    51.76. pg_prepared_statements

    The pg_prepared_statements view displays all the prepared statements that are available in the current session. See PREPARE for more information about prepared statements. @@ -24,4 +24,4 @@ false if the statement was prepared via the frontend/backend protocol


    The pg_prepared_statements view is read only. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-prepared-xacts.html postgresql-10-10.19/doc/src/sgml/html/view-pg-prepared-xacts.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-prepared-xacts.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-prepared-xacts.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.77. pg_prepared_xacts

    51.77. pg_prepared_xacts

    The view pg_prepared_xacts displays +51.77. pg_prepared_xacts

    51.77. pg_prepared_xacts

    The view pg_prepared_xacts displays information about transactions that are currently prepared for two-phase commit (see PREPARE TRANSACTION for details).

    pg_prepared_xacts contains one row per prepared @@ -17,4 +17,4 @@ normal operations longer than necessary. Nonetheless there could be some impact on database performance if this view is frequently accessed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-publication-tables.html postgresql-10-10.19/doc/src/sgml/html/view-pg-publication-tables.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-publication-tables.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-publication-tables.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,8 +1,8 @@ -51.78. pg_publication_tables

    51.78. pg_publication_tables

    The view pg_publication_tables provides +51.78. pg_publication_tables

    51.78. pg_publication_tables

    The view pg_publication_tables provides information about the mapping between publications and the tables they contain. Unlike the underlying catalog pg_publication_rel, this view expands publications defined as FOR ALL TABLES, so for such publications there will be a row for each eligible table. -

    Table 51.79. pg_publication_tables Columns

    NameTypeReferencesDescription
    pubnamenamepg_publication.pubnameName of publication
    schemanamenamepg_namespace.nspnameName of schema containing table
    tablenamenamepg_class.relnameName of table

    \ No newline at end of file +

    Table 51.79. pg_publication_tables Columns

    NameTypeReferencesDescription
    pubnamenamepg_publication.pubnameName of publication
    schemanamenamepg_namespace.nspnameName of schema containing table
    tablenamenamepg_class.relnameName of table

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-replication-origin-status.html postgresql-10-10.19/doc/src/sgml/html/view-pg-replication-origin-status.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-replication-origin-status.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-replication-origin-status.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,9 +1,9 @@ -51.79. pg_replication_origin_status

    51.79. pg_replication_origin_status

    The pg_replication_origin_status view +51.79. pg_replication_origin_status

    51.79. pg_replication_origin_status

    The pg_replication_origin_status view contains information about how far replay for a certain origin has progressed. For more on replication origins see Chapter 49.

    Table 51.80. pg_replication_origin_status Columns

    NameTypeReferencesDescription
    local_idOidpg_replication_origin.roidentinternal node identifier
    external_idtextpg_replication_origin.ronameexternal node identifier
    remote_lsnpg_lsn The origin node's LSN up to which data has been replicated.
    local_lsnpg_lsn  This node's LSN at which remote_lsn has been replicated. Used to flush commit records before persisting data to disk when using asynchronous commits. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-replication-slots.html postgresql-10-10.19/doc/src/sgml/html/view-pg-replication-slots.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-replication-slots.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-replication-slots.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.80. pg_replication_slots

    51.80. pg_replication_slots

    The pg_replication_slots view provides a listing +51.80. pg_replication_slots

    51.80. pg_replication_slots

    The pg_replication_slots view provides a listing of all replication slots that currently exist on the database cluster, along with their current state.

    For more on replication slots, @@ -23,4 +23,4 @@ confirmed_flush_lsnpg_lsn The address (LSN) up to which the logical slot's consumer has confirmed receiving data. Data older than this is not available anymore. NULL for physical slots. -


    \ No newline at end of file +
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-roles.html postgresql-10-10.19/doc/src/sgml/html/view-pg-roles.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-roles.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-roles.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.81. pg_roles

    51.81. pg_roles

    The view pg_roles provides access to +51.81. pg_roles

    51.81. pg_roles

    The view pg_roles provides access to information about database roles. This is simply a publicly readable view of pg_authid @@ -16,4 +16,4 @@ rolpasswordtext Not the password (always reads as ********)rolvaliduntiltimestamptz Password expiry time (only used for password authentication); null if no expirationrolbypassrlsbool  Role bypasses every row level security policy, see Section 5.7 for more information. - rolconfigtext[] Role-specific defaults for run-time configuration variablesoidoidpg_authid.oidID of role


    \ No newline at end of file + rolconfigtext[] Role-specific defaults for run-time configuration variablesoidoidpg_authid.oidID of role
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-rules.html postgresql-10-10.19/doc/src/sgml/html/view-pg-rules.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-rules.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-rules.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,7 +1,7 @@ -51.82. pg_rules

    51.82. pg_rules

    The view pg_rules provides access to +51.82. pg_rules

    51.82. pg_rules

    The view pg_rules provides access to useful information about query rewrite rules.

    Table 51.83. pg_rules Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing table
    tablenamenamepg_class.relnameName of table the rule is for
    rulenamenamepg_rewrite.rulenameName of rule
    definitiontext Rule definition (a reconstructed creation command)

    The pg_rules view excludes the ON SELECT rules of views and materialized views; those can be seen in pg_views and pg_matviews. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-seclabels.html postgresql-10-10.19/doc/src/sgml/html/view-pg-seclabels.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-seclabels.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-seclabels.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.83. pg_seclabels

    51.83. pg_seclabels

    The view pg_seclabels provides information about +51.83. pg_seclabels

    51.83. pg_seclabels

    The view pg_seclabels provides information about security labels. It as an easier-to-query version of the pg_seclabel catalog.

    Table 51.84. pg_seclabels Columns

    NameTypeReferencesDescription
    objoidoidany OID columnThe OID of the object this security label pertains to
    classoidoidpg_class.oidThe OID of the system catalog this object appears in
    objsubidint4  For a security label on a table column, this is the column number (the @@ -10,4 +10,4 @@
    objnamespaceoidpg_namespace.oid The OID of the namespace for this object, if applicable; otherwise NULL.
    objnametext  The name of the object to which this label applies, as text. -
    providertextpg_seclabel.providerThe label provider associated with this label.
    labeltextpg_seclabel.labelThe security label applied to this object.

    \ No newline at end of file + providertextpg_seclabel.providerThe label provider associated with this label.labeltextpg_seclabel.labelThe security label applied to this object.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-sequences.html postgresql-10-10.19/doc/src/sgml/html/view-pg-sequences.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-sequences.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-sequences.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,9 +1,9 @@ -51.84. pg_sequences

    51.84. pg_sequences

    The view pg_sequences provides access to +51.84. pg_sequences

    51.84. pg_sequences

    The view pg_sequences provides access to useful information about each sequence in the database.

    Table 51.85. pg_sequences Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing sequence
    sequencenamenamepg_class.relnameName of sequence
    sequenceownernamepg_authid.rolnameName of sequence's owner
    data_typeregtypepg_type.oidData type of the sequence
    start_valuebigint Start value of the sequence
    min_valuebigint Minimum value of the sequence
    max_valuebigint Maximum value of the sequence
    increment_bybigint Increment value of the sequence
    cycleboolean Whether the sequence cycles
    cache_sizebigint Cache size of the sequence
    last_valuebigint The last sequence value written to disk. If caching is used, this value can be greater than the last value handed out from the sequence. Null if the sequence has not been read from yet. Also, if the current user does not have USAGE or SELECT privilege on the sequence, the value is - null.

    \ No newline at end of file + null.

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-settings.html postgresql-10-10.19/doc/src/sgml/html/view-pg-settings.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-settings.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-settings.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.85. pg_settings

    51.85. pg_settings

    The view pg_settings provides access to +51.85. pg_settings

    51.85. pg_settings

    The view pg_settings provides access to run-time parameters of the server. It is essentially an alternative interface to the SHOW and SET commands. @@ -86,4 +86,4 @@ transaction is committed, the effects will persist until the end of the session, unless overridden by another UPDATE or SET. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-shadow.html postgresql-10-10.19/doc/src/sgml/html/view-pg-shadow.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-shadow.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-shadow.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.86. pg_shadow

    51.86. pg_shadow

    The view pg_shadow exists for backwards +51.86. pg_shadow

    51.86. pg_shadow

    The view pg_shadow exists for backwards compatibility: it emulates a catalog that existed in PostgreSQL before version 8.1. It shows properties of all roles that are marked as @@ -16,4 +16,4 @@ Section 5.7 for more information. passwdtext Password (possibly encrypted); null if none. See pg_authid - for details of how encrypted passwords are stored.valuntilabstime Password expiry time (only used for password authentication)useconfigtext[] Session defaults for run-time configuration variables


    \ No newline at end of file + for details of how encrypted passwords are stored.valuntilabstime Password expiry time (only used for password authentication)useconfigtext[] Session defaults for run-time configuration variables
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-stats.html postgresql-10-10.19/doc/src/sgml/html/view-pg-stats.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-stats.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-stats.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.87. pg_stats

    51.87. pg_stats

    The view pg_stats provides access to +51.87. pg_stats

    51.87. pg_stats

    The view pg_stats provides access to the information stored in the pg_statistic catalog. This view allows access only to rows of pg_statistic that correspond to tables the @@ -51,4 +51,4 @@ column-by-column basis using the ALTER TABLE SET STATISTICS command, or globally by setting the default_statistics_target run-time parameter. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-tables.html postgresql-10-10.19/doc/src/sgml/html/view-pg-tables.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-tables.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-tables.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,4 +1,4 @@ -51.88. pg_tables

    51.88. pg_tables

    The view pg_tables provides access to +51.88. pg_tables

    51.88. pg_tables

    The view pg_tables provides access to useful information about each table in the database. -

    Table 51.89. pg_tables Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing table
    tablenamenamepg_class.relnameName of table
    tableownernamepg_authid.rolnameName of table's owner
    tablespacenamepg_tablespace.spcnameName of tablespace containing table (null if default for database)
    hasindexesbooleanpg_class.relhasindexTrue if table has (or recently had) any indexes
    hasrulesbooleanpg_class.relhasrulesTrue if table has (or once had) rules
    hastriggersbooleanpg_class.relhastriggersTrue if table has (or once had) triggers
    rowsecuritybooleanpg_class.relrowsecurityTrue if row security is enabled on the table

    \ No newline at end of file +

    Table 51.89. pg_tables Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing table
    tablenamenamepg_class.relnameName of table
    tableownernamepg_authid.rolnameName of table's owner
    tablespacenamepg_tablespace.spcnameName of tablespace containing table (null if default for database)
    hasindexesbooleanpg_class.relhasindexTrue if table has (or recently had) any indexes
    hasrulesbooleanpg_class.relhasrulesTrue if table has (or once had) rules
    hastriggersbooleanpg_class.relhastriggersTrue if table has (or once had) triggers
    rowsecuritybooleanpg_class.relrowsecurityTrue if row security is enabled on the table

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-timezone-abbrevs.html postgresql-10-10.19/doc/src/sgml/html/view-pg-timezone-abbrevs.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-timezone-abbrevs.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-timezone-abbrevs.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.89. pg_timezone_abbrevs

    51.89. pg_timezone_abbrevs

    The view pg_timezone_abbrevs provides a list +51.89. pg_timezone_abbrevs

    51.89. pg_timezone_abbrevs

    The view pg_timezone_abbrevs provides a list of time zone abbreviations that are currently recognized by the datetime input routines. The contents of this view change when the timezone_abbreviations run-time parameter is modified. @@ -7,4 +7,4 @@ there are some that have historically varied in value (see Section B.4 for more information). In such cases this view presents their current meaning. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-timezone-names.html postgresql-10-10.19/doc/src/sgml/html/view-pg-timezone-names.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-timezone-names.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-timezone-names.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.90. pg_timezone_names

    51.90. pg_timezone_names

    The view pg_timezone_names provides a list +51.90. pg_timezone_names

    51.90. pg_timezone_names

    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. (Technically, @@ -9,4 +9,4 @@ date rules. Therefore, the associated information changes across local DST boundaries. The displayed information is computed based on the current value of CURRENT_TIMESTAMP. -

    Table 51.91. pg_timezone_names Columns

    NameTypeDescription
    nametextTime zone name
    abbrevtextTime zone abbreviation
    utc_offsetintervalOffset from UTC (positive means east of Greenwich)
    is_dstbooleanTrue if currently observing daylight savings

    \ No newline at end of file +

    Table 51.91. pg_timezone_names Columns

    NameTypeDescription
    nametextTime zone name
    abbrevtextTime zone abbreviation
    utc_offsetintervalOffset from UTC (positive means east of Greenwich)
    is_dstbooleanTrue if currently observing daylight savings

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-user.html postgresql-10-10.19/doc/src/sgml/html/view-pg-user.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-user.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-user.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.91. pg_user

    51.91. pg_user

    The view pg_user provides access to +51.91. pg_user

    51.91. pg_user

    The view pg_user provides access to information about database users. This is simply a publicly readable view of pg_shadow @@ -8,4 +8,4 @@ out of backup mode. usebypassrlsbool User bypasses every row level security policy, see Section 5.7 for more information. - passwdtextNot the password (always reads as ********)valuntilabstimePassword expiry time (only used for password authentication)useconfigtext[]Session defaults for run-time configuration variables


    \ No newline at end of file + passwdtextNot the password (always reads as ********)valuntilabstimePassword expiry time (only used for password authentication)useconfigtext[]Session defaults for run-time configuration variables
    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-user-mappings.html postgresql-10-10.19/doc/src/sgml/html/view-pg-user-mappings.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-user-mappings.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-user-mappings.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,5 +1,5 @@ -51.92. pg_user_mappings

    51.92. pg_user_mappings

    The view pg_user_mappings provides access +51.92. pg_user_mappings

    51.92. pg_user_mappings

    The view pg_user_mappings provides access to information about user mappings. This is essentially a publicly readable view of pg_user_mapping @@ -16,4 +16,4 @@

  • current user is the server owner and mapping is for PUBLIC

  • current user is a superuser

  • -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/view-pg-views.html postgresql-10-10.19/doc/src/sgml/html/view-pg-views.html --- postgresql-10-10.17/doc/src/sgml/html/view-pg-views.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/view-pg-views.html 2021-11-08 22:25:07.000000000 +0000 @@ -1,4 +1,4 @@ -51.93. pg_views

    51.93. pg_views

    The view pg_views provides access to +51.93. pg_views

    51.93. pg_views

    The view pg_views provides access to useful information about each view in the database. -

    Table 51.94. pg_views Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing view
    viewnamenamepg_class.relnameName of view
    viewownernamepg_authid.rolnameName of view's owner
    definitiontext View definition (a reconstructed SELECT query)

    \ No newline at end of file +

    Table 51.94. pg_views Columns

    NameTypeReferencesDescription
    schemanamenamepg_namespace.nspnameName of schema containing view
    viewnamenamepg_class.relnameName of view
    viewownernamepg_authid.rolnameName of view's owner
    definitiontext View definition (a reconstructed SELECT query)

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/views-overview.html postgresql-10-10.19/doc/src/sgml/html/views-overview.html --- postgresql-10-10.17/doc/src/sgml/html/views-overview.html 2021-05-10 20:58:24.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/views-overview.html 2021-11-08 22:25:06.000000000 +0000 @@ -1,5 +1,5 @@ -51.64. System Views

    51.64. System Views

    In addition to the system catalogs, PostgreSQL +51.64. System Views

    51.64. System Views

    In addition to the system catalogs, PostgreSQL provides a number of built-in views. Some system views provide convenient access to some commonly used queries on the system catalogs. Other views provide access to internal server state. @@ -14,4 +14,4 @@ There are some additional views that provide access to the results of the statistics collector; they are described in Table 28.2.

    Except where noted, all the views described here are read-only. -

    Table 51.65. System Views

    View NamePurpose
    pg_available_extensionsavailable extensions
    pg_available_extension_versionsavailable versions of extensions
    pg_configcompile-time configuration parameters
    pg_cursorsopen cursors
    pg_file_settingssummary of configuration file contents
    pg_groupgroups of database users
    pg_hba_file_rulessummary of client authentication configuration file contents
    pg_indexesindexes
    pg_lockslocks currently held or awaited
    pg_matviewsmaterialized views
    pg_policiespolicies
    pg_prepared_statementsprepared statements
    pg_prepared_xactsprepared transactions
    pg_publication_tablespublications and their associated tables
    pg_replication_origin_statusinformation about replication origins, including replication progress
    pg_replication_slotsreplication slot information
    pg_rolesdatabase roles
    pg_rulesrules
    pg_seclabelssecurity labels
    pg_sequencessequences
    pg_settingsparameter settings
    pg_shadowdatabase users
    pg_statsplanner statistics
    pg_tablestables
    pg_timezone_abbrevstime zone abbreviations
    pg_timezone_namestime zone names
    pg_userdatabase users
    pg_user_mappingsuser mappings
    pg_viewsviews

    \ No newline at end of file +

    Table 51.65. System Views

    View NamePurpose
    pg_available_extensionsavailable extensions
    pg_available_extension_versionsavailable versions of extensions
    pg_configcompile-time configuration parameters
    pg_cursorsopen cursors
    pg_file_settingssummary of configuration file contents
    pg_groupgroups of database users
    pg_hba_file_rulessummary of client authentication configuration file contents
    pg_indexesindexes
    pg_lockslocks currently held or awaited
    pg_matviewsmaterialized views
    pg_policiespolicies
    pg_prepared_statementsprepared statements
    pg_prepared_xactsprepared transactions
    pg_publication_tablespublications and their associated tables
    pg_replication_origin_statusinformation about replication origins, including replication progress
    pg_replication_slotsreplication slot information
    pg_rolesdatabase roles
    pg_rulesrules
    pg_seclabelssecurity labels
    pg_sequencessequences
    pg_settingsparameter settings
    pg_shadowdatabase users
    pg_statsplanner statistics
    pg_tablestables
    pg_timezone_abbrevstime zone abbreviations
    pg_timezone_namestime zone names
    pg_userdatabase users
    pg_user_mappingsuser mappings
    pg_viewsviews

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/wal-async-commit.html postgresql-10-10.19/doc/src/sgml/html/wal-async-commit.html --- postgresql-10-10.17/doc/src/sgml/html/wal-async-commit.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/wal-async-commit.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -30.3. Asynchronous Commit

    30.3. Asynchronous Commit

    Asynchronous commit is an option that allows transactions +30.3. Asynchronous Commit

    30.3. Asynchronous Commit

    Asynchronous commit is an option that allows transactions to complete more quickly, at the cost that the most recent transactions may be lost if the database should crash. In many applications this is an acceptable trade-off. @@ -86,4 +86,4 @@ setting can be thought of as a way of increasing the time window in which transactions can join a group about to participate in a single flush, to amortize the cost of the flush among multiple transactions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/wal-configuration.html postgresql-10-10.19/doc/src/sgml/html/wal-configuration.html --- postgresql-10-10.17/doc/src/sgml/html/wal-configuration.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/wal-configuration.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -30.4. WAL Configuration

    30.4. WAL Configuration

    There are several WAL-related configuration parameters that +30.4. WAL Configuration

    30.4. WAL Configuration

    There are several WAL-related configuration parameters that affect database performance. This section explains their use. Consult Chapter 19 for general information about setting server configuration parameters. @@ -229,4 +229,4 @@ XLogInsertRecord and XLogFlush WAL call being logged to the server log. This option might be replaced by a more general mechanism in the future. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/wal.html postgresql-10-10.19/doc/src/sgml/html/wal.html --- postgresql-10-10.17/doc/src/sgml/html/wal.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/wal.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,4 +1,4 @@ -Chapter 30. Reliability and the Write-Ahead Log

    Chapter 30. Reliability and the Write-Ahead Log

    This chapter explains how the Write-Ahead Log is used to obtain +Chapter 30. Reliability and the Write-Ahead Log

    Chapter 30. Reliability and the Write-Ahead Log

    This chapter explains how the Write-Ahead Log is used to obtain efficient, reliable operation. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/wal-internals.html postgresql-10-10.19/doc/src/sgml/html/wal-internals.html --- postgresql-10-10.17/doc/src/sgml/html/wal-internals.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/wal-internals.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -30.5. WAL Internals

    30.5. WAL Internals

    WAL is automatically enabled; no action is +30.5. WAL Internals

    30.5. WAL Internals

    WAL is automatically enabled; no action is required from the administrator except ensuring that the disk-space requirements for the WAL logs are met, and that any necessary tuning is done (see Section 30.4). @@ -61,4 +61,4 @@ to read pg_control itself. So while it is theoretically a weak spot, pg_control does not seem to be a problem in practice. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/wal-intro.html postgresql-10-10.19/doc/src/sgml/html/wal-intro.html --- postgresql-10-10.17/doc/src/sgml/html/wal-intro.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/wal-intro.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -30.2. Write-Ahead Logging (WAL)

    30.2. Write-Ahead Logging (WAL)

    Write-Ahead Logging (WAL) +30.2. Write-Ahead Logging (WAL)

    30.2. Write-Ahead Logging (WAL)

    Write-Ahead Logging (WAL) is a standard method for ensuring data integrity. A detailed description can be found in most (if not all) books about transaction processing. Briefly, WAL's central @@ -41,4 +41,4 @@ of the database state — if it is made over some period of time, then replaying the WAL log for that period will fix any internal inconsistencies. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/wal-reliability.html postgresql-10-10.19/doc/src/sgml/html/wal-reliability.html --- postgresql-10-10.17/doc/src/sgml/html/wal-reliability.html 2021-05-10 20:58:12.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/wal-reliability.html 2021-11-08 22:24:55.000000000 +0000 @@ -1,5 +1,5 @@ -30.1. Reliability

    30.1. Reliability

    Reliability is an important property of any serious database +30.1. Reliability

    30.1. Reliability

    Reliability is an important property of any serious database system, and PostgreSQL does everything possible to guarantee reliable operation. One aspect of reliable operation is that all data recorded by a committed transaction should be stored @@ -138,4 +138,4 @@

    PostgreSQL does not protect against correctable memory errors and it is assumed you will operate using RAM that uses industry standard Error Correcting Codes (ECC) or better protection. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/warm-standby-failover.html postgresql-10-10.19/doc/src/sgml/html/warm-standby-failover.html --- postgresql-10-10.17/doc/src/sgml/html/warm-standby-failover.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/warm-standby-failover.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -26.3. Failover

    26.3. Failover

    If the primary server fails then the standby server should begin +26.3. Failover

    26.3. Failover

    If the primary server fails then the standby server should begin failover procedures.

    If the standby server fails then no failover need take place. If the standby server can be restarted, even some time later, then the recovery @@ -52,4 +52,4 @@ not required. If you're setting up the reporting servers that are only used to offload read-only queries from the primary, not for high availability purposes, you don't need to promote it. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/warm-standby.html postgresql-10-10.19/doc/src/sgml/html/warm-standby.html --- postgresql-10-10.17/doc/src/sgml/html/warm-standby.html 2021-05-10 20:58:11.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/warm-standby.html 2021-11-08 22:24:54.000000000 +0000 @@ -1,5 +1,5 @@ -26.2. Log-Shipping Standby Servers

    26.2. Log-Shipping Standby Servers

    Continuous archiving can be used to create a high +26.2. Log-Shipping Standby Servers

    26.2. Log-Shipping Standby Servers

    Continuous archiving can be used to create a high availability (HA) cluster configuration with one or more standby servers ready to take over operations if the primary server fails. This capability is widely referred to as @@ -549,4 +549,4 @@ are found in the archive, but not if streaming replication is enabled. When a server is not in recovery mode, there is no difference between on and always modes. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/when-can-parallel-query-be-used.html postgresql-10-10.19/doc/src/sgml/html/when-can-parallel-query-be-used.html --- postgresql-10-10.17/doc/src/sgml/html/when-can-parallel-query-be-used.html 2021-05-10 20:58:09.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/when-can-parallel-query-be-used.html 2021-11-08 22:24:52.000000000 +0000 @@ -1,10 +1,10 @@ -15.2. When Can Parallel Query Be Used?

    15.2. When Can Parallel Query Be Used?

    There are several settings which can cause the query planner not to +15.2. When Can Parallel Query Be Used?

    15.2. When Can Parallel Query Be Used?

    There are several settings that can cause the query planner not to generate a parallel query plan under any circumstances. In order for any parallel query plans whatsoever to be generated, the following settings must be configured as indicated.

    • max_parallel_workers_per_gather must be set to a - value which is greater than zero. This is a special case of the more + value that is greater than zero. This is a special case of the more general principle that no more workers should be used than the number configured via max_parallel_workers_per_gather.

    • dynamic_shared_memory_type must be set to a @@ -19,7 +19,7 @@

      • The query writes any data or locks any database rows. If a query contains a data-modifying operation either at the top level or within a CTE, no parallel plans for that query will be generated. This is a - limitation of the current implementation which could be lifted in a + limitation of the current implementation that could be lifted in a future release.

      • The query might be suspended during execution. In any situation in which the system thinks that partial or incremental execution might @@ -74,4 +74,4 @@ generated when the transaction isolation level is serializable. However, it can happen if the transaction isolation level is changed to serializable after the plan is generated and before it is executed. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xaggr.html postgresql-10-10.19/doc/src/sgml/html/xaggr.html --- postgresql-10-10.17/doc/src/sgml/html/xaggr.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xaggr.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.10. User-defined Aggregates

    37.10. User-defined Aggregates

    Aggregate functions in PostgreSQL +37.10. User-defined Aggregates

    37.10. User-defined Aggregates

    Aggregate functions in PostgreSQL are defined in terms of state values and state transition functions. That is, an aggregate operates using a state value that is updated @@ -456,4 +456,4 @@ supposed to implement. Examples can be found in orderedsetaggs.c in the PostgreSQL source code. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xfunc-c.html postgresql-10-10.19/doc/src/sgml/html/xfunc-c.html --- postgresql-10-10.17/doc/src/sgml/html/xfunc-c.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xfunc-c.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.9. C-Language Functions

    37.9. C-Language Functions

    User-defined functions can be written in C (or a language that can +37.9. C-Language Functions

    37.9. C-Language Functions

    User-defined functions can be written in C (or a language that can be made compatible with C, such as C++). Such functions are compiled into dynamically loadable objects (also called shared libraries) and are loaded by the server on demand. The dynamic @@ -1216,4 +1216,4 @@

    In summary, it is best to place C++ code behind a wall of extern C functions that interface to the backend, and avoid exception, memory, and call stack leakage. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xfunc.html postgresql-10-10.19/doc/src/sgml/html/xfunc.html --- postgresql-10-10.17/doc/src/sgml/html/xfunc.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xfunc.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.3. User-defined Functions

    37.3. User-defined Functions

    PostgreSQL provides four kinds of +37.3. User-defined Functions

    37.3. User-defined Functions

    PostgreSQL provides four kinds of functions:

    • query language functions (functions written in @@ -30,4 +30,4 @@ funcs.c in the src/tutorial directory in the PostgreSQL source distribution. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xfunc-internal.html postgresql-10-10.19/doc/src/sgml/html/xfunc-internal.html --- postgresql-10-10.17/doc/src/sgml/html/xfunc-internal.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xfunc-internal.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.8. Internal Functions

    37.8. Internal Functions

    Internal functions are functions written in C that have been statically +37.8. Internal Functions

    37.8. Internal Functions

    Internal functions are functions written in C that have been statically linked into the PostgreSQL server. The body of the function definition specifies the C-language name of the function, which need not be the @@ -23,4 +23,4 @@

    Note

    Not all predefined functions are internal in the above sense. Some predefined functions are written in SQL. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xfunc-overload.html postgresql-10-10.19/doc/src/sgml/html/xfunc-overload.html --- postgresql-10-10.17/doc/src/sgml/html/xfunc-overload.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xfunc-overload.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.5. Function Overloading

    37.5. Function Overloading

    More than one function can be defined with the same SQL name, so long +37.5. Function Overloading

    37.5. Function Overloading

    More than one function can be defined with the same SQL name, so long as the arguments they take are different. In other words, function names can be overloaded. Whether or not you use it, this capability entails security precautions when calling @@ -55,4 +55,4 @@ AS 'filename', 'test_2arg' LANGUAGE C;

    The names of the C functions here reflect one of many possible conventions. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xfunc-pl.html postgresql-10-10.19/doc/src/sgml/html/xfunc-pl.html --- postgresql-10-10.17/doc/src/sgml/html/xfunc-pl.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xfunc-pl.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.7. Procedural Language Functions

    37.7. Procedural Language Functions

    PostgreSQL allows user-defined functions +37.7. Procedural Language Functions

    37.7. Procedural Language Functions

    PostgreSQL allows user-defined functions to be written in other languages besides SQL and C. These other languages are generically called procedural languages (PLs). @@ -8,4 +8,4 @@ by loadable modules. See Chapter 41 and following chapters for more information. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xfunc-sql.html postgresql-10-10.19/doc/src/sgml/html/xfunc-sql.html --- postgresql-10-10.17/doc/src/sgml/html/xfunc-sql.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xfunc-sql.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.4. Query Language (SQL) Functions

    37.4. Query Language (SQL) Functions

    SQL functions execute an arbitrary list of SQL statements, returning +37.4. Query Language (SQL) Functions

    37.4. Query Language (SQL) Functions

    SQL functions execute an arbitrary list of SQL statements, returning the result of the last query in the list. In the simple (non-set) case, the first row of the last query's result will be returned. @@ -842,4 +842,4 @@ but could be different for parameters of domain types).

    The behavior of collatable parameters can be thought of as a limited form of polymorphism, applicable only to textual data types. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xfunc-volatility.html postgresql-10-10.19/doc/src/sgml/html/xfunc-volatility.html --- postgresql-10-10.17/doc/src/sgml/html/xfunc-volatility.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xfunc-volatility.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.6. Function Volatility Categories

    37.6. Function Volatility Categories

    Every function has a volatility classification, with +37.6. Function Volatility Categories

    37.6. Function Volatility Categories

    Every function has a volatility classification, with the possibilities being VOLATILE, STABLE, or IMMUTABLE. VOLATILE is the default if the CREATE FUNCTION @@ -90,4 +90,4 @@ If you do that, you will find that the STABLE or IMMUTABLE function does not notice the database changes applied by the called function, since they are hidden from its snapshot.) -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xindex.html postgresql-10-10.19/doc/src/sgml/html/xindex.html --- postgresql-10-10.17/doc/src/sgml/html/xindex.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xindex.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.14. Interfacing Extensions To Indexes

    37.14. Interfacing Extensions To Indexes

    The procedures described thus far let you define new types, new +37.14. Interfacing Extensions To Indexes

    37.14. Interfacing Extensions To Indexes

    The procedures described thus far let you define new types, new functions, and new operators. However, we cannot yet define an index on a column of a new data type. To do this, we must define an operator class for the new data type. Later in this @@ -588,4 +588,4 @@ type of the stored summary values, and operator classes' support procedures are responsible for interpreting the summary values correctly. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xml2.html postgresql-10-10.19/doc/src/sgml/html/xml2.html --- postgresql-10-10.17/doc/src/sgml/html/xml2.html 2021-05-10 20:58:29.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xml2.html 2021-11-08 22:25:12.000000000 +0000 @@ -1,5 +1,5 @@ -F.46. xml2

    F.46. xml2

    The xml2 module provides XPath querying and +F.46. xml2

    F.46. xml2

    The xml2 module provides XPath querying and XSLT functionality.

    F.46.1. Deprecation Notice

    From PostgreSQL 8.3 on, there is XML-related functionality based on the SQL/XML standard in the core server. @@ -205,4 +205,4 @@

    F.46.5. Author

    John Gray

    Development of this module was sponsored by Torchbox Ltd. (www.torchbox.com). It has the same BSD license as PostgreSQL. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xml-limits-conformance.html postgresql-10-10.19/doc/src/sgml/html/xml-limits-conformance.html --- postgresql-10-10.17/doc/src/sgml/html/xml-limits-conformance.html 2021-05-10 20:58:27.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xml-limits-conformance.html 2021-11-08 22:25:10.000000000 +0000 @@ -1,5 +1,5 @@ -D.3. XML Limits and Conformance to SQL/XML

    D.3. XML Limits and Conformance to SQL/XML

    D.3.1. Queries are restricted to XPath 1.0
    D.3.2. Incidental limits of the implementation +D.3. XML Limits and Conformance to SQL/XML

    D.3. XML Limits and Conformance to SQL/XML

    Significant revisions to the XML-related specifications in ISO/IEC 9075-14 (SQL/XML) were introduced with SQL:2006. PostgreSQL's implementation of the XML data @@ -198,4 +198,4 @@ well-formed DOCUMENT is the only form of XML value that PostgreSQL can supply as an XPath context item. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xoper.html postgresql-10-10.19/doc/src/sgml/html/xoper.html --- postgresql-10-10.17/doc/src/sgml/html/xoper.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xoper.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.12. User-defined Operators

    37.12. User-defined Operators

    Every operator is syntactic sugar for a call to an +37.12. User-defined Operators

    37.12. User-defined Operators

    Every operator is syntactic sugar for a call to an underlying function that does the real work; so you must first create the underlying function before you can create the operator. However, an operator is not merely @@ -46,4 +46,4 @@ clause shown in the example is an optional hint to the query optimizer. Further details about commutator and other optimizer hints appear in the next section. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xoper-optimization.html postgresql-10-10.19/doc/src/sgml/html/xoper-optimization.html --- postgresql-10-10.17/doc/src/sgml/html/xoper-optimization.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xoper-optimization.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.13. Operator Optimization Information

    37.13. Operator Optimization Information

    A PostgreSQL operator definition can include +37.13. Operator Optimization Information

    37.13. Operator Optimization Information

    A PostgreSQL operator definition can include several optional clauses that tell the system useful things about how the operator behaves. These clauses should be provided whenever appropriate, because they can make for considerable speedups in execution @@ -11,7 +11,7 @@ they need to.

    Additional optimization clauses might be added in future versions of PostgreSQL. The ones described here are all - the ones that release 10.17 understands. + the ones that release 10.19 understands.

    37.13.1. COMMUTATOR

    The COMMUTATOR clause, if provided, names an operator that is the commutator of the operator being defined. We say that operator A is the commutator of operator B if (x A y) equals (y B x) for all possible input @@ -236,4 +236,4 @@

    Note

    The function underlying a merge-joinable operator must be marked immutable or stable. If it is volatile, the system will never attempt to use the operator for a merge join. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xplang.html postgresql-10-10.19/doc/src/sgml/html/xplang.html --- postgresql-10-10.17/doc/src/sgml/html/xplang.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xplang.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 41. Procedural Languages

    Chapter 41. Procedural Languages

    PostgreSQL allows user-defined functions +Chapter 41. Procedural Languages

    Chapter 41. Procedural Languages

    PostgreSQL allows user-defined functions to be written in other languages besides SQL and C. These other languages are generically called procedural languages (PLs). For a function @@ -24,4 +24,4 @@ has information about finding them. In addition other languages can be defined by users; the basics of developing a new procedural language are covered in Chapter 55. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xplang-install.html postgresql-10-10.19/doc/src/sgml/html/xplang-install.html --- postgresql-10-10.17/doc/src/sgml/html/xplang-install.html 2021-05-10 20:58:15.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xplang-install.html 2021-11-08 22:24:58.000000000 +0000 @@ -1,5 +1,5 @@ -41.1. Installing Procedural Languages

    41.1. Installing Procedural Languages

    A procedural language must be installed into each +41.1. Installing Procedural Languages

    41.1. Installing Procedural Languages

    A procedural language must be installed into each database where it is to be used. But procedural languages installed in the database template1 are automatically available in all subsequently created databases, since their entries in @@ -113,4 +113,4 @@ handlers are built and installed if Perl support is configured, and the PL/PythonU handler is installed if Python support is configured, but these languages are not installed by default. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/html/xtypes.html postgresql-10-10.19/doc/src/sgml/html/xtypes.html --- postgresql-10-10.17/doc/src/sgml/html/xtypes.html 2021-05-10 20:58:14.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/html/xtypes.html 2021-11-08 22:24:57.000000000 +0000 @@ -1,5 +1,5 @@ -37.11. User-defined Types

    37.11. User-defined Types

    As described in Section 37.2, +37.11. User-defined Types

    37.11. User-defined Types

    As described in Section 37.2, PostgreSQL can be extended to support new data types. This section describes how to define new base types, which are data types defined below the level of the SQL @@ -175,7 +175,7 @@

    For further details see the description of the CREATE TYPE command.

    37.11.1. TOAST Considerations

    If the values of your data type vary in size (in internal form), it's - usually desirable to make the data type TOAST-able (see Section 66.2). You should do this even if the values are always + usually desirable to make the data type TOAST-able (see Section 67.2). You should do this even if the values are always too small to be compressed or stored externally, because TOAST can save space on small data too, by reducing header overhead. @@ -259,4 +259,4 @@

    For examples of working with expanded values, see the standard array infrastructure, particularly src/backend/utils/adt/array_expanded.c. -

    \ No newline at end of file +

    \ No newline at end of file diff -Nru postgresql-10-10.17/doc/src/sgml/indexam.sgml postgresql-10-10.19/doc/src/sgml/indexam.sgml --- postgresql-10-10.17/doc/src/sgml/indexam.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/indexam.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -528,7 +528,7 @@ -boolean +bool amgettuple (IndexScanDesc scan, ScanDirection direction); diff -Nru postgresql-10-10.17/doc/src/sgml/installation.sgml postgresql-10-10.19/doc/src/sgml/installation.sgml --- postgresql-10-10.17/doc/src/sgml/installation.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/installation.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -1591,6 +1591,15 @@ PostgreSQL, contrib, and documentation successfully made. Ready to install. + + + If you want to build everything that can be built, including the + additional modules (contrib), but without + the documentation, type instead: + +make world-bin + + @@ -1661,6 +1670,13 @@ + If you built the world without the documentation above, type instead: + +make install-world-bin + + + + You can use make install-strip instead of make install to strip the executable files and libraries as they are installed. This will save some space. If diff -Nru postgresql-10-10.17/doc/src/sgml/lobj.sgml postgresql-10-10.19/doc/src/sgml/lobj.sgml --- postgresql-10-10.17/doc/src/sgml/lobj.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/lobj.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -437,7 +437,7 @@ lo_truncate To truncate a large object to a given length, call -int lo_truncate(PGcon *conn, int fd, size_t len); +int lo_truncate(PGconn *conn, int fd, size_t len); This function truncates the large object descriptor fd to length len. The @@ -465,7 +465,7 @@ When dealing with large objects that might exceed 2GB in size, instead use -int lo_truncate64(PGcon *conn, int fd, pg_int64 len); +int lo_truncate64(PGconn *conn, int fd, pg_int64 len); This function has the same behavior as lo_truncate, but it can accept a diff -Nru postgresql-10-10.17/doc/src/sgml/logicaldecoding.sgml postgresql-10-10.19/doc/src/sgml/logicaldecoding.sgml --- postgresql-10-10.17/doc/src/sgml/logicaldecoding.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/logicaldecoding.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -691,27 +691,71 @@ Synchronous Replication Support for Logical Decoding + + Overview - - Logical decoding can be used to build - synchronous - replication solutions with the same user interface as synchronous - replication for streaming - replication. To do this, the streaming replication interface - (see ) must be used to stream out - data. Clients have to send Standby status update (F) - (see ) messages, just like streaming - replication clients do. - - - - A synchronous replica receiving changes via logical decoding will work in - the scope of a single database. Since, in contrast to - that, synchronous_standby_names currently is - server wide, this means this technique will not work properly if more - than one database is actively used. + Logical decoding can be used to build + synchronous + replication solutions with the same user interface as synchronous + replication for streaming + replication. To do this, the streaming replication interface + (see ) must be used to stream out + data. Clients have to send Standby status update (F) + (see ) messages, just like streaming + replication clients do. + + + + + A synchronous replica receiving changes via logical decoding will work in + the scope of a single database. Since, in contrast to + that, synchronous_standby_names currently is + server wide, this means this technique will not work properly if more + than one database is actively used. - + + + + + Caveats + + + In synchronous replication setup, a deadlock can happen, if the transaction + has locked [user] catalog tables exclusively. See + for information on user + catalog tables. This is because logical decoding of transactions can lock + catalog tables to access them. To avoid this users must refrain from taking + an exclusive lock on [user] catalog tables. This can happen in the following + ways: + + + + + Issuing an explicit LOCK on pg_class + in a transaction. + + + + + + Perform CLUSTER on pg_class in a + transaction. + + + + + + Executing TRUNCATE on [user] catalog table in a + transaction. + + + + + Note that these commands that can cause deadlock apply to not only explicitly + indicated system catalog tables above but also to any other [user] catalog + table. + + diff -Nru postgresql-10-10.17/doc/src/sgml/man1/clusterdb.1 postgresql-10-10.19/doc/src/sgml/man1/clusterdb.1 --- postgresql-10-10.17/doc/src/sgml/man1/clusterdb.1 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/clusterdb.1 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CLUSTERDB" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CLUSTERDB" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/createdb.1 postgresql-10-10.19/doc/src/sgml/man1/createdb.1 --- postgresql-10-10.17/doc/src/sgml/man1/createdb.1 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/createdb.1 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATEDB" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATEDB" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/createuser.1 postgresql-10-10.19/doc/src/sgml/man1/createuser.1 --- postgresql-10-10.17/doc/src/sgml/man1/createuser.1 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/createuser.1 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATEUSER" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATEUSER" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/dropdb.1 postgresql-10-10.19/doc/src/sgml/man1/dropdb.1 --- postgresql-10-10.17/doc/src/sgml/man1/dropdb.1 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/dropdb.1 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROPDB" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROPDB" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/dropuser.1 postgresql-10-10.19/doc/src/sgml/man1/dropuser.1 --- postgresql-10-10.17/doc/src/sgml/man1/dropuser.1 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/dropuser.1 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROPUSER" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROPUSER" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/ecpg.1 postgresql-10-10.19/doc/src/sgml/man1/ecpg.1 --- postgresql-10-10.17/doc/src/sgml/man1/ecpg.1 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/ecpg.1 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ECPG" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ECPG" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/initdb.1 postgresql-10-10.19/doc/src/sgml/man1/initdb.1 --- postgresql-10-10.17/doc/src/sgml/man1/initdb.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/initdb.1 2021-11-08 22:25:36.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "INITDB" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "INITDB" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/oid2name.1 postgresql-10-10.19/doc/src/sgml/man1/oid2name.1 --- postgresql-10-10.17/doc/src/sgml/man1/oid2name.1 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/oid2name.1 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "OID2NAME" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "OID2NAME" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -36,7 +36,7 @@ .PP oid2name is a utility program that helps administrators to examine the file structure used by PostgreSQL\&. To make use of it, you need to be familiar with the database file structure, which is described in -Chapter\ \&66\&. +Chapter\ \&67\&. .if n \{\ .sp .\} diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_archivecleanup.1 postgresql-10-10.19/doc/src/sgml/man1/pg_archivecleanup.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_archivecleanup.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_archivecleanup.1 2021-11-08 22:25:36.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_ARCHIVECLEANUP" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_ARCHIVECLEANUP" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_basebackup.1 postgresql-10-10.19/doc/src/sgml/man1/pg_basebackup.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_basebackup.1 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_basebackup.1 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_BASEBACKUP" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_BASEBACKUP" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pgbench.1 postgresql-10-10.19/doc/src/sgml/man1/pgbench.1 --- postgresql-10-10.17/doc/src/sgml/man1/pgbench.1 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pgbench.1 2021-11-08 22:25:35.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PGBENCH" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PGBENCH" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_config.1 postgresql-10-10.19/doc/src/sgml/man1/pg_config.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_config.1 2021-05-10 20:58:52.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_config.1 2021-11-08 22:25:35.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_CONFIG" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_CONFIG" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_controldata.1 postgresql-10-10.19/doc/src/sgml/man1/pg_controldata.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_controldata.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_controldata.1 2021-11-08 22:25:36.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_CONTROLDATA" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_CONTROLDATA" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_ctl.1 postgresql-10-10.19/doc/src/sgml/man1/pg_ctl.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_ctl.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_ctl.1 2021-11-08 22:25:36.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_CTL" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_CTL" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_dump.1 postgresql-10-10.19/doc/src/sgml/man1/pg_dump.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_dump.1 2021-05-10 20:58:52.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_dump.1 2021-11-08 22:25:35.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_DUMP" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_DUMP" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_dumpall.1 postgresql-10-10.19/doc/src/sgml/man1/pg_dumpall.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_dumpall.1 2021-05-10 20:58:52.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_dumpall.1 2021-11-08 22:25:35.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_DUMPALL" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_DUMPALL" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_isready.1 postgresql-10-10.19/doc/src/sgml/man1/pg_isready.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_isready.1 2021-05-10 20:58:52.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_isready.1 2021-11-08 22:25:35.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_ISREADY" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_ISREADY" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_receivewal.1 postgresql-10-10.19/doc/src/sgml/man1/pg_receivewal.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_receivewal.1 2021-05-10 20:58:52.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_receivewal.1 2021-11-08 22:25:35.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_RECEIVEWAL" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_RECEIVEWAL" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -78,6 +78,34 @@ max_wal_senders set high enough to leave at least one session available for the stream\&. .PP +The starting point of the write\-ahead log streaming is calculated when +pg_receivewal +starts: +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 1." 4.2 +.\} +First, scan the directory where the WAL segment files are written and find the newest completed segment file, using as starting point the beginning of the next WAL segment file\&. This is calculated independently on the compression method used to compress each segment\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 2." 4.2 +.\} +If a starting point cannot be calculated with the previous method, the latest WAL flush location is used as reported by the server from a +IDENTIFY_SYSTEM +command\&. +.RE +.PP If the connection is lost, or if it cannot be initially established, with a non\-fatal error, pg_receivewal will retry the connection indefinitely, and reestablish streaming as soon as possible\&. To avoid this behavior, use the diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_recvlogical.1 postgresql-10-10.19/doc/src/sgml/man1/pg_recvlogical.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_recvlogical.1 2021-05-10 20:58:52.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_recvlogical.1 2021-11-08 22:25:35.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_RECVLOGICAL" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_RECVLOGICAL" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_resetwal.1 postgresql-10-10.19/doc/src/sgml/man1/pg_resetwal.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_resetwal.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_resetwal.1 2021-11-08 22:25:36.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_RESETWAL" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_RESETWAL" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,6 +188,20 @@ under the data directory, adding one, and then multiplying by 52352 (0xCC80)\&. The file names are in hexadecimal\&. There is no simple recipe such as the ones for other options of appending zeroes\&. .RE .PP +\fB\-u \fR\fB\fIxid\fR\fR +.RS 4 +Manually set the oldest unfrozen transaction ID\&. +.sp +A safe value can be determined by looking for the numerically smallest file name in the directory +pg_xact +under the data directory and then multiplying by 1048576 (0x100000)\&. Note that the file names are in hexadecimal\&. It is usually easiest to specify the option value in hexadecimal too\&. For example, if +0007 +is the smallest entry in +pg_xact, +\-u 0x700000 +will work (five trailing zeroes provide the proper multiplier)\&. +.RE +.PP \fB\-x\fR \fIxid\fR .RS 4 Manually set the next transaction ID\&. diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_restore.1 postgresql-10-10.19/doc/src/sgml/man1/pg_restore.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_restore.1 2021-05-10 20:58:52.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_restore.1 2021-11-08 22:25:35.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_RESTORE" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_RESTORE" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_rewind.1 postgresql-10-10.19/doc/src/sgml/man1/pg_rewind.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_rewind.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_rewind.1 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_REWIND" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_REWIND" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_standby.1 postgresql-10-10.19/doc/src/sgml/man1/pg_standby.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_standby.1 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_standby.1 2021-11-08 22:25:39.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_STANDBY" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_STANDBY" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_test_fsync.1 postgresql-10-10.19/doc/src/sgml/man1/pg_test_fsync.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_test_fsync.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_test_fsync.1 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_TEST_FSYNC" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_TEST_FSYNC" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_test_timing.1 postgresql-10-10.19/doc/src/sgml/man1/pg_test_timing.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_test_timing.1 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_test_timing.1 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_TEST_TIMING" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_TEST_TIMING" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_upgrade.1 postgresql-10-10.19/doc/src/sgml/man1/pg_upgrade.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_upgrade.1 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_upgrade.1 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_UPGRADE" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_UPGRADE" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -284,11 +284,13 @@ .sp -1 .IP " 5." 4.2 .\} -Install custom shared object files: Install any custom shared object files (or DLLs) used by the old cluster into the new cluster, e\&.g\&., -pgcrypto\&.so, whether they are from +Install extension shared object files: Many extensions and custom modules, whether from contrib -or some other source\&. Do not install the schema definitions, e\&.g\&., -\fBCREATE EXTENSION pgcrypto\fR, because these will be upgraded from the old cluster\&. Also, any custom full text search files (dictionary, synonym, thesaurus, stop words) must also be copied to the new cluster\&. +or another source, use shared object files (or DLLs), e\&.g\&., +pgcrypto\&.so\&. If the old cluster used these, shared object files matching the new server binary must be installed in the new cluster, usually via operating system commands\&. Do not load the schema definitions, e\&.g\&., +\fBCREATE EXTENSION pgcrypto\fR, because these will be duplicated from the old cluster\&. If extension updates are available, +pg_upgrade +will report this and create a script that can be run later to update them\&. .RE .sp .RS 4 @@ -299,6 +301,17 @@ .sp -1 .IP " 6." 4.2 .\} +Copy custom full\-text search files: Copy any custom full text search files (dictionary, synonym, thesaurus, stop words) from the old to the new cluster\&. +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 7.\h'+01'\c +.\} +.el \{\ +.sp -1 +.IP " 7." 4.2 +.\} Adjust authentication: \fBpg_upgrade\fR will connect to the old and new servers several times, so you might want to set authentication to peer @@ -312,11 +325,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 7.\h'+01'\c +\h'-04' 8.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 7." 4.2 +.IP " 8." 4.2 .\} Stop both servers: Make sure both database servers are stopped using, on Unix, e\&.g\&.: .sp @@ -349,14 +362,14 @@ .sp .RS 4 .ie n \{\ -\h'-04' 8.\h'+01'\c +\h'-04' 9.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 8." 4.2 +.IP " 9." 4.2 .\} Prepare for standby server upgrades: If you are upgrading standby servers using methods outlined in section -Step 10, verify that the old standby servers are caught up by running +Step 11, verify that the old standby servers are caught up by running pg_controldata against the old primary and standby clusters\&. Verify that the \(lqLatest checkpoint location\(rq @@ -371,11 +384,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 9.\h'+01'\c +\h'-04' 10.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 9." 4.2 +.IP " 10." 4.2 .\} Run pg_upgrade: Always run the pg_upgrade @@ -447,7 +460,7 @@ If an error occurs while restoring the database schema, \fBpg_upgrade\fR will exit and you will have to revert to the old cluster as outlined in -Step 16 +Step 17 below\&. To try \fBpg_upgrade\fR again, you will need to modify the old cluster so the pg_upgrade schema restore succeeds\&. If the problem is a @@ -459,11 +472,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 10.\h'+01'\c +\h'-04' 11.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 10." 4.2 +.IP " 11." 4.2 .\} Upgrade Streaming Replication and Log\-Shipping standby servers: If you used link mode and have Streaming Replication (see Section\ \&26.2.5) or Log\-Shipping (see @@ -485,7 +498,7 @@ exist or are empty\&. If initdb was run, delete the standby servers\*(Aq new data directories\&. -Install custom shared object files: Install the same custom shared object files on the new standbys that you installed in the new primary cluster\&. +Install extension shared object files: Install the same extension shared object files on the new standbys that you installed in the new primary cluster\&. Stop standby servers: If the standby servers are still running, stop them now using the above instructions\&. Save configuration files: Save any configuration files from the old standbys\*(Aq configuration directories you need to keep, e\&.g\&., postgresql\&.conf @@ -574,11 +587,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 11.\h'+01'\c +\h'-04' 12.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 11." 4.2 +.IP " 12." 4.2 .\} Restore pg_hba\&.conf: If you modified pg_hba\&.conf, restore its original settings\&. It might also be necessary to adjust other configuration files in the new cluster to match the old cluster, e\&.g\&., @@ -589,11 +602,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 12.\h'+01'\c +\h'-04' 13.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 12." 4.2 +.IP " 13." 4.2 .\} Start the new server: The new server can now be safely started, and then any rsync\*(Aqed standby servers\&. @@ -601,11 +614,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 13.\h'+01'\c +\h'-04' 14.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 13." 4.2 +.IP " 14." 4.2 .\} Post\-Upgrade processing: If any post\-upgrade processing is required, pg_upgrade will issue warnings as it completes\&. It will also generate script files that must be run by the administrator\&. The script files will connect to each database that needs post\-upgrade processing\&. Each script should be run using: .sp @@ -639,11 +652,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 14.\h'+01'\c +\h'-04' 15.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 14." 4.2 +.IP " 15." 4.2 .\} Statistics: Because optimizer statistics are not transferred by \fBpg_upgrade\fR, you will be instructed to run a command to regenerate that information at the end of the upgrade\&. You might need to set connection parameters to match your new cluster\&. @@ -651,11 +664,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 15.\h'+01'\c +\h'-04' 16.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 15." 4.2 +.IP " 16." 4.2 .\} Delete old cluster: Once you are satisfied with the upgrade, you can delete the old cluster\*(Aqs data directories by running the script mentioned when \fBpg_upgrade\fR @@ -666,11 +679,11 @@ .sp .RS 4 .ie n \{\ -\h'-04' 16.\h'+01'\c +\h'-04' 17.\h'+01'\c .\} .el \{\ .sp -1 -.IP " 16." 4.2 +.IP " 17." 4.2 .\} Reverting to old cluster: If, after running \fBpg_upgrade\fR, you wish to revert to the old cluster, there are several options: diff -Nru postgresql-10-10.17/doc/src/sgml/man1/pg_waldump.1 postgresql-10-10.19/doc/src/sgml/man1/pg_waldump.1 --- postgresql-10-10.17/doc/src/sgml/man1/pg_waldump.1 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/pg_waldump.1 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PG_WALDUMP" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PG_WALDUMP" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/postgres.1 postgresql-10-10.19/doc/src/sgml/man1/postgres.1 --- postgresql-10-10.17/doc/src/sgml/man1/postgres.1 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/postgres.1 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "POSTGRES" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "POSTGRES" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/postmaster.1 postgresql-10-10.19/doc/src/sgml/man1/postmaster.1 --- postgresql-10-10.17/doc/src/sgml/man1/postmaster.1 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/postmaster.1 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "POSTMASTER" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "POSTMASTER" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/psql.1 postgresql-10-10.19/doc/src/sgml/man1/psql.1 --- postgresql-10-10.17/doc/src/sgml/man1/psql.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/psql.1 2021-11-08 22:25:36.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PSQL" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PSQL" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -645,7 +645,7 @@ .\} .nf $ \fBpsql testdb\fR -psql (10\&.17) +psql (10\&.19) Type "help" for help\&. testdb=> diff -Nru postgresql-10-10.17/doc/src/sgml/man1/reindexdb.1 postgresql-10-10.19/doc/src/sgml/man1/reindexdb.1 --- postgresql-10-10.17/doc/src/sgml/man1/reindexdb.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/reindexdb.1 2021-11-08 22:25:36.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "REINDEXDB" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "REINDEXDB" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -102,7 +102,7 @@ .br \fB\-\-system\fR .RS 4 -Reindex database\*(Aqs system catalogs\&. +Reindex database\*(Aqs system catalogs only\&. .RE .PP \fB\-S \fR\fB\fIschema\fR\fR diff -Nru postgresql-10-10.17/doc/src/sgml/man1/vacuumdb.1 postgresql-10-10.19/doc/src/sgml/man1/vacuumdb.1 --- postgresql-10-10.17/doc/src/sgml/man1/vacuumdb.1 2021-05-10 20:58:53.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/vacuumdb.1 2021-11-08 22:25:36.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "VACUUMDB" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "VACUUMDB" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man1/vacuumlo.1 postgresql-10-10.19/doc/src/sgml/man1/vacuumlo.1 --- postgresql-10-10.17/doc/src/sgml/man1/vacuumlo.1 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man1/vacuumlo.1 2021-11-08 22:25:39.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "VACUUMLO" "1" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "VACUUMLO" "1" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink.3 postgresql-10-10.19/doc/src/sgml/man3/dblink.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink.3 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink.3 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_build_sql_delete.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_build_sql_delete.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_build_sql_delete.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_build_sql_delete.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_BUILD_SQL_DELETE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_BUILD_SQL_DELETE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_build_sql_insert.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_build_sql_insert.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_build_sql_insert.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_build_sql_insert.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_BUILD_SQL_INSERT" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_BUILD_SQL_INSERT" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_build_sql_update.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_build_sql_update.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_build_sql_update.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_build_sql_update.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_BUILD_SQL_UPDATE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_BUILD_SQL_UPDATE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_cancel_query.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_cancel_query.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_cancel_query.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_cancel_query.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_CANCEL_QUERY" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_CANCEL_QUERY" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_close.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_close.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_close.3 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_close.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_CLOSE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_CLOSE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_connect.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_connect.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_connect.3 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_connect.3 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_CONNECT" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_CONNECT" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_connect_u.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_connect_u.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_connect_u.3 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_connect_u.3 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_CONNECT_U" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_CONNECT_U" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_disconnect.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_disconnect.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_disconnect.3 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_disconnect.3 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_DISCONNECT" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_DISCONNECT" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_error_message.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_error_message.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_error_message.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_error_message.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_ERROR_MESSAGE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_ERROR_MESSAGE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_exec.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_exec.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_exec.3 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_exec.3 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_EXEC" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_EXEC" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_fetch.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_fetch.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_fetch.3 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_fetch.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_FETCH" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_FETCH" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_get_connections.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_get_connections.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_get_connections.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_get_connections.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_GET_CONNECTIONS" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_GET_CONNECTIONS" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_get_notify.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_get_notify.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_get_notify.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_get_notify.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_GET_NOTIFY" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_GET_NOTIFY" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_get_pkey.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_get_pkey.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_get_pkey.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_get_pkey.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_GET_PKEY" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_GET_PKEY" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_get_result.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_get_result.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_get_result.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_get_result.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_GET_RESULT" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_GET_RESULT" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_is_busy.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_is_busy.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_is_busy.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_is_busy.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_IS_BUSY" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_IS_BUSY" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_open.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_open.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_open.3 2021-05-10 20:58:54.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_open.3 2021-11-08 22:25:37.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_OPEN" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_OPEN" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/dblink_send_query.3 postgresql-10-10.19/doc/src/sgml/man3/dblink_send_query.3 --- postgresql-10-10.17/doc/src/sgml/man3/dblink_send_query.3 2021-05-10 20:58:55.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/dblink_send_query.3 2021-11-08 22:25:38.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DBLINK_SEND_QUERY" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DBLINK_SEND_QUERY" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_connect.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_connect.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_connect.3 2021-05-10 20:58:33.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_connect.3 2021-11-08 22:25:16.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_CONNECT" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_CONNECT" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_copytuple.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_copytuple.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_copytuple.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_copytuple.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_COPYTUPLE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_COPYTUPLE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_close.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_close.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_close.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_close.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_CURSOR_CLOSE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_CURSOR_CLOSE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_fetch.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_fetch.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_fetch.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_fetch.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_CURSOR_FETCH" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_CURSOR_FETCH" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_find.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_find.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_find.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_find.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_CURSOR_FIND" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_CURSOR_FIND" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_move.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_move.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_move.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_move.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_CURSOR_MOVE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_CURSOR_MOVE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_open.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_open.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_open.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_open.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_CURSOR_OPEN" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_CURSOR_OPEN" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_open_with_args.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_open_with_args.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_open_with_args.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_open_with_args.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_CURSOR_OPEN_WITH_ARGS" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_CURSOR_OPEN_WITH_ARGS" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_open_with_paramlist.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_open_with_paramlist.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_cursor_open_with_paramlist.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_cursor_open_with_paramlist.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_CURSOR_OPEN_WITH_PARAMLIST" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_CURSOR_OPEN_WITH_PARAMLIST" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_exec.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_exec.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_exec.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_exec.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_EXEC" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_EXEC" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_execp.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_execp.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_execp.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_execp.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_EXECP" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_EXECP" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_execute.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_execute.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_execute.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_execute.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_EXECUTE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_EXECUTE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_execute_plan.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_execute_plan.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_execute_plan.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_execute_plan.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_EXECUTE_PLAN" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_EXECUTE_PLAN" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_execute_plan_with_paramlist.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_execute_plan_with_paramlist.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_execute_plan_with_paramlist.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_execute_plan_with_paramlist.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_EXECUTE_PLAN_WITH_PARAMLIST" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_EXECUTE_PLAN_WITH_PARAMLIST" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_execute_with_args.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_execute_with_args.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_execute_with_args.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_execute_with_args.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_EXECUTE_WITH_ARGS" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_EXECUTE_WITH_ARGS" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_finish.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_finish.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_finish.3 2021-05-10 20:58:33.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_finish.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_FINISH" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_FINISH" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_fname.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_fname.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_fname.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_fname.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_FNAME" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_FNAME" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_fnumber.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_fnumber.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_fnumber.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_fnumber.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_FNUMBER" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_FNUMBER" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_freeplan.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_freeplan.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_freeplan.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_freeplan.3 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_FREEPLAN" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_FREEPLAN" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_freetuple.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_freetuple.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_freetuple.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_freetuple.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_FREETUPLE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_FREETUPLE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_freetuptable.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_freetuptable.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_freetuptable.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_freetuptable.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_FREETUPTABLE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_FREETUPTABLE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_getargcount.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_getargcount.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_getargcount.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_getargcount.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_GETARGCOUNT" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_GETARGCOUNT" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_getargtypeid.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_getargtypeid.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_getargtypeid.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_getargtypeid.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_GETARGTYPEID" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_GETARGTYPEID" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_getbinval.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_getbinval.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_getbinval.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_getbinval.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_GETBINVAL" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_GETBINVAL" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_getnspname.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_getnspname.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_getnspname.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_getnspname.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_GETNSPNAME" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_GETNSPNAME" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_getrelname.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_getrelname.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_getrelname.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_getrelname.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_GETRELNAME" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_GETRELNAME" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_gettype.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_gettype.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_gettype.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_gettype.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_GETTYPE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_GETTYPE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_gettypeid.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_gettypeid.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_gettypeid.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_gettypeid.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_GETTYPEID" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_GETTYPEID" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_getvalue.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_getvalue.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_getvalue.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_getvalue.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_GETVALUE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_GETVALUE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_is_cursor_plan.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_is_cursor_plan.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_is_cursor_plan.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_is_cursor_plan.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_IS_CURSOR_PLAN" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_IS_CURSOR_PLAN" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_keepplan.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_keepplan.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_keepplan.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_keepplan.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_KEEPPLAN" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_KEEPPLAN" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_modifytuple.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_modifytuple.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_modifytuple.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_modifytuple.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_MODIFYTUPLE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_MODIFYTUPLE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_palloc.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_palloc.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_palloc.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_palloc.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_PALLOC" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_PALLOC" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_pfree.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_pfree.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_pfree.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_pfree.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_PFREE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_PFREE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_prepare.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_prepare.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_prepare.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_prepare.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_PREPARE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_PREPARE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_prepare_cursor.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_prepare_cursor.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_prepare_cursor.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_prepare_cursor.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_PREPARE_CURSOR" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_PREPARE_CURSOR" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_prepare_params.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_prepare_params.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_prepare_params.3 2021-05-10 20:58:34.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_prepare_params.3 2021-11-08 22:25:17.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_PREPARE_PARAMS" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_PREPARE_PARAMS" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_register_relation.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_register_relation.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_register_relation.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_register_relation.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_REGISTER_RELATION" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_REGISTER_RELATION" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_register_trigger_data.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_register_trigger_data.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_register_trigger_data.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_register_trigger_data.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_REGISTER_TRIGGER_DATA" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_REGISTER_TRIGGER_DATA" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_repalloc.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_repalloc.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_repalloc.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_repalloc.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_REPALLOC" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_REPALLOC" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_returntuple.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_returntuple.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_returntuple.3 2021-05-10 20:58:36.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_returntuple.3 2021-11-08 22:25:19.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_RETURNTUPLE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_RETURNTUPLE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_saveplan.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_saveplan.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_saveplan.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_saveplan.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_SAVEPLAN" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_SAVEPLAN" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_scroll_cursor_fetch.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_scroll_cursor_fetch.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_scroll_cursor_fetch.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_scroll_cursor_fetch.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_SCROLL_CURSOR_FETCH" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_SCROLL_CURSOR_FETCH" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_scroll_cursor_move.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_scroll_cursor_move.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_scroll_cursor_move.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_scroll_cursor_move.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_SCROLL_CURSOR_MOVE" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_SCROLL_CURSOR_MOVE" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man3/SPI_unregister_relation.3 postgresql-10-10.19/doc/src/sgml/man3/SPI_unregister_relation.3 --- postgresql-10-10.17/doc/src/sgml/man3/SPI_unregister_relation.3 2021-05-10 20:58:35.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man3/SPI_unregister_relation.3 2021-11-08 22:25:18.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SPI_UNREGISTER_RELATION" "3" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SPI_UNREGISTER_RELATION" "3" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ABORT.7 postgresql-10-10.19/doc/src/sgml/man7/ABORT.7 --- postgresql-10-10.17/doc/src/sgml/man7/ABORT.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ABORT.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ABORT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ABORT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_AGGREGATE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_AGGREGATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_AGGREGATE.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_AGGREGATE.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER AGGREGATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER AGGREGATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_COLLATION.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_COLLATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_COLLATION.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_COLLATION.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER COLLATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER COLLATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_CONVERSION.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_CONVERSION.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_CONVERSION.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_CONVERSION.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER CONVERSION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER CONVERSION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_DATABASE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_DATABASE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_DATABASE.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_DATABASE.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER DATABASE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER DATABASE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_DEFAULT_PRIVILEGES.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_DEFAULT_PRIVILEGES.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_DEFAULT_PRIVILEGES.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_DEFAULT_PRIVILEGES.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER DEFAULT PRIVILEGES" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER DEFAULT PRIVILEGES" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_DOMAIN.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_DOMAIN.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_DOMAIN.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_DOMAIN.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER DOMAIN" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER DOMAIN" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_EVENT_TRIGGER.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_EVENT_TRIGGER.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_EVENT_TRIGGER.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_EVENT_TRIGGER.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER EVENT TRIGGER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER EVENT TRIGGER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_EXTENSION.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_EXTENSION.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_EXTENSION.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_EXTENSION.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER EXTENSION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER EXTENSION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_FOREIGN_DATA_WRAPPER.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_FOREIGN_DATA_WRAPPER.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_FOREIGN_DATA_WRAPPER.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_FOREIGN_DATA_WRAPPER.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER FOREIGN DATA WRAPPER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER FOREIGN DATA WRAPPER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_FOREIGN_TABLE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_FOREIGN_TABLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_FOREIGN_TABLE.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_FOREIGN_TABLE.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER FOREIGN TABLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER FOREIGN TABLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_FUNCTION.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_FUNCTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_FUNCTION.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_FUNCTION.7 2021-11-08 22:25:20.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER FUNCTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER FUNCTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -46,7 +46,8 @@ where \fIaction\fR is one of: CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT - IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF + IMMUTABLE | STABLE | VOLATILE + [ NOT ] LEAKPROOF [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER PARALLEL { UNSAFE | RESTRICTED | SAFE } COST \fIexecution_cost\fR diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_GROUP.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_GROUP.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_GROUP.7 2021-05-10 20:58:37.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_GROUP.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER GROUP" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER GROUP" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_INDEX.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_INDEX.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_INDEX.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_INDEX.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER INDEX" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER INDEX" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_LANGUAGE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_LANGUAGE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_LANGUAGE.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_LANGUAGE.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER LANGUAGE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER LANGUAGE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_LARGE_OBJECT.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_LARGE_OBJECT.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_LARGE_OBJECT.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_LARGE_OBJECT.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER LARGE OBJECT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER LARGE OBJECT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_MATERIALIZED_VIEW.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_MATERIALIZED_VIEW.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_MATERIALIZED_VIEW.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_MATERIALIZED_VIEW.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER MATERIALIZED VIEW" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER MATERIALIZED VIEW" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_OPERATOR.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_OPERATOR.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_OPERATOR.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_OPERATOR.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER OPERATOR" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER OPERATOR" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_OPERATOR_CLASS.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_OPERATOR_CLASS.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_OPERATOR_CLASS.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_OPERATOR_CLASS.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER OPERATOR CLASS" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER OPERATOR CLASS" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_OPERATOR_FAMILY.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_OPERATOR_FAMILY.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_OPERATOR_FAMILY.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_OPERATOR_FAMILY.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER OPERATOR FAMILY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER OPERATOR FAMILY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_POLICY.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_POLICY.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_POLICY.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_POLICY.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER POLICY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER POLICY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_PUBLICATION.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_PUBLICATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_PUBLICATION.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_PUBLICATION.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER PUBLICATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER PUBLICATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_ROLE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_ROLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_ROLE.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_ROLE.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER ROLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER ROLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_RULE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_RULE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_RULE.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_RULE.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER RULE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER RULE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_SCHEMA.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_SCHEMA.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_SCHEMA.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_SCHEMA.7 2021-11-08 22:25:21.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER SCHEMA" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER SCHEMA" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_SEQUENCE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_SEQUENCE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_SEQUENCE.7 2021-05-10 20:58:38.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_SEQUENCE.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER SEQUENCE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER SEQUENCE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_SERVER.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_SERVER.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_SERVER.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_SERVER.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER SERVER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER SERVER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_STATISTICS.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_STATISTICS.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_STATISTICS.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_STATISTICS.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER STATISTICS" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER STATISTICS" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_SUBSCRIPTION.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_SUBSCRIPTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_SUBSCRIPTION.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_SUBSCRIPTION.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER SUBSCRIPTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER SUBSCRIPTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_SYSTEM.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_SYSTEM.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_SYSTEM.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_SYSTEM.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER SYSTEM" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER SYSTEM" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_TABLE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_TABLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_TABLE.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_TABLE.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER TABLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER TABLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -260,7 +260,7 @@ values run faster, at the penalty of increased storage space\&. Note that SET STORAGE doesn\*(Aqt itself change anything in the table, it just sets the strategy to be pursued during future table updates\&. See -Section\ \&66.2 +Section\ \&67.2 for more information\&. .RE .PP diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_TABLESPACE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_TABLESPACE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_TABLESPACE.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_TABLESPACE.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER TABLESPACE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER TABLESPACE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_TEXT_SEARCH_CONFIGURATION.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_TEXT_SEARCH_CONFIGURATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_TEXT_SEARCH_CONFIGURATION.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_TEXT_SEARCH_CONFIGURATION.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER TEXT SEARCH CONFIGURATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER TEXT SEARCH CONFIGURATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_TEXT_SEARCH_DICTIONARY.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_TEXT_SEARCH_DICTIONARY.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_TEXT_SEARCH_DICTIONARY.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_TEXT_SEARCH_DICTIONARY.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER TEXT SEARCH DICTIONARY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER TEXT SEARCH DICTIONARY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_TEXT_SEARCH_PARSER.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_TEXT_SEARCH_PARSER.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_TEXT_SEARCH_PARSER.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_TEXT_SEARCH_PARSER.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER TEXT SEARCH PARSER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER TEXT SEARCH PARSER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_TEXT_SEARCH_TEMPLATE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_TEXT_SEARCH_TEMPLATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_TEXT_SEARCH_TEMPLATE.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_TEXT_SEARCH_TEMPLATE.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER TEXT SEARCH TEMPLATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER TEXT SEARCH TEMPLATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_TRIGGER.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_TRIGGER.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_TRIGGER.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_TRIGGER.7 2021-11-08 22:25:22.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER TRIGGER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER TRIGGER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_TYPE.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_TYPE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_TYPE.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_TYPE.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER TYPE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER TYPE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_USER.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_USER.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_USER.7 2021-05-10 20:58:39.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_USER.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER USER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER USER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_USER_MAPPING.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_USER_MAPPING.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_USER_MAPPING.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_USER_MAPPING.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER USER MAPPING" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER USER MAPPING" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ALTER_VIEW.7 postgresql-10-10.19/doc/src/sgml/man7/ALTER_VIEW.7 --- postgresql-10-10.17/doc/src/sgml/man7/ALTER_VIEW.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ALTER_VIEW.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ALTER VIEW" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ALTER VIEW" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ANALYZE.7 postgresql-10-10.19/doc/src/sgml/man7/ANALYZE.7 --- postgresql-10-10.17/doc/src/sgml/man7/ANALYZE.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ANALYZE.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ANALYZE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ANALYZE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/BEGIN.7 postgresql-10-10.19/doc/src/sgml/man7/BEGIN.7 --- postgresql-10-10.17/doc/src/sgml/man7/BEGIN.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/BEGIN.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "BEGIN" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "BEGIN" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CHECKPOINT.7 postgresql-10-10.19/doc/src/sgml/man7/CHECKPOINT.7 --- postgresql-10-10.17/doc/src/sgml/man7/CHECKPOINT.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CHECKPOINT.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CHECKPOINT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CHECKPOINT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CLOSE.7 postgresql-10-10.19/doc/src/sgml/man7/CLOSE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CLOSE.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CLOSE.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CLOSE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CLOSE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CLUSTER.7 postgresql-10-10.19/doc/src/sgml/man7/CLUSTER.7 --- postgresql-10-10.17/doc/src/sgml/man7/CLUSTER.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CLUSTER.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CLUSTER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CLUSTER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/COMMENT.7 postgresql-10-10.19/doc/src/sgml/man7/COMMENT.7 --- postgresql-10-10.17/doc/src/sgml/man7/COMMENT.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/COMMENT.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "COMMENT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "COMMENT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/COMMIT.7 postgresql-10-10.19/doc/src/sgml/man7/COMMIT.7 --- postgresql-10-10.17/doc/src/sgml/man7/COMMIT.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/COMMIT.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "COMMIT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "COMMIT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/COMMIT_PREPARED.7 postgresql-10-10.19/doc/src/sgml/man7/COMMIT_PREPARED.7 --- postgresql-10-10.17/doc/src/sgml/man7/COMMIT_PREPARED.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/COMMIT_PREPARED.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "COMMIT PREPARED" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "COMMIT PREPARED" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/COPY.7 postgresql-10-10.19/doc/src/sgml/man7/COPY.7 --- postgresql-10-10.17/doc/src/sgml/man7/COPY.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/COPY.7 2021-11-08 22:25:23.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "COPY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "COPY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -535,13 +535,13 @@ \e\fIdigits\fR T}:T{ Backslash followed by one to three octal digits specifies - the character with that numeric code + the byte with that numeric code T} T{ \ex\fIdigits\fR T}:T{ Backslash x followed by one or two hex digits specifies - the character with that numeric code + the byte with that numeric code T} .TE .sp 1 @@ -562,6 +562,8 @@ \fBCOPY\fR file is transferred across different machines (for example, from Unix to Windows or vice versa)\&. .PP +All backslash sequences are interpreted after encoding conversion\&. The bytes specified with the octal and hex\-digit backslash sequences must form valid characters in the database encoding\&. +.PP \fBCOPY TO\fR will terminate each row with a Unix\-style newline (\(lq\en\(rq)\&. Servers running on Microsoft Windows instead output carriage return/newline (\(lq\er\en\(rq), but only for \fBCOPY\fR diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_ACCESS_METHOD.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_ACCESS_METHOD.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_ACCESS_METHOD.7 2021-05-10 20:58:40.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_ACCESS_METHOD.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE ACCESS METHOD" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE ACCESS METHOD" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_AGGREGATE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_AGGREGATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_AGGREGATE.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_AGGREGATE.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE AGGREGATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE AGGREGATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_CAST.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_CAST.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_CAST.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_CAST.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE CAST" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE CAST" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_COLLATION.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_COLLATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_COLLATION.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_COLLATION.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE COLLATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE COLLATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_CONVERSION.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_CONVERSION.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_CONVERSION.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_CONVERSION.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE CONVERSION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE CONVERSION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_DATABASE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_DATABASE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_DATABASE.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_DATABASE.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE DATABASE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE DATABASE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_DOMAIN.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_DOMAIN.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_DOMAIN.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_DOMAIN.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE DOMAIN" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE DOMAIN" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_EVENT_TRIGGER.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_EVENT_TRIGGER.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_EVENT_TRIGGER.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_EVENT_TRIGGER.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE EVENT TRIGGER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE EVENT TRIGGER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -34,7 +34,7 @@ .nf CREATE EVENT TRIGGER \fIname\fR ON \fIevent\fR - [ WHEN \fIfilter_variable\fR IN (filter_value [, \&.\&.\&. ]) [ AND \&.\&.\&. ] ] + [ WHEN \fIfilter_variable\fR IN (\fIfilter_value\fR [, \&.\&.\&. ]) [ AND \&.\&.\&. ] ] EXECUTE PROCEDURE \fIfunction_name\fR() .fi .SH "DESCRIPTION" diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_EXTENSION.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_EXTENSION.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_EXTENSION.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_EXTENSION.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE EXTENSION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE EXTENSION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_FOREIGN_DATA_WRAPPER.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_FOREIGN_DATA_WRAPPER.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_FOREIGN_DATA_WRAPPER.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_FOREIGN_DATA_WRAPPER.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE FOREIGN DATA WRAPPER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE FOREIGN DATA WRAPPER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_FOREIGN_TABLE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_FOREIGN_TABLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_FOREIGN_TABLE.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_FOREIGN_TABLE.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE FOREIGN TABLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE FOREIGN TABLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_FUNCTION.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_FUNCTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_FUNCTION.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_FUNCTION.7 2021-11-08 22:25:24.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE FUNCTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE FUNCTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -39,9 +39,10 @@ { LANGUAGE \fIlang_name\fR | TRANSFORM { FOR TYPE \fItype_name\fR } [, \&.\&.\&. ] | WINDOW - | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF - | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT - | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER + | { IMMUTABLE | STABLE | VOLATILE } + | [ NOT ] LEAKPROOF + | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } + | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER } | PARALLEL { UNSAFE | RESTRICTED | SAFE } | COST \fIexecution_cost\fR | ROWS \fIresult_rows\fR diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_GROUP.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_GROUP.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_GROUP.7 2021-05-10 20:58:41.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_GROUP.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE GROUP" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE GROUP" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_INDEX.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_INDEX.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_INDEX.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_INDEX.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE INDEX" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE INDEX" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_LANGUAGE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_LANGUAGE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_LANGUAGE.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_LANGUAGE.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE LANGUAGE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE LANGUAGE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_MATERIALIZED_VIEW.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_MATERIALIZED_VIEW.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_MATERIALIZED_VIEW.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_MATERIALIZED_VIEW.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE MATERIALIZED VIEW" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE MATERIALIZED VIEW" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_OPERATOR.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_OPERATOR.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_OPERATOR.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_OPERATOR.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE OPERATOR" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE OPERATOR" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_OPERATOR_CLASS.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_OPERATOR_CLASS.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_OPERATOR_CLASS.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_OPERATOR_CLASS.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE OPERATOR CLASS" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE OPERATOR CLASS" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_OPERATOR_FAMILY.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_OPERATOR_FAMILY.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_OPERATOR_FAMILY.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_OPERATOR_FAMILY.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE OPERATOR FAMILY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE OPERATOR FAMILY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_POLICY.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_POLICY.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_POLICY.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_POLICY.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE POLICY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE POLICY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_PUBLICATION.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_PUBLICATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_PUBLICATION.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_PUBLICATION.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE PUBLICATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE PUBLICATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_ROLE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_ROLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_ROLE.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_ROLE.7 2021-11-08 22:25:25.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE ROLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE ROLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_RULE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_RULE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_RULE.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_RULE.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE RULE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE RULE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_SCHEMA.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_SCHEMA.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_SCHEMA.7 2021-05-10 20:58:42.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_SCHEMA.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE SCHEMA" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE SCHEMA" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_SEQUENCE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_SEQUENCE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_SEQUENCE.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_SEQUENCE.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE SEQUENCE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE SEQUENCE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_SERVER.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_SERVER.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_SERVER.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_SERVER.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE SERVER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE SERVER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_STATISTICS.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_STATISTICS.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_STATISTICS.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_STATISTICS.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE STATISTICS" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE STATISTICS" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -63,7 +63,7 @@ dependencies, which enables functional dependency statistics\&. If this clause is omitted, all supported statistics kinds are included in the statistics object\&. For more information, see Section\ \&14.2.2 and -Section\ \&68.2\&. +Section\ \&69.2\&. .RE .PP \fIcolumn_name\fR diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_SUBSCRIPTION.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_SUBSCRIPTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_SUBSCRIPTION.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_SUBSCRIPTION.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE SUBSCRIPTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE SUBSCRIPTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TABLE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TABLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TABLE.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TABLE.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TABLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TABLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -409,7 +409,7 @@ settings, resulting in the copied columns in the new table having type\-specific default settings\&. For more on STORAGE settings, see -Section\ \&66.2\&. +Section\ \&67.2\&. .sp Comments for the copied columns, constraints, and indexes will be copied only if INCLUDING COMMENTS @@ -790,7 +790,7 @@ toast\&., which controls the behavior of the table\*(Aqs secondary TOAST table, if any (see -Section\ \&66.2 +Section\ \&67.2 for more information about TOAST)\&. If a table parameter value is set and the equivalent toast\&. parameter is not, the TOAST table will use the table\*(Aqs parameter value\&. Specifying these parameters for partitioned tables is not supported, but you may specify them for individual leaf partitions\&. diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TABLE_AS.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TABLE_AS.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TABLE_AS.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TABLE_AS.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TABLE AS" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TABLE AS" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TABLESPACE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TABLESPACE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TABLESPACE.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TABLESPACE.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TABLESPACE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TABLESPACE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TEXT_SEARCH_CONFIGURATION.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TEXT_SEARCH_CONFIGURATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TEXT_SEARCH_CONFIGURATION.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TEXT_SEARCH_CONFIGURATION.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TEXT SEARCH CONFIGURATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TEXT SEARCH CONFIGURATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TEXT_SEARCH_DICTIONARY.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TEXT_SEARCH_DICTIONARY.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TEXT_SEARCH_DICTIONARY.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TEXT_SEARCH_DICTIONARY.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TEXT SEARCH DICTIONARY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TEXT SEARCH DICTIONARY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TEXT_SEARCH_PARSER.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TEXT_SEARCH_PARSER.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TEXT_SEARCH_PARSER.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TEXT_SEARCH_PARSER.7 2021-11-08 22:25:26.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TEXT SEARCH PARSER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TEXT SEARCH PARSER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TEXT_SEARCH_TEMPLATE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TEXT_SEARCH_TEMPLATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TEXT_SEARCH_TEMPLATE.7 2021-05-10 20:58:43.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TEXT_SEARCH_TEMPLATE.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TEXT SEARCH TEMPLATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TEXT SEARCH TEMPLATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TRANSFORM.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TRANSFORM.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TRANSFORM.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TRANSFORM.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TRANSFORM" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TRANSFORM" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TRIGGER.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TRIGGER.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TRIGGER.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TRIGGER.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TRIGGER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TRIGGER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_TYPE.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_TYPE.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_TYPE.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_TYPE.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE TYPE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE TYPE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -241,7 +241,7 @@ VARIABLE\&. (Internally, this is represented by setting typlen to \-1\&.) The internal representation of all variable\-length types must start with a 4\-byte integer giving the total length of this value of the type\&. (Note that the length field is often encoded, as described in -Section\ \&66.2; it\*(Aqs unwise to access it directly\&.) +Section\ \&67.2; it\*(Aqs unwise to access it directly\&.) .PP The optional flag PASSEDBYVALUE @@ -279,7 +279,7 @@ plain imply that the functions of the data type can handle values that have been toasted, as described in -Section\ \&66.2 +Section\ \&67.2 and Section\ \&37.11.1\&. The specific other value given merely determines the default TOAST storage strategy for columns of a toastable data type; users can pick other strategies for individual columns using ALTER TABLE SET STORAGE\&. diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_USER.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_USER.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_USER.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_USER.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE USER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE USER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_USER_MAPPING.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_USER_MAPPING.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_USER_MAPPING.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_USER_MAPPING.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE USER MAPPING" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE USER MAPPING" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/CREATE_VIEW.7 postgresql-10-10.19/doc/src/sgml/man7/CREATE_VIEW.7 --- postgresql-10-10.17/doc/src/sgml/man7/CREATE_VIEW.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/CREATE_VIEW.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "CREATE VIEW" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "CREATE VIEW" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DEALLOCATE.7 postgresql-10-10.19/doc/src/sgml/man7/DEALLOCATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DEALLOCATE.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DEALLOCATE.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DEALLOCATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DEALLOCATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DECLARE.7 postgresql-10-10.19/doc/src/sgml/man7/DECLARE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DECLARE.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DECLARE.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DECLARE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DECLARE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DELETE.7 postgresql-10-10.19/doc/src/sgml/man7/DELETE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DELETE.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DELETE.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DELETE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DELETE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DISCARD.7 postgresql-10-10.19/doc/src/sgml/man7/DISCARD.7 --- postgresql-10-10.17/doc/src/sgml/man7/DISCARD.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DISCARD.7 2021-11-08 22:25:27.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DISCARD" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DISCARD" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DO.7 postgresql-10-10.19/doc/src/sgml/man7/DO.7 --- postgresql-10-10.17/doc/src/sgml/man7/DO.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DO.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DO" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DO" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_ACCESS_METHOD.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_ACCESS_METHOD.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_ACCESS_METHOD.7 2021-05-10 20:58:44.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_ACCESS_METHOD.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP ACCESS METHOD" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP ACCESS METHOD" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_AGGREGATE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_AGGREGATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_AGGREGATE.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_AGGREGATE.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP AGGREGATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP AGGREGATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_CAST.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_CAST.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_CAST.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_CAST.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP CAST" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP CAST" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_COLLATION.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_COLLATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_COLLATION.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_COLLATION.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP COLLATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP COLLATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_CONVERSION.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_CONVERSION.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_CONVERSION.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_CONVERSION.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP CONVERSION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP CONVERSION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_DATABASE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_DATABASE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_DATABASE.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_DATABASE.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP DATABASE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP DATABASE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_DOMAIN.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_DOMAIN.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_DOMAIN.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_DOMAIN.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP DOMAIN" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP DOMAIN" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_EVENT_TRIGGER.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_EVENT_TRIGGER.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_EVENT_TRIGGER.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_EVENT_TRIGGER.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP EVENT TRIGGER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP EVENT TRIGGER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_EXTENSION.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_EXTENSION.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_EXTENSION.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_EXTENSION.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP EXTENSION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP EXTENSION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_FOREIGN_DATA_WRAPPER.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_FOREIGN_DATA_WRAPPER.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_FOREIGN_DATA_WRAPPER.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_FOREIGN_DATA_WRAPPER.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP FOREIGN DATA WRAPPER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP FOREIGN DATA WRAPPER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_FOREIGN_TABLE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_FOREIGN_TABLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_FOREIGN_TABLE.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_FOREIGN_TABLE.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP FOREIGN TABLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP FOREIGN TABLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_FUNCTION.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_FUNCTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_FUNCTION.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_FUNCTION.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP FUNCTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP FUNCTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_GROUP.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_GROUP.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_GROUP.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_GROUP.7 2021-11-08 22:25:28.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP GROUP" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP GROUP" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_INDEX.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_INDEX.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_INDEX.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_INDEX.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP INDEX" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP INDEX" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_LANGUAGE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_LANGUAGE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_LANGUAGE.7 2021-05-10 20:58:45.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_LANGUAGE.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP LANGUAGE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP LANGUAGE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_MATERIALIZED_VIEW.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_MATERIALIZED_VIEW.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_MATERIALIZED_VIEW.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_MATERIALIZED_VIEW.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP MATERIALIZED VIEW" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP MATERIALIZED VIEW" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_OPERATOR.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_OPERATOR.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_OPERATOR.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_OPERATOR.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP OPERATOR" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP OPERATOR" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_OPERATOR_CLASS.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_OPERATOR_CLASS.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_OPERATOR_CLASS.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_OPERATOR_CLASS.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP OPERATOR CLASS" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP OPERATOR CLASS" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_OPERATOR_FAMILY.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_OPERATOR_FAMILY.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_OPERATOR_FAMILY.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_OPERATOR_FAMILY.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP OPERATOR FAMILY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP OPERATOR FAMILY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_OWNED.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_OWNED.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_OWNED.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_OWNED.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP OWNED" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP OWNED" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_POLICY.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_POLICY.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_POLICY.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_POLICY.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP POLICY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP POLICY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_PUBLICATION.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_PUBLICATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_PUBLICATION.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_PUBLICATION.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP PUBLICATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP PUBLICATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_ROLE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_ROLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_ROLE.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_ROLE.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP ROLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP ROLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_RULE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_RULE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_RULE.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_RULE.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP RULE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP RULE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_SCHEMA.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_SCHEMA.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_SCHEMA.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_SCHEMA.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP SCHEMA" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP SCHEMA" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_SEQUENCE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_SEQUENCE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_SEQUENCE.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_SEQUENCE.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP SEQUENCE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP SEQUENCE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_SERVER.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_SERVER.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_SERVER.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_SERVER.7 2021-11-08 22:25:29.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP SERVER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP SERVER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_STATISTICS.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_STATISTICS.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_STATISTICS.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_STATISTICS.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP STATISTICS" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP STATISTICS" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -32,7 +32,7 @@ .SH "SYNOPSIS" .sp .nf -DROP STATISTICS [ IF EXISTS ] \fIname\fR [, \&.\&.\&.] +DROP STATISTICS [ IF EXISTS ] \fIname\fR [, \&.\&.\&.] [ CASCADE | RESTRICT ] .fi .SH "DESCRIPTION" .PP @@ -49,6 +49,13 @@ .RS 4 The name (optionally schema\-qualified) of the statistics object to drop\&. .RE +.PP +CASCADE +.br +RESTRICT +.RS 4 +These key words do not have any effect, since there are no dependencies on statistics\&. +.RE .SH "EXAMPLES" .PP To destroy two statistics objects in different schemas, without failing if they don\*(Aqt exist: diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_SUBSCRIPTION.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_SUBSCRIPTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_SUBSCRIPTION.7 2021-05-10 20:58:46.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_SUBSCRIPTION.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP SUBSCRIPTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP SUBSCRIPTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TABLE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TABLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TABLE.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TABLE.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TABLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TABLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TABLESPACE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TABLESPACE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TABLESPACE.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TABLESPACE.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TABLESPACE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TABLESPACE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TEXT_SEARCH_CONFIGURATION.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TEXT_SEARCH_CONFIGURATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TEXT_SEARCH_CONFIGURATION.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TEXT_SEARCH_CONFIGURATION.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TEXT SEARCH CONFIGURATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TEXT SEARCH CONFIGURATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TEXT_SEARCH_DICTIONARY.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TEXT_SEARCH_DICTIONARY.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TEXT_SEARCH_DICTIONARY.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TEXT_SEARCH_DICTIONARY.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TEXT SEARCH DICTIONARY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TEXT SEARCH DICTIONARY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TEXT_SEARCH_PARSER.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TEXT_SEARCH_PARSER.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TEXT_SEARCH_PARSER.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TEXT_SEARCH_PARSER.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TEXT SEARCH PARSER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TEXT SEARCH PARSER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TEXT_SEARCH_TEMPLATE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TEXT_SEARCH_TEMPLATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TEXT_SEARCH_TEMPLATE.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TEXT_SEARCH_TEMPLATE.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TEXT SEARCH TEMPLATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TEXT SEARCH TEMPLATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TRANSFORM.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TRANSFORM.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TRANSFORM.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TRANSFORM.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TRANSFORM" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TRANSFORM" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TRIGGER.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TRIGGER.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TRIGGER.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TRIGGER.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TRIGGER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TRIGGER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_TYPE.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_TYPE.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_TYPE.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_TYPE.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP TYPE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP TYPE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_USER.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_USER.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_USER.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_USER.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP USER" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP USER" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_USER_MAPPING.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_USER_MAPPING.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_USER_MAPPING.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_USER_MAPPING.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP USER MAPPING" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP USER MAPPING" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/DROP_VIEW.7 postgresql-10-10.19/doc/src/sgml/man7/DROP_VIEW.7 --- postgresql-10-10.17/doc/src/sgml/man7/DROP_VIEW.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/DROP_VIEW.7 2021-11-08 22:25:30.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "DROP VIEW" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "DROP VIEW" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/END.7 postgresql-10-10.19/doc/src/sgml/man7/END.7 --- postgresql-10-10.17/doc/src/sgml/man7/END.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/END.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "END" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "END" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/EXECUTE.7 postgresql-10-10.19/doc/src/sgml/man7/EXECUTE.7 --- postgresql-10-10.17/doc/src/sgml/man7/EXECUTE.7 2021-05-10 20:58:47.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/EXECUTE.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "EXECUTE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "EXECUTE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/EXPLAIN.7 postgresql-10-10.19/doc/src/sgml/man7/EXPLAIN.7 --- postgresql-10-10.17/doc/src/sgml/man7/EXPLAIN.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/EXPLAIN.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "EXPLAIN" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "EXPLAIN" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/FETCH.7 postgresql-10-10.19/doc/src/sgml/man7/FETCH.7 --- postgresql-10-10.17/doc/src/sgml/man7/FETCH.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/FETCH.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "FETCH" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "FETCH" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/GRANT.7 postgresql-10-10.19/doc/src/sgml/man7/GRANT.7 --- postgresql-10-10.17/doc/src/sgml/man7/GRANT.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/GRANT.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "GRANT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "GRANT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/IMPORT_FOREIGN_SCHEMA.7 postgresql-10-10.19/doc/src/sgml/man7/IMPORT_FOREIGN_SCHEMA.7 --- postgresql-10-10.17/doc/src/sgml/man7/IMPORT_FOREIGN_SCHEMA.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/IMPORT_FOREIGN_SCHEMA.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "IMPORT FOREIGN SCHEMA" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "IMPORT FOREIGN SCHEMA" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/INSERT.7 postgresql-10-10.19/doc/src/sgml/man7/INSERT.7 --- postgresql-10-10.17/doc/src/sgml/man7/INSERT.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/INSERT.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "INSERT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "INSERT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/LISTEN.7 postgresql-10-10.19/doc/src/sgml/man7/LISTEN.7 --- postgresql-10-10.17/doc/src/sgml/man7/LISTEN.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/LISTEN.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "LISTEN" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "LISTEN" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/LOAD.7 postgresql-10-10.19/doc/src/sgml/man7/LOAD.7 --- postgresql-10-10.17/doc/src/sgml/man7/LOAD.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/LOAD.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "LOAD" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "LOAD" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/LOCK.7 postgresql-10-10.19/doc/src/sgml/man7/LOCK.7 --- postgresql-10-10.17/doc/src/sgml/man7/LOCK.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/LOCK.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "LOCK" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "LOCK" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/MOVE.7 postgresql-10-10.19/doc/src/sgml/man7/MOVE.7 --- postgresql-10-10.17/doc/src/sgml/man7/MOVE.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/MOVE.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "MOVE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "MOVE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/NOTIFY.7 postgresql-10-10.19/doc/src/sgml/man7/NOTIFY.7 --- postgresql-10-10.17/doc/src/sgml/man7/NOTIFY.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/NOTIFY.7 2021-11-08 22:25:31.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "NOTIFY" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "NOTIFY" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/PREPARE.7 postgresql-10-10.19/doc/src/sgml/man7/PREPARE.7 --- postgresql-10-10.17/doc/src/sgml/man7/PREPARE.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/PREPARE.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PREPARE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PREPARE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/PREPARE_TRANSACTION.7 postgresql-10-10.19/doc/src/sgml/man7/PREPARE_TRANSACTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/PREPARE_TRANSACTION.7 2021-05-10 20:58:48.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/PREPARE_TRANSACTION.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "PREPARE TRANSACTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "PREPARE TRANSACTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/REASSIGN_OWNED.7 postgresql-10-10.19/doc/src/sgml/man7/REASSIGN_OWNED.7 --- postgresql-10-10.17/doc/src/sgml/man7/REASSIGN_OWNED.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/REASSIGN_OWNED.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "REASSIGN OWNED" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "REASSIGN OWNED" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/REFRESH_MATERIALIZED_VIEW.7 postgresql-10-10.19/doc/src/sgml/man7/REFRESH_MATERIALIZED_VIEW.7 --- postgresql-10-10.17/doc/src/sgml/man7/REFRESH_MATERIALIZED_VIEW.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/REFRESH_MATERIALIZED_VIEW.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "REFRESH MATERIALIZED VIEW" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "REFRESH MATERIALIZED VIEW" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/REINDEX.7 postgresql-10-10.19/doc/src/sgml/man7/REINDEX.7 --- postgresql-10-10.17/doc/src/sgml/man7/REINDEX.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/REINDEX.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "REINDEX" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "REINDEX" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/RELEASE_SAVEPOINT.7 postgresql-10-10.19/doc/src/sgml/man7/RELEASE_SAVEPOINT.7 --- postgresql-10-10.17/doc/src/sgml/man7/RELEASE_SAVEPOINT.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/RELEASE_SAVEPOINT.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "RELEASE SAVEPOINT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "RELEASE SAVEPOINT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/RESET.7 postgresql-10-10.19/doc/src/sgml/man7/RESET.7 --- postgresql-10-10.17/doc/src/sgml/man7/RESET.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/RESET.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "RESET" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "RESET" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/REVOKE.7 postgresql-10-10.19/doc/src/sgml/man7/REVOKE.7 --- postgresql-10-10.17/doc/src/sgml/man7/REVOKE.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/REVOKE.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "REVOKE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "REVOKE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ROLLBACK.7 postgresql-10-10.19/doc/src/sgml/man7/ROLLBACK.7 --- postgresql-10-10.17/doc/src/sgml/man7/ROLLBACK.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ROLLBACK.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ROLLBACK" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ROLLBACK" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ROLLBACK_PREPARED.7 postgresql-10-10.19/doc/src/sgml/man7/ROLLBACK_PREPARED.7 --- postgresql-10-10.17/doc/src/sgml/man7/ROLLBACK_PREPARED.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ROLLBACK_PREPARED.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ROLLBACK PREPARED" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ROLLBACK PREPARED" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/ROLLBACK_TO_SAVEPOINT.7 postgresql-10-10.19/doc/src/sgml/man7/ROLLBACK_TO_SAVEPOINT.7 --- postgresql-10-10.17/doc/src/sgml/man7/ROLLBACK_TO_SAVEPOINT.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/ROLLBACK_TO_SAVEPOINT.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "ROLLBACK TO SAVEPOINT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "ROLLBACK TO SAVEPOINT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SAVEPOINT.7 postgresql-10-10.19/doc/src/sgml/man7/SAVEPOINT.7 --- postgresql-10-10.17/doc/src/sgml/man7/SAVEPOINT.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SAVEPOINT.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SAVEPOINT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SAVEPOINT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SECURITY_LABEL.7 postgresql-10-10.19/doc/src/sgml/man7/SECURITY_LABEL.7 --- postgresql-10-10.17/doc/src/sgml/man7/SECURITY_LABEL.7 2021-05-10 20:58:49.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SECURITY_LABEL.7 2021-11-08 22:25:32.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SECURITY LABEL" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SECURITY LABEL" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SELECT.7 postgresql-10-10.19/doc/src/sgml/man7/SELECT.7 --- postgresql-10-10.17/doc/src/sgml/man7/SELECT.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SELECT.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SELECT" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SELECT" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SELECT_INTO.7 postgresql-10-10.19/doc/src/sgml/man7/SELECT_INTO.7 --- postgresql-10-10.17/doc/src/sgml/man7/SELECT_INTO.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SELECT_INTO.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SELECT INTO" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SELECT INTO" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SET.7 postgresql-10-10.19/doc/src/sgml/man7/SET.7 --- postgresql-10-10.17/doc/src/sgml/man7/SET.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SET.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SET" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SET" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SET_CONSTRAINTS.7 postgresql-10-10.19/doc/src/sgml/man7/SET_CONSTRAINTS.7 --- postgresql-10-10.17/doc/src/sgml/man7/SET_CONSTRAINTS.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SET_CONSTRAINTS.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SET CONSTRAINTS" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SET CONSTRAINTS" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SET_ROLE.7 postgresql-10-10.19/doc/src/sgml/man7/SET_ROLE.7 --- postgresql-10-10.17/doc/src/sgml/man7/SET_ROLE.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SET_ROLE.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SET ROLE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SET ROLE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SET_SESSION_AUTHORIZATION.7 postgresql-10-10.19/doc/src/sgml/man7/SET_SESSION_AUTHORIZATION.7 --- postgresql-10-10.17/doc/src/sgml/man7/SET_SESSION_AUTHORIZATION.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SET_SESSION_AUTHORIZATION.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SET SESSION AUTHORIZATION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SET SESSION AUTHORIZATION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SET_TRANSACTION.7 postgresql-10-10.19/doc/src/sgml/man7/SET_TRANSACTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/SET_TRANSACTION.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SET_TRANSACTION.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SET TRANSACTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SET TRANSACTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -161,7 +161,7 @@ \fBSTART TRANSACTION\fR\&. But that option is not available for \fBSET TRANSACTION SNAPSHOT\fR\&. .PP -The session default transaction modes can also be set by setting the configuration parameters +The session default transaction modes can also be set or examined via the configuration parameters default_transaction_isolation, default_transaction_read_only, and default_transaction_deferrable\&. (In fact @@ -171,6 +171,13 @@ \fBALTER DATABASE\fR, etc\&. Consult Chapter\ \&19 for more information\&. +.PP +The current transaction\*(Aqs modes can similarly be set or examined via the configuration parameters +transaction_isolation, +transaction_read_only, and +transaction_deferrable\&. Setting one of these parameters acts the same as the corresponding +\fBSET TRANSACTION\fR +option, with the same restrictions on when it can be done\&. However, these parameters cannot be set in the configuration file, or from any source other than live SQL\&. .SH "EXAMPLES" .PP To begin a new transaction with the same snapshot as an already existing transaction, first export the snapshot from the existing transaction\&. That will return the snapshot identifier, for example: diff -Nru postgresql-10-10.17/doc/src/sgml/man7/SHOW.7 postgresql-10-10.19/doc/src/sgml/man7/SHOW.7 --- postgresql-10-10.17/doc/src/sgml/man7/SHOW.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/SHOW.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "SHOW" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "SHOW" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/START_TRANSACTION.7 postgresql-10-10.19/doc/src/sgml/man7/START_TRANSACTION.7 --- postgresql-10-10.17/doc/src/sgml/man7/START_TRANSACTION.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/START_TRANSACTION.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "START TRANSACTION" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "START TRANSACTION" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/TRUNCATE.7 postgresql-10-10.19/doc/src/sgml/man7/TRUNCATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/TRUNCATE.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/TRUNCATE.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "TRUNCATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "TRUNCATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/UNLISTEN.7 postgresql-10-10.19/doc/src/sgml/man7/UNLISTEN.7 --- postgresql-10-10.17/doc/src/sgml/man7/UNLISTEN.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/UNLISTEN.7 2021-11-08 22:25:33.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "UNLISTEN" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "UNLISTEN" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/UPDATE.7 postgresql-10-10.19/doc/src/sgml/man7/UPDATE.7 --- postgresql-10-10.17/doc/src/sgml/man7/UPDATE.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/UPDATE.7 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "UPDATE" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "UPDATE" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/VACUUM.7 postgresql-10-10.19/doc/src/sgml/man7/VACUUM.7 --- postgresql-10-10.17/doc/src/sgml/man7/VACUUM.7 2021-05-10 20:58:50.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/VACUUM.7 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "VACUUM" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "VACUUM" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/man7/VALUES.7 postgresql-10-10.19/doc/src/sgml/man7/VALUES.7 --- postgresql-10-10.17/doc/src/sgml/man7/VALUES.7 2021-05-10 20:58:51.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/man7/VALUES.7 2021-11-08 22:25:34.000000000 +0000 @@ -3,11 +3,11 @@ .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 -.\" Manual: PostgreSQL 10.17 Documentation -.\" Source: PostgreSQL 10.17 +.\" Manual: PostgreSQL 10.19 Documentation +.\" Source: PostgreSQL 10.19 .\" Language: English .\" -.TH "VALUES" "7" "2021" "PostgreSQL 10.17" "PostgreSQL 10.17 Documentation" +.TH "VALUES" "7" "2021" "PostgreSQL 10.19" "PostgreSQL 10.19 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -Nru postgresql-10-10.17/doc/src/sgml/monitoring.sgml postgresql-10-10.19/doc/src/sgml/monitoring.sgml --- postgresql-10-10.17/doc/src/sgml/monitoring.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/monitoring.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -3411,8 +3411,9 @@ VACUUM is currently vacuuming the indexes. If a table has any indexes, this will happen at least once per vacuum, after the heap has been completely scanned. It may happen multiple times per vacuum - if is insufficient to - store the number of dead tuples found. + if (or, in the case of autovacuum, + if set) is insufficient to store + the number of dead tuples found. diff -Nru postgresql-10-10.17/doc/src/sgml/parallel.sgml postgresql-10-10.19/doc/src/sgml/parallel.sgml --- postgresql-10-10.17/doc/src/sgml/parallel.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/parallel.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -8,11 +8,11 @@ - PostgreSQL can devise query plans which can leverage + PostgreSQL can devise query plans that can leverage multiple CPUs in order to answer queries faster. This feature is known as parallel query. Many queries cannot benefit from parallel query, either due to limitations of the current implementation or because there is no - imaginable query plan which is any faster than the serial query plan. + imaginable query plan that is any faster than the serial query plan. However, for queries that can benefit, the speedup from parallel query is often very significant. Many queries can run more than twice as fast when using parallel query, and some queries can run four times faster or @@ -27,7 +27,7 @@ When the optimizer determines that parallel query is the fastest execution - strategy for a particular query, it will create a query plan which includes + strategy for a particular query, it will create a query plan that includes a Gather or Gather Merge node. Here is a simple example: @@ -59,7 +59,7 @@ Using EXPLAIN, you can see the number of workers chosen by the planner. When the Gather node is reached - during query execution, the process which is implementing the user's + during query execution, the process that is implementing the user's session will request a number of background worker processes equal to the number of workers chosen by the planner. The number of background workers that @@ -79,7 +79,7 @@ - Every background worker process which is successfully started for a given + Every background worker process that is successfully started for a given parallel query will execute the parallel portion of the plan. The leader will also execute that portion of the plan, but it has an additional responsibility: it must also read all of the tuples generated by the @@ -88,7 +88,7 @@ worker, speeding up query execution. Conversely, when the parallel portion of the plan generates a large number of tuples, the leader may be almost entirely occupied with reading the tuples generated by the workers and - performing any further processing steps which are required by plan nodes + performing any further processing steps that are required by plan nodes above the level of the Gather node or Gather Merge node. In such cases, the leader will do very little of the work of executing the parallel portion of the plan. @@ -109,7 +109,7 @@ When Can Parallel Query Be Used? - There are several settings which can cause the query planner not to + There are several settings that can cause the query planner not to generate a parallel query plan under any circumstances. In order for any parallel query plans whatsoever to be generated, the following settings must be configured as indicated. @@ -119,7 +119,7 @@ must be set to a - value which is greater than zero. This is a special case of the more + value that is greater than zero. This is a special case of the more general principle that no more workers should be used than the number configured via max_parallel_workers_per_gather. @@ -152,7 +152,7 @@ The query writes any data or locks any database rows. If a query contains a data-modifying operation either at the top level or within a CTE, no parallel plans for that query will be generated. This is a - limitation of the current implementation which could be lifted in a + limitation of the current implementation that could be lifted in a future release. @@ -273,7 +273,7 @@ than normal but would produce incorrect results. Instead, the parallel portion of the plan must be what is known internally to the query optimizer as a partial plan; that is, it must be constructed - so that each process which executes the plan will generate only a + so that each process that executes the plan will generate only a subset of the output rows in such a way that each required output row is guaranteed to be generated by exactly one of the cooperating processes. Generally, this means that the scan on the driving table of the query @@ -366,11 +366,11 @@ Because the Finalize Aggregate node runs on the leader - process, queries which produce a relatively large number of groups in + process, queries that produce a relatively large number of groups in comparison to the number of input rows will appear less favorable to the query planner. For example, in the worst-case scenario the number of groups seen by the Finalize Aggregate node could be as many as - the number of input rows which were seen by all worker processes in the + the number of input rows that were seen by all worker processes in the Partial Aggregate stage. For such cases, there is clearly going to be no performance benefit to using parallel aggregation. The query planner takes this into account during the planning process and is @@ -399,7 +399,7 @@ If a query that is expected to do so does not produce a parallel plan, you can try reducing or . Of course, this plan may turn - out to be slower than the serial plan which the planner preferred, but + out to be slower than the serial plan that the planner preferred, but this will not always be the case. If you don't get a parallel plan even with very small values of these settings (e.g., after setting them both to zero), there may be some reason why the query planner is @@ -426,15 +426,15 @@ The planner classifies operations involved in a query as either parallel safe, parallel restricted, - or parallel unsafe. A parallel safe operation is one which + or parallel unsafe. A parallel safe operation is one that does not conflict with the use of parallel query. A parallel restricted - operation is one which cannot be performed in a parallel worker, but which + operation is one that cannot be performed in a parallel worker, but that can be performed in the leader while parallel query is in use. Therefore, parallel restricted operations can never occur below a Gather - or Gather Merge node, but can occur elsewhere in a plan which - contains such a node. A parallel unsafe operation is one which cannot + or Gather Merge node, but can occur elsewhere in a plan that + contains such a node. A parallel unsafe operation is one that cannot be performed while parallel query is in use, not even in the leader. - When a query contains anything which is parallel unsafe, parallel query + When a query contains anything that is parallel unsafe, parallel query is completely disabled for that query. @@ -458,7 +458,7 @@ Scans of foreign tables, unless the foreign data wrapper has - an IsForeignScanParallelSafe API which indicates otherwise. + an IsForeignScanParallelSafe API that indicates otherwise. @@ -475,7 +475,7 @@ The planner cannot automatically determine whether a user-defined function or aggregate is parallel safe, parallel restricted, or parallel - unsafe, because this would require predicting every operation which the + unsafe, because this would require predicting every operation that the function could possibly perform. In general, this is equivalent to the Halting Problem and therefore impossible. Even for simple functions where it could conceivably be done, we do not try, since this would be expensive @@ -493,11 +493,11 @@ Functions and aggregates must be marked PARALLEL UNSAFE if they write to the database, access sequences, change the transaction state - even temporarily (e.g., a PL/pgSQL function which establishes an + even temporarily (e.g., a PL/pgSQL function that establishes an EXCEPTION block to catch errors), or make persistent changes to settings. Similarly, functions must be marked PARALLEL RESTRICTED if they access temporary tables, client connection state, - cursors, prepared statements, or miscellaneous backend-local state which + cursors, prepared statements, or miscellaneous backend-local state that the system cannot synchronize across workers. For example, setseed and random are parallel restricted for this last reason. @@ -515,10 +515,10 @@ - If a function executed within a parallel worker acquires locks which are + If a function executed within a parallel worker acquires locks that are not held by the leader, for example by querying a table not referenced in the query, those locks will be released at worker exit, not end of - transaction. If you write a function which does this, and this behavior + transaction. If you write a function that does this, and this behavior difference is important to you, mark such functions as PARALLEL RESTRICTED to ensure that they execute only in the leader. diff -Nru postgresql-10-10.17/doc/src/sgml/pgcrypto.sgml postgresql-10-10.19/doc/src/sgml/pgcrypto.sgml --- postgresql-10-10.17/doc/src/sgml/pgcrypto.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/pgcrypto.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -1226,6 +1226,13 @@ + When compiled against OpenSSL 3.0.0 and later + versions, the legacy provider must be activated in the + openssl.cnf configuration file in order to use older + ciphers like DES or Blowfish. + + + Notes: diff -Nru postgresql-10-10.17/doc/src/sgml/postgres-fdw.sgml postgresql-10-10.19/doc/src/sgml/postgres-fdw.sgml --- postgresql-10-10.17/doc/src/sgml/postgres-fdw.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/postgres-fdw.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -82,8 +82,8 @@ referenced columns of the remote table. Although postgres_fdw is currently rather forgiving about performing data type conversions at need, surprising semantic anomalies may arise when types or collations do - not match, due to the remote server interpreting WHERE clauses - slightly differently from the local server. + not match, due to the remote server interpreting query conditions + differently from the local server. @@ -382,6 +382,17 @@ need to turn this off if the remote server has a different set of collation names than the local server does, which is likely to be the case if it's running on a different operating system. + If you do so, however, there is a very severe risk that the imported + table columns' collations will not match the underlying data, resulting + in anomalous query behavior. + + + + Even when this parameter is set to true, importing + columns whose collation is the remote server's default can be risky. + They will be imported with COLLATE "default", which + will select the local server's default collation, which could be + different. diff -Nru postgresql-10-10.17/doc/src/sgml/postgres.sgml postgresql-10-10.19/doc/src/sgml/postgres.sgml --- postgresql-10-10.17/doc/src/sgml/postgres.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/postgres.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -254,6 +254,7 @@ &spgist; &gin; &brin; + &hash; &storage; &bki; &planstats; diff -Nru postgresql-10-10.17/doc/src/sgml/protocol.sgml postgresql-10-10.19/doc/src/sgml/protocol.sgml --- postgresql-10-10.17/doc/src/sgml/protocol.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/protocol.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -1349,6 +1349,20 @@ + When SSL encryption can be performed, the server + is expected to send only the single S byte and then + wait for the frontend to initiate an SSL handshake. + If additional bytes are available to read at this point, it likely + means that a man-in-the-middle is attempting to perform a + buffer-stuffing attack + (CVE-2021-23222). + Frontends should be coded either to read exactly one byte from the + socket before turning the socket over to their SSL library, or to + treat it as a protocol violation if they find they have read additional + bytes. + + + An initial SSLRequest can also be used in a connection that is being opened to send a CancelRequest message. diff -Nru postgresql-10-10.17/doc/src/sgml/queries.sgml postgresql-10-10.19/doc/src/sgml/queries.sgml --- postgresql-10-10.17/doc/src/sgml/queries.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/queries.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -1649,17 +1649,9 @@ query1 INTERSECT ALL query2 query1 EXCEPT ALL query2 - query1 and + where query1 and query2 are queries that can use any of - the features discussed up to this point. Set operations can also - be nested and chained, for example - -query1 UNION query2 UNION query3 - - which is executed as: - -(query1 UNION query2) UNION query3 - + the features discussed up to this point. @@ -1693,6 +1685,47 @@ the corresponding columns have compatible data types, as described in . + + + Set operations can be combined, for example + +query1 UNION query2 EXCEPT query3 + + which is equivalent to + +(query1 UNION query2) EXCEPT query3 + + As shown here, you can use parentheses to control the order of + evaluation. Without parentheses, UNION + and EXCEPT associate left-to-right, + but INTERSECT binds more tightly than those two + operators. Thus + +query1 UNION query2 INTERSECT query3 + + means + +query1 UNION (query2 INTERSECT query3) + + You can also surround an individual query + with parentheses. This is important if + the query needs to use any of the clauses + discussed in following sections, such as LIMIT. + Without parentheses, you'll get a syntax error, or else the clause will + be understood as applying to the output of the set operation rather + than one of its inputs. For example, + +SELECT a FROM b UNION SELECT x FROM y LIMIT 10 + + is accepted, but it means + +(SELECT a FROM b UNION SELECT x FROM y) LIMIT 10 + + not + +SELECT a FROM b UNION (SELECT x FROM y LIMIT 10) + + diff -Nru postgresql-10-10.17/doc/src/sgml/ref/alter_function.sgml postgresql-10-10.19/doc/src/sgml/ref/alter_function.sgml --- postgresql-10-10.17/doc/src/sgml/ref/alter_function.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/alter_function.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -35,7 +35,8 @@ where action is one of: CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT - IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF + IMMUTABLE | STABLE | VOLATILE + [ NOT ] LEAKPROOF [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER PARALLEL { UNSAFE | RESTRICTED | SAFE } COST execution_cost diff -Nru postgresql-10-10.17/doc/src/sgml/ref/copy.sgml postgresql-10-10.19/doc/src/sgml/ref/copy.sgml --- postgresql-10-10.17/doc/src/sgml/ref/copy.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/copy.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -610,12 +610,12 @@ \digits Backslash followed by one to three octal digits specifies - the character with that numeric code + the byte with that numeric code \xdigits Backslash x followed by one or two hex digits specifies - the character with that numeric code + the byte with that numeric code @@ -648,6 +648,12 @@ + All backslash sequences are interpreted after encoding conversion. + The bytes specified with the octal and hex-digit backslash sequences must + form valid characters in the database encoding. + + + COPY TO will terminate each row with a Unix-style newline (\n). Servers running on Microsoft Windows instead output carriage return/newline (\r\n), but only for diff -Nru postgresql-10-10.17/doc/src/sgml/ref/create_event_trigger.sgml postgresql-10-10.19/doc/src/sgml/ref/create_event_trigger.sgml --- postgresql-10-10.17/doc/src/sgml/ref/create_event_trigger.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/create_event_trigger.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -23,7 +23,7 @@ CREATE EVENT TRIGGER name ON event - [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ] + [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ] EXECUTE PROCEDURE function_name() diff -Nru postgresql-10-10.17/doc/src/sgml/ref/create_function.sgml postgresql-10-10.19/doc/src/sgml/ref/create_function.sgml --- postgresql-10-10.17/doc/src/sgml/ref/create_function.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/create_function.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -28,9 +28,10 @@ { LANGUAGE lang_name | TRANSFORM { FOR TYPE type_name } [, ... ] | WINDOW - | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF - | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT - | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER + | { IMMUTABLE | STABLE | VOLATILE } + | [ NOT ] LEAKPROOF + | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } + | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER } | PARALLEL { UNSAFE | RESTRICTED | SAFE } | COST execution_cost | ROWS result_rows diff -Nru postgresql-10-10.17/doc/src/sgml/ref/drop_statistics.sgml postgresql-10-10.19/doc/src/sgml/ref/drop_statistics.sgml --- postgresql-10-10.17/doc/src/sgml/ref/drop_statistics.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/drop_statistics.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -21,7 +21,7 @@ -DROP STATISTICS [ IF EXISTS ] name [, ...] +DROP STATISTICS [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] @@ -58,6 +58,18 @@ + + + CASCADE + RESTRICT + + + + These key words do not have any effect, since there are no dependencies + on statistics. + + + diff -Nru postgresql-10-10.17/doc/src/sgml/ref/pg_receivewal.sgml postgresql-10-10.19/doc/src/sgml/ref/pg_receivewal.sgml --- postgresql-10-10.17/doc/src/sgml/ref/pg_receivewal.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/pg_receivewal.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -77,6 +77,29 @@ + The starting point of the write-ahead log streaming is calculated when + pg_receivewal starts: + + + + First, scan the directory where the WAL segment files are written and + find the newest completed segment file, using as starting point the + beginning of the next WAL segment file. This is calculated independently + on the compression method used to compress each segment. + + + + + + If a starting point cannot be calculated with the previous method, + the latest WAL flush location is used as reported by the server from + a IDENTIFY_SYSTEM command. + + + + + + If the connection is lost, or if it cannot be initially established, with a non-fatal error, pg_receivewal will retry the connection indefinitely, and reestablish streaming as soon diff -Nru postgresql-10-10.17/doc/src/sgml/ref/pg_resetwal.sgml postgresql-10-10.19/doc/src/sgml/ref/pg_resetwal.sgml --- postgresql-10-10.17/doc/src/sgml/ref/pg_resetwal.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/pg_resetwal.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -248,6 +248,25 @@ + + + + Manually set the oldest unfrozen transaction ID. + + + + A safe value can be determined by looking for the numerically smallest + file name in the directory pg_xact under the data directory + and then multiplying by 1048576 (0x100000). Note that the file names are in + hexadecimal. It is usually easiest to specify the option value in + hexadecimal too. For example, if 0007 is the smallest entry + in pg_xact, -u 0x700000 will work (five + trailing zeroes provide the proper multiplier). + + + + + xid diff -Nru postgresql-10-10.17/doc/src/sgml/ref/pgupgrade.sgml postgresql-10-10.19/doc/src/sgml/ref/pgupgrade.sgml --- postgresql-10-10.17/doc/src/sgml/ref/pgupgrade.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/pgupgrade.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -269,17 +269,28 @@ - Install custom shared object files + Install extension shared object files - Install any custom shared object files (or DLLs) used by the old cluster - into the new cluster, e.g., pgcrypto.so, - whether they are from contrib - or some other source. Do not install the schema definitions, e.g., - CREATE EXTENSION pgcrypto, because these will be upgraded - from the old cluster. - Also, any custom full text search files (dictionary, synonym, - thesaurus, stop words) must also be copied to the new cluster. + Many extensions and custom modules, whether from + contrib or another source, use shared object + files (or DLLs), e.g., pgcrypto.so. If the old + cluster used these, shared object files matching the new server binary + must be installed in the new cluster, usually via operating system + commands. Do not load the schema definitions, e.g., CREATE + EXTENSION pgcrypto, because these will be duplicated from + the old cluster. If extension updates are available, + pg_upgrade will report this and create + a script that can be run later to update them. + + + + + Copy custom full-text search files + + + Copy any custom full text search files (dictionary, synonym, + thesaurus, stop words) from the old to the new cluster. @@ -459,10 +470,10 @@ - Install custom shared object files + Install extension shared object files - Install the same custom shared object files on the new standbys + Install the same extension shared object files on the new standbys that you installed in the new primary cluster. diff -Nru postgresql-10-10.17/doc/src/sgml/ref/reindexdb.sgml postgresql-10-10.19/doc/src/sgml/ref/reindexdb.sgml --- postgresql-10-10.17/doc/src/sgml/ref/reindexdb.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/reindexdb.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -174,7 +174,7 @@ - Reindex database's system catalogs. + Reindex database's system catalogs only. diff -Nru postgresql-10-10.17/doc/src/sgml/ref/set_transaction.sgml postgresql-10-10.19/doc/src/sgml/ref/set_transaction.sgml --- postgresql-10-10.17/doc/src/sgml/ref/set_transaction.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/ref/set_transaction.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -202,7 +202,7 @@ - The session default transaction modes can also be set by setting the + The session default transaction modes can also be set or examined via the configuration parameters , , and . @@ -212,6 +212,17 @@ ALTER DATABASE, etc. Consult for more information. + + + The current transaction's modes can similarly be set or examined via the + configuration parameters , + , and + . Setting one of these + parameters acts the same as the corresponding SET + TRANSACTION option, with the same restrictions on when it can + be done. However, these parameters cannot be set in the configuration + file, or from any source other than live SQL. + diff -Nru postgresql-10-10.17/doc/src/sgml/regress.sgml postgresql-10-10.19/doc/src/sgml/regress.sgml --- postgresql-10-10.17/doc/src/sgml/regress.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/regress.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -678,6 +678,8 @@ The TAP tests require the Perl module IPC::Run. This module is available from CPAN or an operating system package. + They also require PostgreSQL to be + configured with the option . diff -Nru postgresql-10-10.17/doc/src/sgml/release-10.sgml postgresql-10-10.19/doc/src/sgml/release-10.sgml --- postgresql-10-10.17/doc/src/sgml/release-10.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/release-10.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -1,6 +1,2579 @@ + + Release 10.19 + + + Release date: + 2021-11-11 + + + + This release contains a variety of fixes from 10.18. + For information about new features in major release 10, see + . + + + + Migration to Version 10.19 + + + A dump/restore is not required for those running 10.X. + + + + However, note that installations using physical replication should + update standby servers before the primary server, as explained in + the third changelog entry below. + + + + Also, several bugs have been found that may have resulted in corrupted + indexes, as explained in the next several changelog entries. If any + of those cases apply to you, it's recommended to reindex + possibly-affected indexes after updating. + + + + Also, if you are upgrading from a version earlier than 10.16, + see . + + + + + Changes + + + + + + + Make the server reject extraneous data after an SSL or GSS + encryption handshake (Tom Lane) + + + + A man-in-the-middle with the ability to inject data into the TCP + connection could stuff some cleartext data into the start of a + supposedly encryption-protected database session. + This could be abused to send faked SQL commands to the server, + although that would only work if the server did not demand any + authentication data. (However, a server relying on SSL certificate + authentication might well not do so.) + + + + The PostgreSQL Project thanks + Jacob Champion for reporting this problem. + (CVE-2021-23214) + + + + + + + Make libpq reject extraneous data after + an SSL or GSS encryption handshake (Tom Lane) + + + + A man-in-the-middle with the ability to inject data into the TCP + connection could stuff some cleartext data into the start of a + supposedly encryption-protected database session. + This could probably be abused to inject faked responses to the + client's first few queries, although other details of libpq's + behavior make that harder than it sounds. A different line of + attack is to exfiltrate the client's password, or other sensitive + data that might be sent early in the session. That has been shown + to be possible with a server vulnerable to CVE-2021-23214. + + + + The PostgreSQL Project thanks + Jacob Champion for reporting this problem. + (CVE-2021-23222) + + + + + + + Fix physical replication for cases where the primary crashes + after shipping a WAL segment that ends with a partial WAL record + (Álvaro Herrera) + + + + If the primary did not survive long enough to finish writing the + rest of the incomplete WAL record, then the previous crash-recovery + logic had it back up and overwrite WAL starting from the beginning + of the incomplete WAL record. This is problematic since standby + servers may already have copies of that WAL segment. They will then + see an inconsistent next segment, and will not be able to recover + without manual intervention. To fix, do not back up over a WAL + segment boundary when restarting after a crash. Instead write a new + type of WAL record at the start of the next WAL segment, informing + readers that the incomplete WAL record will never be finished and + must be disregarded. + + + + When applying this update, it's best to update standby servers + before the primary, so that they will be ready to handle this new + WAL record type if the primary happens to crash. + + + + + + + Fix CREATE INDEX CONCURRENTLY to wait for + the latest prepared transactions (Andrey Borodin) + + + + Rows inserted by just-prepared transactions might be omitted from + the new index, causing queries relying on the index to miss such + rows. The previous fix for this type of problem failed to account + for PREPARE TRANSACTION commands that were still + in progress when CREATE INDEX CONCURRENTLY + checked for them. As before, in installations that have enabled + prepared transactions (max_prepared_transactions + > 0), it's recommended to reindex any concurrently-built indexes + in case this problem occurred when they were built. + + + + + + + Avoid race condition that can cause backends to fail to add entries + for new rows to an index being built concurrently (Noah Misch, + Andrey Borodin) + + + + While it's apparently rare in the field, this case could potentially + affect any index built or reindexed with + the CONCURRENTLY option. It is recommended to + reindex any such indexes to make sure they are correct. + + + + + + + Fix float4 and float8 hash functions to + produce uniform results for NaNs (Tom Lane) + + + + Since PostgreSQL's floating-point types + deem all NaNs to be equal, it's important for the hash functions to + produce the same hash code for all bit-patterns that are NaNs + according to the IEEE 754 standard. This failed to happen before, + meaning that hash indexes and hash-based query plans might produce + incorrect results for non-canonical NaN values. + ('-NaN'::float8 is one way to produce such a + value on most machines.) It is advisable to reindex hash indexes + on floating-point columns, if there is any possibility that they + might contain such values. + + + + + + + Prevent data loss during crash recovery of CREATE + TABLESPACE, when wal_level + = minimal (Noah Misch) + + + + If the server crashed between CREATE TABLESPACE + and the next checkpoint, replay would fully remove the contents of + the new tablespace's directory, relying on subsequent WAL replay + to restore everything within that directory. This interacts badly + with optimizations that skip writing WAL (one example + is COPY into a just-created table). Such + optimizations are applied only when wal_level + is minimal, which is not the default in v10 and + later. + + + + + + + Ensure that the relation cache is invalidated for a table being + attached to or detached from a partitioned table (Amit Langote, + Álvaro Herrera) + + + + This oversight could allow misbehavior of subsequent inserts/updates + addressed directly to the partition, but only in currently-existing + sessions. + + + + + + + Ensure that the relation cache is invalidated when creating or + dropping a FOR ALL TABLES publication + (Hou Zhijie, Vignesh C) + + + + This oversight could lead to improper replication behavior until all + currently-existing sessions have exited. + + + + + + + Don't discard a cast to the same type with unspecified type modifier + (Tom Lane) + + + + For example, if column f1 is of + type numeric(18,3), the parser used to simply + discard a cast like f1::numeric, on the grounds + that it would have no run-time effect. That's true, but the exposed + type of the expression should still be considered to be + plain numeric, + not numeric(18,3). This is important for + correctly resolving the type of larger constructs, such + as recursive UNIONs. + + + + + + + Disallow creating an ICU collation if the current database's + encoding won't support it (Tom Lane) + + + + Previously this was allowed, but then the collation could not be + referenced because of the way collation lookup works; you could not + use the collation, nor even drop it. + + + + + + + Fix corner-case loss of precision in + numeric power() (Dean Rasheed) + + + + The result could be inaccurate when the first argument is very close + to 1. + + + + + + + Avoid regular expression errors with capturing parentheses + inside {0} (Tom Lane) + + + + Regular expressions like (.){0}...\1 drew + invalid backreference number. Other regexp engines + such as Perl don't complain, though, and for that matter ours + doesn't either in some closely related cases. Worse, it could throw + an assertion failure instead. Fix it so that no error is thrown and + instead the back-reference is silently deemed to never match. + + + + + + + Prevent regular expression back-references from sometimes matching + when they shouldn't (Tom Lane) + + + + The regexp engine was careless about clearing match data + for capturing parentheses after rejecting a partial match. This + could allow a later back-reference to match in places where it + should fail for lack of a defined referent. + + + + + + + Fix regular expression performance bug with back-references inside + iteration nodes (Tom Lane) + + + + Incorrect back-tracking logic could result in exponential time spent + looking for a match. Fortunately the problem is masked in most + cases by other optimizations. + + + + + + + Fix incorrect results from AT TIME ZONE applied + to a time with time zone value (Tom Lane) + + + + The results were incorrect if the target time zone was specified by + a dynamic timezone abbreviation (that is, one that is defined as + equivalent to a full time zone name, rather than a fixed UTC offset). + + + + + + + Avoid using MCV-only statistics to estimate the range of a column + (Tom Lane) + + + + There are corner cases in which ANALYZE will + build a most-common-values (MCV) list but not a histogram, even + though the MCV list does not account for all the observed values. + In such cases, keep the planner from using the MCV list alone to + estimate the range of column values. + + + + + + + Clean up correctly if a transaction fails after exporting its + snapshot (Dilip Kumar) + + + + This oversight would only cause a problem if the same session + attempted to export a snapshot again. The most likely scenario for + that is creation of a replication slot (followed by rollback) + and then creation of another replication slot. + + + + + + + Prevent wraparound of overflowed-subtransaction tracking on standby + servers (Kyotaro Horiguchi, Alexander Korotkov) + + + + This oversight could cause significant performance degradation + (manifesting as excessive SubtransSLRU traffic) on standby servers. + + + + + + + Ensure that prepared transactions are properly accounted for during + promotion of a standby server (Michael Paquier, Andres Freund) + + + + There was a narrow window where a prepared transaction could be + omitted from a snapshot taken by a concurrently-running session. + If that session then used the snapshot to perform data updates, + erroneous results or data corruption could occur. + + + + + + + Fix detection of a relation that has grown to the maximum allowed + length (Tom Lane) + + + + An attempt to extend a table or index past the limit of 2^32-1 + blocks was rejected, but not soon enough to prevent inconsistent + internal state from being created. + + + + + + + Correctly track the presence of data-modifying CTEs when expanding + a DO INSTEAD rule (Greg Nancarrow, Tom Lane) + + + + The previous failure to do this could lead to problems such as + unsafely choosing a parallel plan. + + + + + + + Fix incorrect reporting of permissions failures on extended + statistics objects (Tomas Vondra) + + + + The code typically produced cache lookup error rather + than the intended message. + + + + + + + Fix incorrect snapshot handling in parallel workers (Greg Nancarrow) + + + + This oversight could lead to misbehavior in parallel queries if the + transaction isolation level is less than REPEATABLE + READ. + + + + + + + Ensure that walreceiver processes create all required archive + notification files before exiting (Fujii Masao) + + + + If a walreceiver exited exactly at a WAL segment boundary, it failed + to make a notification file for the last-received segment, thus + delaying archiving of that segment on the standby. + + + + + + + Avoid trying to lock the OLD + and NEW pseudo-relations in a rule + that uses SELECT FOR UPDATE + (Masahiko Sawada, Tom Lane) + + + + + + + Fix parser's processing of aggregate FILTER + clauses (Tom Lane) + + + + If the FILTER expression is a plain boolean column, + the semantic level of the aggregate could be mis-determined, leading + to not-per-spec behavior. If the FILTER + expression is itself a boolean-returning aggregate, an error should + be thrown but was not, likely resulting in a crash at execution. + + + + + + + Avoid null-pointer-dereference crash when dropping a role that owns + objects being dropped concurrently (Álvaro Herrera) + + + + + + + Prevent snapshot reference leak warning + when lo_export() or a related function fails + (Heikki Linnakangas) + + + + + + + Ensure that scans of SP-GiST indexes are counted in the statistics + views (Tom Lane) + + + + Incrementing the number-of-index-scans counter was overlooked in the + SP-GiST code, although per-tuple counters were advanced correctly. + + + + + + + Recalculate relevant wait intervals + if recovery_min_apply_delay is changed during + recovery (Soumyadeep Chakraborty, Ashwin Agrawal) + + + + + + + Fix infinite loop if a simplehash.h hash table + reaches 2^32 elements (Yura Sokolov) + + + + It seems unlikely that this bug has been hit in practice, as it + would require work_mem settings of hundreds of + gigabytes for existing uses of simplehash.h. + + + + + + + Reduce memory consumption during calculation of extended statistics + (Justin Pryzby, Tomas Vondra) + + + + + + + Fix ecpg to recover correctly + after malloc() failure while establishing a + connection (Michael Paquier) + + + + + + + Allow EXIT out of the outermost block in a + PL/pgSQL routine (Tom Lane) + + + + If the routine does not require an explicit RETURN, + this usage should be valid, but it was rejected. + + + + + + + Remove pg_ctl's hard-coded limits on the + total length of generated commands (Phil Krylov) + + + + For example, this removes a restriction on how many command-line + options can be passed through to the postmaster. Individual path + names that pg_ctl deals with, such as the + postmaster executable's name or the data directory name, are still + limited to MAXPGPATH bytes in most cases. + + + + + + + Fix pg_dump to dump non-global default + privileges correctly (Neil Chen, Masahiko Sawada) + + + + If a global (unrestricted) ALTER DEFAULT + PRIVILEGES command revoked some present-by-default + privilege, for example EXECUTE for functions, and + then a restricted ALTER DEFAULT PRIVILEGES + command granted that privilege again for a selected role or + schema, pg_dump failed to dump the + restricted privilege grant correctly. + + + + + + + Make pg_dump acquire shared lock on + partitioned tables that are to be dumped (Tom Lane) + + + + This oversight was usually pretty harmless, since + once pg_dump has locked any of the leaf + partitions, that would suffice to prevent significant DDL on the + partitioned table itself. However problems could ensue when dumping + a childless partitioned table, since no relevant lock would be held. + + + + + + + Improve pg_dump's performance by avoiding + making per-table queries for RLS policies, and by avoiding repetitive + calls to format_type() (Tom Lane) + + + + These changes provide only marginal improvement when dumping from a + local server, but a dump from a remote server can benefit + substantially due to fewer network round-trips. + + + + + + + Fix incorrect filename in pg_restore's + error message about an invalid large object TOC file (Daniel + Gustafsson) + + + + + + + Fix failure of contrib/btree_gin indexes + on "char" + (not char(n)) columns, + when an indexscan using the < + or <= operator is performed (Tom Lane) + + + + Such an indexscan failed to return all the entries it should. + + + + + + + Change contrib/pg_stat_statements to read + its query texts file in units of at most 1GB + (Tom Lane) + + + + Such large query text files are very unusual, but if they do occur, + the previous coding would fail on Windows 64 (which rejects + individual read requests of more than 2GB). + + + + + + + Fix null-pointer crash + when contrib/postgres_fdw tries to report a + data conversion error (Tom Lane) + + + + + + + Add spinlock support for the RISC-V architecture (Marek Szuba) + + + + This is essential for reasonable performance on that platform. + + + + + + + Support OpenSSL 3.0.0 + (Peter Eisentraut, Daniel Gustafsson, Michael Paquier) + + + + + + + Set correct type identifier on OpenSSL BIO (I/O abstraction) + objects created by PostgreSQL + (Itamar Gafni) + + + + This oversight probably only matters for code that is doing + tasks like auditing the OpenSSL installation. But it's + nominally a violation of the OpenSSL API, so fix it. + + + + + + + Make pg_regexec() robust against an + out-of-range search_start parameter + (Tom Lane) + + + + Return REG_NOMATCH, instead of possibly crashing, + when search_start is past the end of the + string. This case is probably unreachable within + core PostgreSQL, but extensions might be + more careless about the parameter value. + + + + + + + Ensure that GetSharedSecurityLabel() can be + used in a newly-started session that has not yet built its critical + relation cache entries (Jeff Davis) + + + + + + + Use the CLDR project's data to map Windows time zone names to IANA + time zones (Tom Lane) + + + + When running on Windows, initdb attempts + to set the new cluster's timezone parameter to + the IANA time zone matching the system's prevailing time zone. + We were using a mapping table that we'd generated years ago and + updated only fitfully; unsurprisingly, it contained a number of + errors as well as omissions of recently-added zones. It turns out + that CLDR has been tracking the most appropriate mappings, so start + using their data. This change will not affect any existing + installation, only newly-initialized clusters. + + + + + + + Update time zone data files to tzdata + release 2021e for DST law changes in Fiji, Jordan, Palestine, and + Samoa, plus historical corrections for Barbados, Cook Islands, + Guyana, Niue, Portugal, and Tonga. + + + + Also, the Pacific/Enderbury zone has been renamed to Pacific/Kanton. + Also, the following zones have been merged into nearby, more-populous + zones whose clocks have agreed with them since 1970: Africa/Accra, + America/Atikokan, America/Blanc-Sablon, America/Creston, + America/Curacao, America/Nassau, America/Port_of_Spain, + Antarctica/DumontDUrville, and Antarctica/Syowa. + In all these cases, the previous zone name remains as an alias. + + + + + + + + + + Release 10.18 + + + Release date: + 2021-08-12 + + + + This release contains a variety of fixes from 10.17. + For information about new features in major release 10, see + . + + + + Migration to Version 10.18 + + + A dump/restore is not required for those running 10.X. + + + + However, if you are upgrading from a version earlier than 10.16, + see . + + + + + Changes + + + + + + + Disallow SSL renegotiation more completely (Michael Paquier) + + + + SSL renegotiation has been disabled for some time, but the server + would still cooperate with a client-initiated renegotiation request. + A maliciously crafted renegotiation request could result in a server + crash (see OpenSSL issue CVE-2021-3449). Disable the feature + altogether on OpenSSL versions that permit doing so, which are + 1.1.0h and newer. + + + + + + + Reject SELECT ... GROUP BY GROUPING SETS (()) FOR + UPDATE (Tom Lane) + + + + This should be disallowed, just as FOR UPDATE + with a plain GROUP BY is disallowed, but the test + for that failed to handle empty grouping sets correctly. + The end result would be a null-pointer dereference in the executor. + + + + + + + Reject cases where a query in WITH + rewrites to just NOTIFY (Tom Lane) + + + + Such cases previously crashed. + + + + + + + In numeric multiplication, round the result rather than + failing if it would have more than 16383 digits after the decimal + point (Dean Rasheed) + + + + + + + Fix corner-case errors and loss of precision when + raising numeric values to very large powers + (Dean Rasheed) + + + + + + + Fix division-by-zero failure in to_char() + with EEEE format and a numeric input + value less than 10^(-1001) (Dean Rasheed) + + + + + + + Fix pg_size_pretty(bigint) to round negative + values consistently with the way it rounds positive ones (and + consistently with the numeric version) (Dean Rasheed, + David Rowley) + + + + + + + Make pg_filenode_relation(0, 0) return NULL + rather than failing (Justin Pryzby) + + + + + + + Make ALTER EXTENSION lock the extension when + adding or removing a member object (Tom Lane) + + + + The previous coding allowed ALTER EXTENSION + ADD/DROP to occur concurrently with DROP + EXTENSION, leading to a crash or corrupt catalog entries. + + + + + + + Fix ALTER SUBSCRIPTION to reject an empty slot + name (Japin Li) + + + + + + + Avoid alias conflicts in queries generated + for REFRESH MATERIALIZED VIEW CONCURRENTLY + (Tom Lane, Bharath Rupireddy) + + + + This command failed on materialized views containing columns with + certain names, notably mv + and newdata. + + + + + + + Fix PREPARE TRANSACTION to check correctly + for conflicting session-lifespan and transaction-lifespan locks + (Tom Lane) + + + + A transaction cannot be prepared if it has both session-lifespan and + transaction-lifespan locks on the same advisory-lock ID value. This + restriction was not fully checked, which could lead to a PANIC + during PREPARE TRANSACTION. + + + + + + + Fix misbehavior of DROP OWNED BY when the target + role is listed more than once in an RLS policy (Tom Lane) + + + + + + + Skip unnecessary error tests when removing a role from an RLS policy + during DROP OWNED BY (Tom Lane) + + + + Notably, this fixes some cases where it was necessary to be a + superuser to use DROP OWNED BY. + + + + + + + Allow index state flags to be updated transactionally + (Michael Paquier, Andrey Lepikhov) + + + + This avoids failures when dealing with index predicates that aren't + really immutable. While that's not considered a supported case, the + original reason for using a non-transactional update here is long + gone, so we may as well change it. + + + + + + + Avoid corrupting the plan cache entry when CREATE + DOMAIN or ALTER DOMAIN appears + in a cached plan (Tom Lane) + + + + + + + Make walsenders show their latest replication commands + in pg_stat_activity (Tom Lane) + + + + Previously, a walsender would show its latest SQL command, which was + confusing if it's now doing some replication operation instead. + Now we show replication-protocol commands on the same footing as SQL + commands. + + + + + + + Make + pg_settings.pending_restart + show as true when the pertinent entry + in postgresql.conf has been removed + (Álvaro Herrera) + + + + pending_restart correctly showed the case + where an entry that cannot be changed without a postmaster restart + has been modified, but not where the entry had been removed + altogether. + + + + + + + Fix corner-case failure of a new standby to follow a new primary + (Dilip Kumar, Robert Haas) + + + + Under a narrow combination of conditions, the standby could wind up + trying to follow the wrong WAL timeline. + + + + + + + Update minimum recovery point when WAL replay of a transaction abort + record causes file truncation (Fujii Masao) + + + + File truncation is irreversible, so it's no longer safe to stop + recovery at a point earlier than that record. The corresponding + case for transaction commit was fixed years ago, but this one was + overlooked. + + + + + + + In walreceivers, avoid attempting catalog lookups after an error + (Masahiko Sawada, Bharath Rupireddy) + + + + + + + Ensure that a standby server's startup process will respond to a + shutdown signal promptly while waiting for WAL to arrive (Fujii + Masao, Soumyadeep Chakraborty) + + + + + + + Add locking to avoid reading incorrect relmapper data in the face of + a concurrent write from another process (Heikki Linnakangas) + + + + + + + Improve checks for violations of replication protocol (Tom Lane) + + + + Logical replication workers frequently used Asserts to check for + cases that could be triggered by invalid or out-of-order replication + commands. This seems unwise, so promote these tests to regular + error checks. + + + + + + + Fix error cases and memory leaks in logical decoding of speculative + insertions (Dilip Kumar) + + + + + + + Fix plan cache reference leaks in some error cases in + CREATE TABLE ... AS EXECUTE (Tom Lane) + + + + + + + Fix possible race condition when releasing BackgroundWorkerSlots + (Tom Lane) + + + + It's likely that this doesn't fix any observable bug on Intel + hardware, but machines with weaker memory ordering rules could + have problems. + + + + + + + Fix latent crash in sorting code (Ronan Dunklau) + + + + One code path could attempt to free a null pointer. The case + appears unreachable in the core server's use of sorting, but perhaps + it could be triggered by extensions. + + + + + + + Prevent infinite loops in SP-GiST index insertion (Tom Lane) + + + + In the event that INCLUDE columns take up enough space to prevent a + leaf index tuple from ever fitting on a page, the text_ops operator + class would get into an infinite loop vainly trying to make the + tuple fit. + While pre-v11 versions don't have INCLUDE columns, back-patch this + anti-looping fix to them anyway, as it seems like a good defense + against bugs in operator classes. + + + + + + + Ensure that SP-GiST index insertion can be terminated by a query + cancel request (Tom Lane, Álvaro Herrera) + + + + + + + Fix uninitialized-variable bug that could + cause PL/pgSQL to act as though + an INTO clause + specified STRICT, even though it didn't + (Tom Lane) + + + + + + + Don't abort the process for an out-of-memory failure in libpq's + printing functions (Tom Lane) + + + + + + + In ecpg, allow the numeric + value INT_MIN (usually -2147483648) to be + converted to integer (John Naylor) + + + + + + + In psql and other client programs, avoid + overrunning the ends of strings when dealing with invalidly-encoded + data (Tom Lane) + + + + An incorrectly-encoded multibyte character near the end of a string + could cause various processing loops to run past the string's + terminating NUL, with results ranging from no detectable issue to + a program crash, depending on what happens to be in the following + memory. This is reminiscent of CVE-2006-2313, although these + particular cases do not appear to have interesting security + consequences. + + + + + + + Avoid invalid creation date in header warnings + observed when running pg_restore on an + archive file created in a different time zone (Tom Lane) + + + + + + + Make pg_upgrade carry forward the old + installation's oldestXID value (Bertrand Drouvot) + + + + Previously, the new installation's oldestXID was + set to a value old enough to (usually) force immediate + anti-wraparound autovacuuming. That's not desirable from a + performance standpoint; what's worse, installations using large + values of autovacuum_freeze_max_age could suffer + unwanted forced shutdowns soon after an upgrade. + + + + + + + Extend pg_upgrade to detect and warn + about extensions that should be upgraded (Bruce Momjian) + + + + A script file is now produced containing the ALTER + EXTENSION UPDATE commands needed to bring extensions up to + the versions that are considered default in the new installation. + + + + + + + Avoid problems when + switching pg_receivewal between + compressed and non-compressed WAL storage (Michael Paquier) + + + + + + + In contrib/postgres_fdw, avoid attempting + catalog lookups after an error (Tom Lane) + + + + While this usually worked, it's not very safe since the error might + have been one that made catalog access nonfunctional. A side effect + of the fix is that messages about data conversion errors will now + mention the query's table and column aliases (if used) rather than + the true underlying name of a foreign table or column. + + + + + + + Improve the isolation-test infrastructure (Tom Lane, Michael Paquier) + + + + Allow isolation test steps to be annotated to show the expected + completion order. This allows getting stable results from + otherwise-racy test cases, without the long delays that we + previously used (not entirely successfully) to fend off race + conditions. + Allow non-quoted identifiers as isolation test session/step names + (formerly, all such names had to be double-quoted). + Detect and warn about unused steps in isolation tests. + Improve display of query results in isolation tests. + Remove isolationtester's dry-run mode. + Remove memory leaks in isolationtester itself. + + + + + + + Reduce overhead of cache-clobber testing (Tom Lane) + + + + + + + Fix PL/Python's regression tests to pass + with Python 3.10 (Honza Horak) + + + + + + + Make printf("%s", NULL) + print (null) instead of crashing (Tom Lane) + + + + This should improve server robustness in corner cases, and it syncs + our printf implementation with common libraries. + + + + + + + Fix incorrect log message when point-in-time recovery stops at + a ROLLBACK PREPARED record (Simon Riggs) + + + + + + + Clarify error messages referring to non-negative + values (Bharath Rupireddy) + + + + + + + Fix configure to work with OpenLDAP 2.5, + which no longer has a separate libldap_r + library (Adrian Ho, Tom Lane) + + + + If there is no libldap_r library, we now + silently assume that libldap is thread-safe. + + + + + + + Add new make targets world-bin + and install-world-bin (Andrew Dunstan) + + + + These are the same as world + and install-world respectively, except that they + do not build or install the documentation. + + + + + + + Fix make rule for TAP tests (prove_installcheck) + to work in PGXS usage (Andrew Dunstan) + + + + + + + Allow PostgreSQL version 10 to build + with ICU 69 and newer (Peter Eisentraut) + + + + + + + Avoid assuming that strings returned by GSSAPI libraries are + null-terminated (Tom Lane) + + + + The GSSAPI spec provides for a string pointer and length. It seems + that in practice the next byte after the string is usually zero, + so that our previous coding didn't actually fail; but we do have + a report of AddressSanitizer complaints. + + + + + + + Enable building with GSSAPI on MSVC (Michael Paquier) + + + + Fix various incompatibilities with modern Kerberos builds. + + + + + + + In MSVC builds, include in the set of + configure options reported by pg_config, + if it had been specified (Andrew Dunstan) + + + + + + + + Release 10.17 @@ -110,7 +2683,7 @@ - GENERATED ALWAYS AS IDENTITY implies NOT + GENERATED ... AS IDENTITY implies NOT NULL, so don't allow it to be combined with an explicit NULL specification. diff -Nru postgresql-10-10.17/doc/src/sgml/rules.sgml postgresql-10-10.19/doc/src/sgml/rules.sgml --- postgresql-10-10.17/doc/src/sgml/rules.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/rules.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -546,7 +546,7 @@ Now we want to write a query that finds out for which shoes currently in the store we have the matching shoelaces (color and length) and where the - total number of exactly matching pairs is greater or equal to two. + total number of exactly matching pairs is greater than or equal to two. SELECT * FROM shoe_ready WHERE total_avail >= 2; diff -Nru postgresql-10-10.17/doc/src/sgml/sepgsql.sgml postgresql-10-10.19/doc/src/sgml/sepgsql.sgml --- postgresql-10-10.17/doc/src/sgml/sepgsql.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/sepgsql.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -762,7 +762,7 @@ - SELinux User's and Administrator's Guide + SELinux User's and Administrator's Guide This document provides a wide spectrum of knowledge to administer diff -Nru postgresql-10-10.17/doc/src/sgml/sources.sgml postgresql-10-10.19/doc/src/sgml/sources.sgml --- postgresql-10-10.17/doc/src/sgml/sources.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/sources.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -806,6 +806,16 @@ + + Non-negative + + Avoid non-negative as it is ambiguous + about whether it accepts zero. It's better to use + greater than zero or + greater than or equal to zero. + + + diff -Nru postgresql-10-10.17/doc/src/sgml/spgist.sgml postgresql-10-10.19/doc/src/sgml/spgist.sgml --- postgresql-10-10.17/doc/src/sgml/spgist.sgml 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/doc/src/sgml/spgist.sgml 2021-11-08 22:05:38.000000000 +0000 @@ -819,6 +819,18 @@ fails to do that, the SP-GiST core resorts to extraordinary measures described in . + + + When longValuesOK is true, it is expected + that successive levels of the SP-GiST tree will + absorb more and more information into the prefixes and node labels of + the inner tuples, making the required leaf datum smaller and smaller, + so that eventually it will fit on a page. + To prevent bugs in operator classes from causing infinite insertion + loops, the SP-GiST core will raise an error if the + leaf datum does not become any smaller within ten cycles + of choose method calls. + diff -Nru postgresql-10-10.17/.gitrevision postgresql-10-10.19/.gitrevision --- postgresql-10-10.17/.gitrevision 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/.gitrevision 2021-11-08 22:24:15.000000000 +0000 @@ -0,0 +1 @@ +477008d10fb5a024038ed23f0beba901f1f47ae2 diff -Nru postgresql-10-10.17/GNUmakefile.in postgresql-10-10.19/GNUmakefile.in --- postgresql-10-10.17/GNUmakefile.in 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/GNUmakefile.in 2021-11-08 22:05:38.000000000 +0000 @@ -23,6 +23,11 @@ # build src/ before contrib/ world-contrib-recurse: world-src-recurse +$(call recurse,world-bin,src config contrib,all) + +# build src/ before contrib/ +world-bin-contrib-recurse: world-bin-src-recurse + html man: $(MAKE) -C doc $@ @@ -39,6 +44,11 @@ # build src/ before contrib/ install-world-contrib-recurse: install-world-src-recurse +$(call recurse,install-world-bin,src config contrib,install) + +# build src/ before contrib/ +install-world-bin-contrib-recurse: install-world-bin-src-recurse + $(call recurse,installdirs uninstall init-po update-po,doc src config) $(call recurse,distprep coverage,doc src config contrib) diff -Nru postgresql-10-10.17/INSTALL postgresql-10-10.19/INSTALL --- postgresql-10-10.17/INSTALL 2021-05-10 20:59:02.000000000 +0000 +++ postgresql-10-10.19/INSTALL 2021-11-08 22:25:45.000000000 +0000 @@ -760,6 +760,10 @@ make world The last line displayed should be: PostgreSQL, contrib, and documentation successfully made. Ready to install. + If you want to build everything that can be built, including the + additional modules ("contrib"), but without the documentation, type + instead: +make world-bin 3. Regression Tests If you want to test the newly built server before you install it, you can run the regression tests at this point. The regression @@ -786,6 +790,9 @@ If you built the world above, type instead: make install-world This also installs the documentation. + If you built the world without the documentation above, type + instead: +make install-world-bin You can use make install-strip instead of make install to strip the executable files and libraries as they are installed. This will save some space. If you built with debugging support, stripping diff -Nru postgresql-10-10.17/src/backend/access/hash/hashfunc.c postgresql-10-10.19/src/backend/access/hash/hashfunc.c --- postgresql-10-10.17/src/backend/access/hash/hashfunc.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/hash/hashfunc.c 2021-11-08 22:05:38.000000000 +0000 @@ -26,6 +26,11 @@ #include "postgres.h" +#ifdef _MSC_VER +#include /* for _isnan */ +#endif +#include + #include "access/hash.h" #include "utils/builtins.h" @@ -113,6 +118,16 @@ */ key8 = key; + /* + * Similarly, NaNs can have different bit patterns but they should all + * compare as equal. For backwards-compatibility reasons we force them to + * have the hash value of a standard float8 NaN. (You'd think we could + * replace key with a float4 NaN and then widen it; but on some old + * platforms, that way produces a different bit pattern.) + */ + if (isnan(key8)) + key8 = get_float8_nan(); + return hash_any((unsigned char *) &key8, sizeof(key8)); } @@ -129,6 +144,14 @@ if (key == (float8) 0) PG_RETURN_UINT32(0); + /* + * Similarly, NaNs can have different bit patterns but they should all + * compare as equal. For backwards-compatibility reasons we force them to + * have the hash value of a standard NaN. + */ + if (isnan(key)) + key = get_float8_nan(); + return hash_any((unsigned char *) &key, sizeof(key)); } diff -Nru postgresql-10-10.17/src/backend/access/nbtree/nbtxlog.c postgresql-10-10.19/src/backend/access/nbtree/nbtxlog.c --- postgresql-10-10.17/src/backend/access/nbtree/nbtxlog.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/nbtree/nbtxlog.c 2021-11-08 22:05:38.000000000 +0000 @@ -69,7 +69,6 @@ if (PageAddItem(page, items[i], itemsizes[i], nitems - i, false, false) == InvalidOffsetNumber) elog(PANIC, "_bt_restore_page: cannot add item to page"); - from += itemsz; } } diff -Nru postgresql-10-10.17/src/backend/access/rmgrdesc/xlogdesc.c postgresql-10-10.19/src/backend/access/rmgrdesc/xlogdesc.c --- postgresql-10-10.17/src/backend/access/rmgrdesc/xlogdesc.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/rmgrdesc/xlogdesc.c 2021-11-08 22:05:38.000000000 +0000 @@ -138,6 +138,16 @@ xlrec.ThisTimeLineID, xlrec.PrevTimeLineID, timestamptz_to_str(xlrec.end_time)); } + else if (info == XLOG_OVERWRITE_CONTRECORD) + { + xl_overwrite_contrecord xlrec; + + memcpy(&xlrec, rec, sizeof(xl_overwrite_contrecord)); + appendStringInfo(buf, "lsn %X/%X; time %s", + (uint32) (xlrec.overwritten_lsn >> 32), + (uint32) xlrec.overwritten_lsn, + timestamptz_to_str(xlrec.overwrite_time)); + } } const char * @@ -177,6 +187,9 @@ case XLOG_END_OF_RECOVERY: id = "END_OF_RECOVERY"; break; + case XLOG_OVERWRITE_CONTRECORD: + id = "OVERWRITE_CONTRECORD"; + break; case XLOG_FPI: id = "FPI"; break; diff -Nru postgresql-10-10.17/src/backend/access/spgist/spgdoinsert.c postgresql-10-10.19/src/backend/access/spgist/spgdoinsert.c --- postgresql-10-10.17/src/backend/access/spgist/spgdoinsert.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/spgist/spgdoinsert.c 2021-11-08 22:05:38.000000000 +0000 @@ -669,7 +669,8 @@ * will eventually terminate if lack of balance is the issue. If the tuple * is too big, we assume that repeated picksplit operations will eventually * make it small enough by repeated prefix-stripping. A broken opclass could - * make this an infinite loop, though. + * make this an infinite loop, though, so spgdoinsert() checks that the + * leaf datums get smaller each time. */ static bool doPickSplit(Relation index, SpGistState *state, @@ -1884,16 +1885,19 @@ * Insert one item into the index. * * Returns true on success, false if we failed to complete the insertion - * because of conflict with a concurrent insert. In the latter case, - * caller should re-call spgdoinsert() with the same args. + * (typically because of conflict with a concurrent insert). In the latter + * case, caller should re-call spgdoinsert() with the same args. */ bool spgdoinsert(Relation index, SpGistState *state, ItemPointer heapPtr, Datum datum, bool isnull) { + bool result = true; int level = 0; Datum leafDatum; int leafSize; + int bestLeafSize; + int numNoProgressCycles = 0; SPPageDesc current, parent; FmgrInfo *procinfo = NULL; @@ -1919,7 +1923,7 @@ * Compute space needed for a leaf tuple containing the given datum. * * If it isn't gonna fit, and the opclass can't reduce the datum size by - * suffixing, bail out now rather than getting into an endless loop. + * suffixing, bail out now rather than doing a lot of useless work. */ if (!isnull) leafSize = SGLTHDRSZ + sizeof(ItemIdData) + @@ -1927,7 +1931,8 @@ else leafSize = SGDTSIZE + sizeof(ItemIdData); - if (leafSize > SPGIST_PAGE_CAPACITY && !state->config.longValuesOK) + if (leafSize > SPGIST_PAGE_CAPACITY && + (isnull || !state->config.longValuesOK)) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("index row size %zu exceeds maximum %zu for index \"%s\"", @@ -1935,6 +1940,7 @@ SPGIST_PAGE_CAPACITY - sizeof(ItemIdData), RelationGetRelationName(index)), errhint("Values larger than a buffer page cannot be indexed."))); + bestLeafSize = leafSize; /* Initialize "current" to the appropriate root page */ current.blkno = isnull ? SPGIST_NULL_BLKNO : SPGIST_ROOT_BLKNO; @@ -1950,6 +1956,14 @@ parent.offnum = InvalidOffsetNumber; parent.node = -1; + /* + * Before entering the loop, try to clear any pending interrupt condition. + * If a query cancel is pending, we might as well accept it now not later; + * while if a non-canceling condition is pending, servicing it here avoids + * having to restart the insertion and redo all the work so far. + */ + CHECK_FOR_INTERRUPTS(); + for (;;) { bool isNew = false; @@ -1957,9 +1971,18 @@ /* * Bail out if query cancel is pending. We must have this somewhere * in the loop since a broken opclass could produce an infinite - * picksplit loop. + * picksplit loop. However, because we'll be holding buffer lock(s) + * after the first iteration, ProcessInterrupts() wouldn't be able to + * throw a cancel error here. Hence, if we see that an interrupt is + * pending, break out of the loop and deal with the situation below. + * Set result = false because we must restart the insertion if the + * interrupt isn't a query-cancel-or-die case. */ - CHECK_FOR_INTERRUPTS(); + if (INTERRUPTS_PENDING_CONDITION()) + { + result = false; + break; + } if (current.blkno == InvalidBlockNumber) { @@ -2078,10 +2101,14 @@ * spgAddNode and spgSplitTuple cases will loop back to here to * complete the insertion operation. Just in case the choose * function is broken and produces add or split requests - * repeatedly, check for query cancel. + * repeatedly, check for query cancel (see comments above). */ process_inner_tuple: - CHECK_FOR_INTERRUPTS(); + if (INTERRUPTS_PENDING_CONDITION()) + { + result = false; + break; + } innerTuple = (SpGistInnerTuple) PageGetItem(current.page, PageGetItemId(current.page, current.offnum)); @@ -2142,18 +2169,52 @@ } /* + * Check new tuple size; fail if it can't fit, unless the + * opclass says it can handle the situation by suffixing. + * + * A buggy opclass might not ever make the leaf datum + * small enough, causing an infinite loop. To detect such + * a loop, check to see if we are making progress by + * reducing the leafSize in each pass. This is a bit + * tricky though. Because of alignment considerations, + * the total tuple size might not decrease on every pass. + * Also, there are edge cases where the choose method + * might seem to not make progress for a cycle or two. + * Somewhat arbitrarily, we allow up to 10 no-progress + * iterations before failing. (This limit should be more + * than MAXALIGN, to accommodate opclasses that trim one + * byte from the leaf datum per pass.) + */ + if (leafSize > SPGIST_PAGE_CAPACITY) + { + bool ok = false; + + if (state->config.longValuesOK && !isnull) + { + if (leafSize < bestLeafSize) + { + ok = true; + bestLeafSize = leafSize; + numNoProgressCycles = 0; + } + else if (++numNoProgressCycles < 10) + ok = true; + } + if (!ok) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("index row size %zu exceeds maximum %zu for index \"%s\"", + leafSize - sizeof(ItemIdData), + SPGIST_PAGE_CAPACITY - sizeof(ItemIdData), + RelationGetRelationName(index)), + errhint("Values larger than a buffer page cannot be indexed."))); + } + + /* * Loop around and attempt to insert the new leafDatum at * "current" (which might reference an existing child * tuple, or might be invalid to force us to find a new * page for the tuple). - * - * Note: if the opclass sets longValuesOK, we rely on the - * choose function to eventually shorten the leafDatum - * enough to fit on a page. We could add a test here to - * complain if the datum doesn't get visibly shorter each - * time, but that could get in the way of opclasses that - * "simplify" datums in a way that doesn't necessarily - * lead to physical shortening on every cycle. */ break; case spgAddNode: @@ -2204,5 +2265,21 @@ UnlockReleaseBuffer(parent.buffer); } - return true; + /* + * We do not support being called while some outer function is holding a + * buffer lock (or any other reason to postpone query cancels). If that + * were the case, telling the caller to retry would create an infinite + * loop. + */ + Assert(INTERRUPTS_CAN_BE_PROCESSED()); + + /* + * Finally, check for interrupts again. If there was a query cancel, + * ProcessInterrupts() will be able to throw the error here. If it was + * some other kind of interrupt that can just be cleared, return false to + * tell our caller to retry. + */ + CHECK_FOR_INTERRUPTS(); + + return result; } diff -Nru postgresql-10-10.17/src/backend/access/spgist/spgscan.c postgresql-10-10.19/src/backend/access/spgist/spgscan.c --- postgresql-10-10.17/src/backend/access/spgist/spgscan.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/spgist/spgscan.c 2021-11-08 22:05:38.000000000 +0000 @@ -18,6 +18,7 @@ #include "access/relscan.h" #include "access/spgist_private.h" #include "miscadmin.h" +#include "pgstat.h" #include "storage/bufmgr.h" #include "utils/datum.h" #include "utils/memutils.h" @@ -231,6 +232,9 @@ /* set up starting stack entries */ resetSpGistScanOpaque(so); + + /* count an indexscan for stats */ + pgstat_count_index_scan(scan->indexRelation); } void diff -Nru postgresql-10-10.17/src/backend/access/transam/multixact.c postgresql-10-10.19/src/backend/access/transam/multixact.c --- postgresql-10-10.17/src/backend/access/transam/multixact.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/transam/multixact.c 2021-11-08 22:05:38.000000000 +0000 @@ -1220,7 +1220,10 @@ debug_elog3(DEBUG2, "GetMembers: asked for %u", multi); if (!MultiXactIdIsValid(multi) || from_pgupgrade) + { + *members = NULL; return -1; + } /* See if the MultiXactId is in the local cache */ length = mXactCacheGetById(multi, members); @@ -1271,13 +1274,10 @@ LWLockRelease(MultiXactGenLock); if (MultiXactIdPrecedes(multi, oldestMXact)) - { ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("MultiXactId %u does no longer exist -- apparent wraparound", multi))); - return -1; - } if (!MultiXactIdPrecedes(multi, nextMXact)) ereport(ERROR, @@ -1377,7 +1377,6 @@ LWLockRelease(MultiXactOffsetControlLock); ptr = (MultiXactMember *) palloc(length * sizeof(MultiXactMember)); - *members = ptr; /* Now get the members themselves. */ LWLockAcquire(MultiXactMemberControlLock, LW_EXCLUSIVE); @@ -1422,6 +1421,9 @@ LWLockRelease(MultiXactMemberControlLock); + /* A multixid with zero members should not happen */ + Assert(truelength > 0); + /* * Copy the result into the local cache. */ @@ -1429,6 +1431,7 @@ debug_elog3(DEBUG2, "GetMembers: no cache for %s", mxid_to_string(multi, truelength, ptr)); + *members = ptr; return truelength; } @@ -1529,7 +1532,6 @@ size = sizeof(MultiXactMember) * entry->nmembers; ptr = (MultiXactMember *) palloc(size); - *members = ptr; memcpy(ptr, entry->members, size); @@ -1545,6 +1547,7 @@ */ dlist_move_head(&MXactCache, iter.cur); + *members = ptr; return entry->nmembers; } } diff -Nru postgresql-10-10.17/src/backend/access/transam/parallel.c postgresql-10-10.19/src/backend/access/transam/parallel.c --- postgresql-10-10.17/src/backend/access/transam/parallel.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/transam/parallel.c 2021-11-08 22:05:38.000000000 +0000 @@ -228,8 +228,11 @@ shm_toc_estimate_chunk(&pcxt->estimator, guc_len); combocidlen = EstimateComboCIDStateSpace(); shm_toc_estimate_chunk(&pcxt->estimator, combocidlen); - tsnaplen = EstimateSnapshotSpace(transaction_snapshot); - shm_toc_estimate_chunk(&pcxt->estimator, tsnaplen); + if (IsolationUsesXactSnapshot()) + { + tsnaplen = EstimateSnapshotSpace(transaction_snapshot); + shm_toc_estimate_chunk(&pcxt->estimator, tsnaplen); + } asnaplen = EstimateSnapshotSpace(active_snapshot); shm_toc_estimate_chunk(&pcxt->estimator, asnaplen); tstatelen = EstimateTransactionStateSpace(); @@ -325,11 +328,19 @@ SerializeComboCIDState(combocidlen, combocidspace); shm_toc_insert(pcxt->toc, PARALLEL_KEY_COMBO_CID, combocidspace); - /* Serialize transaction snapshot and active snapshot. */ - tsnapspace = shm_toc_allocate(pcxt->toc, tsnaplen); - SerializeSnapshot(transaction_snapshot, tsnapspace); - shm_toc_insert(pcxt->toc, PARALLEL_KEY_TRANSACTION_SNAPSHOT, - tsnapspace); + /* + * Serialize the transaction snapshot if the transaction + * isolation-level uses a transaction snapshot. + */ + if (IsolationUsesXactSnapshot()) + { + tsnapspace = shm_toc_allocate(pcxt->toc, tsnaplen); + SerializeSnapshot(transaction_snapshot, tsnapspace); + shm_toc_insert(pcxt->toc, PARALLEL_KEY_TRANSACTION_SNAPSHOT, + tsnapspace); + } + + /* Serialize the active snapshot. */ asnapspace = shm_toc_allocate(pcxt->toc, asnaplen); SerializeSnapshot(active_snapshot, asnapspace); shm_toc_insert(pcxt->toc, PARALLEL_KEY_ACTIVE_SNAPSHOT, asnapspace); @@ -1034,6 +1045,8 @@ char *asnapspace; char *tstatespace; StringInfoData msgbuf; + Snapshot tsnapshot; + Snapshot asnapshot; /* Set flag to indicate that we're initializing a parallel worker. */ InitializingParallelWorker = true; @@ -1172,14 +1185,25 @@ combocidspace = shm_toc_lookup(toc, PARALLEL_KEY_COMBO_CID, false); RestoreComboCIDState(combocidspace); - /* Restore transaction snapshot. */ - tsnapspace = shm_toc_lookup(toc, PARALLEL_KEY_TRANSACTION_SNAPSHOT, false); - RestoreTransactionSnapshot(RestoreSnapshot(tsnapspace), - fps->parallel_master_pgproc); - - /* Restore active snapshot. */ + /* + * If the transaction isolation level is REPEATABLE READ or SERIALIZABLE, + * the leader has serialized the transaction snapshot and we must restore + * it. At lower isolation levels, there is no transaction-lifetime + * snapshot, but we need TransactionXmin to get set to a value which is + * less than or equal to the xmin of every snapshot that will be used by + * this worker. The easiest way to accomplish that is to install the + * active snapshot as the transaction snapshot. Code running in this + * parallel worker might take new snapshots via GetTransactionSnapshot() + * or GetLatestSnapshot(), but it shouldn't have any way of acquiring a + * snapshot older than the active snapshot. + */ asnapspace = shm_toc_lookup(toc, PARALLEL_KEY_ACTIVE_SNAPSHOT, false); - PushActiveSnapshot(RestoreSnapshot(asnapspace)); + tsnapspace = shm_toc_lookup(toc, PARALLEL_KEY_TRANSACTION_SNAPSHOT, true); + asnapshot = RestoreSnapshot(asnapspace); + tsnapshot = tsnapspace ? RestoreSnapshot(tsnapspace) : asnapshot; + RestoreTransactionSnapshot(tsnapshot, + fps->parallel_master_pgproc); + PushActiveSnapshot(asnapshot); /* * We've changed which tuples we can see, and must therefore invalidate diff -Nru postgresql-10-10.17/src/backend/access/transam/twophase.c postgresql-10-10.19/src/backend/access/transam/twophase.c --- postgresql-10-10.17/src/backend/access/transam/twophase.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/transam/twophase.c 2021-11-08 22:05:38.000000000 +0000 @@ -463,14 +463,24 @@ proc->pgprocno = gxact->pgprocno; SHMQueueElemInit(&(proc->links)); proc->waitStatus = STATUS_OK; - /* We set up the gxact's VXID as InvalidBackendId/XID */ - proc->lxid = (LocalTransactionId) xid; + if (LocalTransactionIdIsValid(MyProc->lxid)) + { + /* clone VXID, for TwoPhaseGetXidByVirtualXID() to find */ + proc->lxid = MyProc->lxid; + proc->backendId = MyBackendId; + } + else + { + Assert(AmStartupProcess() || !IsPostmasterEnvironment); + /* GetLockConflicts() uses this to specify a wait on the XID */ + proc->lxid = xid; + proc->backendId = InvalidBackendId; + } pgxact->xid = xid; pgxact->xmin = InvalidTransactionId; pgxact->delayChkpt = false; pgxact->vacuumFlags = 0; proc->pid = 0; - proc->backendId = InvalidBackendId; proc->databaseId = databaseid; proc->roleId = owner; proc->isBackgroundWorker = false; @@ -843,6 +853,53 @@ return result; } + +/* + * TwoPhaseGetXidByVirtualXID + * Lookup VXID among xacts prepared since last startup. + * + * (This won't find recovered xacts.) If more than one matches, return any + * and set "have_more" to true. To witness multiple matches, a single + * BackendId must consume 2^32 LXIDs, with no intervening database restart. + */ +TransactionId +TwoPhaseGetXidByVirtualXID(VirtualTransactionId vxid, + bool *have_more) +{ + int i; + TransactionId result = InvalidTransactionId; + + Assert(VirtualTransactionIdIsValid(vxid)); + LWLockAcquire(TwoPhaseStateLock, LW_SHARED); + + for (i = 0; i < TwoPhaseState->numPrepXacts; i++) + { + GlobalTransaction gxact = TwoPhaseState->prepXacts[i]; + PGPROC *proc; + VirtualTransactionId proc_vxid; + + if (!gxact->valid) + continue; + proc = &ProcGlobal->allProcs[gxact->pgprocno]; + GET_VXID_FROM_PGPROC(proc_vxid, *proc); + if (VirtualTransactionIdEquals(vxid, proc_vxid)) + { + /* Startup process sets proc->backendId to InvalidBackendId. */ + Assert(!gxact->inredo); + + if (result != InvalidTransactionId) + { + *have_more = true; + break; + } + result = gxact->xid; + } + } + + LWLockRelease(TwoPhaseStateLock); + + return result; +} /* * TwoPhaseGetDummyProc diff -Nru postgresql-10-10.17/src/backend/access/transam/xact.c postgresql-10-10.19/src/backend/access/transam/xact.c --- postgresql-10-10.17/src/backend/access/transam/xact.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/transam/xact.c 2021-11-08 22:05:38.000000000 +0000 @@ -45,6 +45,7 @@ #include "replication/logical.h" #include "replication/logicallauncher.h" #include "replication/origin.h" +#include "replication/snapbuild.h" #include "replication/syncrep.h" #include "replication/walsender.h" #include "storage/condition_variable.h" @@ -2394,6 +2395,13 @@ XactLastRecEnd = 0; /* + * Transfer our locks to a dummy PGPROC. This has to be done before + * ProcArrayClearTransaction(). Otherwise, a GetLockConflicts() would + * conclude "xact already committed or aborted" for our locks. + */ + PostPrepare_Locks(xid); + + /* * Let others know about no transaction in progress by me. This has to be * done *after* the prepared transaction has been marked valid, else * someone may think it is unlocked and recyclable. @@ -2432,7 +2440,6 @@ PostPrepare_MultiXact(xid); - PostPrepare_Locks(xid); PostPrepare_PredicateLocks(xid); ResourceOwnerRelease(TopTransactionResourceOwner, @@ -2582,6 +2589,9 @@ /* Forget about any active REINDEX. */ ResetReindexState(s->nestingLevel); + /* Reset snapshot export state. */ + SnapBuildResetExportedSnapshotState(); + /* If in parallel mode, clean up workers and exit parallel mode. */ if (IsInParallelMode()) { @@ -4692,6 +4702,11 @@ /* Forget about any active REINDEX. */ ResetReindexState(s->nestingLevel); + /* + * No need for SnapBuildResetExportedSnapshotState() here, snapshot + * exports are not supported in subtransactions. + */ + /* Exit from parallel mode, if necessary. */ if (IsInParallelMode()) { @@ -5586,7 +5601,8 @@ * because subtransaction commit is never WAL logged. */ static void -xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid) +xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid, + XLogRecPtr lsn) { TransactionId max_xid; @@ -5651,7 +5667,16 @@ } /* Make sure files supposed to be dropped are dropped */ - DropRelationFiles(parsed->xnodes, parsed->nrels, true); + if (parsed->nrels > 0) + { + /* + * See comments about update of minimum recovery point on truncation, + * in xact_redo_commit(). + */ + XLogFlush(lsn); + + DropRelationFiles(parsed->xnodes, parsed->nrels, true); + } } void @@ -5691,7 +5716,7 @@ xl_xact_parsed_abort parsed; ParseAbortRecord(XLogRecGetInfo(record), xlrec, &parsed); - xact_redo_abort(&parsed, XLogRecGetXid(record)); + xact_redo_abort(&parsed, XLogRecGetXid(record), record->EndRecPtr); } else if (info == XLOG_XACT_ABORT_PREPARED) { @@ -5699,7 +5724,7 @@ xl_xact_parsed_abort parsed; ParseAbortRecord(XLogRecGetInfo(record), xlrec, &parsed); - xact_redo_abort(&parsed, parsed.twophase_xid); + xact_redo_abort(&parsed, parsed.twophase_xid, record->EndRecPtr); /* Delete TwoPhaseState gxact entry and/or 2PC file. */ LWLockAcquire(TwoPhaseStateLock, LW_EXCLUSIVE); diff -Nru postgresql-10-10.17/src/backend/access/transam/xlog.c postgresql-10-10.19/src/backend/access/transam/xlog.c --- postgresql-10-10.17/src/backend/access/transam/xlog.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/transam/xlog.c 2021-11-08 22:05:38.000000000 +0000 @@ -201,6 +201,15 @@ static TimeLineID receiveTLI = 0; /* + * abortedRecPtr is the start pointer of a broken record at end of WAL when + * recovery completes; missingContrecPtr is the location of the first + * contrecord that went missing. See CreateOverwriteContrecordRecord for + * details. + */ +static XLogRecPtr abortedRecPtr; +static XLogRecPtr missingContrecPtr; + +/* * During recovery, lastFullPageWrites keeps track of full_page_writes that * the replayed WAL records indicate. It's initialized with full_page_writes * that the recovery starting checkpoint record indicates, and then updated @@ -861,8 +870,11 @@ static void XLogReportParameters(void); static void checkTimeLineSwitch(XLogRecPtr lsn, TimeLineID newTLI, TimeLineID prevTLI); +static void VerifyOverwriteContrecord(xl_overwrite_contrecord *xlrec, + XLogReaderState *state); static void LocalSetXLogInsertAllowed(void); static void CreateEndOfRecoveryRecord(void); +static XLogRecPtr CreateOverwriteContrecordRecord(XLogRecPtr aborted_lsn); static void CheckPointGuts(XLogRecPtr checkPointRedo, int flags); static void KeepLogSeg(XLogRecPtr recptr, XLogSegNo *logSegNo); static XLogRecPtr XLogGetReplicationSlotMinimumLSN(void); @@ -2180,6 +2192,18 @@ NewPage->xlp_info |= XLP_BKP_REMOVABLE; /* + * If a record was found to be broken at the end of recovery, and + * we're going to write on the page where its first contrecord was + * lost, set the XLP_FIRST_IS_OVERWRITE_CONTRECORD flag on the page + * header. See CreateOverwriteContrecordRecord(). + */ + if (missingContrecPtr == NewPageBeginPtr) + { + NewPage->xlp_info |= XLP_FIRST_IS_OVERWRITE_CONTRECORD; + missingContrecPtr = InvalidXLogRecPtr; + } + + /* * If first page of an XLOG segment file, make it a long header. */ if ((NewPage->xlp_pageaddr % XLogSegSize) == 0) @@ -4232,6 +4256,19 @@ EndRecPtr = xlogreader->EndRecPtr; if (record == NULL) { + /* + * When not in standby mode we find that WAL ends in an incomplete + * record, keep track of that record. After recovery is done, + * we'll write a record to indicate downstream WAL readers that + * that portion is to be ignored. + */ + if (!StandbyMode && + !XLogRecPtrIsInvalid(xlogreader->abortedRecPtr)) + { + abortedRecPtr = xlogreader->abortedRecPtr; + missingContrecPtr = xlogreader->missingContrecPtr; + } + if (readFile >= 0) { close(readFile); @@ -5765,7 +5802,7 @@ xl_xact_abort *xlrec = (xl_xact_abort *) XLogRecGetData(record); xl_xact_parsed_abort parsed; - isCommit = true; + isCommit = false; ParseAbortRecord(XLogRecGetInfo(record), xlrec, &parsed); @@ -6094,13 +6131,23 @@ { ResetLatch(&XLogCtl->recoveryWakeupLatch); - /* might change the trigger file's location */ + /* + * This might change recovery_min_apply_delay or the trigger file's + * location. + */ HandleStartupProcInterrupts(); if (CheckForStandbyTrigger()) break; /* + * Recalculate recoveryDelayUntilTime as recovery_min_apply_delay + * could have changed while waiting in this loop. + */ + recoveryDelayUntilTime = + TimestampTzPlusMilliseconds(xtime, recovery_min_apply_delay); + + /* * Wait for difference between GetCurrentTimestamp() and * recoveryDelayUntilTime */ @@ -6823,6 +6870,12 @@ InRecovery = true; } + /* + * Start recovery assuming that the final record isn't lost. + */ + abortedRecPtr = InvalidXLogRecPtr; + missingContrecPtr = InvalidXLogRecPtr; + /* REDO */ if (InRecovery) { @@ -7414,8 +7467,9 @@ /* * Kill WAL receiver, if it's still running, before we continue to write - * the startup checkpoint record. It will trump over the checkpoint and - * subsequent records if it's still alive when we start writing WAL. + * the startup checkpoint and aborted-contrecord records. It will trump + * over these records and subsequent ones if it's still alive when we + * start writing WAL. */ ShutdownWalRcv(); @@ -7448,8 +7502,12 @@ StandbyMode = false; /* - * Re-fetch the last valid or last applied record, so we can identify the - * exact endpoint of what we consider the valid portion of WAL. + * Determine where to start writing WAL next. + * + * When recovery ended in an incomplete record, write a WAL record about + * that and continue after it. In all other cases, re-fetch the last + * valid or last applied record, so we can identify the exact endpoint of + * what we consider the valid portion of WAL. */ record = ReadRecord(xlogreader, LastRec, PANIC, false); EndOfLog = EndRecPtr; @@ -7599,6 +7657,18 @@ XLogCtl->PrevTimeLineID = PrevTimeLineID; /* + * Actually, if WAL ended in an incomplete record, skip the parts that + * made it through and start writing after the portion that persisted. + * (It's critical to first write an OVERWRITE_CONTRECORD message, which + * we'll do as soon as we're open for writing new WAL.) + */ + if (!XLogRecPtrIsInvalid(missingContrecPtr)) + { + Assert(!XLogRecPtrIsInvalid(abortedRecPtr)); + EndOfLog = missingContrecPtr; + } + + /* * Prepare to write WAL starting at EndOfLog location, and init xlog * buffer cache using the block containing the last record from the * previous incarnation. @@ -7650,13 +7720,23 @@ XLogCtl->LogwrtRqst.Write = EndOfLog; XLogCtl->LogwrtRqst.Flush = EndOfLog; + LocalSetXLogInsertAllowed(); + + /* If necessary, write overwrite-contrecord before doing anything else */ + if (!XLogRecPtrIsInvalid(abortedRecPtr)) + { + Assert(!XLogRecPtrIsInvalid(missingContrecPtr)); + CreateOverwriteContrecordRecord(abortedRecPtr); + abortedRecPtr = InvalidXLogRecPtr; + missingContrecPtr = InvalidXLogRecPtr; + } + /* * Update full_page_writes in shared memory and write an XLOG_FPW_CHANGE * record before resource manager writes cleanup WAL records or checkpoint * record is written. */ Insert->fullPageWrites = lastFullPageWrites; - LocalSetXLogInsertAllowed(); UpdateFullPageWrites(); LocalXLogInsertAllowed = -1; @@ -7835,13 +7915,6 @@ /* Reload shared-memory state for prepared transactions */ RecoverPreparedTransactions(); - /* - * Shutdown the recovery environment. This must occur after - * RecoverPreparedTransactions(), see notes for lock_twophase_recover() - */ - if (standbyState != STANDBY_DISABLED) - ShutdownRecoveryTransactionEnvironment(); - /* Shut down xlogreader */ if (readFile >= 0) { @@ -7891,6 +7964,18 @@ LWLockRelease(ControlFileLock); /* + * Shutdown the recovery environment. This must occur after + * RecoverPreparedTransactions() (see notes in lock_twophase_recover()) + * and after switching SharedRecoveryState to RECOVERY_STATE_DONE so as + * any session building a snapshot will not rely on KnownAssignedXids as + * RecoveryInProgress() would return false at this stage. This is + * particularly critical for prepared 2PC transactions, that would still + * need to be included in snapshots once recovery has ended. + */ + if (standbyState != STANDBY_DISABLED) + ShutdownRecoveryTransactionEnvironment(); + + /* * If there were cascading standby servers connected to us, nudge any wal * sender processes to notice that we've been promoted. */ @@ -9143,6 +9228,53 @@ } /* + * Write an OVERWRITE_CONTRECORD message. + * + * When on WAL replay we expect a continuation record at the start of a page + * that is not there, recovery ends and WAL writing resumes at that point. + * But it's wrong to resume writing new WAL back at the start of the record + * that was broken, because downstream consumers of that WAL (physical + * replicas) are not prepared to "rewind". So the first action after + * finishing replay of all valid WAL must be to write a record of this type + * at the point where the contrecord was missing; to support xlogreader + * detecting the special case, XLP_FIRST_IS_OVERWRITE_CONTRECORD is also added + * to the page header where the record occurs. xlogreader has an ad-hoc + * mechanism to report metadata about the broken record, which is what we + * use here. + * + * At replay time, XLP_FIRST_IS_OVERWRITE_CONTRECORD instructs xlogreader to + * skip the record it was reading, and pass back the LSN of the skipped + * record, so that its caller can verify (on "replay" of that record) that the + * XLOG_OVERWRITE_CONTRECORD matches what was effectively overwritten. + */ +static XLogRecPtr +CreateOverwriteContrecordRecord(XLogRecPtr aborted_lsn) +{ + xl_overwrite_contrecord xlrec; + XLogRecPtr recptr; + + /* sanity check */ + if (!RecoveryInProgress()) + elog(ERROR, "can only be used at end of recovery"); + + xlrec.overwritten_lsn = aborted_lsn; + xlrec.overwrite_time = GetCurrentTimestamp(); + + START_CRIT_SECTION(); + + XLogBeginInsert(); + XLogRegisterData((char *) &xlrec, sizeof(xl_overwrite_contrecord)); + + recptr = XLogInsert(RM_XLOG_ID, XLOG_OVERWRITE_CONTRECORD); + + XLogFlush(recptr); + + END_CRIT_SECTION(); + + return recptr; +} + +/* * Flush all data in shared memory to disk, and fsync * * This is the common code shared between regular checkpoints and @@ -9946,6 +10078,13 @@ RecoveryRestartPoint(&checkPoint); } + else if (info == XLOG_OVERWRITE_CONTRECORD) + { + xl_overwrite_contrecord xlrec; + + memcpy(&xlrec, XLogRecGetData(record), sizeof(xl_overwrite_contrecord)); + VerifyOverwriteContrecord(&xlrec, record); + } else if (info == XLOG_END_OF_RECOVERY) { xl_end_of_recovery xlrec; @@ -10108,6 +10247,29 @@ } } +/* + * Verify the payload of a XLOG_OVERWRITE_CONTRECORD record. + */ +static void +VerifyOverwriteContrecord(xl_overwrite_contrecord *xlrec, XLogReaderState *state) +{ + if (xlrec->overwritten_lsn != state->overwrittenRecPtr) + elog(FATAL, "mismatching overwritten LSN %X/%X -> %X/%X", + (uint32) (xlrec->overwritten_lsn >> 32), + (uint32) xlrec->overwritten_lsn, + (uint32) (state->overwrittenRecPtr >> 32), + (uint32) state->overwrittenRecPtr); + + ereport(LOG, + (errmsg("successfully skipped missing contrecord at %X/%X, overwritten at %s", + (uint32) (xlrec->overwritten_lsn >> 32), + (uint32) xlrec->overwritten_lsn, + timestamptz_to_str(xlrec->overwrite_time)))); + + /* Verifying the record should only happen once */ + state->overwrittenRecPtr = InvalidXLogRecPtr; +} + #ifdef WAL_DEBUG static void @@ -12050,6 +12212,9 @@ wait_time, WAIT_EVENT_RECOVERY_WAL_STREAM); ResetLatch(&XLogCtl->recoveryWakeupLatch); now = GetCurrentTimestamp(); + + /* Handle interrupt signals of startup process */ + HandleStartupProcInterrupts(); } last_fail_time = now; currentSource = XLOG_FROM_ARCHIVE; @@ -12177,11 +12342,19 @@ * pg_wal by now. Use XLOG_FROM_STREAM so that source * info is set correctly and XLogReceiptTime isn't * changed. + * + * NB: We must set readTimeLineHistory based on + * recoveryTargetTLI, not receiveTLI. Normally they'll + * be the same, but if recovery_target_timeline is + * 'latest' and archiving is configured, then it's + * possible that we managed to retrieve one or more + * new timeline history files from the archive, + * updating recoveryTargetTLI. */ if (readFile < 0) { if (!expectedTLEs) - expectedTLEs = readTimeLineHistory(receiveTLI); + expectedTLEs = readTimeLineHistory(recoveryTargetTLI); readFile = XLogFileRead(readSegNo, PANIC, receiveTLI, XLOG_FROM_STREAM, false); diff -Nru postgresql-10-10.17/src/backend/access/transam/xlogreader.c postgresql-10-10.19/src/backend/access/transam/xlogreader.c --- postgresql-10-10.17/src/backend/access/transam/xlogreader.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/access/transam/xlogreader.c 2021-11-08 22:05:38.000000000 +0000 @@ -220,6 +220,7 @@ total_len; uint32 targetRecOff; uint32 pageHeaderSize; + bool assembled; bool gotheader; int readOff; @@ -235,6 +236,8 @@ state->errormsg_buf[0] = '\0'; ResetDecoder(state); + state->abortedRecPtr = InvalidXLogRecPtr; + state->missingContrecPtr = InvalidXLogRecPtr; if (RecPtr == InvalidXLogRecPtr) { @@ -263,7 +266,9 @@ randAccess = true; } +restart: state->currRecPtr = RecPtr; + assembled = false; targetPagePtr = RecPtr - (RecPtr % XLOG_BLCKSZ); targetRecOff = RecPtr % XLOG_BLCKSZ; @@ -373,6 +378,7 @@ char *buffer; uint32 gotlen; + assembled = true; /* Copy the first fragment of the record from the first page. */ memcpy(state->readRecordBuf, state->readBuf + RecPtr % XLOG_BLCKSZ, len); @@ -394,8 +400,25 @@ Assert(SizeOfXLogShortPHD <= readOff); - /* Check that the continuation on next page looks valid */ pageHeader = (XLogPageHeader) state->readBuf; + + /* + * If we were expecting a continuation record and got an + * "overwrite contrecord" flag, that means the continuation record + * was overwritten with a different record. Restart the read by + * assuming the address to read is the location where we found + * this flag; but keep track of the LSN of the record we were + * reading, for later verification. + */ + if (pageHeader->xlp_info & XLP_FIRST_IS_OVERWRITE_CONTRECORD) + { + state->overwrittenRecPtr = state->currRecPtr; + ResetDecoder(state); + RecPtr = targetPagePtr; + goto restart; + } + + /* Check that the continuation on next page looks valid */ if (!(pageHeader->xlp_info & XLP_FIRST_IS_CONTRECORD)) { report_invalid_record(state, @@ -497,6 +520,20 @@ return NULL; err: + if (assembled) + { + /* + * We get here when a record that spans multiple pages needs to be + * assembled, but something went wrong -- perhaps a contrecord piece + * was lost. If caller is WAL replay, it will know where the aborted + * record was and where to direct followup WAL to be written, marking + * the next piece with XLP_FIRST_IS_OVERWRITE_CONTRECORD, which will + * in turn signal downstream WAL consumers that the broken WAL record + * is to be ignored. + */ + state->abortedRecPtr = RecPtr; + state->missingContrecPtr = targetPagePtr; + } /* * Invalidate the read state. We might read from a different source after diff -Nru postgresql-10-10.17/src/backend/catalog/dependency.c postgresql-10-10.19/src/backend/catalog/dependency.c --- postgresql-10-10.17/src/backend/catalog/dependency.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/catalog/dependency.c 2021-11-08 22:05:38.000000000 +0000 @@ -902,6 +902,10 @@ objDesc = getObjectDescription(obj); + /* An object being dropped concurrently doesn't need to be reported */ + if (objDesc == NULL) + continue; + /* * If, at any stage of the recursive search, we reached the object via * an AUTO, INTERNAL, or EXTENSION dependency, then it's okay to @@ -925,23 +929,28 @@ { char *otherDesc = getObjectDescription(&extra->dependee); - if (numReportedClient < MAX_REPORTED_DEPS) + if (otherDesc) { + if (numReportedClient < MAX_REPORTED_DEPS) + { + /* separate entries with a newline */ + if (clientdetail.len != 0) + appendStringInfoChar(&clientdetail, '\n'); + appendStringInfo(&clientdetail, _("%s depends on %s"), + objDesc, otherDesc); + numReportedClient++; + } + else + numNotReportedClient++; /* separate entries with a newline */ - if (clientdetail.len != 0) - appendStringInfoChar(&clientdetail, '\n'); - appendStringInfo(&clientdetail, _("%s depends on %s"), + if (logdetail.len != 0) + appendStringInfoChar(&logdetail, '\n'); + appendStringInfo(&logdetail, _("%s depends on %s"), objDesc, otherDesc); - numReportedClient++; + pfree(otherDesc); } else numNotReportedClient++; - /* separate entries with a newline */ - if (logdetail.len != 0) - appendStringInfoChar(&logdetail, '\n'); - appendStringInfo(&logdetail, _("%s depends on %s"), - objDesc, otherDesc); - pfree(otherDesc); ok = false; } else diff -Nru postgresql-10-10.17/src/backend/catalog/index.c postgresql-10-10.19/src/backend/catalog/index.c --- postgresql-10-10.17/src/backend/catalog/index.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/catalog/index.c 2021-11-08 22:05:38.000000000 +0000 @@ -3298,18 +3298,10 @@ * index_set_state_flags - adjust pg_index state flags * * This is used during CREATE/DROP INDEX CONCURRENTLY to adjust the pg_index - * flags that denote the index's state. 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! + * flags that denote the index's state. * - * Note that heap_inplace_update does send a cache inval message for the + * Note that CatalogTupleUpdate() sends a cache invalidation message for the * tuple, so other sessions will hear about the update as soon as we commit. - * - * NB: In releases prior to PostgreSQL 9.4, the use of a non-transactional - * update here would have been unsafe; now that MVCC rules apply even for - * system catalog scans, we could potentially use a transactional update here - * instead. */ void index_set_state_flags(Oid indexId, IndexStateFlagsAction action) @@ -3318,9 +3310,6 @@ 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); @@ -3379,8 +3368,8 @@ break; } - /* ... and write it back in-place */ - heap_inplace_update(pg_index, indexTuple); + /* ... and update it */ + CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple); heap_close(pg_index, RowExclusiveLock); } diff -Nru postgresql-10-10.17/src/backend/catalog/objectaddress.c postgresql-10-10.19/src/backend/catalog/objectaddress.c --- postgresql-10-10.17/src/backend/catalog/objectaddress.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/catalog/objectaddress.c 2021-11-08 22:05:38.000000000 +0000 @@ -1574,8 +1574,8 @@ ObjectAddress address; ListCell *cell; List *copy; - TypeName *typenames[2]; - Oid typeoids[2]; + TypeName *typenames[2] = { NULL, NULL }; + Oid typeoids[2] = { InvalidOid, InvalidOid }; int membernum; int i; @@ -2425,7 +2425,8 @@ break; case OBJECT_STATISTIC_EXT: if (!pg_statistics_object_ownercheck(address.objectId, roleid)) - aclcheck_error_type(ACLCHECK_NOT_OWNER, address.objectId); + aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_STATISTICS, + NameListToString(castNode(List, object))); break; default: elog(ERROR, "unrecognized object type: %d", diff -Nru postgresql-10-10.17/src/backend/catalog/pg_shdepend.c postgresql-10-10.19/src/backend/catalog/pg_shdepend.c --- postgresql-10-10.17/src/backend/catalog/pg_shdepend.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/catalog/pg_shdepend.c 2021-11-08 22:05:38.000000000 +0000 @@ -1065,6 +1065,12 @@ { char *objdesc = getObjectDescription(object); + /* + * An object being dropped concurrently doesn't need to be reported. + */ + if (objdesc == NULL) + return; + /* separate entries with a newline */ if (descs->len != 0) appendStringInfoChar(descs, '\n'); diff -Nru postgresql-10-10.17/src/backend/commands/collationcmds.c postgresql-10-10.19/src/backend/commands/collationcmds.c --- postgresql-10-10.17/src/backend/commands/collationcmds.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/collationcmds.c 2021-11-08 22:05:38.000000000 +0000 @@ -189,7 +189,26 @@ if (!fromEl) { if (collprovider == COLLPROVIDER_ICU) + { +#ifdef USE_ICU + /* + * We could create ICU collations with collencoding == database + * encoding, but it seems better to use -1 so that it matches the + * way initdb would create ICU collations. However, only allow + * one to be created when the current database's encoding is + * supported. Otherwise the collation is useless, plus we get + * surprising behaviors like not being able to drop the collation. + * + * Skip this test when !USE_ICU, because the error we want to + * throw for that isn't thrown till later. + */ + if (!is_encoding_supported_by_icu(GetDatabaseEncoding())) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("current database's encoding is not supported with this provider"))); +#endif collencoding = -1; + } else { collencoding = GetDatabaseEncoding(); diff -Nru postgresql-10-10.17/src/backend/commands/extension.c postgresql-10-10.19/src/backend/commands/extension.c --- postgresql-10-10.17/src/backend/commands/extension.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/extension.c 2021-11-08 22:05:38.000000000 +0000 @@ -3196,9 +3196,17 @@ Relation relation; Oid oldExtension; - extension.classId = ExtensionRelationId; - extension.objectId = get_extension_oid(stmt->extname, false); - extension.objectSubId = 0; + /* + * Find the extension and acquire a lock on it, to ensure it doesn't get + * dropped concurrently. A sharable lock seems sufficient: there's no + * reason not to allow other sorts of manipulations, such as add/drop of + * other objects, to occur concurrently. Concurrently adding/dropping the + * *same* object would be bad, but we prevent that by using a non-sharable + * lock on the individual object, below. + */ + extension = get_object_address(OBJECT_EXTENSION, + (Node *) makeString(stmt->extname), + &relation, AccessShareLock, false); /* Permission check: must own extension */ if (!pg_extension_ownercheck(extension.objectId, GetUserId())) diff -Nru postgresql-10-10.17/src/backend/commands/matview.c postgresql-10-10.19/src/backend/commands/matview.c --- postgresql-10-10.17/src/backend/commands/matview.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/matview.c 2021-11-08 22:05:38.000000000 +0000 @@ -529,9 +529,12 @@ /* * Given a qualified temporary table name, append an underscore followed by * the given integer, to make a new table name based on the old one. + * The result is a palloc'd string. * - * This leaks memory through palloc(), which won't be cleaned up until the - * current memory context is freed. + * As coded, this would fail to make a valid SQL name if the given name were, + * say, "FOO"."BAR". Currently, the table name portion of the input will + * never be double-quoted because it's of the form "pg_temp_NNN", cf + * make_new_heap(). But we might have to work harder someday. */ static char * make_temptable_name_n(char *tempname, int n) @@ -619,16 +622,20 @@ * that in a way that allows showing the first duplicated row found. Even * after we pass this test, a unique index on the materialized view may * find a duplicate key problem. + * + * Note: here and below, we use "tablename.*::tablerowtype" as a hack to + * keep ".*" from being expanded into multiple columns in a SELECT list. + * Compare ruleutils.c's get_variable(). */ resetStringInfo(&querybuf); appendStringInfo(&querybuf, - "SELECT newdata FROM %s newdata " - "WHERE newdata IS NOT NULL AND EXISTS " - "(SELECT 1 FROM %s newdata2 WHERE newdata2 IS NOT NULL " - "AND newdata2 OPERATOR(pg_catalog.*=) newdata " + "SELECT newdata.*::%s FROM %s newdata " + "WHERE newdata.* IS NOT NULL AND EXISTS " + "(SELECT 1 FROM %s newdata2 WHERE newdata2.* IS NOT NULL " + "AND newdata2.* OPERATOR(pg_catalog.*=) newdata.* " "AND newdata2.ctid OPERATOR(pg_catalog.<>) " "newdata.ctid)", - tempname, tempname); + tempname, tempname, tempname); if (SPI_execute(querybuf.data, false, 1) != SPI_OK_SELECT) elog(ERROR, "SPI_exec failed: %s", querybuf.data); if (SPI_processed > 0) @@ -655,9 +662,9 @@ resetStringInfo(&querybuf); appendStringInfo(&querybuf, "CREATE TEMP TABLE %s AS " - "SELECT mv.ctid AS tid, newdata " + "SELECT mv.ctid AS tid, newdata.*::%s AS newdata " "FROM %s mv FULL JOIN %s newdata ON (", - diffname, matviewname, tempname); + diffname, tempname, matviewname, tempname); /* * Get the list of index OIDs for the table from the relcache, and look up @@ -779,8 +786,8 @@ Assert(foundUniqueIndex); appendStringInfoString(&querybuf, - " AND newdata OPERATOR(pg_catalog.*=) mv) " - "WHERE newdata IS NULL OR mv IS NULL " + " AND newdata.* OPERATOR(pg_catalog.*=) mv.*) " + "WHERE newdata.* IS NULL OR mv.* IS NULL " "ORDER BY tid"); /* Create the temporary "diff" table. */ diff -Nru postgresql-10-10.17/src/backend/commands/policy.c postgresql-10-10.19/src/backend/commands/policy.c --- postgresql-10-10.17/src/backend/commands/policy.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/policy.c 2021-11-08 22:05:38.000000000 +0000 @@ -17,6 +17,7 @@ #include "access/htup.h" #include "access/htup_details.h" #include "access/sysattr.h" +#include "access/xact.h" #include "catalog/catalog.h" #include "catalog/dependency.h" #include "catalog/indexing.h" @@ -400,13 +401,12 @@ /* * RemoveRoleFromObjectPolicy - - * remove a role from a policy by its OID. If the role is not a member of - * the policy then an error is raised. False is returned to indicate that - * the role could not be removed due to being the only role on the policy - * and therefore the entire policy should be removed. + * remove a role from a policy's applicable-roles list. * - * Note that a warning will be thrown and true will be returned on a - * permission error, as the policy should not be removed in that case. + * Returns true if the role was successfully removed from the policy. + * Returns false if the role was not removed because it would have left + * polroles empty (which is disallowed, though perhaps it should not be). + * On false return, the caller should instead drop the policy altogether. * * roleid - the oid of the role to remove * classid - should always be PolicyRelationId @@ -420,12 +420,15 @@ ScanKeyData skey[1]; HeapTuple tuple; Oid relid; - Relation rel; ArrayType *policy_roles; - int num_roles; Datum roles_datum; + Oid *roles; + int num_roles; + Datum *role_oids; bool attr_isnull; - bool noperm = true; + bool keep_policy = true; + int i, + j; Assert(classid == PolicyRelationId); @@ -448,26 +451,9 @@ if (!HeapTupleIsValid(tuple)) elog(ERROR, "could not find tuple for policy %u", policy_id); - /* - * Open and exclusive-lock the relation the policy belongs to. - */ + /* Identify rel the policy belongs to */ relid = ((Form_pg_policy) GETSTRUCT(tuple))->polrelid; - rel = relation_open(relid, AccessExclusiveLock); - - if (rel->rd_rel->relkind != RELKIND_RELATION && - rel->rd_rel->relkind != RELKIND_PARTITIONED_TABLE) - ereport(ERROR, - (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("\"%s\" is not a table", - RelationGetRelationName(rel)))); - - if (!allowSystemTableMods && IsSystemRelation(rel)) - ereport(ERROR, - (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("permission denied: \"%s\" is a system catalog", - RelationGetRelationName(rel)))); - /* Get the current set of roles */ roles_datum = heap_getattr(tuple, Anum_pg_policy_polroles, @@ -477,45 +463,31 @@ Assert(!attr_isnull); policy_roles = DatumGetArrayTypePCopy(roles_datum); - - /* We should be removing exactly one entry from the roles array */ - num_roles = ARR_DIMS(policy_roles)[0] - 1; - - Assert(num_roles >= 0); - - /* Must own relation. */ - if (pg_class_ownercheck(relid, GetUserId())) - noperm = false; /* user is allowed to modify this policy */ - else - ereport(WARNING, - (errcode(ERRCODE_WARNING_PRIVILEGE_NOT_REVOKED), - errmsg("role \"%s\" could not be removed from policy \"%s\" on \"%s\"", - GetUserNameFromId(roleid, false), - NameStr(((Form_pg_policy) GETSTRUCT(tuple))->polname), - RelationGetRelationName(rel)))); + roles = (Oid *) ARR_DATA_PTR(policy_roles); + num_roles = ARR_DIMS(policy_roles)[0]; /* - * If multiple roles exist on this policy, then remove the one we were - * asked to and leave the rest. + * Rebuild the polroles array, without any mentions of the target role. + * Ordinarily there'd be exactly one, but we must cope with duplicate + * mentions, since CREATE/ALTER POLICY historically have allowed that. */ - if (!noperm && num_roles > 0) + role_oids = (Datum *) palloc(num_roles * sizeof(Datum)); + for (i = 0, j = 0; i < num_roles; i++) + { + if (roles[i] != roleid) + role_oids[j++] = ObjectIdGetDatum(roles[i]); + } + num_roles = j; + + /* If any roles remain, update the policy entry. */ + if (num_roles > 0) { - int i, - j; - Oid *roles = (Oid *) ARR_DATA_PTR(policy_roles); - Datum *role_oids; - char *qual_value; - Node *qual_expr; - List *qual_parse_rtable = NIL; - char *with_check_value; - Node *with_check_qual; - List *with_check_parse_rtable = NIL; + ArrayType *role_ids; Datum values[Natts_pg_policy]; bool isnull[Natts_pg_policy]; bool replaces[Natts_pg_policy]; - Datum value_datum; - ArrayType *role_ids; HeapTuple new_tuple; + HeapTuple reltup; ObjectAddress target; ObjectAddress myself; @@ -524,68 +496,6 @@ memset(replaces, 0, sizeof(replaces)); memset(isnull, 0, sizeof(isnull)); - /* - * All of the dependencies will be removed from the policy and then - * re-added. In order to get them correct, we need to extract out the - * expressions in the policy and construct a parsestate just enough to - * build the range table(s) to then pass to recordDependencyOnExpr(). - */ - - /* Get policy qual, to update dependencies */ - value_datum = heap_getattr(tuple, Anum_pg_policy_polqual, - RelationGetDescr(pg_policy_rel), &attr_isnull); - if (!attr_isnull) - { - ParseState *qual_pstate; - - /* parsestate is built just to build the range table */ - qual_pstate = make_parsestate(NULL); - - qual_value = TextDatumGetCString(value_datum); - qual_expr = stringToNode(qual_value); - - /* Add this rel to the parsestate's rangetable, for dependencies */ - addRangeTableEntryForRelation(qual_pstate, rel, NULL, false, false); - - qual_parse_rtable = qual_pstate->p_rtable; - free_parsestate(qual_pstate); - } - else - qual_expr = NULL; - - /* Get WITH CHECK qual, to update dependencies */ - value_datum = heap_getattr(tuple, Anum_pg_policy_polwithcheck, - RelationGetDescr(pg_policy_rel), &attr_isnull); - if (!attr_isnull) - { - ParseState *with_check_pstate; - - /* parsestate is built just to build the range table */ - with_check_pstate = make_parsestate(NULL); - - with_check_value = TextDatumGetCString(value_datum); - with_check_qual = stringToNode(with_check_value); - - /* Add this rel to the parsestate's rangetable, for dependencies */ - addRangeTableEntryForRelation(with_check_pstate, rel, NULL, false, - false); - - with_check_parse_rtable = with_check_pstate->p_rtable; - free_parsestate(with_check_pstate); - } - else - with_check_qual = NULL; - - /* Rebuild the roles array to then update the pg_policy tuple with */ - role_oids = (Datum *) palloc(num_roles * sizeof(Datum)); - for (i = 0, j = 0; i < ARR_DIMS(policy_roles)[0]; i++) - /* Copy over all of the roles which are not the one being removed */ - if (roles[i] != roleid) - role_oids[j++] = ObjectIdGetDatum(roles[i]); - - /* We should have only removed the one role */ - Assert(j == num_roles); - /* This is the array for the new tuple */ role_ids = construct_array(role_oids, num_roles, OIDOID, sizeof(Oid), true, 'i'); @@ -598,33 +508,14 @@ values, isnull, replaces); CatalogTupleUpdate(pg_policy_rel, &new_tuple->t_self, new_tuple); - /* Remove all old dependencies. */ - deleteDependencyRecordsFor(PolicyRelationId, policy_id, false); - - /* Record the new set of dependencies */ - target.classId = RelationRelationId; - target.objectId = relid; - target.objectSubId = 0; + /* Remove all the old shared dependencies (roles) */ + deleteSharedDependencyRecordsFor(PolicyRelationId, policy_id, 0); + /* Record the new shared dependencies (roles) */ myself.classId = PolicyRelationId; myself.objectId = policy_id; myself.objectSubId = 0; - recordDependencyOn(&myself, &target, DEPENDENCY_AUTO); - - if (qual_expr) - recordDependencyOnExpr(&myself, qual_expr, qual_parse_rtable, - DEPENDENCY_NORMAL); - - if (with_check_qual) - recordDependencyOnExpr(&myself, with_check_qual, - with_check_parse_rtable, - DEPENDENCY_NORMAL); - - /* Remove all the old shared dependencies (roles) */ - deleteSharedDependencyRecordsFor(PolicyRelationId, policy_id, 0); - - /* Record the new shared dependencies (roles) */ target.classId = AuthIdRelationId; target.objectSubId = 0; for (i = 0; i < num_roles; i++) @@ -640,18 +531,33 @@ heap_freetuple(new_tuple); - /* Invalidate Relation Cache */ - CacheInvalidateRelcache(rel); + /* Make updates visible */ + CommandCounterIncrement(); + + /* + * Invalidate relcache entry for rel the policy belongs to, to force + * redoing any dependent plans. In case of a race condition where the + * rel was just dropped, we need do nothing. + */ + reltup = SearchSysCache1(RELOID, ObjectIdGetDatum(relid)); + if (HeapTupleIsValid(reltup)) + { + CacheInvalidateRelcacheByTuple(reltup); + ReleaseSysCache(reltup); + } + } + else + { + /* No roles would remain, so drop the policy instead. */ + keep_policy = false; } /* Clean up. */ systable_endscan(sscan); - relation_close(rel, NoLock); - heap_close(pg_policy_rel, RowExclusiveLock); - return (noperm || num_roles > 0); + return keep_policy; } /* diff -Nru postgresql-10-10.17/src/backend/commands/prepare.c postgresql-10-10.19/src/backend/commands/prepare.c --- postgresql-10-10.17/src/backend/commands/prepare.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/prepare.c 2021-11-08 22:05:38.000000000 +0000 @@ -247,6 +247,17 @@ plan_list = cplan->stmt_list; /* + * DO NOT add any logic that could possibly throw an error between + * GetCachedPlan and PortalDefineQuery, or you'll leak the plan refcount. + */ + PortalDefineQuery(portal, + NULL, + query_string, + entry->plansource->commandTag, + plan_list, + cplan); + + /* * For CREATE TABLE ... AS EXECUTE, we must verify that the prepared * statement is one that produces tuples. Currently we insist that it be * a plain old SELECT. In future we might consider supporting other @@ -289,13 +300,6 @@ count = FETCH_ALL; } - PortalDefineQuery(portal, - NULL, - query_string, - entry->plansource->commandTag, - plan_list, - cplan); - /* * Run the portal as appropriate. */ diff -Nru postgresql-10-10.17/src/backend/commands/publicationcmds.c postgresql-10-10.19/src/backend/commands/publicationcmds.c --- postgresql-10-10.17/src/backend/commands/publicationcmds.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/publicationcmds.c 2021-11-08 22:05:38.000000000 +0000 @@ -215,6 +215,11 @@ PublicationAddTables(puboid, rels, true, NULL); CloseTableList(rels); } + else if (stmt->for_all_tables) + { + /* Invalidate relcache so that publication info is rebuilt. */ + CacheInvalidateRelcacheAll(); + } heap_close(rel, RowExclusiveLock); @@ -424,6 +429,7 @@ { Relation rel; HeapTuple tup; + Form_pg_publication pubform; rel = heap_open(PublicationRelationId, RowExclusiveLock); @@ -432,6 +438,12 @@ if (!HeapTupleIsValid(tup)) elog(ERROR, "cache lookup failed for publication %u", pubid); + pubform = (Form_pg_publication) GETSTRUCT(tup); + + /* Invalidate relcache so that publication info is rebuilt. */ + if (pubform->puballtables) + CacheInvalidateRelcacheAll(); + CatalogTupleDelete(rel, &tup->t_self); ReleaseSysCache(tup); diff -Nru postgresql-10-10.17/src/backend/commands/seclabel.c postgresql-10-10.19/src/backend/commands/seclabel.c --- postgresql-10-10.17/src/backend/commands/seclabel.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/seclabel.c 2021-11-08 22:05:38.000000000 +0000 @@ -169,8 +169,8 @@ pg_shseclabel = heap_open(SharedSecLabelRelationId, AccessShareLock); - scan = systable_beginscan(pg_shseclabel, SharedSecLabelObjectIndexId, true, - NULL, 3, keys); + scan = systable_beginscan(pg_shseclabel, SharedSecLabelObjectIndexId, + criticalSharedRelcachesBuilt, NULL, 3, keys); tuple = systable_getnext(scan); if (HeapTupleIsValid(tuple)) diff -Nru postgresql-10-10.17/src/backend/commands/subscriptioncmds.c postgresql-10-10.19/src/backend/commands/subscriptioncmds.c --- postgresql-10-10.17/src/backend/commands/subscriptioncmds.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/subscriptioncmds.c 2021-11-08 22:05:38.000000000 +0000 @@ -39,6 +39,7 @@ #include "replication/logicallauncher.h" #include "replication/origin.h" +#include "replication/slot.h" #include "replication/walreceiver.h" #include "replication/walsender.h" #include "replication/worker_internal.h" @@ -145,6 +146,8 @@ /* Setting slot_name = NONE is treated as no slot name. */ if (strcmp(*slot_name, "none") == 0) *slot_name = NULL; + else + ReplicationSlotValidateName(*slot_name, ERROR); } else if (strcmp(defel->defname, "copy_data") == 0 && copy_data) { diff -Nru postgresql-10-10.17/src/backend/commands/tablecmds.c postgresql-10-10.19/src/backend/commands/tablecmds.c --- postgresql-10-10.17/src/backend/commands/tablecmds.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/tablecmds.c 2021-11-08 22:05:38.000000000 +0000 @@ -13991,6 +13991,22 @@ ObjectAddressSet(address, RelationRelationId, RelationGetRelid(attachrel)); + /* + * If the partition we just attached is partitioned itself, invalidate + * relcache for all descendent partitions too to ensure that their + * rd_partcheck expression trees are rebuilt; partitions already locked + * at the beginning of this function. + */ + if (attachrel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE) + { + ListCell *l; + + foreach(l, attachrel_children) + { + CacheInvalidateRelcacheByRelid(lfirst_oid(l)); + } + } + /* keep our lock until commit */ heap_close(attachrel, NoLock); @@ -14054,6 +14070,26 @@ */ CacheInvalidateRelcache(rel); + /* + * If the partition we just detached is partitioned itself, invalidate + * relcache for all descendent partitions too to ensure that their + * rd_partcheck expression trees are rebuilt; must lock partitions + * before doing so, using the same lockmode as what partRel has been + * locked with by the caller. + */ + if (partRel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE) + { + List *children; + ListCell *cell; + + children = find_all_inheritors(RelationGetRelid(partRel), + AccessExclusiveLock, NULL); + foreach(cell, children) + { + CacheInvalidateRelcacheByRelid(lfirst_oid(cell)); + } + } + ObjectAddressSet(address, RelationRelationId, RelationGetRelid(partRel)); /* keep our lock until commit */ diff -Nru postgresql-10-10.17/src/backend/commands/tablespace.c postgresql-10-10.19/src/backend/commands/tablespace.c --- postgresql-10-10.17/src/backend/commands/tablespace.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/tablespace.c 2021-11-08 22:05:38.000000000 +0000 @@ -589,40 +589,36 @@ location))); } - if (InRecovery) - { - /* - * Our theory for replaying a CREATE is to forcibly drop the target - * subdirectory if present, and then recreate it. This may be more - * work than needed, but it is simple to implement. - */ - if (stat(location_with_version_dir, &st) == 0 && S_ISDIR(st.st_mode)) - { - if (!rmtree(location_with_version_dir, true)) - /* If this failed, mkdir() below is going to error. */ - ereport(WARNING, - (errmsg("some useless files may be left behind in old database directory \"%s\"", - location_with_version_dir))); - } - } - /* * The creation of the version directory prevents more than one tablespace - * in a single location. + * in a single location. This imitates TablespaceCreateDbspace(), but it + * ignores concurrency and missing parent directories. The chmod() would + * have failed in the absence of a parent. pg_tablespace_spcname_index + * prevents concurrency. */ - if (mkdir(location_with_version_dir, S_IRWXU) < 0) + if (stat(location_with_version_dir, &st) < 0) { - if (errno == EEXIST) + if (errno != ENOENT) ereport(ERROR, - (errcode(ERRCODE_OBJECT_IN_USE), - errmsg("directory \"%s\" already in use as a tablespace", + (errcode_for_file_access(), + errmsg("could not stat directory \"%s\": %m", location_with_version_dir))); - else + else if (mkdir(location_with_version_dir, S_IRWXU) < 0) ereport(ERROR, (errcode_for_file_access(), errmsg("could not create directory \"%s\": %m", location_with_version_dir))); } + else if (!S_ISDIR(st.st_mode)) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" exists but is not a directory", + location_with_version_dir))); + else if (!InRecovery) + ereport(ERROR, + (errcode(ERRCODE_OBJECT_IN_USE), + errmsg("directory \"%s\" already in use as a tablespace", + location_with_version_dir))); /* * In recovery, remove old symlink, in case it points to the wrong place. diff -Nru postgresql-10-10.17/src/backend/commands/typecmds.c postgresql-10-10.19/src/backend/commands/typecmds.c --- postgresql-10-10.17/src/backend/commands/typecmds.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/commands/typecmds.c 2021-11-08 22:05:38.000000000 +0000 @@ -906,10 +906,12 @@ pstate = make_parsestate(NULL); /* - * Cook the constr->raw_expr into an expression. Note: - * name is strictly for error message + * Cook the constr->raw_expr into an expression; copy it + * in case the input is in plan cache. Note: name is used + * only for error messages. */ - defaultExpr = cookDefault(pstate, constr->raw_expr, + defaultExpr = cookDefault(pstate, + copyObject(constr->raw_expr), basetypeoid, basetypeMod, domainName); @@ -2215,10 +2217,10 @@ pstate = make_parsestate(NULL); /* - * Cook the colDef->raw_expr into an expression. Note: Name is - * strictly for error message + * Cook the raw default into an expression; copy it in case the input + * is in plan cache. Note: name is used only for error messages. */ - defaultExpr = cookDefault(pstate, defaultRaw, + defaultExpr = cookDefault(pstate, copyObject(defaultRaw), typTup->typbasetype, typTup->typtypmod, NameStr(typTup->typname)); @@ -3084,7 +3086,12 @@ pstate->p_pre_columnref_hook = replace_domain_constraint_value; pstate->p_ref_hook_state = (void *) domVal; - expr = transformExpr(pstate, constr->raw_expr, EXPR_KIND_DOMAIN_CHECK); + /* + * Transform the expression; first we must copy the input, in case it's in + * plan cache. + */ + expr = transformExpr(pstate, copyObject(constr->raw_expr), + EXPR_KIND_DOMAIN_CHECK); /* * Make sure it yields a boolean result. diff -Nru postgresql-10-10.17/src/backend/executor/execMain.c postgresql-10-10.19/src/backend/executor/execMain.c --- postgresql-10-10.17/src/backend/executor/execMain.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/executor/execMain.c 2021-11-08 22:05:38.000000000 +0000 @@ -2621,7 +2621,13 @@ /* otherwise xmin should not be dirty... */ if (TransactionIdIsValid(SnapshotDirty.xmin)) - elog(ERROR, "t_xmin is uncommitted in tuple to be updated"); + ereport(ERROR, + (errcode(ERRCODE_DATA_CORRUPTED), + errmsg_internal("t_xmin %u is uncommitted in tuple (%u,%u) to be updated in table \"%s\"", + SnapshotDirty.xmin, + ItemPointerGetBlockNumber(&tuple.t_self), + ItemPointerGetOffsetNumber(&tuple.t_self), + RelationGetRelationName(relation)))); /* * If tuple is being updated by other transaction then we have to diff -Nru postgresql-10-10.17/src/backend/libpq/auth.c postgresql-10-10.19/src/backend/libpq/auth.c --- postgresql-10-10.17/src/backend/libpq/auth.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/libpq/auth.c 2021-11-08 22:05:38.000000000 +0000 @@ -1035,44 +1035,67 @@ /* - * Generate an error for GSSAPI authentication. The caller should apply - * _() to errmsg to make it translatable. + * Fetch all errors of a specific type and append to "s" (buffer of size len). + * If we obtain more than one string, separate them with spaces. + * Call once for GSS_CODE and once for MECH_CODE. */ static void -pg_GSS_error(int severity, char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat) +pg_GSS_error_int(char *s, size_t len, OM_uint32 stat, int type) { gss_buffer_desc gmsg; + size_t i = 0; OM_uint32 lmin_s, - msg_ctx; + msg_ctx = 0; + + do + { + if (gss_display_status(&lmin_s, stat, type, GSS_C_NO_OID, + &msg_ctx, &gmsg) != GSS_S_COMPLETE) + break; + if (i > 0) + { + if (i < len) + s[i] = ' '; + i++; + } + if (i < len) + memcpy(s + i, gmsg.value, Min(len - i, gmsg.length)); + i += gmsg.length; + gss_release_buffer(&lmin_s, &gmsg); + } + while (msg_ctx); + + /* add nul termination */ + if (i < len) + s[i] = '\0'; + else + { + elog(COMMERROR, "incomplete GSS error report"); + s[len - 1] = '\0'; + } +} + +/* + * Report the GSSAPI error described by maj_stat/min_stat. + * + * errmsg should be an already-translated primary error message. + * The GSSAPI info is appended as errdetail. + * + * To avoid memory allocation, total error size is capped (at 128 bytes for + * each of major and minor). No known mechanisms will produce error messages + * beyond this cap. + */ +static void +pg_GSS_error(int severity, const char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat) +{ char msg_major[128], msg_minor[128]; /* Fetch major status message */ - msg_ctx = 0; - gss_display_status(&lmin_s, maj_stat, GSS_C_GSS_CODE, - GSS_C_NO_OID, &msg_ctx, &gmsg); - strlcpy(msg_major, gmsg.value, sizeof(msg_major)); - gss_release_buffer(&lmin_s, &gmsg); - - if (msg_ctx) - - /* - * More than one message available. XXX: Should we loop and read all - * messages? (same below) - */ - ereport(WARNING, - (errmsg_internal("incomplete GSS error report"))); + pg_GSS_error_int(msg_major, sizeof(msg_major), maj_stat, GSS_C_GSS_CODE); /* Fetch mechanism minor status message */ - msg_ctx = 0; - gss_display_status(&lmin_s, min_stat, GSS_C_MECH_CODE, - GSS_C_NO_OID, &msg_ctx, &gmsg); - strlcpy(msg_minor, gmsg.value, sizeof(msg_minor)); - gss_release_buffer(&lmin_s, &gmsg); - - if (msg_ctx) - ereport(WARNING, - (errmsg_internal("incomplete GSS minor error report"))); + pg_GSS_error_int(msg_minor, sizeof(msg_minor), min_stat, GSS_C_MECH_CODE); /* * errmsg_internal, since translation of the first part must be done @@ -1094,6 +1117,7 @@ int ret; StringInfoData buf; gss_buffer_desc gbuf; + char *princ; /* * GSS auth is not supported for protocol versions before 3, because it @@ -1258,11 +1282,20 @@ maj_stat, min_stat); /* + * gbuf.value might not be null-terminated, so turn it into a regular + * null-terminated string. + */ + princ = palloc(gbuf.length + 1); + memcpy(princ, gbuf.value, gbuf.length); + princ[gbuf.length] = '\0'; + gss_release_buffer(&lmin_s, &gbuf); + + /* * Split the username at the realm separator */ - if (strchr(gbuf.value, '@')) + if (strchr(princ, '@')) { - char *cp = strchr(gbuf.value, '@'); + char *cp = strchr(princ, '@'); /* * If we are not going to include the realm in the username that is @@ -1289,7 +1322,7 @@ elog(DEBUG2, "GSSAPI realm (%s) and configured realm (%s) don't match", cp, port->hba->krb_realm); - gss_release_buffer(&lmin_s, &gbuf); + pfree(princ); return STATUS_ERROR; } } @@ -1298,15 +1331,14 @@ { elog(DEBUG2, "GSSAPI did not return realm but realm matching was requested"); - - gss_release_buffer(&lmin_s, &gbuf); + pfree(princ); return STATUS_ERROR; } - ret = check_usermap(port->hba->usermap, port->user_name, gbuf.value, + ret = check_usermap(port->hba->usermap, port->user_name, princ, pg_krb_caseins_users); - gss_release_buffer(&lmin_s, &gbuf); + pfree(princ); return ret; } diff -Nru postgresql-10-10.17/src/backend/libpq/be-fsstubs.c postgresql-10-10.19/src/backend/libpq/be-fsstubs.c --- postgresql-10-10.17/src/backend/libpq/be-fsstubs.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/libpq/be-fsstubs.c 2021-11-08 22:05:38.000000000 +0000 @@ -42,6 +42,7 @@ #include #include +#include "access/xact.h" #include "libpq/be-fsstubs.h" #include "libpq/libpq-fs.h" #include "miscadmin.h" @@ -50,6 +51,7 @@ #include "utils/acl.h" #include "utils/builtins.h" #include "utils/memutils.h" +#include "utils/snapmgr.h" /* * compatibility flag for permission checks @@ -72,19 +74,11 @@ static LargeObjectDesc **cookies = NULL; static int cookies_size = 0; +static bool lo_cleanup_needed = false; static MemoryContext fscxt = NULL; -#define CreateFSContext() \ - do { \ - if (fscxt == NULL) \ - fscxt = AllocSetContextCreate(TopMemoryContext, \ - "Filesystem", \ - ALLOCSET_DEFAULT_SIZES); \ - } while (0) - - -static int newLOfd(LargeObjectDesc *lobjCookie); -static void deleteLOfd(int fd); +static int newLOfd(void); +static void closeLOfd(int fd); static Oid lo_import_internal(text *filename, Oid lobjOid); @@ -104,10 +98,13 @@ elog(DEBUG4, "lo_open(%u,%d)", lobjId, mode); #endif - CreateFSContext(); + /* + * Allocate a large object descriptor first. This will also create + * 'fscxt' if this is the first LO opened in this transaction. + */ + fd = newLOfd(); lobjDesc = inv_open(lobjId, mode, fscxt); - if (lobjDesc == NULL) { /* lookup failed */ #if FSDB @@ -115,8 +112,19 @@ #endif PG_RETURN_INT32(-1); } + lobjDesc->subid = GetCurrentSubTransactionId(); - fd = newLOfd(lobjDesc); + /* + * We must register the snapshot in TopTransaction's resowner so that it + * stays alive until the LO is closed rather than until the current portal + * shuts down. + */ + if (lobjDesc->snapshot) + lobjDesc->snapshot = RegisterSnapshotOnOwner(lobjDesc->snapshot, + TopTransactionResourceOwner); + + Assert(cookies[fd] == NULL); + cookies[fd] = lobjDesc; PG_RETURN_INT32(fd); } @@ -135,9 +143,7 @@ elog(DEBUG4, "lo_close(%d)", fd); #endif - inv_close(cookies[fd]); - - deleteLOfd(fd); + closeLOfd(fd); PG_RETURN_INT32(0); } @@ -271,12 +277,7 @@ { Oid lobjId; - /* - * We don't actually need to store into fscxt, but create it anyway to - * ensure that AtEOXact_LargeObject knows there is state to clean up - */ - CreateFSContext(); - + lo_cleanup_needed = true; lobjId = inv_create(InvalidOid); PG_RETURN_OID(lobjId); @@ -287,12 +288,7 @@ { Oid lobjId = PG_GETARG_OID(0); - /* - * We don't actually need to store into fscxt, but create it anyway to - * ensure that AtEOXact_LargeObject knows there is state to clean up - */ - CreateFSContext(); - + lo_cleanup_needed = true; lobjId = inv_create(lobjId); PG_RETURN_OID(lobjId); @@ -359,16 +355,13 @@ for (i = 0; i < cookies_size; i++) { if (cookies[i] != NULL && cookies[i]->id == lobjId) - { - inv_close(cookies[i]); - deleteLOfd(i); - } + closeLOfd(i); } } /* * inv_drop does not create a need for end-of-transaction cleanup and - * hence we don't need to have created fscxt. + * hence we don't need to set lo_cleanup_needed. */ PG_RETURN_INT32(inv_drop(lobjId)); } @@ -456,8 +449,6 @@ errhint("Anyone can use the client-side lo_import() provided by libpq."))); #endif - CreateFSContext(); - /* * open the file to be read in */ @@ -472,12 +463,13 @@ /* * create an inversion object */ + lo_cleanup_needed = true; oid = inv_create(lobjOid); /* * read in from the filesystem and write to the inversion object */ - lobj = inv_open(oid, INV_WRITE, fscxt); + lobj = inv_open(oid, INV_WRITE, CurrentMemoryContext); while ((nbytes = read(fd, buf, BUFSIZE)) > 0) { @@ -522,12 +514,11 @@ errhint("Anyone can use the client-side lo_export() provided by libpq."))); #endif - CreateFSContext(); - /* * open the inversion object (no need to test for failure) */ - lobj = inv_open(lobjId, INV_READ, fscxt); + lo_cleanup_needed = true; + lobj = inv_open(lobjId, INV_READ, CurrentMemoryContext); /* * open the file to be written to @@ -643,20 +634,22 @@ { int i; - if (fscxt == NULL) + if (!lo_cleanup_needed) return; /* no LO operations in this xact */ /* * Close LO fds and clear cookies array so that LO fds are no longer good. - * On abort we skip the close step. + * The memory context and resource owner holding them are going away at + * the end-of-transaction anyway, but on commit, we need to close them to + * avoid warnings about leaked resources at commit. On abort we can skip + * this step. */ - for (i = 0; i < cookies_size; i++) + if (isCommit) { - if (cookies[i] != NULL) + for (i = 0; i < cookies_size; i++) { - if (isCommit) - inv_close(cookies[i]); - deleteLOfd(i); + if (cookies[i] != NULL) + closeLOfd(i); } } @@ -665,11 +658,14 @@ cookies_size = 0; /* Release the LO memory context to prevent permanent memory leaks. */ - MemoryContextDelete(fscxt); + if (fscxt) + MemoryContextDelete(fscxt); fscxt = NULL; /* Give inv_api.c a chance to clean up, too */ close_lo_relation(isCommit); + + lo_cleanup_needed = false; } /* @@ -697,14 +693,7 @@ if (isCommit) lo->subid = parentSubid; else - { - /* - * Make sure we do not call inv_close twice if it errors out - * for some reason. Better a leak than a crash. - */ - deleteLOfd(i); - inv_close(lo); - } + closeLOfd(i); } } } @@ -714,19 +703,22 @@ *****************************************************************************/ static int -newLOfd(LargeObjectDesc *lobjCookie) +newLOfd(void) { int i, newsize; + lo_cleanup_needed = true; + if (fscxt == NULL) + fscxt = AllocSetContextCreate(TopMemoryContext, + "Filesystem", + ALLOCSET_DEFAULT_SIZES); + /* Try to find a free slot */ for (i = 0; i < cookies_size; i++) { if (cookies[i] == NULL) - { - cookies[i] = lobjCookie; return i; - } } /* No free slot, so make the array bigger */ @@ -751,15 +743,25 @@ cookies_size = newsize; } - Assert(cookies[i] == NULL); - cookies[i] = lobjCookie; return i; } static void -deleteLOfd(int fd) +closeLOfd(int fd) { + LargeObjectDesc *lobj; + + /* + * Make sure we do not try to free twice if this errors out for some + * reason. Better a leak than a crash. + */ + lobj = cookies[fd]; cookies[fd] = NULL; + + if (lobj->snapshot) + UnregisterSnapshotFromOwner(lobj->snapshot, + TopTransactionResourceOwner); + inv_close(lobj); } /***************************************************************************** @@ -778,13 +780,8 @@ int total_read PG_USED_FOR_ASSERTS_ONLY; bytea *result = NULL; - /* - * We don't actually need to store into fscxt, but create it anyway to - * ensure that AtEOXact_LargeObject knows there is state to clean up - */ - CreateFSContext(); - - loDesc = inv_open(loOid, INV_READ, fscxt); + lo_cleanup_needed = true; + loDesc = inv_open(loOid, INV_READ, CurrentMemoryContext); /* Permission check */ if (!lo_compat_privileges && @@ -879,10 +876,9 @@ LargeObjectDesc *loDesc; int written PG_USED_FOR_ASSERTS_ONLY; - CreateFSContext(); - + lo_cleanup_needed = true; loOid = inv_create(loOid); - loDesc = inv_open(loOid, INV_WRITE, fscxt); + loDesc = inv_open(loOid, INV_WRITE, CurrentMemoryContext); written = inv_write(loDesc, VARDATA_ANY(str), VARSIZE_ANY_EXHDR(str)); Assert(written == VARSIZE_ANY_EXHDR(str)); inv_close(loDesc); @@ -902,9 +898,8 @@ LargeObjectDesc *loDesc; int written PG_USED_FOR_ASSERTS_ONLY; - CreateFSContext(); - - loDesc = inv_open(loOid, INV_WRITE, fscxt); + lo_cleanup_needed = true; + loDesc = inv_open(loOid, INV_WRITE, CurrentMemoryContext); /* Permission check */ if (!lo_compat_privileges && diff -Nru postgresql-10-10.17/src/backend/libpq/be-secure-openssl.c postgresql-10-10.19/src/backend/libpq/be-secure-openssl.c --- postgresql-10-10.17/src/backend/libpq/be-secure-openssl.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/libpq/be-secure-openssl.c 2021-11-08 22:05:38.000000000 +0000 @@ -299,6 +299,16 @@ /* disallow SSL session caching, too */ SSL_CTX_set_session_cache_mode(context, SSL_SESS_CACHE_OFF); +#ifdef SSL_OP_NO_RENEGOTIATION + + /* + * Disallow SSL renegotiation, option available since 1.1.0h. This + * concerns only TLSv1.2 and older protocol versions, as TLSv1.3 has no + * support for renegotiation. + */ + SSL_CTX_set_options(context, SSL_OP_NO_RENEGOTIATION); +#endif + /* set up ephemeral DH and ECDH keys */ if (!initialize_dh(context, isServerStart)) goto error; @@ -834,6 +844,7 @@ my_bio_index = BIO_get_new_index(); if (my_bio_index == -1) return NULL; + my_bio_index |= (BIO_TYPE_DESCRIPTOR | BIO_TYPE_SOURCE_SINK); my_bio_methods = BIO_meth_new(my_bio_index, "PostgreSQL backend socket"); if (!my_bio_methods) return NULL; diff -Nru postgresql-10-10.17/src/backend/libpq/pqcomm.c postgresql-10-10.19/src/backend/libpq/pqcomm.c --- postgresql-10-10.17/src/backend/libpq/pqcomm.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/libpq/pqcomm.c 2021-11-08 22:05:38.000000000 +0000 @@ -1199,6 +1199,18 @@ } } +/* -------------------------------- + * pq_buffer_has_data - is any buffered data available to read? + * + * This will *not* attempt to read more data. + * -------------------------------- + */ +bool +pq_buffer_has_data(void) +{ + return (PqRecvPointer < PqRecvLength); +} + /* -------------------------------- * pq_startmsgread - begin reading a message from the client. diff -Nru postgresql-10-10.17/src/backend/parser/analyze.c postgresql-10-10.19/src/backend/parser/analyze.c --- postgresql-10-10.17/src/backend/parser/analyze.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/parser/analyze.c 2021-11-08 22:05:38.000000000 +0000 @@ -2653,7 +2653,7 @@ translator: %s is a SQL row locking clause such as FOR UPDATE */ errmsg("%s is not allowed with DISTINCT clause", LCS_asString(strength)))); - if (qry->groupClause != NIL) + if (qry->groupClause != NIL || qry->groupingSets != NIL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), /*------ @@ -2718,13 +2718,22 @@ if (lockedRels == NIL) { - /* all regular tables used in query */ + /* + * Lock all regular tables used in query and its subqueries. We + * examine inFromCl to exclude auto-added RTEs, particularly NEW/OLD + * in rules. This is a bit of an abuse of a mostly-obsolete flag, but + * it's convenient. We can't rely on the namespace mechanism that has + * largely replaced inFromCl, since for example we need to lock + * base-relation RTEs even if they are masked by upper joins. + */ i = 0; foreach(rt, qry->rtable) { RangeTblEntry *rte = (RangeTblEntry *) lfirst(rt); ++i; + if (!rte->inFromCl) + continue; switch (rte->rtekind) { case RTE_RELATION: @@ -2754,7 +2763,11 @@ } else { - /* just the named tables */ + /* + * Lock just the named tables. As above, we allow locking any base + * relation regardless of alias-visibility rules, so we need to + * examine inFromCl to exclude OLD/NEW. + */ foreach(l, lockedRels) { RangeVar *thisrel = (RangeVar *) lfirst(l); @@ -2775,6 +2788,8 @@ RangeTblEntry *rte = (RangeTblEntry *) lfirst(rt); ++i; + if (!rte->inFromCl) + continue; if (strcmp(rte->eref->aliasname, thisrel->relname) == 0) { switch (rte->rtekind) diff -Nru postgresql-10-10.17/src/backend/parser/parse_agg.c postgresql-10-10.19/src/backend/parser/parse_agg.c --- postgresql-10-10.17/src/backend/parser/parse_agg.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/parser/parse_agg.c 2021-11-08 22:05:38.000000000 +0000 @@ -579,13 +579,8 @@ context.min_agglevel = -1; context.sublevels_up = 0; - (void) expression_tree_walker((Node *) args, - check_agg_arguments_walker, - (void *) &context); - - (void) expression_tree_walker((Node *) filter, - check_agg_arguments_walker, - (void *) &context); + (void) check_agg_arguments_walker((Node *) args, &context); + (void) check_agg_arguments_walker((Node *) filter, &context); /* * If we found no vars nor aggs at all, it's a level-zero aggregate; @@ -632,9 +627,7 @@ { context.min_varlevel = -1; context.min_agglevel = -1; - (void) expression_tree_walker((Node *) directargs, - check_agg_arguments_walker, - (void *) &context); + (void) check_agg_arguments_walker((Node *) directargs, &context); if (context.min_varlevel >= 0 && context.min_varlevel < agglevel) ereport(ERROR, (errcode(ERRCODE_GROUPING_ERROR), diff -Nru postgresql-10-10.17/src/backend/parser/parse_coerce.c postgresql-10-10.19/src/backend/parser/parse_coerce.c --- postgresql-10-10.17/src/backend/parser/parse_coerce.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/parser/parse_coerce.c 2021-11-08 22:05:38.000000000 +0000 @@ -739,26 +739,38 @@ CoercionPathType pathtype; Oid funcId; - /* - * A negative typmod is assumed to mean that no coercion is wanted. Also, - * skip coercion if already done. - */ - if (targetTypMod < 0 || targetTypMod == exprTypmod(node)) + /* Skip coercion if already done */ + if (targetTypMod == exprTypmod(node)) return node; + /* Suppress display of nested coercion steps */ + if (hideInputCoercion) + hide_coercion_node(node); + pathtype = find_typmod_coercion_function(targetTypeId, &funcId); if (pathtype != COERCION_PATH_NONE) { - /* Suppress display of nested coercion steps */ - if (hideInputCoercion) - hide_coercion_node(node); - node = build_coercion_expression(node, pathtype, funcId, targetTypeId, targetTypMod, cformat, location, isExplicit); } + else + { + /* + * We don't need to perform any actual coercion step, but we should + * apply a RelabelType to ensure that the expression exposes the + * intended typmod. + */ + RelabelType *rt; + + rt = makeRelabelType((Expr *) node, targetTypeId, targetTypMod, + exprCollation(node), + cformat); + rt->location = location; + node = (Node *) rt; + } return node; } diff -Nru postgresql-10-10.17/src/backend/parser/parse_target.c postgresql-10-10.19/src/backend/parser/parse_target.c --- postgresql-10-10.17/src/backend/parser/parse_target.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/parser/parse_target.c 2021-11-08 22:05:38.000000000 +0000 @@ -219,7 +219,9 @@ * This is the identical transformation to transformTargetList, except that * the input list elements are bare expressions without ResTarget decoration, * and the output elements are likewise just expressions without TargetEntry - * decoration. We use this for ROW() and VALUES() constructs. + * decoration. Also, we don't expect any multiassign constructs within the + * list, so there's nothing to do for that. We use this for ROW() and + * VALUES() constructs. * * exprKind is not enough to tell us whether to allow SetToDefault, so * an additional flag is needed for that. @@ -281,9 +283,6 @@ result = lappend(result, e); } - /* Shouldn't have any multiassign items here */ - Assert(pstate->p_multiassign_exprs == NIL); - return result; } diff -Nru postgresql-10-10.17/src/backend/po/de.po postgresql-10-10.19/src/backend/po/de.po --- postgresql-10-10.17/src/backend/po/de.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/po/de.po 2021-11-08 22:05:38.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2021-05-06 21:56+0000\n" -"PO-Revision-Date: 2021-02-08 14:56+0100\n" +"POT-Creation-Date: 2021-11-06 16:53+0000\n" +"PO-Revision-Date: 2021-07-14 08:55+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -26,7 +26,7 @@ msgstr "nicht aufgezeichnet" #: ../common/controldata_utils.c:58 commands/copy.c:3198 -#: commands/extension.c:3350 utils/adt/genfile.c:128 +#: commands/extension.c:3358 utils/adt/genfile.c:128 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m" @@ -37,13 +37,13 @@ msgstr "%s: konnte Datei »%s« nicht zum Lesen öffnen: %s\n" #: ../common/controldata_utils.c:75 access/transam/timeline.c:142 -#: access/transam/timeline.c:362 access/transam/xlog.c:3418 -#: access/transam/xlog.c:10973 access/transam/xlog.c:10986 -#: access/transam/xlog.c:11403 access/transam/xlog.c:11446 -#: access/transam/xlog.c:11485 access/transam/xlog.c:11528 +#: access/transam/timeline.c:362 access/transam/xlog.c:3442 +#: access/transam/xlog.c:11135 access/transam/xlog.c:11148 +#: access/transam/xlog.c:11565 access/transam/xlog.c:11608 +#: access/transam/xlog.c:11647 access/transam/xlog.c:11690 #: access/transam/xlogfuncs.c:668 access/transam/xlogfuncs.c:687 -#: commands/extension.c:3360 libpq/hba.c:499 replication/logical/origin.c:726 -#: replication/logical/origin.c:756 replication/logical/reorderbuffer.c:3251 +#: commands/extension.c:3368 libpq/hba.c:499 replication/logical/origin.c:726 +#: replication/logical/origin.c:756 replication/logical/reorderbuffer.c:3275 #: replication/walsender.c:514 storage/file/buffile.c:269 #: storage/file/copydir.c:204 utils/adt/genfile.c:145 utils/adt/misc.c:935 #, c-format @@ -179,9 +179,9 @@ msgstr "konnte Verzeichnis »%s« nicht schließen: %s\n" #: ../common/psprintf.c:180 ../port/path.c:630 ../port/path.c:668 -#: ../port/path.c:685 access/transam/twophase.c:1320 access/transam/xlog.c:6431 -#: lib/stringinfo.c:258 libpq/auth.c:1131 libpq/auth.c:1502 libpq/auth.c:1570 -#: libpq/auth.c:2088 postmaster/bgworker.c:348 postmaster/bgworker.c:967 +#: ../port/path.c:685 access/transam/twophase.c:1377 access/transam/xlog.c:6478 +#: lib/stringinfo.c:258 libpq/auth.c:1155 libpq/auth.c:1534 libpq/auth.c:1602 +#: libpq/auth.c:2120 postmaster/bgworker.c:350 postmaster/bgworker.c:978 #: postmaster/postmaster.c:2472 postmaster/postmaster.c:2494 #: postmaster/postmaster.c:4063 postmaster/postmaster.c:4779 #: postmaster/postmaster.c:4854 postmaster/postmaster.c:5586 @@ -192,9 +192,9 @@ #: storage/file/fd.c:2078 storage/ipc/procarray.c:1069 #: storage/ipc/procarray.c:1557 storage/ipc/procarray.c:1564 #: storage/ipc/procarray.c:1987 storage/ipc/procarray.c:2598 -#: utils/adt/formatting.c:1571 utils/adt/formatting.c:1696 -#: utils/adt/formatting.c:1822 utils/adt/pg_locale.c:470 -#: utils/adt/pg_locale.c:634 utils/adt/regexp.c:223 utils/adt/varlena.c:4703 +#: utils/adt/formatting.c:1575 utils/adt/formatting.c:1700 +#: utils/adt/formatting.c:1826 utils/adt/pg_locale.c:474 +#: utils/adt/pg_locale.c:638 utils/adt/regexp.c:223 utils/adt/varlena.c:4703 #: utils/adt/varlena.c:4724 utils/fmgr/dfmgr.c:221 utils/hash/dynahash.c:444 #: utils/hash/dynahash.c:553 utils/hash/dynahash.c:1065 utils/mb/mbutils.c:382 #: utils/mb/mbutils.c:409 utils/mb/mbutils.c:738 utils/mb/mbutils.c:764 @@ -274,7 +274,7 @@ msgid "could not look up effective user ID %ld: %s" msgstr "konnte effektive Benutzer-ID %ld nicht nachschlagen: %s" -#: ../common/username.c:45 libpq/auth.c:2035 +#: ../common/username.c:45 libpq/auth.c:2067 msgid "user does not exist" msgstr "Benutzer existiert nicht" @@ -397,7 +397,7 @@ msgstr "Anforderung nach BRIN-Bereichsverdichtung für Index »%s« Seite %u wurde nicht aufgezeichnet" #: access/brin/brin.c:874 access/brin/brin.c:951 access/gin/ginfast.c:990 -#: access/transam/xlog.c:10387 access/transam/xlog.c:10912 +#: access/transam/xlog.c:10549 access/transam/xlog.c:11074 #: access/transam/xlogfuncs.c:296 access/transam/xlogfuncs.c:323 #: access/transam/xlogfuncs.c:362 access/transam/xlogfuncs.c:383 #: access/transam/xlogfuncs.c:404 access/transam/xlogfuncs.c:474 @@ -429,7 +429,8 @@ #: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:364 #: access/brin/brin_pageops.c:830 access/gin/ginentrypage.c:110 #: access/gist/gist.c:1369 access/nbtree/nbtinsert.c:577 -#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1933 +#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1938 +#: access/spgist/spgdoinsert.c:2206 #, c-format msgid "index row size %zu exceeds maximum %zu for index \"%s\"" msgstr "Größe %zu der Indexzeile überschreitet Maximum %zu für Index »%s«" @@ -644,8 +645,8 @@ msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Um das zu reparieren, führen Sie REINDEX INDEX \"%s\" aus." -#: access/gin/ginutil.c:134 executor/execExpr.c:1780 -#: utils/adt/arrayfuncs.c:3815 utils/adt/arrayfuncs.c:6335 +#: access/gin/ginutil.c:134 executor/execExpr.c:1811 +#: utils/adt/arrayfuncs.c:3817 utils/adt/arrayfuncs.c:6343 #: utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" @@ -728,8 +729,8 @@ msgid "index row size %zu exceeds hash maximum %zu" msgstr "Größe der Indexzeile %zu überschreitet Maximum für Hash-Index %zu" -#: access/hash/hashinsert.c:84 access/spgist/spgdoinsert.c:1937 -#: access/spgist/spgutils.c:708 +#: access/hash/hashinsert.c:84 access/spgist/spgdoinsert.c:1942 +#: access/spgist/spgdoinsert.c:2210 access/spgist/spgutils.c:708 #, c-format msgid "Values larger than a buffer page cannot be indexed." msgstr "Werte, die größer sind als eine Pufferseite, können nicht indiziert werden." @@ -782,33 +783,33 @@ msgid "\"%s\" is a composite type" msgstr "»%s« ist ein zusammengesetzter Typ" -#: access/heap/heapam.c:2605 +#: access/heap/heapam.c:2609 #, c-format msgid "cannot insert tuples during a parallel operation" msgstr "während einer parallelen Operation können keine Tupel eingefügt werden" -#: access/heap/heapam.c:3050 +#: access/heap/heapam.c:3054 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "während einer parallelen Operation können keine Tupel gelöscht werden" -#: access/heap/heapam.c:3096 +#: access/heap/heapam.c:3100 #, c-format msgid "attempted to delete invisible tuple" msgstr "Versuch ein unsichtbares Tupel zu löschen" -#: access/heap/heapam.c:3526 access/heap/heapam.c:6301 +#: access/heap/heapam.c:3534 access/heap/heapam.c:6309 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "während einer parallelen Operation können keine Tupel aktualisiert werden" -#: access/heap/heapam.c:3674 +#: access/heap/heapam.c:3682 #, c-format msgid "attempted to update invisible tuple" msgstr "Versuch ein unsichtbares Tupel zu aktualisieren" -#: access/heap/heapam.c:4974 access/heap/heapam.c:5012 -#: access/heap/heapam.c:5264 executor/execMain.c:2648 +#: access/heap/heapam.c:4982 access/heap/heapam.c:5020 +#: access/heap/heapam.c:5272 executor/execMain.c:2654 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "konnte Sperre für Zeile in Relation »%s« nicht setzen" @@ -825,20 +826,20 @@ #: access/heap/rewriteheap.c:981 access/heap/rewriteheap.c:1204 #: access/heap/rewriteheap.c:1304 access/transam/timeline.c:428 -#: access/transam/timeline.c:508 access/transam/xlog.c:3283 -#: access/transam/xlog.c:3451 replication/logical/snapbuild.c:1653 +#: access/transam/timeline.c:508 access/transam/xlog.c:3307 +#: access/transam/xlog.c:3475 replication/logical/snapbuild.c:1669 #: replication/slot.c:1319 replication/slot.c:1415 storage/file/fd.c:651 -#: storage/file/fd.c:3244 storage/smgr/md.c:1078 storage/smgr/md.c:1323 -#: storage/smgr/md.c:1497 utils/misc/guc.c:7061 +#: storage/file/fd.c:3244 storage/smgr/md.c:1079 storage/smgr/md.c:1324 +#: storage/smgr/md.c:1498 utils/misc/guc.c:7061 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "konnte Datei »%s« nicht fsyncen: %m" #: access/heap/rewriteheap.c:1036 access/heap/rewriteheap.c:1156 #: access/transam/timeline.c:329 access/transam/timeline.c:483 -#: access/transam/xlog.c:3237 access/transam/xlog.c:3389 -#: access/transam/xlog.c:10722 access/transam/xlog.c:10760 -#: access/transam/xlog.c:11164 postmaster/postmaster.c:4546 +#: access/transam/xlog.c:3261 access/transam/xlog.c:3413 +#: access/transam/xlog.c:10884 access/transam/xlog.c:10922 +#: access/transam/xlog.c:11326 postmaster/postmaster.c:4546 #: replication/logical/origin.c:582 replication/slot.c:1266 #: storage/file/copydir.c:176 storage/smgr/md.c:328 utils/time/snapmgr.c:1297 #, c-format @@ -851,17 +852,17 @@ msgstr "konnte Datei »%s« nicht auf %u kürzen: %m" #: access/heap/rewriteheap.c:1174 replication/walsender.c:494 -#: storage/smgr/md.c:2027 +#: storage/smgr/md.c:2028 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "konnte Positionszeiger nicht ans Ende der Datei »%s« setzen: %m" #: access/heap/rewriteheap.c:1191 access/transam/timeline.c:384 #: access/transam/timeline.c:420 access/transam/timeline.c:500 -#: access/transam/xlog.c:3269 access/transam/xlog.c:3442 +#: access/transam/xlog.c:3293 access/transam/xlog.c:3466 #: postmaster/postmaster.c:4556 postmaster/postmaster.c:4566 #: replication/logical/origin.c:597 replication/logical/origin.c:642 -#: replication/logical/origin.c:664 replication/logical/snapbuild.c:1629 +#: replication/logical/origin.c:664 replication/logical/snapbuild.c:1645 #: replication/slot.c:1301 storage/file/buffile.c:343 #: storage/file/copydir.c:217 utils/init/miscinit.c:1253 #: utils/init/miscinit.c:1264 utils/init/miscinit.c:1272 utils/misc/guc.c:7022 @@ -874,29 +875,29 @@ #: access/heap/rewriteheap.c:1278 access/transam/xlogarchive.c:112 #: access/transam/xlogarchive.c:457 postmaster/postmaster.c:1281 #: postmaster/syslogger.c:1455 replication/logical/origin.c:569 -#: replication/logical/reorderbuffer.c:2753 -#: replication/logical/snapbuild.c:1570 replication/logical/snapbuild.c:1976 +#: replication/logical/reorderbuffer.c:2777 +#: replication/logical/snapbuild.c:1586 replication/logical/snapbuild.c:1992 #: replication/slot.c:1385 storage/file/fd.c:702 storage/ipc/dsm.c:322 -#: storage/smgr/md.c:473 storage/smgr/md.c:517 storage/smgr/md.c:1444 +#: storage/smgr/md.c:473 storage/smgr/md.c:517 storage/smgr/md.c:1445 #, c-format msgid "could not remove file \"%s\": %m" msgstr "konnte Datei »%s« nicht löschen: %m" #: access/heap/rewriteheap.c:1293 access/transam/timeline.c:110 #: access/transam/timeline.c:250 access/transam/timeline.c:348 -#: access/transam/xlog.c:3213 access/transam/xlog.c:3333 -#: access/transam/xlog.c:3374 access/transam/xlog.c:3653 -#: access/transam/xlog.c:3756 access/transam/xlogutils.c:706 +#: access/transam/xlog.c:3237 access/transam/xlog.c:3357 +#: access/transam/xlog.c:3398 access/transam/xlog.c:3677 +#: access/transam/xlog.c:3780 access/transam/xlogutils.c:706 #: postmaster/syslogger.c:1464 replication/basebackup.c:490 #: replication/basebackup.c:1236 replication/logical/origin.c:719 -#: replication/logical/reorderbuffer.c:2269 -#: replication/logical/reorderbuffer.c:2525 -#: replication/logical/reorderbuffer.c:3231 -#: replication/logical/snapbuild.c:1615 replication/logical/snapbuild.c:1718 +#: replication/logical/reorderbuffer.c:2291 +#: replication/logical/reorderbuffer.c:2548 +#: replication/logical/reorderbuffer.c:3255 +#: replication/logical/snapbuild.c:1631 replication/logical/snapbuild.c:1734 #: replication/slot.c:1400 replication/walsender.c:487 -#: replication/walsender.c:2403 storage/file/copydir.c:169 +#: replication/walsender.c:2409 storage/file/copydir.c:169 #: storage/file/fd.c:634 storage/file/fd.c:3156 storage/file/fd.c:3223 -#: storage/smgr/md.c:650 utils/error/elog.c:1872 utils/init/miscinit.c:1177 +#: storage/smgr/md.c:651 utils/error/elog.c:1872 utils/init/miscinit.c:1177 #: utils/init/miscinit.c:1312 utils/init/miscinit.c:1389 utils/misc/guc.c:7278 #: utils/misc/guc.c:7311 #, c-format @@ -1026,14 +1027,14 @@ msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u" msgstr "Datenbank nimmt keine Befehle an, die neue MultiXactIds erzeugen, um Datenverlust wegen Transaktionsnummernüberlauf in Datenbank mit OID %u zu vermeiden" -#: access/transam/multixact.c:1028 access/transam/multixact.c:2320 +#: access/transam/multixact.c:1028 access/transam/multixact.c:2323 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "database \"%s\" must be vacuumed before %u more MultiXactIds are used" msgstr[0] "Datenbank »%s« muss gevacuumt werden, bevor %u weitere MultiXactId aufgebraucht ist" msgstr[1] "Datenbank »%s« muss gevacuumt werden, bevor %u weitere MultiXactIds aufgebraucht sind" -#: access/transam/multixact.c:1037 access/transam/multixact.c:2329 +#: access/transam/multixact.c:1037 access/transam/multixact.c:2332 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" @@ -1069,7 +1070,7 @@ msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Führen Sie ein datenbankweites VACUUM in dieser Datenbank aus, mit reduzierten Einstellungen für vacuum_multixact_freeze_min_age und vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1277 +#: access/transam/multixact.c:1279 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "MultiXactId %u existiert nicht mehr -- anscheinender Überlauf" @@ -1079,12 +1080,12 @@ msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "MultiXactId %u wurde noch nicht erzeugt -- anscheinender Überlauf" -#: access/transam/multixact.c:2270 +#: access/transam/multixact.c:2273 #, c-format msgid "MultiXactId wrap limit is %u, limited by database with OID %u" msgstr "Grenze für MultiXactId-Überlauf ist %u, begrenzt durch Datenbank mit OID %u" -#: access/transam/multixact.c:2325 access/transam/multixact.c:2334 +#: access/transam/multixact.c:2328 access/transam/multixact.c:2337 #: access/transam/varsup.c:146 access/transam/varsup.c:153 #: access/transam/varsup.c:405 access/transam/varsup.c:412 #, c-format @@ -1095,71 +1096,71 @@ "Um ein Abschalten der Datenbank zu vermeiden, führen Sie ein komplettes VACUUM über diese Datenbank aus.\n" "Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder zurückrollen." -#: access/transam/multixact.c:2604 +#: access/transam/multixact.c:2607 #, c-format msgid "oldest MultiXactId member is at offset %u" msgstr "ältestes MultiXactId-Mitglied ist bei Offset %u" -#: access/transam/multixact.c:2608 +#: access/transam/multixact.c:2611 #, c-format msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk" msgstr "MultiXact-Member-Wraparound-Schutz ist deaktiviert, weil die älteste gecheckpointete MultiXact %u nicht auf der Festplatte existiert" -#: access/transam/multixact.c:2630 +#: access/transam/multixact.c:2633 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "MultiXact-Member-Wraparound-Schutz ist jetzt aktiviert" -#: access/transam/multixact.c:2633 +#: access/transam/multixact.c:2636 #, c-format msgid "MultiXact member stop limit is now %u based on MultiXact %u" msgstr "MultiXact-Member-Stopp-Limit ist jetzt %u, basierend auf MultiXact %u" -#: access/transam/multixact.c:3021 +#: access/transam/multixact.c:3024 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" msgstr "älteste MultiXact %u nicht gefunden, älteste ist MultiXact %u, Truncate wird ausgelassen" -#: access/transam/multixact.c:3039 +#: access/transam/multixact.c:3042 #, c-format msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" msgstr "kann nicht bis MultiXact %u trunkieren, weil sie nicht auf der Festplatte existiert, Trunkierung wird ausgelassen" -#: access/transam/multixact.c:3365 +#: access/transam/multixact.c:3368 #, c-format msgid "invalid MultiXactId: %u" msgstr "ungültige MultiXactId: %u" -#: access/transam/parallel.c:608 +#: access/transam/parallel.c:619 #, c-format msgid "parallel worker failed to initialize" msgstr "Initialisierung von parallelem Arbeitsprozess fehlgeschlagen" -#: access/transam/parallel.c:609 +#: access/transam/parallel.c:620 #, c-format msgid "More details may be available in the server log." msgstr "Weitere Einzelheiten sind möglicherweise im Serverlog zu finden." -#: access/transam/parallel.c:670 +#: access/transam/parallel.c:681 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "Postmaster beendete während einer parallelen Transaktion" -#: access/transam/parallel.c:857 +#: access/transam/parallel.c:868 #, c-format msgid "lost connection to parallel worker" msgstr "Verbindung mit parallelem Arbeitsprozess verloren" -#: access/transam/parallel.c:919 access/transam/parallel.c:921 +#: access/transam/parallel.c:930 access/transam/parallel.c:932 msgid "parallel worker" msgstr "paralleler Arbeitsprozess" -#: access/transam/parallel.c:1064 +#: access/transam/parallel.c:1077 #, c-format msgid "could not map dynamic shared memory segment" msgstr "konnte dynamisches Shared-Memory-Segment nicht mappen" -#: access/transam/parallel.c:1069 +#: access/transam/parallel.c:1082 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "ungültige magische Zahl in dynamischem Shared-Memory-Segment" @@ -1252,7 +1253,7 @@ msgstr "Zeitleisten-IDs müssen kleiner als die Zeitleisten-ID des Kindes sein." #: access/transam/timeline.c:434 access/transam/timeline.c:514 -#: access/transam/xlog.c:3290 access/transam/xlog.c:3457 +#: access/transam/xlog.c:3314 access/transam/xlog.c:3481 #: access/transam/xlogfuncs.c:693 commands/copy.c:1741 #: storage/file/copydir.c:228 #, c-format @@ -1284,144 +1285,144 @@ msgid "transaction identifier \"%s\" is already in use" msgstr "Transaktionsbezeichner »%s« wird bereits verwendet" -#: access/transam/twophase.c:419 access/transam/twophase.c:2376 +#: access/transam/twophase.c:419 access/transam/twophase.c:2433 #, c-format msgid "maximum number of prepared transactions reached" msgstr "maximale Anzahl vorbereiteter Transaktionen erreicht" -#: access/transam/twophase.c:420 access/transam/twophase.c:2377 +#: access/transam/twophase.c:420 access/transam/twophase.c:2434 #, c-format msgid "Increase max_prepared_transactions (currently %d)." msgstr "Erhöhen Sie max_prepared_transactions (aktuell %d)." -#: access/transam/twophase.c:587 +#: access/transam/twophase.c:597 #, c-format msgid "prepared transaction with identifier \"%s\" is busy" msgstr "vorbereitete Transaktion mit Bezeichner »%s« ist beschäftigt" -#: access/transam/twophase.c:593 +#: access/transam/twophase.c:603 #, c-format msgid "permission denied to finish prepared transaction" msgstr "keine Berechtigung, um vorbereitete Transaktion abzuschließen" -#: access/transam/twophase.c:594 +#: access/transam/twophase.c:604 #, c-format msgid "Must be superuser or the user that prepared the transaction." msgstr "Sie müssen Superuser oder der Benutzer sein, der die Transaktion vorbereitet hat." -#: access/transam/twophase.c:605 +#: access/transam/twophase.c:615 #, c-format msgid "prepared transaction belongs to another database" msgstr "vorbereitete Transaktion gehört zu einer anderen Datenbank" -#: access/transam/twophase.c:606 +#: access/transam/twophase.c:616 #, c-format msgid "Connect to the database where the transaction was prepared to finish it." msgstr "Verbinden Sie sich mit der Datenbank, wo die Transaktion vorbereitet wurde, um sie zu beenden." -#: access/transam/twophase.c:621 +#: access/transam/twophase.c:631 #, c-format msgid "prepared transaction with identifier \"%s\" does not exist" msgstr "vorbereitete Transaktion mit Bezeichner »%s« existiert nicht" -#: access/transam/twophase.c:1086 +#: access/transam/twophase.c:1143 #, c-format msgid "two-phase state file maximum length exceeded" msgstr "maximale Länge der Zweiphasen-Statusdatei überschritten" -#: access/transam/twophase.c:1204 +#: access/transam/twophase.c:1261 #, c-format msgid "could not open two-phase state file \"%s\": %m" msgstr "konnte Zweiphasen-Statusdatei »%s« nicht öffnen: %m" -#: access/transam/twophase.c:1225 +#: access/transam/twophase.c:1282 #, c-format msgid "could not stat two-phase state file \"%s\": %m" msgstr "konnte »stat« für Zweiphasen-Statusdatei »%s« nicht ausführen: %m" -#: access/transam/twophase.c:1264 +#: access/transam/twophase.c:1321 #, c-format msgid "could not read two-phase state file \"%s\": %m" msgstr "konnte Zweiphasen-Statusdatei »%s« nicht lesen: %m" -#: access/transam/twophase.c:1321 access/transam/xlog.c:6432 +#: access/transam/twophase.c:1378 access/transam/xlog.c:6479 #, c-format msgid "Failed while allocating a WAL reading processor." msgstr "Fehlgeschlagen beim Anlegen eines WAL-Leseprozessors." -#: access/transam/twophase.c:1335 +#: access/transam/twophase.c:1392 #, c-format msgid "could not read two-phase state from WAL at %X/%X" msgstr "konnte Zweiphasen-Status nicht aus dem WAL bei %X/%X lesen" -#: access/transam/twophase.c:1343 +#: access/transam/twophase.c:1400 #, c-format msgid "expected two-phase state data is not present in WAL at %X/%X" msgstr "erwartete Zweiphasen-Status-Daten sind nicht im WAL bei %X/%X vorhanden" -#: access/transam/twophase.c:1580 +#: access/transam/twophase.c:1637 #, 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:1610 +#: access/transam/twophase.c:1667 #, 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:1627 access/transam/twophase.c:1640 +#: access/transam/twophase.c:1684 access/transam/twophase.c:1697 #, c-format msgid "could not write two-phase state file: %m" msgstr "konnte Zweiphasen-Statusdatei nicht schreiben: %m" -#: access/transam/twophase.c:1657 +#: access/transam/twophase.c:1714 #, c-format msgid "could not fsync two-phase state file: %m" msgstr "konnte Zweiphasen-Statusdatei nicht fsyncen: %m" -#: access/transam/twophase.c:1664 +#: access/transam/twophase.c:1721 #, c-format msgid "could not close two-phase state file: %m" msgstr "konnte Zweiphasen-Statusdatei nicht schließen: %m" -#: access/transam/twophase.c:1752 +#: access/transam/twophase.c:1809 #, c-format msgid "%u two-phase state file was written for a long-running prepared transaction" msgid_plural "%u two-phase state files were written for long-running prepared transactions" msgstr[0] "%u Zweiphasen-Statusdatei wurde für eine lange laufende vorbereitete Transaktion geschrieben" msgstr[1] "%u Zweiphasen-Statusdateien wurden für lange laufende vorbereitete Transaktionen geschrieben" -#: access/transam/twophase.c:1980 +#: access/transam/twophase.c:2037 #, c-format msgid "recovering prepared transaction %u from shared memory" msgstr "Wiederherstellung der vorbereiteten Transaktion %u aus dem Shared Memory" -#: access/transam/twophase.c:2070 +#: access/transam/twophase.c:2127 #, c-format msgid "removing stale two-phase state file for transaction %u" msgstr "entferne abgelaufene Zweiphasen-Statusdatei für Transaktion %u" -#: access/transam/twophase.c:2077 +#: access/transam/twophase.c:2134 #, c-format msgid "removing stale two-phase state from memory for transaction %u" msgstr "entferne abgelaufenen Zweiphasen-Status aus dem Speicher für Transaktion %u" -#: access/transam/twophase.c:2090 +#: access/transam/twophase.c:2147 #, c-format msgid "removing future two-phase state file for transaction %u" msgstr "entferne zukünftige Zweiphasen-Statusdatei für Transaktion %u" -#: access/transam/twophase.c:2097 +#: access/transam/twophase.c:2154 #, c-format msgid "removing future two-phase state from memory for transaction %u" msgstr "entferne zukünftigen Zweiphasen-Status aus dem Speicher für Transaktion %u" -#: access/transam/twophase.c:2111 access/transam/twophase.c:2130 +#: access/transam/twophase.c:2168 access/transam/twophase.c:2187 #, c-format msgid "removing corrupt two-phase state file for transaction %u" msgstr "entferne verfälschte Zweiphasen-Statusdatei für Transaktion %u" -#: access/transam/twophase.c:2137 +#: access/transam/twophase.c:2194 #, c-format msgid "removing corrupt two-phase state from memory for transaction %u" msgstr "entferne verfälschten Zweiphasen-Status aus dem Speicher für Transaktion %u" @@ -1460,437 +1461,437 @@ msgid "transaction ID wrap limit is %u, limited by database with OID %u" msgstr "Grenze für Transaktionsnummernüberlauf ist %u, begrenzt durch Datenbank mit OID %u" -#: access/transam/xact.c:969 +#: access/transam/xact.c:970 #, c-format msgid "cannot have more than 2^32-2 commands in a transaction" msgstr "kann nicht mehr als 2^32-2 Befehle in einer Transaktion ausführen" -#: access/transam/xact.c:1494 +#: access/transam/xact.c:1495 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "maximale Anzahl committeter Subtransaktionen (%d) überschritten" -#: access/transam/xact.c:2300 +#: access/transam/xact.c:2301 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "PREPARE kann nicht für eine Transaktion ausgeführt werden, die temporäre Tabellen bearbeitet hat" -#: access/transam/xact.c:2312 +#: access/transam/xact.c:2313 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary objects" msgstr "PREPARE kann nicht für eine Transaktion ausgeführt werden, die temporäre Objekte bearbeitet hat" -#: access/transam/xact.c:2322 +#: access/transam/xact.c:2323 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "PREPARE kann nicht für eine Transaktion ausgeführt werden, die Snapshots exportiert hat" -#: access/transam/xact.c:2331 +#: access/transam/xact.c:2332 #, c-format msgid "cannot PREPARE a transaction that has manipulated logical replication workers" msgstr "PREPARE kann nicht für eine Transaktion ausgeführt werden, die Arbeitsprozesse für logische Replikation manipuliert hat" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3216 +#: access/transam/xact.c:3226 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s kann nicht in einem Transaktionsblock laufen" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3226 +#: access/transam/xact.c:3236 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s kann nicht in einer Subtransaktion laufen" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3236 +#: access/transam/xact.c:3246 #, c-format msgid "%s cannot be executed from a function or multi-command string" msgstr "%s kann nicht aus einer Funktion oder einer mehrbefehligen Zeichenkette heraus ausgeführt werden" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3307 +#: access/transam/xact.c:3317 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s kann nur in Transaktionsblöcken verwendet werden" -#: access/transam/xact.c:3491 +#: access/transam/xact.c:3501 #, c-format msgid "there is already a transaction in progress" msgstr "eine Transaktion ist bereits begonnen" -#: access/transam/xact.c:3659 access/transam/xact.c:3762 +#: access/transam/xact.c:3669 access/transam/xact.c:3772 #, c-format msgid "there is no transaction in progress" msgstr "keine Transaktion offen" -#: access/transam/xact.c:3670 +#: access/transam/xact.c:3680 #, c-format msgid "cannot commit during a parallel operation" msgstr "während einer parallelen Operation kann nicht committet werden" -#: access/transam/xact.c:3773 +#: access/transam/xact.c:3783 #, c-format msgid "cannot abort during a parallel operation" msgstr "während einer parallelen Operation kann nicht abgebrochen werden" -#: access/transam/xact.c:3815 +#: access/transam/xact.c:3825 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "während einer parallelen Operation können keine Sicherungspunkte definiert werden" -#: access/transam/xact.c:3882 +#: access/transam/xact.c:3892 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "während einer parallelen Operation können keine Sicherungspunkte freigegeben werden" -#: access/transam/xact.c:3893 access/transam/xact.c:3945 -#: access/transam/xact.c:3951 access/transam/xact.c:4007 -#: access/transam/xact.c:4057 access/transam/xact.c:4063 +#: access/transam/xact.c:3903 access/transam/xact.c:3955 +#: access/transam/xact.c:3961 access/transam/xact.c:4017 +#: access/transam/xact.c:4067 access/transam/xact.c:4073 #, c-format msgid "no such savepoint" msgstr "Sicherungspunkt existiert nicht" -#: access/transam/xact.c:3995 +#: access/transam/xact.c:4005 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "während einer parallelen Operation kann nicht auf einen Sicherungspunkt zurückgerollt werden" -#: access/transam/xact.c:4123 +#: access/transam/xact.c:4133 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "während einer parallelen Operation können keine Subtransaktionen gestartet werden" -#: access/transam/xact.c:4190 +#: access/transam/xact.c:4200 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "während einer parallelen Operation können keine Subtransaktionen committet werden" -#: access/transam/xact.c:4827 +#: access/transam/xact.c:4842 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "kann nicht mehr als 2^32-1 Subtransaktionen in einer Transaktion haben" -#: access/transam/xlog.c:2469 +#: access/transam/xlog.c:2493 #, c-format msgid "could not seek in log file %s to offset %u: %m" msgstr "konnte Positionszeiger in Logdatei %s nicht auf %u setzen: %m" -#: access/transam/xlog.c:2491 +#: access/transam/xlog.c:2515 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "konnte nicht in Logdatei %s bei Position %u, Länge %zu schreiben: %m" -#: access/transam/xlog.c:2767 +#: access/transam/xlog.c:2791 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" msgstr "minimaler Recovery-Punkt auf %X/%X auf Zeitleiste %u aktualisiert" -#: access/transam/xlog.c:3422 +#: access/transam/xlog.c:3446 #, c-format msgid "not enough data in file \"%s\"" msgstr "nicht genug Daten in Datei »%s«" -#: access/transam/xlog.c:3568 +#: access/transam/xlog.c:3592 #, c-format msgid "could not open write-ahead log file \"%s\": %m" msgstr "konnte Write-Ahead-Log-Datei »%s« nicht öffnen: %m" -#: access/transam/xlog.c:3782 access/transam/xlog.c:5631 +#: access/transam/xlog.c:3806 access/transam/xlog.c:5668 #, c-format msgid "could not close log file %s: %m" msgstr "konnte Logdatei %s nicht schließen: %m" -#: access/transam/xlog.c:3846 access/transam/xlogutils.c:701 -#: replication/walsender.c:2398 +#: access/transam/xlog.c:3870 access/transam/xlogutils.c:701 +#: replication/walsender.c:2404 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "das angeforderte WAL-Segment %s wurde schon entfernt" -#: access/transam/xlog.c:3907 access/transam/xlog.c:3982 -#: access/transam/xlog.c:4177 +#: access/transam/xlog.c:3931 access/transam/xlog.c:4006 +#: access/transam/xlog.c:4201 #, c-format msgid "could not open write-ahead log directory \"%s\": %m" msgstr "konnte Write-Ahead-Log-Verzeichnis »%s« nicht öffnen: %m" -#: access/transam/xlog.c:4063 +#: access/transam/xlog.c:4087 #, c-format msgid "recycled write-ahead log file \"%s\"" msgstr "Write-Ahead-Log-Datei »%s« wird wiederverwendet" -#: access/transam/xlog.c:4075 +#: access/transam/xlog.c:4099 #, c-format msgid "removing write-ahead log file \"%s\"" msgstr "entferne Write-Ahead-Log-Datei »%s«" -#: access/transam/xlog.c:4095 +#: access/transam/xlog.c:4119 #, c-format msgid "could not rename old write-ahead log file \"%s\": %m" msgstr "konnte alte Write-Ahead-Log-Datei »%s« nicht umbenennen: %m" -#: access/transam/xlog.c:4137 access/transam/xlog.c:4147 +#: access/transam/xlog.c:4161 access/transam/xlog.c:4171 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "benötigtes WAL-Verzeichnis »%s« existiert nicht" -#: access/transam/xlog.c:4153 +#: access/transam/xlog.c:4177 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "erzeuge fehlendes WAL-Verzeichnis »%s«" -#: access/transam/xlog.c:4156 +#: access/transam/xlog.c:4180 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "konnte fehlendes Verzeichnis »%s« nicht erzeugen: %m" -#: access/transam/xlog.c:4267 +#: access/transam/xlog.c:4304 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "unerwartete Zeitleisten-ID %u in Logsegment %s, Offset %u" -#: access/transam/xlog.c:4405 +#: access/transam/xlog.c:4442 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "neue Zeitleiste %u ist kein Kind der Datenbanksystemzeitleiste %u" -#: access/transam/xlog.c:4419 +#: access/transam/xlog.c:4456 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "neue Zeitleiste %u zweigte von der aktuellen Datenbanksystemzeitleiste %u vor dem aktuellen Wiederherstellungspunkt %X/%X ab" -#: access/transam/xlog.c:4438 +#: access/transam/xlog.c:4475 #, c-format msgid "new target timeline is %u" msgstr "neue Zielzeitleiste ist %u" -#: access/transam/xlog.c:4519 +#: access/transam/xlog.c:4556 #, c-format msgid "could not create control file \"%s\": %m" msgstr "konnte Kontrolldatei »%s« nicht erzeugen: %m" -#: access/transam/xlog.c:4531 access/transam/xlog.c:4765 +#: access/transam/xlog.c:4568 access/transam/xlog.c:4802 #, c-format msgid "could not write to control file: %m" msgstr "konnte nicht in Kontrolldatei schreiben: %m" -#: access/transam/xlog.c:4539 access/transam/xlog.c:4773 +#: access/transam/xlog.c:4576 access/transam/xlog.c:4810 #, c-format msgid "could not fsync control file: %m" msgstr "konnte Kontrolldatei nicht fsyncen: %m" -#: access/transam/xlog.c:4545 access/transam/xlog.c:4779 +#: access/transam/xlog.c:4582 access/transam/xlog.c:4816 #, c-format msgid "could not close control file: %m" msgstr "konnte Kontrolldatei nicht schließen: %m" -#: access/transam/xlog.c:4564 access/transam/xlog.c:4753 +#: access/transam/xlog.c:4601 access/transam/xlog.c:4790 #, c-format msgid "could not open control file \"%s\": %m" msgstr "konnte Kontrolldatei »%s« nicht öffnen: %m" -#: access/transam/xlog.c:4574 +#: access/transam/xlog.c:4611 #, c-format msgid "could not read from control file: %m" msgstr "konnte nicht aus Kontrolldatei lesen: %m" -#: access/transam/xlog.c:4577 +#: access/transam/xlog.c:4614 #, c-format msgid "could not read from control file: read %d bytes, expected %d" msgstr "konnte nicht aus Kontrolldatei lesen: %d Bytes gelesen, %d erwartet" -#: access/transam/xlog.c:4592 access/transam/xlog.c:4601 -#: access/transam/xlog.c:4625 access/transam/xlog.c:4632 -#: access/transam/xlog.c:4639 access/transam/xlog.c:4644 -#: access/transam/xlog.c:4651 access/transam/xlog.c:4658 -#: access/transam/xlog.c:4665 access/transam/xlog.c:4672 -#: access/transam/xlog.c:4679 access/transam/xlog.c:4686 -#: access/transam/xlog.c:4693 access/transam/xlog.c:4702 -#: access/transam/xlog.c:4709 access/transam/xlog.c:4718 -#: access/transam/xlog.c:4725 utils/init/miscinit.c:1410 +#: access/transam/xlog.c:4629 access/transam/xlog.c:4638 +#: access/transam/xlog.c:4662 access/transam/xlog.c:4669 +#: access/transam/xlog.c:4676 access/transam/xlog.c:4681 +#: access/transam/xlog.c:4688 access/transam/xlog.c:4695 +#: access/transam/xlog.c:4702 access/transam/xlog.c:4709 +#: access/transam/xlog.c:4716 access/transam/xlog.c:4723 +#: access/transam/xlog.c:4730 access/transam/xlog.c:4739 +#: access/transam/xlog.c:4746 access/transam/xlog.c:4755 +#: access/transam/xlog.c:4762 utils/init/miscinit.c:1410 #, c-format msgid "database files are incompatible with server" msgstr "Datenbankdateien sind inkompatibel mit Server" -#: access/transam/xlog.c:4593 +#: access/transam/xlog.c:4630 #, 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:4597 +#: access/transam/xlog.c:4634 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "Das Problem könnte eine falsche Byte-Reihenfolge sein. Es sieht so aus, dass Sie initdb ausführen müssen." -#: access/transam/xlog.c:4602 +#: access/transam/xlog.c:4639 #, 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:4605 access/transam/xlog.c:4629 -#: access/transam/xlog.c:4636 access/transam/xlog.c:4641 +#: access/transam/xlog.c:4642 access/transam/xlog.c:4666 +#: access/transam/xlog.c:4673 access/transam/xlog.c:4678 #, c-format msgid "It looks like you need to initdb." msgstr "Es sieht so aus, dass Sie initdb ausführen müssen." -#: access/transam/xlog.c:4616 +#: access/transam/xlog.c:4653 #, c-format msgid "incorrect checksum in control file" msgstr "falsche Prüfsumme in Kontrolldatei" -#: access/transam/xlog.c:4626 +#: access/transam/xlog.c:4663 #, 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:4633 +#: access/transam/xlog.c:4670 #, 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:4640 +#: access/transam/xlog.c:4677 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "Der Datenbank-Cluster verwendet anscheinend ein anderes Fließkommazahlenformat als das Serverprogramm." -#: access/transam/xlog.c:4645 +#: access/transam/xlog.c:4682 #, 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:4648 access/transam/xlog.c:4655 -#: access/transam/xlog.c:4662 access/transam/xlog.c:4669 -#: access/transam/xlog.c:4676 access/transam/xlog.c:4683 -#: access/transam/xlog.c:4690 access/transam/xlog.c:4697 -#: access/transam/xlog.c:4705 access/transam/xlog.c:4712 -#: access/transam/xlog.c:4721 access/transam/xlog.c:4728 +#: access/transam/xlog.c:4685 access/transam/xlog.c:4692 +#: access/transam/xlog.c:4699 access/transam/xlog.c:4706 +#: access/transam/xlog.c:4713 access/transam/xlog.c:4720 +#: access/transam/xlog.c:4727 access/transam/xlog.c:4734 +#: access/transam/xlog.c:4742 access/transam/xlog.c:4749 +#: access/transam/xlog.c:4758 access/transam/xlog.c:4765 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Es sieht so aus, dass Sie neu kompilieren oder initdb ausführen müssen." -#: access/transam/xlog.c:4652 +#: access/transam/xlog.c:4689 #, 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:4659 +#: access/transam/xlog.c:4696 #, 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:4666 +#: access/transam/xlog.c:4703 #, 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:4673 +#: access/transam/xlog.c:4710 #, 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:4680 +#: access/transam/xlog.c:4717 #, 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:4687 +#: access/transam/xlog.c:4724 #, 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:4694 +#: access/transam/xlog.c:4731 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "Der Datenbank-Cluster wurde mit LOBLKSIZE %d initialisiert, aber der Server wurde mit LOBLKSIZE %d kompiliert." -#: access/transam/xlog.c:4703 +#: access/transam/xlog.c:4740 #, c-format msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." msgstr "Der Datenbank-Cluster wurde ohne USE_FLOAT4_BYVAL initialisiert, aber der Server wurde mit USE_FLOAT4_BYVAL kompiliert." -#: access/transam/xlog.c:4710 +#: access/transam/xlog.c:4747 #, c-format msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL." msgstr "Der Datenbank-Cluster wurde mit USE_FLOAT4_BYVAL initialisiert, aber der Server wurde ohne USE_FLOAT4_BYVAL kompiliert." -#: access/transam/xlog.c:4719 +#: access/transam/xlog.c:4756 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "Der Datenbank-Cluster wurde ohne USE_FLOAT8_BYVAL initialisiert, aber der Server wurde mit USE_FLOAT8_BYVAL kompiliert." -#: access/transam/xlog.c:4726 +#: access/transam/xlog.c:4763 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "Der Datenbank-Cluster wurde mit USE_FLOAT8_BYVAL initialisiert, aber der Server wurde ohne USE_FLOAT8_BYVAL kompiliert." -#: access/transam/xlog.c:5082 +#: access/transam/xlog.c:5119 #, c-format msgid "could not generate secret authorization token" msgstr "konnte geheimes Autorisierungstoken nicht erzeugen" -#: access/transam/xlog.c:5172 +#: access/transam/xlog.c:5209 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "konnte Bootstrap-Write-Ahead-Log-Datei nicht schreiben: %m" -#: access/transam/xlog.c:5180 +#: access/transam/xlog.c:5217 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "konnte Bootstrap-Write-Ahead-Log-Datei nicht fsyncen: %m" -#: access/transam/xlog.c:5186 +#: access/transam/xlog.c:5223 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "konnte Bootstrap-Write-Ahead-Log-Datei nicht schließen: %m" -#: access/transam/xlog.c:5262 +#: access/transam/xlog.c:5299 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "konnte Recovery-Kommandodatei »%s« nicht öffnen: %m" -#: access/transam/xlog.c:5308 access/transam/xlog.c:5410 +#: access/transam/xlog.c:5345 access/transam/xlog.c:5447 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" msgstr "ungültiger Wert für Recovery-Parameter »%s«: »%s«" -#: access/transam/xlog.c:5311 +#: access/transam/xlog.c:5348 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "Gültige Werte sind »pause«, »promote« und »shutdown«." -#: access/transam/xlog.c:5331 +#: access/transam/xlog.c:5368 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" msgstr "recovery_target_timeline ist keine gültige Zahl: »%s«" -#: access/transam/xlog.c:5348 +#: access/transam/xlog.c:5385 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" msgstr "recovery_target_xid ist keine gültige Zahl: »%s«" -#: access/transam/xlog.c:5379 +#: access/transam/xlog.c:5416 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" msgstr "recovery_target_name ist zu lang (maximal %d Zeichen)" -#: access/transam/xlog.c:5413 +#: access/transam/xlog.c:5450 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "Der einzige erlaubte Wert ist »immediate«." -#: access/transam/xlog.c:5426 access/transam/xlog.c:5437 +#: access/transam/xlog.c:5463 access/transam/xlog.c:5474 #: commands/extension.c:547 commands/extension.c:555 utils/misc/guc.c:5761 #, c-format msgid "parameter \"%s\" requires a Boolean value" msgstr "Parameter »%s« erfordert einen Boole’schen Wert" -#: access/transam/xlog.c:5472 +#: access/transam/xlog.c:5509 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "Parameter »%s« erfordert einen Zeitwert" -#: access/transam/xlog.c:5474 catalog/dependency.c:985 catalog/dependency.c:986 -#: catalog/dependency.c:992 catalog/dependency.c:993 catalog/dependency.c:1004 -#: catalog/dependency.c:1005 commands/tablecmds.c:951 +#: access/transam/xlog.c:5511 catalog/dependency.c:994 catalog/dependency.c:995 +#: catalog/dependency.c:1001 catalog/dependency.c:1002 +#: catalog/dependency.c:1013 catalog/dependency.c:1014 commands/tablecmds.c:951 #: commands/tablecmds.c:10536 commands/user.c:1078 commands/view.c:504 #: libpq/auth.c:329 replication/syncrep.c:1309 storage/lmgr/deadlock.c:1145 #: storage/lmgr/proc.c:1318 utils/adt/acl.c:5331 utils/misc/guc.c:5783 @@ -1900,513 +1901,518 @@ msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5481 +#: access/transam/xlog.c:5518 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "unbekannter Recovery-Parameter »%s«" -#: access/transam/xlog.c:5492 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command" msgstr "Recovery-Kommandodatei »%s« hat weder primary_conninfo noch restore_command angegeben" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5531 #, c-format msgid "The database server will regularly poll the pg_wal subdirectory to check for files placed there." msgstr "Der Datenbankserver prüft das Unterverzeichnis pg_wal regelmäßig auf dort abgelegte Dateien." -#: access/transam/xlog.c:5501 +#: access/transam/xlog.c:5538 #, c-format msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled" msgstr "Recovery-Kommandodatei »%s« muss restore_command angeben, wenn der Standby-Modus nicht eingeschaltet ist" -#: access/transam/xlog.c:5522 +#: access/transam/xlog.c:5559 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "Standby-Modus wird von Servern im Einzelbenutzermodus nicht unterstützt" -#: access/transam/xlog.c:5541 +#: access/transam/xlog.c:5578 #, c-format msgid "recovery target timeline %u does not exist" msgstr "recovery_target_timeline %u existiert nicht" -#: access/transam/xlog.c:5650 +#: access/transam/xlog.c:5687 #, c-format msgid "archive recovery complete" msgstr "Wiederherstellung aus Archiv abgeschlossen" -#: access/transam/xlog.c:5709 access/transam/xlog.c:5975 +#: access/transam/xlog.c:5746 access/transam/xlog.c:6012 #, c-format msgid "recovery stopping after reaching consistency" msgstr "Wiederherstellung beendet nachdem Konsistenz erreicht wurde" -#: access/transam/xlog.c:5730 +#: access/transam/xlog.c:5767 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "Wiederherstellung beendet vor WAL-Position (LSN) »%X/%X«" -#: access/transam/xlog.c:5816 +#: access/transam/xlog.c:5853 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "Wiederherstellung beendet vor Commit der Transaktion %u, Zeit %s" -#: access/transam/xlog.c:5823 +#: access/transam/xlog.c:5860 #, 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:5869 +#: access/transam/xlog.c:5906 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "Wiederherstellung beendet bei Restore-Punkt »%s«, Zeit %s" -#: access/transam/xlog.c:5887 +#: access/transam/xlog.c:5924 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "Wiederherstellung beendet nach WAL-Position (LSN) »%X/%X«" -#: access/transam/xlog.c:5955 +#: access/transam/xlog.c:5992 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "Wiederherstellung beendet nach Commit der Transaktion %u, Zeit %s" -#: access/transam/xlog.c:5963 +#: access/transam/xlog.c:6000 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "Wiederherstellung beendet nach Abbruch der Transaktion %u, Zeit %s" -#: access/transam/xlog.c:6003 +#: access/transam/xlog.c:6040 #, c-format msgid "recovery has paused" msgstr "Wiederherstellung wurde pausiert" -#: access/transam/xlog.c:6004 +#: access/transam/xlog.c:6041 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "Führen Sie pg_wal_replay_resume() aus um fortzusetzen." -#: access/transam/xlog.c:6209 +#: access/transam/xlog.c:6256 #, c-format msgid "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)" msgstr "Hot Standby ist nicht möglich, weil %s = %d eine niedrigere Einstellung als auf dem Masterserver ist (Wert dort war %d)" -#: access/transam/xlog.c:6235 +#: access/transam/xlog.c:6282 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "WAL wurde mit wal_level=minimal erzeugt, eventuell fehlen Daten" -#: access/transam/xlog.c:6236 +#: access/transam/xlog.c:6283 #, c-format msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup." msgstr "Das passiert, wenn vorübergehend wal_level=minimal gesetzt wurde, ohne ein neues Base-Backup zu erzeugen." -#: access/transam/xlog.c:6247 +#: access/transam/xlog.c:6294 #, c-format msgid "hot standby is not possible because wal_level was not set to \"replica\" or higher on the master server" msgstr "Hot Standby ist nicht möglich, weil wal_level auf dem Masterserver nicht auf »replica« oder höher gesetzt wurde" -#: access/transam/xlog.c:6248 +#: access/transam/xlog.c:6295 #, c-format msgid "Either set wal_level to \"replica\" on the master, or turn off hot_standby here." msgstr "Setzen Sie entweder wal_level auf »replica« auf dem Master oder schalten Sie hot_standby hier aus." -#: access/transam/xlog.c:6305 +#: access/transam/xlog.c:6352 #, c-format msgid "control file contains invalid data" msgstr "Kontrolldatei enthält ungültige Daten" -#: access/transam/xlog.c:6311 +#: access/transam/xlog.c:6358 #, c-format msgid "database system was shut down at %s" msgstr "Datenbanksystem wurde am %s heruntergefahren" -#: access/transam/xlog.c:6316 +#: access/transam/xlog.c:6363 #, c-format msgid "database system was shut down in recovery at %s" msgstr "Datenbanksystem wurde während der Wiederherstellung am %s heruntergefahren" -#: access/transam/xlog.c:6320 +#: access/transam/xlog.c:6367 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "Datenbanksystem wurde beim Herunterfahren unterbrochen; letzte bekannte Aktion am %s" -#: access/transam/xlog.c:6324 +#: access/transam/xlog.c:6371 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "Datenbanksystem wurde während der Wiederherstellung am %s unterbrochen" -#: access/transam/xlog.c:6326 +#: access/transam/xlog.c:6373 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "Das bedeutet wahrscheinlich, dass einige Daten verfälscht sind und Sie die letzte Datensicherung zur Wiederherstellung verwenden müssen." -#: access/transam/xlog.c:6330 +#: access/transam/xlog.c:6377 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "Datenbanksystem wurde während der Wiederherstellung bei Logzeit %s unterbrochen" -#: access/transam/xlog.c:6332 +#: access/transam/xlog.c:6379 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." msgstr "Wenn dies mehr als einmal vorgekommen ist, dann sind einige Daten möglicherweise verfälscht und Sie müssen ein früheres Wiederherstellungsziel wählen." -#: access/transam/xlog.c:6336 +#: access/transam/xlog.c:6383 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "Datenbanksystem wurde unterbrochen; letzte bekannte Aktion am %s" -#: access/transam/xlog.c:6392 +#: access/transam/xlog.c:6439 #, c-format msgid "entering standby mode" msgstr "Standby-Modus eingeschaltet" -#: access/transam/xlog.c:6395 +#: access/transam/xlog.c:6442 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "starte Point-in-Time-Recovery bis XID %u" -#: access/transam/xlog.c:6399 +#: access/transam/xlog.c:6446 #, c-format msgid "starting point-in-time recovery to %s" msgstr "starte Point-in-Time-Recovery bis %s" -#: access/transam/xlog.c:6403 +#: access/transam/xlog.c:6450 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "starte Point-in-Time-Recovery bis »%s«" -#: access/transam/xlog.c:6407 +#: access/transam/xlog.c:6454 #, c-format msgid "starting point-in-time recovery to WAL location (LSN) \"%X/%X\"" msgstr "starte Point-in-Time-Recovery bis WAL-Position (LSN) »%X/%X«" -#: access/transam/xlog.c:6412 +#: access/transam/xlog.c:6459 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "starte Point-in-Time-Recovery bis zum frühesten konsistenten Punkt" -#: access/transam/xlog.c:6415 +#: access/transam/xlog.c:6462 #, c-format msgid "starting archive recovery" msgstr "starte Wiederherstellung aus Archiv" -#: access/transam/xlog.c:6469 access/transam/xlog.c:6597 +#: access/transam/xlog.c:6516 access/transam/xlog.c:6644 #, c-format msgid "checkpoint record is at %X/%X" msgstr "Checkpoint-Eintrag ist bei %X/%X" -#: access/transam/xlog.c:6483 +#: access/transam/xlog.c:6530 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "konnte die vom Checkpoint-Datensatz referenzierte Redo-Position nicht finden" -#: access/transam/xlog.c:6484 access/transam/xlog.c:6491 +#: access/transam/xlog.c:6531 access/transam/xlog.c:6538 #, c-format msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." msgstr "Wenn Sie gerade keine Sicherung wiederherstellen, versuchen Sie, die Datei »%s/backup_label« zu löschen." -#: access/transam/xlog.c:6490 +#: access/transam/xlog.c:6537 #, c-format msgid "could not locate required checkpoint record" msgstr "konnte den nötigen Checkpoint-Datensatz nicht finden" -#: access/transam/xlog.c:6516 commands/tablespace.c:639 +#: access/transam/xlog.c:6563 commands/tablespace.c:635 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "konnte symbolische Verknüpfung »%s« nicht erstellen: %m" -#: access/transam/xlog.c:6548 access/transam/xlog.c:6554 +#: access/transam/xlog.c:6595 access/transam/xlog.c:6601 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "ignoriere Datei »%s«, weil keine Datei »%s« existiert" -#: access/transam/xlog.c:6550 access/transam/xlog.c:11607 +#: access/transam/xlog.c:6597 access/transam/xlog.c:11769 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Datei »%s« wurde in »%s« umbenannt." -#: access/transam/xlog.c:6556 +#: access/transam/xlog.c:6603 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Konnte Datei »%s« nicht in »%s« umbenennen: %m." -#: access/transam/xlog.c:6607 access/transam/xlog.c:6622 +#: access/transam/xlog.c:6654 access/transam/xlog.c:6669 #, c-format msgid "could not locate a valid checkpoint record" msgstr "konnte keinen gültigen Checkpoint-Datensatz finden" -#: access/transam/xlog.c:6616 +#: access/transam/xlog.c:6663 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "verwende vorherigen Checkpoint-Eintrag bei %X/%X" -#: access/transam/xlog.c:6660 +#: access/transam/xlog.c:6707 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "angeforderte Zeitleiste %u ist kein Kind der History dieses Servers" -#: access/transam/xlog.c:6662 +#: access/transam/xlog.c:6709 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." msgstr "Neuester Checkpoint ist bei %X/%X auf Zeitleiste %u, aber in der History der angeforderten Zeitleiste zweigte der Server von dieser Zeitleiste bei %X/%X ab." -#: access/transam/xlog.c:6678 +#: access/transam/xlog.c:6725 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "angeforderte Zeitleiste %u enthält nicht den minimalen Wiederherstellungspunkt %X/%X auf Zeitleiste %u" -#: access/transam/xlog.c:6709 +#: access/transam/xlog.c:6756 #, c-format msgid "invalid next transaction ID" msgstr "ungültige nächste Transaktions-ID" -#: access/transam/xlog.c:6804 +#: access/transam/xlog.c:6851 #, c-format msgid "invalid redo in checkpoint record" msgstr "ungültiges Redo im Checkpoint-Datensatz" -#: access/transam/xlog.c:6815 +#: access/transam/xlog.c:6862 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "ungültiger Redo-Datensatz im Shutdown-Checkpoint" -#: access/transam/xlog.c:6849 +#: access/transam/xlog.c:6902 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "Datenbanksystem wurde nicht richtig heruntergefahren; automatische Wiederherstellung läuft" -#: access/transam/xlog.c:6853 +#: access/transam/xlog.c:6906 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "Wiederherstellung nach Absturz beginnt in Zeitleiste %u und hat Zielzeitleiste %u" -#: access/transam/xlog.c:6901 +#: access/transam/xlog.c:6954 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "Daten in backup_label stimmen nicht mit Kontrolldatei überein" -#: access/transam/xlog.c:6902 +#: access/transam/xlog.c:6955 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "Das bedeutet, dass die Datensicherung verfälscht ist und Sie eine andere Datensicherung zur Wiederherstellung verwenden werden müssen." -#: access/transam/xlog.c:6993 +#: access/transam/xlog.c:7046 #, c-format msgid "initializing for hot standby" msgstr "initialisiere für Hot Standby" -#: access/transam/xlog.c:7125 +#: access/transam/xlog.c:7178 #, c-format msgid "redo starts at %X/%X" msgstr "Redo beginnt bei %X/%X" -#: access/transam/xlog.c:7359 +#: access/transam/xlog.c:7412 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "angeforderter Recovery-Endpunkt ist vor konsistentem Recovery-Punkt" -#: access/transam/xlog.c:7397 +#: access/transam/xlog.c:7450 #, c-format msgid "redo done at %X/%X" msgstr "Redo fertig bei %X/%X" -#: access/transam/xlog.c:7402 access/transam/xlog.c:9451 +#: access/transam/xlog.c:7455 access/transam/xlog.c:9583 #, c-format msgid "last completed transaction was at log time %s" msgstr "letzte vollständige Transaktion war bei Logzeit %s" -#: access/transam/xlog.c:7411 +#: access/transam/xlog.c:7464 #, c-format msgid "redo is not required" msgstr "Redo nicht nötig" -#: access/transam/xlog.c:7490 access/transam/xlog.c:7494 +#: access/transam/xlog.c:7548 access/transam/xlog.c:7552 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL endet vor dem Ende der Online-Sicherung" -#: access/transam/xlog.c:7491 +#: access/transam/xlog.c:7549 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "Der komplette WAL, der während der Online-Sicherung erzeugt wurde, muss bei der Wiederherstellung verfügbar sein." -#: access/transam/xlog.c:7495 +#: access/transam/xlog.c:7553 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "Die mit pg_start_backup() begonnene Online-Sicherung muss mit pg_stop_backup() beendet werden und der ganze WAL bis zu diesem Punkt muss bei der Wiederherstellung verfügbar sein." -#: access/transam/xlog.c:7498 +#: access/transam/xlog.c:7556 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL endet vor einem konsistenten Wiederherstellungspunkt" -#: access/transam/xlog.c:7533 +#: access/transam/xlog.c:7591 #, c-format msgid "selected new timeline ID: %u" msgstr "gewählte neue Zeitleisten-ID: %u" -#: access/transam/xlog.c:7981 +#: access/transam/xlog.c:8066 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "konsistenter Wiederherstellungszustand erreicht bei %X/%X" -#: access/transam/xlog.c:8191 +#: access/transam/xlog.c:8276 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "ungültige primäre Checkpoint-Verknüpfung in Kontrolldatei" -#: access/transam/xlog.c:8195 +#: access/transam/xlog.c:8280 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "ungültige sekundäre Checkpoint-Verknüpfung in Kontrolldatei" -#: access/transam/xlog.c:8199 +#: access/transam/xlog.c:8284 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "ungültige Checkpoint-Verknüpfung in backup_label-Datei" -#: access/transam/xlog.c:8216 +#: access/transam/xlog.c:8301 #, c-format msgid "invalid primary checkpoint record" msgstr "ungültiger primärer Checkpoint-Datensatz" -#: access/transam/xlog.c:8220 +#: access/transam/xlog.c:8305 #, c-format msgid "invalid secondary checkpoint record" msgstr "ungültiger sekundärer Checkpoint-Datensatz" -#: access/transam/xlog.c:8224 +#: access/transam/xlog.c:8309 #, c-format msgid "invalid checkpoint record" msgstr "ungültiger Checkpoint-Datensatz" -#: access/transam/xlog.c:8235 +#: access/transam/xlog.c:8320 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "ungültige Resource-Manager-ID im primären Checkpoint-Datensatz" -#: access/transam/xlog.c:8239 +#: access/transam/xlog.c:8324 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "ungültige Resource-Manager-ID im sekundären Checkpoint-Datensatz" -#: access/transam/xlog.c:8243 +#: access/transam/xlog.c:8328 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "ungültige Resource-Manager-ID im Checkpoint-Datensatz" -#: access/transam/xlog.c:8256 +#: access/transam/xlog.c:8341 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "ungültige xl_info im primären Checkpoint-Datensatz" -#: access/transam/xlog.c:8260 +#: access/transam/xlog.c:8345 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "ungültige xl_info im sekundären Checkpoint-Datensatz" -#: access/transam/xlog.c:8264 +#: access/transam/xlog.c:8349 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "ungültige xl_info im Checkpoint-Datensatz" -#: access/transam/xlog.c:8275 +#: access/transam/xlog.c:8360 #, c-format msgid "invalid length of primary checkpoint record" msgstr "ungültige Länge des primären Checkpoint-Datensatzes" -#: access/transam/xlog.c:8279 +#: access/transam/xlog.c:8364 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "ungültige Länge des sekundären Checkpoint-Datensatzes" -#: access/transam/xlog.c:8283 +#: access/transam/xlog.c:8368 #, c-format msgid "invalid length of checkpoint record" msgstr "ungültige Länge des Checkpoint-Datensatzes" -#: access/transam/xlog.c:8486 +#: access/transam/xlog.c:8571 #, c-format msgid "shutting down" msgstr "fahre herunter" -#: access/transam/xlog.c:8791 +#: access/transam/xlog.c:8876 #, c-format msgid "checkpoint skipped because system is idle" msgstr "Checkpoint übersprungen weil das System inaktiv ist" -#: access/transam/xlog.c:8996 +#: access/transam/xlog.c:9081 #, c-format msgid "concurrent write-ahead log activity while database system is shutting down" msgstr "gleichzeitige Write-Ahead-Log-Aktivität während das Datenbanksystem herunterfährt" -#: access/transam/xlog.c:9250 +#: access/transam/xlog.c:9382 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "Restart-Punkt übersprungen, Wiederherstellung ist bereits beendet" -#: access/transam/xlog.c:9273 +#: access/transam/xlog.c:9405 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "Restart-Punkt wird übersprungen, schon bei %X/%X erledigt" -#: access/transam/xlog.c:9449 +#: access/transam/xlog.c:9581 #, c-format msgid "recovery restart point at %X/%X" msgstr "Recovery-Restart-Punkt bei %X/%X" -#: access/transam/xlog.c:9585 +#: access/transam/xlog.c:9717 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "Restore-Punkt »%s« erzeugt bei %X/%X" -#: access/transam/xlog.c:9727 +#: access/transam/xlog.c:9859 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "unerwartete vorherige Zeitleisten-ID %u (aktuelle Zeitleisten-ID %u) im Checkpoint-Datensatz" -#: access/transam/xlog.c:9736 +#: access/transam/xlog.c:9868 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "unerwartete Zeitleisten-ID %u (nach %u) im Checkpoint-Datensatz" -#: access/transam/xlog.c:9752 +#: access/transam/xlog.c:9884 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "unerwartete Zeitleisten-ID %u in Checkpoint-Datensatz, bevor der minimale Wiederherstellungspunkt %X/%X auf Zeitleiste %u erreicht wurde" -#: access/transam/xlog.c:9828 +#: access/transam/xlog.c:9960 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "Online-Sicherung wurde storniert, Wiederherstellung kann nicht fortgesetzt werden" -#: access/transam/xlog.c:9886 access/transam/xlog.c:9944 -#: access/transam/xlog.c:9967 +#: access/transam/xlog.c:10018 access/transam/xlog.c:10076 +#: access/transam/xlog.c:10106 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "unerwartete Zeitleisten-ID %u (sollte %u sein) im Checkpoint-Datensatz" -#: access/transam/xlog.c:10255 +#: access/transam/xlog.c:10264 +#, c-format +msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" +msgstr "fehlender Contrecord bei %X/%X erfolgreich übersprungen, überschrieben am %s" + +#: access/transam/xlog.c:10417 #, c-format msgid "could not fsync log segment %s: %m" msgstr "konnte Logsegment %s nicht fsyncen: %m" -#: access/transam/xlog.c:10280 +#: access/transam/xlog.c:10442 #, c-format msgid "could not fsync log file %s: %m" msgstr "konnte Logdatei %s nicht fsyncen: %m" -#: access/transam/xlog.c:10288 +#: access/transam/xlog.c:10450 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "konnte Write-Through-Logdatei %s nicht fsyncen: %m" -#: access/transam/xlog.c:10297 +#: access/transam/xlog.c:10459 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "konnte Logdatei %s nicht fdatasyncen: %m" -#: access/transam/xlog.c:10388 access/transam/xlog.c:10913 +#: access/transam/xlog.c:10550 access/transam/xlog.c:11075 #: access/transam/xlogfuncs.c:297 access/transam/xlogfuncs.c:324 #: access/transam/xlogfuncs.c:363 access/transam/xlogfuncs.c:384 #: access/transam/xlogfuncs.c:405 @@ -2414,67 +2420,67 @@ msgid "WAL control functions cannot be executed during recovery." msgstr "Während der Wiederherstellung können keine WAL-Kontrollfunktionen ausgeführt werden." -#: access/transam/xlog.c:10397 access/transam/xlog.c:10922 +#: access/transam/xlog.c:10559 access/transam/xlog.c:11084 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "WAL-Level nicht ausreichend, um Online-Sicherung durchzuführen" -#: access/transam/xlog.c:10398 access/transam/xlog.c:10923 +#: access/transam/xlog.c:10560 access/transam/xlog.c:11085 #: access/transam/xlogfuncs.c:330 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "wal_level muss beim Serverstart auf »replica« oder »logical« gesetzt werden." -#: access/transam/xlog.c:10403 +#: access/transam/xlog.c:10565 #, c-format msgid "backup label too long (max %d bytes)" msgstr "Backup-Label zu lang (maximal %d Bytes)" -#: access/transam/xlog.c:10440 access/transam/xlog.c:10713 -#: access/transam/xlog.c:10751 +#: access/transam/xlog.c:10602 access/transam/xlog.c:10875 +#: access/transam/xlog.c:10913 #, c-format msgid "a backup is already in progress" msgstr "ein Backup läuft bereits" -#: access/transam/xlog.c:10441 +#: access/transam/xlog.c:10603 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Führen Sie pg_stop_backup() aus und versuchen Sie es nochmal." -#: access/transam/xlog.c:10536 +#: access/transam/xlog.c:10698 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "mit full_page_writes=off erzeugtes WAL wurde seit dem letzten Restart-Punkt zurückgespielt" -#: access/transam/xlog.c:10538 access/transam/xlog.c:11118 +#: access/transam/xlog.c:10700 access/transam/xlog.c:11280 #, c-format msgid "This means that the backup being taken on the standby is corrupt and should not be used. Enable full_page_writes and run CHECKPOINT on the master, and then try an online backup again." msgstr "Das bedeutet, dass die aktuelle Datensicherung auf dem Standby-Server verfälscht ist und nicht verwendet werden sollte. Schalten Sie full_page_writes ein, führen Sie CHECKPOINT aus und versuchen Sie dann die Online-Sicherung erneut." -#: access/transam/xlog.c:10605 replication/basebackup.c:1114 +#: access/transam/xlog.c:10767 replication/basebackup.c:1114 #: utils/adt/misc.c:511 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "konnte symbolische Verknüpfung »%s« nicht lesen: %m" -#: access/transam/xlog.c:10612 replication/basebackup.c:1119 +#: access/transam/xlog.c:10774 replication/basebackup.c:1119 #: utils/adt/misc.c:516 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "Ziel für symbolische Verknüpfung »%s« ist zu lang" -#: access/transam/xlog.c:10665 commands/tablespace.c:389 +#: access/transam/xlog.c:10827 commands/tablespace.c:389 #: commands/tablespace.c:551 replication/basebackup.c:1134 utils/adt/misc.c:524 #, c-format msgid "tablespaces are not supported on this platform" msgstr "Tablespaces werden auf dieser Plattform nicht unterstützt" -#: access/transam/xlog.c:10707 access/transam/xlog.c:10745 -#: access/transam/xlog.c:10961 access/transam/xlogarchive.c:104 +#: access/transam/xlog.c:10869 access/transam/xlog.c:10907 +#: access/transam/xlog.c:11123 access/transam/xlogarchive.c:104 #: access/transam/xlogarchive.c:263 commands/copy.c:1871 commands/copy.c:3208 -#: commands/extension.c:3339 commands/tablespace.c:780 -#: commands/tablespace.c:871 guc-file.l:1059 replication/basebackup.c:496 -#: replication/basebackup.c:566 replication/logical/snapbuild.c:1528 +#: commands/extension.c:3347 commands/tablespace.c:776 +#: commands/tablespace.c:867 guc-file.l:1061 replication/basebackup.c:496 +#: replication/basebackup.c:566 replication/logical/snapbuild.c:1544 #: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:3018 #: storage/file/fd.c:3110 utils/adt/dbsize.c:70 utils/adt/dbsize.c:227 #: utils/adt/dbsize.c:307 utils/adt/genfile.c:108 utils/adt/genfile.c:327 @@ -2483,129 +2489,129 @@ msgid "could not stat file \"%s\": %m" msgstr "konnte »stat« für Datei »%s« nicht ausführen: %m" -#: access/transam/xlog.c:10714 access/transam/xlog.c:10752 +#: access/transam/xlog.c:10876 access/transam/xlog.c:10914 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "Wenn Sie sicher sind, dass noch kein Backup läuft, entfernen Sie die Datei »%s« und versuchen Sie es noch einmal." -#: access/transam/xlog.c:10731 access/transam/xlog.c:10769 -#: access/transam/xlog.c:11176 postmaster/syslogger.c:1475 +#: access/transam/xlog.c:10893 access/transam/xlog.c:10931 +#: access/transam/xlog.c:11338 postmaster/syslogger.c:1475 #: postmaster/syslogger.c:1488 #, c-format msgid "could not write file \"%s\": %m" msgstr "konnte Datei »%s« nicht schreiben: %m" -#: access/transam/xlog.c:10938 +#: access/transam/xlog.c:11100 #, c-format msgid "exclusive backup not in progress" msgstr "es läuft kein exklusives Backup" -#: access/transam/xlog.c:10965 +#: access/transam/xlog.c:11127 #, c-format msgid "a backup is not in progress" msgstr "es läuft kein Backup" -#: access/transam/xlog.c:11051 access/transam/xlog.c:11064 -#: access/transam/xlog.c:11417 access/transam/xlog.c:11423 -#: access/transam/xlog.c:11507 access/transam/xlogfuncs.c:698 +#: access/transam/xlog.c:11213 access/transam/xlog.c:11226 +#: access/transam/xlog.c:11579 access/transam/xlog.c:11585 +#: access/transam/xlog.c:11669 access/transam/xlogfuncs.c:698 #, c-format msgid "invalid data in file \"%s\"" msgstr "ungültige Daten in Datei »%s«" -#: access/transam/xlog.c:11068 replication/basebackup.c:1012 +#: access/transam/xlog.c:11230 replication/basebackup.c:1012 #, c-format msgid "the standby was promoted during online backup" msgstr "der Standby-Server wurde während der Online-Sicherung zum Primärserver befördert" -#: access/transam/xlog.c:11069 replication/basebackup.c:1013 +#: access/transam/xlog.c:11231 replication/basebackup.c:1013 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "Das bedeutet, dass die aktuelle Online-Sicherung verfälscht ist und nicht verwendet werden sollte. Versuchen Sie, eine neue Online-Sicherung durchzuführen." -#: access/transam/xlog.c:11116 +#: access/transam/xlog.c:11278 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "mit full_page_writes=off erzeugtes WAL wurde während der Online-Sicherung zurückgespielt" -#: access/transam/xlog.c:11231 +#: access/transam/xlog.c:11393 #, c-format msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "Aufräumen nach pg_stop_backup beendet, warte bis die benötigten WAL-Segmente archiviert sind" -#: access/transam/xlog.c:11241 +#: access/transam/xlog.c:11403 #, c-format msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "pg_stop_backup wartet immer noch, bis alle benötigten WAL-Segmente archiviert sind (%d Sekunden abgelaufen)" -#: access/transam/xlog.c:11243 +#: access/transam/xlog.c:11405 #, c-format msgid "Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments." msgstr "Prüfen Sie, ob das archive_command korrekt ausgeführt wird. pg_stop_backup kann gefahrlos abgebrochen werden, aber die Datenbanksicherung wird ohne die fehlenden WAL-Segmente nicht benutzbar sein." -#: access/transam/xlog.c:11250 +#: access/transam/xlog.c:11412 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "pg_stop_backup abgeschlossen, alle benötigten WAL-Segmente wurden archiviert" -#: access/transam/xlog.c:11254 +#: access/transam/xlog.c:11416 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "WAL-Archivierung ist nicht eingeschaltet; Sie müssen dafür sorgen, dass alle benötigten WAL-Segmente auf andere Art kopiert werden, um die Sicherung abzuschließen" #. translator: %s is a WAL record description -#: access/transam/xlog.c:11547 +#: access/transam/xlog.c:11709 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "WAL-Redo bei %X/%X für %s" -#: access/transam/xlog.c:11596 +#: access/transam/xlog.c:11758 #, c-format msgid "online backup mode was not canceled" msgstr "Online-Sicherungsmodus wurde nicht storniert" -#: access/transam/xlog.c:11597 +#: access/transam/xlog.c:11759 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Konnte Datei »%s« nicht in »%s« umbenennen: %m." -#: access/transam/xlog.c:11606 access/transam/xlog.c:11618 -#: access/transam/xlog.c:11628 +#: access/transam/xlog.c:11768 access/transam/xlog.c:11780 +#: access/transam/xlog.c:11790 #, c-format msgid "online backup mode canceled" msgstr "Online-Sicherungsmodus storniert" -#: access/transam/xlog.c:11619 +#: access/transam/xlog.c:11781 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "Dateien »%s« und »%s« wurden in »%s« und »%s« umbenannt." -#: access/transam/xlog.c:11629 +#: access/transam/xlog.c:11791 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." msgstr "Datei »%s« wurde in »%s« umbenannt, aber Datei »%s« konnte nicht in »%s« umbenannt werden: %m." -#: access/transam/xlog.c:11753 access/transam/xlogutils.c:726 -#: replication/walreceiver.c:982 replication/walsender.c:2415 +#: access/transam/xlog.c:11915 access/transam/xlogutils.c:726 +#: replication/walreceiver.c:953 replication/walsender.c:2421 #, c-format msgid "could not seek in log segment %s to offset %u: %m" msgstr "konnte Positionszeiger von Logsegment %s nicht auf %u setzen: %m" -#: access/transam/xlog.c:11769 +#: access/transam/xlog.c:11931 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "konnte nicht aus Logsegment %s, Position %u lesen: %m" -#: access/transam/xlog.c:12324 +#: access/transam/xlog.c:12497 #, c-format msgid "received promote request" msgstr "Anforderung zum Befördern empfangen" -#: access/transam/xlog.c:12337 +#: access/transam/xlog.c:12510 #, c-format msgid "trigger file found: %s" msgstr "Triggerdatei gefunden: %s" -#: access/transam/xlog.c:12346 +#: access/transam/xlog.c:12519 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "konnte »stat« für Trigger-Datei »%s« nicht ausführen: %m" @@ -2634,7 +2640,7 @@ msgstr "%s »%s«: %s" #: access/transam/xlogarchive.c:447 postmaster/syslogger.c:1499 -#: replication/logical/snapbuild.c:1668 replication/slot.c:598 +#: replication/logical/snapbuild.c:1684 replication/slot.c:598 #: replication/slot.c:1203 replication/slot.c:1336 storage/file/fd.c:662 #: storage/file/fd.c:757 utils/time/snapmgr.c:1318 #, c-format @@ -2661,8 +2667,8 @@ msgid "a backup is already in progress in this session" msgstr "ein Backup läuft bereits in dieser Sitzung" -#: access/transam/xlogfuncs.c:92 commands/tablespace.c:703 -#: commands/tablespace.c:713 postmaster/postmaster.c:1482 +#: access/transam/xlogfuncs.c:92 commands/tablespace.c:699 +#: commands/tablespace.c:709 postmaster/postmaster.c:1482 #: replication/basebackup.c:381 replication/basebackup.c:726 #: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2470 #: storage/file/fd.c:3083 storage/ipc/dsm.c:296 utils/adt/misc.c:427 @@ -2683,11 +2689,11 @@ #: access/transam/xlogfuncs.c:205 commands/event_trigger.c:1493 #: commands/event_trigger.c:2051 commands/extension.c:1915 -#: commands/extension.c:2024 commands/extension.c:2248 commands/prepare.c:721 -#: executor/execExpr.c:2121 executor/execSRF.c:690 executor/functions.c:1029 +#: commands/extension.c:2024 commands/extension.c:2248 commands/prepare.c:725 +#: executor/execExpr.c:2152 executor/execSRF.c:690 executor/functions.c:1029 #: foreign/foreign.c:488 libpq/hba.c:2579 replication/logical/launcher.c:1126 #: replication/logical/logicalfuncs.c:176 replication/logical/origin.c:1467 -#: replication/slotfuncs.c:197 replication/walsender.c:3182 +#: replication/slotfuncs.c:197 replication/walsender.c:3188 #: utils/adt/datetime.c:4796 utils/adt/genfile.c:421 utils/adt/genfile.c:501 #: utils/adt/jsonfuncs.c:1689 utils/adt/jsonfuncs.c:1819 #: utils/adt/jsonfuncs.c:2007 utils/adt/jsonfuncs.c:2134 @@ -2700,10 +2706,10 @@ #: access/transam/xlogfuncs.c:209 commands/event_trigger.c:1497 #: commands/event_trigger.c:2055 commands/extension.c:1919 -#: commands/extension.c:2028 commands/extension.c:2252 commands/prepare.c:725 +#: commands/extension.c:2028 commands/extension.c:2252 commands/prepare.c:729 #: foreign/foreign.c:493 libpq/hba.c:2583 replication/logical/launcher.c:1130 #: replication/logical/logicalfuncs.c:180 replication/logical/origin.c:1471 -#: replication/slotfuncs.c:201 replication/walsender.c:3186 +#: replication/slotfuncs.c:201 replication/walsender.c:3192 #: utils/adt/datetime.c:4800 utils/adt/genfile.c:425 utils/adt/genfile.c:505 #: utils/adt/misc.c:387 utils/adt/pgstatfuncs.c:462 utils/adt/pgstatfuncs.c:563 #: utils/misc/guc.c:8614 utils/misc/pg_config.c:44 utils/mmgr/portalmem.c:1071 @@ -2753,152 +2759,152 @@ msgid "Recovery control functions can only be executed during recovery." msgstr "Wiederherstellungskontrollfunktionen können nur während der Wiederherstellung ausgeführt werden." -#: access/transam/xlogreader.c:297 +#: access/transam/xlogreader.c:302 #, c-format msgid "invalid record offset at %X/%X" msgstr "ungültiger Datensatz-Offset bei %X/%X" -#: access/transam/xlogreader.c:305 +#: access/transam/xlogreader.c:310 #, c-format msgid "contrecord is requested by %X/%X" msgstr "Contrecord angefordert von %X/%X" -#: access/transam/xlogreader.c:346 access/transam/xlogreader.c:644 +#: access/transam/xlogreader.c:351 access/transam/xlogreader.c:681 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "ungültige Datensatzlänge bei %X/%X: %u erwartet, %u erhalten" -#: access/transam/xlogreader.c:361 +#: access/transam/xlogreader.c:366 #, c-format msgid "record length %u at %X/%X too long" msgstr "Datensatzlänge %u bei %X/%X ist zu lang" -#: access/transam/xlogreader.c:402 +#: access/transam/xlogreader.c:425 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "keine Contrecord-Flag bei %X/%X" -#: access/transam/xlogreader.c:415 +#: access/transam/xlogreader.c:438 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "ungültige Contrecord-Länge %u bei %X/%X" -#: access/transam/xlogreader.c:652 +#: access/transam/xlogreader.c:689 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ungültige Resource-Manager-ID %u bei %X/%X" -#: access/transam/xlogreader.c:666 access/transam/xlogreader.c:683 +#: access/transam/xlogreader.c:703 access/transam/xlogreader.c:720 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "Datensatz mit falschem Prev-Link %X/%X bei %X/%X" -#: access/transam/xlogreader.c:720 +#: access/transam/xlogreader.c:757 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "ungültige Resource-Manager-Datenprüfsumme in Datensatz bei %X/%X" -#: access/transam/xlogreader.c:757 +#: access/transam/xlogreader.c:794 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "ungültige magische Zahl %04X in Logsegment %s, Offset %u" -#: access/transam/xlogreader.c:771 access/transam/xlogreader.c:822 +#: access/transam/xlogreader.c:808 access/transam/xlogreader.c:859 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "ungültige Info-Bits %04X in Logsegment %s, Offset %u" -#: access/transam/xlogreader.c:797 +#: access/transam/xlogreader.c:834 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s" msgstr "WAL-Datei ist von einem anderen Datenbanksystem: Datenbanksystemidentifikator in WAL-Datei ist %s, Datenbanksystemidentifikator in pg_control ist %s" -#: access/transam/xlogreader.c:804 +#: access/transam/xlogreader.c:841 #, c-format msgid "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page header" msgstr "WAL-Datei ist von einem anderen Datenbanksystem: Falsche XLOG_SEG_SIZE im Seitenkopf" -#: access/transam/xlogreader.c:810 +#: access/transam/xlogreader.c:847 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "WAL-Datei ist von einem anderen Datenbanksystem: Falsche XLOG_BLCKSZ im Seitenkopf" -#: access/transam/xlogreader.c:841 +#: access/transam/xlogreader.c:878 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "unerwartete Pageaddr %X/%X in Logsegment %s, Offset %u" -#: access/transam/xlogreader.c:866 +#: access/transam/xlogreader.c:903 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "Zeitleisten-ID %u außer der Reihe (nach %u) in Logsegment %s, Offset %u" -#: access/transam/xlogreader.c:1111 +#: access/transam/xlogreader.c:1148 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id %u außer der Reihe bei %X/%X" -#: access/transam/xlogreader.c:1134 +#: access/transam/xlogreader.c:1171 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA gesetzt, aber keine Daten enthalten bei %X/%X" -#: access/transam/xlogreader.c:1141 +#: access/transam/xlogreader.c:1178 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA nicht gesetzt, aber Datenlänge ist %u bei %X/%X" -#: access/transam/xlogreader.c:1177 +#: access/transam/xlogreader.c:1214 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE gesetzt, aber Loch Offset %u Länge %u Block-Abbild-Länge %u bei %X/%X" -#: access/transam/xlogreader.c:1193 +#: access/transam/xlogreader.c:1230 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE nicht gesetzt, aber Loch Offset %u Länge %u bei %X/%X" -#: access/transam/xlogreader.c:1208 +#: access/transam/xlogreader.c:1245 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED gesetzt, aber Block-Abbild-Länge %u bei %X/%X" -#: access/transam/xlogreader.c:1223 +#: access/transam/xlogreader.c:1260 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "weder BKPIMAGE_HAS_HOLE noch BKPIMAGE_IS_COMPRESSED gesetzt, aber Block-Abbild-Länge ist %u bei %X/%X" -#: access/transam/xlogreader.c:1239 +#: access/transam/xlogreader.c:1276 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL gesetzt, aber keine vorangehende Relation bei %X/%X" -#: access/transam/xlogreader.c:1251 +#: access/transam/xlogreader.c:1288 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "ungültige block_id %u bei %X/%X" -#: access/transam/xlogreader.c:1334 +#: access/transam/xlogreader.c:1371 #, c-format msgid "record with invalid length at %X/%X" msgstr "Datensatz mit ungültiger Länge bei %X/%X" -#: access/transam/xlogreader.c:1423 +#: access/transam/xlogreader.c:1460 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "ungültiges komprimiertes Abbild bei %X/%X, Block %d" -#: access/transam/xlogutils.c:751 replication/walsender.c:2434 +#: access/transam/xlogutils.c:751 replication/walsender.c:2440 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "konnte nicht aus Logsegment %s bei Position %u, Länge %lu lesen: %m" -#: bootstrap/bootstrap.c:272 postmaster/postmaster.c:843 tcop/postgres.c:3549 +#: bootstrap/bootstrap.c:272 postmaster/postmaster.c:843 tcop/postgres.c:3559 #, c-format msgid "--%s requires a value" msgstr "--%s benötigt einen Wert" -#: bootstrap/bootstrap.c:277 postmaster/postmaster.c:848 tcop/postgres.c:3554 +#: bootstrap/bootstrap.c:277 postmaster/postmaster.c:848 tcop/postgres.c:3564 #, c-format msgid "-c %s requires a value" msgstr "-c %s benötigt einen Wert" @@ -3026,7 +3032,7 @@ #: catalog/aclchk.c:696 catalog/aclchk.c:3929 catalog/aclchk.c:4711 #: catalog/objectaddress.c:928 catalog/pg_largeobject.c:111 -#: storage/large_object/inv_api.c:291 +#: storage/large_object/inv_api.c:293 #, c-format msgid "large object %u does not exist" msgstr "Large Object %u existiert nicht" @@ -3053,12 +3059,12 @@ #: commands/sequence.c:1264 commands/sequence.c:1274 commands/sequence.c:1284 #: commands/sequence.c:1294 commands/sequence.c:1304 commands/sequence.c:1314 #: commands/sequence.c:1324 commands/sequence.c:1334 commands/sequence.c:1344 -#: commands/subscriptioncmds.c:110 commands/subscriptioncmds.c:120 -#: commands/subscriptioncmds.c:130 commands/subscriptioncmds.c:140 -#: commands/subscriptioncmds.c:154 commands/subscriptioncmds.c:165 -#: commands/subscriptioncmds.c:179 commands/tablecmds.c:6043 -#: commands/typecmds.c:298 commands/typecmds.c:1396 commands/typecmds.c:1405 -#: commands/typecmds.c:1413 commands/typecmds.c:1421 commands/typecmds.c:1429 +#: commands/subscriptioncmds.c:111 commands/subscriptioncmds.c:121 +#: commands/subscriptioncmds.c:131 commands/subscriptioncmds.c:141 +#: commands/subscriptioncmds.c:157 commands/subscriptioncmds.c:168 +#: commands/subscriptioncmds.c:182 commands/tablecmds.c:6043 +#: commands/typecmds.c:298 commands/typecmds.c:1398 commands/typecmds.c:1407 +#: commands/typecmds.c:1415 commands/typecmds.c:1423 commands/typecmds.c:1431 #: commands/user.c:134 commands/user.c:148 commands/user.c:157 #: commands/user.c:166 commands/user.c:175 commands/user.c:184 #: commands/user.c:193 commands/user.c:202 commands/user.c:211 @@ -3094,7 +3100,7 @@ #: commands/tablecmds.c:8898 commands/tablecmds.c:9022 #: commands/tablecmds.c:9557 commands/trigger.c:817 parser/analyze.c:2342 #: parser/parse_relation.c:2733 parser/parse_relation.c:2795 -#: parser/parse_target.c:1002 parser/parse_type.c:145 utils/adt/acl.c:2870 +#: parser/parse_target.c:1001 parser/parse_type.c:145 utils/adt/acl.c:2870 #: utils/adt/ruleutils.c:2373 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" @@ -3426,7 +3432,7 @@ msgid "language with OID %u does not exist" msgstr "Sprache mit OID %u existiert nicht" -#: catalog/aclchk.c:4014 catalog/aclchk.c:4738 commands/collationcmds.c:514 +#: catalog/aclchk.c:4014 catalog/aclchk.c:4738 commands/collationcmds.c:533 #, c-format msgid "schema with OID %u does not exist" msgstr "Schema mit OID %u existiert nicht" @@ -3481,7 +3487,7 @@ msgid "event trigger with OID %u does not exist" msgstr "Ereignistrigger mit OID %u existiert nicht" -#: catalog/aclchk.c:5006 commands/collationcmds.c:348 +#: catalog/aclchk.c:5006 commands/collationcmds.c:367 #, c-format msgid "collation with OID %u does not exist" msgstr "Sortierfolge mit OID %u existiert nicht" @@ -3496,12 +3502,12 @@ msgid "extension with OID %u does not exist" msgstr "Erweiterung mit OID %u existiert nicht" -#: catalog/aclchk.c:5100 commands/publicationcmds.c:733 +#: catalog/aclchk.c:5100 commands/publicationcmds.c:745 #, c-format msgid "publication with OID %u does not exist" msgstr "Publikation mit OID %u existiert nicht" -#: catalog/aclchk.c:5126 commands/subscriptioncmds.c:1097 +#: catalog/aclchk.c:5126 commands/subscriptioncmds.c:1101 #, c-format msgid "subscription with OID %u does not exist" msgstr "Subskription mit OID %u existiert nicht" @@ -3526,22 +3532,22 @@ msgid "cannot drop %s because it is required by the database system" msgstr "kann %s nicht löschen, wird vom Datenbanksystem benötigt" -#: catalog/dependency.c:921 +#: catalog/dependency.c:925 #, c-format msgid "drop auto-cascades to %s" msgstr "Löschvorgang löscht automatisch %s" -#: catalog/dependency.c:933 catalog/dependency.c:942 +#: catalog/dependency.c:939 catalog/dependency.c:948 #, c-format msgid "%s depends on %s" msgstr "%s hängt von %s ab" -#: catalog/dependency.c:954 catalog/dependency.c:963 +#: catalog/dependency.c:963 catalog/dependency.c:972 #, c-format msgid "drop cascades to %s" msgstr "Löschvorgang löscht ebenfalls %s" -#: catalog/dependency.c:971 catalog/pg_shdepend.c:685 +#: catalog/dependency.c:980 catalog/pg_shdepend.c:685 #, c-format msgid "" "\n" @@ -3556,30 +3562,30 @@ "\n" "und %d weitere Objekte (Liste im Serverlog)" -#: catalog/dependency.c:983 +#: catalog/dependency.c:992 #, c-format msgid "cannot drop %s because other objects depend on it" msgstr "kann %s nicht löschen, weil andere Objekte davon abhängen" -#: catalog/dependency.c:987 catalog/dependency.c:994 +#: catalog/dependency.c:996 catalog/dependency.c:1003 #, c-format msgid "Use DROP ... CASCADE to drop the dependent objects too." msgstr "Verwenden Sie DROP ... CASCADE, um die abhängigen Objekte ebenfalls zu löschen." -#: catalog/dependency.c:991 +#: catalog/dependency.c:1000 #, c-format msgid "cannot drop desired object(s) because other objects depend on them" msgstr "kann gewünschte Objekte nicht löschen, weil andere Objekte davon abhängen" #. translator: %d always has a value larger than 1 -#: catalog/dependency.c:1000 +#: catalog/dependency.c:1009 #, c-format msgid "drop cascades to %d other object" msgid_plural "drop cascades to %d other objects" msgstr[0] "Löschvorgang löscht ebenfalls %d weiteres Objekt" msgstr[1] "Löschvorgang löscht ebenfalls %d weitere Objekte" -#: catalog/dependency.c:1679 +#: catalog/dependency.c:1688 #, c-format msgid "constant of the type %s cannot be used here" msgstr "Konstante vom Typ %s kann hier nicht verwendet werden" @@ -3627,9 +3633,9 @@ #: catalog/heap.c:591 commands/createas.c:204 commands/createas.c:501 #: commands/indexcmds.c:1177 commands/tablecmds.c:13584 commands/view.c:105 -#: regex/regc_pg_locale.c:263 utils/adt/formatting.c:1537 -#: utils/adt/formatting.c:1662 utils/adt/formatting.c:1788 utils/adt/like.c:184 -#: utils/adt/selfuncs.c:5652 utils/adt/varlena.c:1417 utils/adt/varlena.c:1854 +#: regex/regc_pg_locale.c:263 utils/adt/formatting.c:1541 +#: utils/adt/formatting.c:1666 utils/adt/formatting.c:1792 utils/adt/like.c:184 +#: utils/adt/selfuncs.c:5679 utils/adt/varlena.c:1417 utils/adt/varlena.c:1854 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." msgstr "Verwenden Sie die COLLATE-Klausel, um die Sortierfolge explizit zu setzen." @@ -3640,8 +3646,8 @@ msgstr "Relation »%s« existiert bereits" #: catalog/heap.c:1093 catalog/pg_type.c:418 catalog/pg_type.c:733 -#: commands/typecmds.c:239 commands/typecmds.c:788 commands/typecmds.c:1139 -#: commands/typecmds.c:1371 commands/typecmds.c:2152 +#: commands/typecmds.c:239 commands/typecmds.c:788 commands/typecmds.c:1141 +#: commands/typecmds.c:1373 commands/typecmds.c:2154 #, c-format msgid "type \"%s\" already exists" msgstr "Typ »%s« existiert bereits" @@ -3696,14 +3702,14 @@ msgid "cannot use column references in default expression" msgstr "Spaltenverweise können nicht in Vorgabeausdrücken verwendet werden" -#: catalog/heap.c:2681 rewrite/rewriteHandler.c:1164 +#: catalog/heap.c:2681 rewrite/rewriteHandler.c:1187 #, 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:2686 commands/prepare.c:384 parser/parse_node.c:430 -#: parser/parse_target.c:590 parser/parse_target.c:840 -#: parser/parse_target.c:850 rewrite/rewriteHandler.c:1169 +#: catalog/heap.c:2686 commands/prepare.c:388 parser/parse_node.c:430 +#: parser/parse_target.c:589 parser/parse_target.c:839 +#: parser/parse_target.c:849 rewrite/rewriteHandler.c:1192 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen." @@ -3784,12 +3790,12 @@ msgid "building index \"%s\" on table \"%s\"" msgstr "baue Index »%s« von Tabelle »%s«" -#: catalog/index.c:3451 +#: catalog/index.c:3440 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren" -#: catalog/index.c:3574 +#: catalog/index.c:3563 #, c-format msgid "index \"%s\" was reindexed" msgstr "Index »%s« wurde neu indiziert" @@ -3873,13 +3879,13 @@ msgid "text search configuration \"%s\" does not exist" msgstr "Textsuchekonfiguration »%s« existiert nicht" -#: catalog/namespace.c:2809 parser/parse_expr.c:789 parser/parse_target.c:1192 +#: catalog/namespace.c:2809 parser/parse_expr.c:789 parser/parse_target.c:1191 #, c-format msgid "cross-database references are not implemented: %s" msgstr "Verweise auf andere Datenbanken sind nicht implementiert: %s" #: catalog/namespace.c:2815 gram.y:14337 gram.y:15758 parser/parse_expr.c:796 -#: parser/parse_target.c:1199 +#: parser/parse_target.c:1198 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "falscher qualifizierter Name (zu viele Namensteile): %s" @@ -3930,17 +3936,16 @@ msgid "cannot create temporary tables during a parallel operation" msgstr "während einer parallelen Operation können keine temporären Tabellen erzeugt werden" -#: catalog/namespace.c:4133 commands/tablespace.c:1171 commands/variable.c:64 +#: catalog/namespace.c:4133 commands/tablespace.c:1167 commands/variable.c:64 #: utils/misc/guc.c:10100 utils/misc/guc.c:10178 #, c-format msgid "List syntax is invalid." msgstr "Die Listensyntax ist ungültig." #: catalog/objectaddress.c:1237 catalog/pg_publication.c:66 -#: commands/lockcmds.c:95 commands/policy.c:94 commands/policy.c:372 -#: commands/policy.c:462 commands/tablecmds.c:225 commands/tablecmds.c:267 -#: commands/tablecmds.c:1548 commands/tablecmds.c:4778 -#: commands/tablecmds.c:8833 +#: commands/lockcmds.c:95 commands/policy.c:95 commands/policy.c:373 +#: commands/tablecmds.c:225 commands/tablecmds.c:267 commands/tablecmds.c:1548 +#: commands/tablecmds.c:4778 commands/tablecmds.c:8833 #, c-format msgid "\"%s\" is not a table" msgstr "»%s« ist keine Tabelle" @@ -3979,7 +3984,7 @@ msgstr "Vorgabewert für Spalte »%s« von Relation »%s« existiert nicht" #: catalog/objectaddress.c:1508 commands/functioncmds.c:128 -#: commands/tablecmds.c:253 commands/typecmds.c:3295 parser/parse_type.c:244 +#: commands/tablecmds.c:253 commands/typecmds.c:3302 parser/parse_type.c:244 #: parser/parse_type.c:273 parser/parse_type.c:812 utils/adt/acl.c:4436 #, c-format msgid "type \"%s\" does not exist" @@ -4065,7 +4070,7 @@ msgid "argument list length must be exactly %d" msgstr "Länge der Argumentliste muss genau %d sein" -#: catalog/objectaddress.c:2342 libpq/be-fsstubs.c:350 +#: catalog/objectaddress.c:2342 libpq/be-fsstubs.c:346 #, c-format msgid "must be owner of large object %u" msgstr "Berechtigung nur für Eigentümer des Large Object %u" @@ -4085,77 +4090,77 @@ msgid "must have CREATEROLE privilege" msgstr "Berechtigung nur mit CREATEROLE-Privileg" -#: catalog/objectaddress.c:2493 +#: catalog/objectaddress.c:2494 #, c-format msgid "unrecognized object type \"%s\"" msgstr "unbekannter Objekttyp »%s«" -#: catalog/objectaddress.c:2688 +#: catalog/objectaddress.c:2689 #, c-format msgid " column %s" msgstr " Spalte %s" -#: catalog/objectaddress.c:2694 +#: catalog/objectaddress.c:2695 #, c-format msgid "function %s" msgstr "Funktion %s" -#: catalog/objectaddress.c:2699 +#: catalog/objectaddress.c:2700 #, c-format msgid "type %s" msgstr "Typ %s" -#: catalog/objectaddress.c:2729 +#: catalog/objectaddress.c:2730 #, c-format msgid "cast from %s to %s" msgstr "Typumwandlung von %s in %s" -#: catalog/objectaddress.c:2757 +#: catalog/objectaddress.c:2758 #, c-format msgid "collation %s" msgstr "Sortierfolge %s" -#: catalog/objectaddress.c:2782 +#: catalog/objectaddress.c:2783 #, c-format msgid "constraint %s on %s" msgstr "Constraint %s für %s" -#: catalog/objectaddress.c:2788 +#: catalog/objectaddress.c:2789 #, c-format msgid "constraint %s" msgstr "Constraint %s" -#: catalog/objectaddress.c:2815 +#: catalog/objectaddress.c:2816 #, c-format msgid "conversion %s" msgstr "Konversion %s" -#: catalog/objectaddress.c:2853 +#: catalog/objectaddress.c:2854 #, c-format msgid "default for %s" msgstr "Vorgabewert für %s" -#: catalog/objectaddress.c:2862 +#: catalog/objectaddress.c:2863 #, c-format msgid "language %s" msgstr "Sprache %s" -#: catalog/objectaddress.c:2867 +#: catalog/objectaddress.c:2868 #, c-format msgid "large object %u" msgstr "Large Object %u" -#: catalog/objectaddress.c:2872 +#: catalog/objectaddress.c:2873 #, c-format msgid "operator %s" msgstr "Operator %s" -#: catalog/objectaddress.c:2904 +#: catalog/objectaddress.c:2905 #, c-format msgid "operator class %s for access method %s" msgstr "Operatorklasse %s für Zugriffsmethode %s" -#: catalog/objectaddress.c:2927 +#: catalog/objectaddress.c:2928 #, c-format msgid "access method %s" msgstr "Zugriffsmethode %s" @@ -4164,7 +4169,7 @@ #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2970 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "Operator %d (%s, %s) von %s: %s" @@ -4173,198 +4178,198 @@ #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:3019 +#: catalog/objectaddress.c:3020 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "Funktion %d (%s, %s) von %s: %s" -#: catalog/objectaddress.c:3059 +#: catalog/objectaddress.c:3060 #, c-format msgid "rule %s on " msgstr "Regel %s für " -#: catalog/objectaddress.c:3094 +#: catalog/objectaddress.c:3095 #, c-format msgid "trigger %s on " msgstr "Trigger %s für " -#: catalog/objectaddress.c:3111 +#: catalog/objectaddress.c:3112 #, c-format msgid "schema %s" msgstr "Schema %s" -#: catalog/objectaddress.c:3134 +#: catalog/objectaddress.c:3135 #, c-format msgid "statistics object %s" msgstr "Statistikobjekt %s" -#: catalog/objectaddress.c:3161 +#: catalog/objectaddress.c:3162 #, c-format msgid "text search parser %s" msgstr "Textsucheparser %s" -#: catalog/objectaddress.c:3187 +#: catalog/objectaddress.c:3188 #, c-format msgid "text search dictionary %s" msgstr "Textsuchewörterbuch %s" -#: catalog/objectaddress.c:3213 +#: catalog/objectaddress.c:3214 #, c-format msgid "text search template %s" msgstr "Textsuchevorlage %s" -#: catalog/objectaddress.c:3239 +#: catalog/objectaddress.c:3240 #, c-format msgid "text search configuration %s" msgstr "Textsuchekonfiguration %s" -#: catalog/objectaddress.c:3248 +#: catalog/objectaddress.c:3249 #, c-format msgid "role %s" msgstr "Rolle %s" -#: catalog/objectaddress.c:3261 +#: catalog/objectaddress.c:3262 #, c-format msgid "database %s" msgstr "Datenbank %s" -#: catalog/objectaddress.c:3273 +#: catalog/objectaddress.c:3274 #, c-format msgid "tablespace %s" msgstr "Tablespace %s" -#: catalog/objectaddress.c:3282 +#: catalog/objectaddress.c:3283 #, c-format msgid "foreign-data wrapper %s" msgstr "Fremddaten-Wrapper %s" -#: catalog/objectaddress.c:3291 +#: catalog/objectaddress.c:3292 #, c-format msgid "server %s" msgstr "Server %s" -#: catalog/objectaddress.c:3319 +#: catalog/objectaddress.c:3320 #, c-format msgid "user mapping for %s on server %s" msgstr "Benutzerabbildung für %s auf Server %s" -#: catalog/objectaddress.c:3354 +#: catalog/objectaddress.c:3355 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "Vorgabeprivilegien für neue Relationen von Rolle %s" -#: catalog/objectaddress.c:3359 +#: catalog/objectaddress.c:3360 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "Vorgabeprivilegien für neue Sequenzen von Rolle %s" -#: catalog/objectaddress.c:3364 +#: catalog/objectaddress.c:3365 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "Vorgabeprivilegien für neue Funktionen von Rolle %s" -#: catalog/objectaddress.c:3369 +#: catalog/objectaddress.c:3370 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "Vorgabeprivilegien für neue Typen von Rolle %s" -#: catalog/objectaddress.c:3374 +#: catalog/objectaddress.c:3375 #, c-format msgid "default privileges on new schemas belonging to role %s" msgstr "Vorgabeprivilegien für neue Schemas von Rolle %s" -#: catalog/objectaddress.c:3380 +#: catalog/objectaddress.c:3381 #, c-format msgid "default privileges belonging to role %s" msgstr "Vorgabeprivilegien von Rolle %s" -#: catalog/objectaddress.c:3388 +#: catalog/objectaddress.c:3389 #, c-format msgid " in schema %s" msgstr " in Schema %s" -#: catalog/objectaddress.c:3405 +#: catalog/objectaddress.c:3406 #, c-format msgid "extension %s" msgstr "Erweiterung %s" -#: catalog/objectaddress.c:3418 +#: catalog/objectaddress.c:3419 #, c-format msgid "event trigger %s" msgstr "Ereignistrigger %s" -#: catalog/objectaddress.c:3450 +#: catalog/objectaddress.c:3451 #, c-format msgid "policy %s on " msgstr "Policy %s für " -#: catalog/objectaddress.c:3461 +#: catalog/objectaddress.c:3462 #, c-format msgid "publication %s" msgstr "Publikation %s" #. translator: first %s is, e.g., "table %s" -#: catalog/objectaddress.c:3486 +#: catalog/objectaddress.c:3487 #, c-format msgid "publication of %s in publication %s" msgstr "Publikation von %s in Publikation %s" -#: catalog/objectaddress.c:3495 +#: catalog/objectaddress.c:3496 #, c-format msgid "subscription %s" msgstr "Subskription %s" -#: catalog/objectaddress.c:3513 +#: catalog/objectaddress.c:3514 #, c-format msgid "transform for %s language %s" msgstr "Transformation %s für Sprache %s" -#: catalog/objectaddress.c:3576 +#: catalog/objectaddress.c:3577 #, c-format msgid "table %s" msgstr "Tabelle %s" -#: catalog/objectaddress.c:3580 +#: catalog/objectaddress.c:3581 #, c-format msgid "index %s" msgstr "Index %s" -#: catalog/objectaddress.c:3584 +#: catalog/objectaddress.c:3585 #, c-format msgid "sequence %s" msgstr "Sequenz %s" -#: catalog/objectaddress.c:3588 +#: catalog/objectaddress.c:3589 #, c-format msgid "toast table %s" msgstr "TOAST-Tabelle %s" -#: catalog/objectaddress.c:3592 +#: catalog/objectaddress.c:3593 #, c-format msgid "view %s" msgstr "Sicht %s" -#: catalog/objectaddress.c:3596 +#: catalog/objectaddress.c:3597 #, c-format msgid "materialized view %s" msgstr "materialisierte Sicht %s" -#: catalog/objectaddress.c:3600 +#: catalog/objectaddress.c:3601 #, c-format msgid "composite type %s" msgstr "zusammengesetzter Typ %s" -#: catalog/objectaddress.c:3604 +#: catalog/objectaddress.c:3605 #, c-format msgid "foreign table %s" msgstr "Fremdtabelle %s" -#: catalog/objectaddress.c:3609 +#: catalog/objectaddress.c:3610 #, c-format msgid "relation %s" msgstr "Relation %s" -#: catalog/objectaddress.c:3646 +#: catalog/objectaddress.c:3647 #, c-format msgid "operator family %s for access method %s" msgstr "Operatorfamilie %s für Zugriffsmethode %s" @@ -4386,9 +4391,9 @@ #: catalog/partition.c:942 catalog/partition.c:1135 commands/analyze.c:1486 #: commands/copy.c:2562 commands/tablecmds.c:8924 -#: executor/execExprInterp.c:2853 executor/execMain.c:1916 +#: executor/execExprInterp.c:2866 executor/execMain.c:1916 #: executor/execMain.c:1996 executor/execMain.c:2046 executor/execMain.c:2158 -#: executor/execMain.c:3386 executor/nodeModifyTable.c:1437 +#: executor/execMain.c:3392 executor/nodeModifyTable.c:1437 #: parser/parse_utilcmd.c:1246 msgid "could not convert row type" msgstr "konnte Zeilentyp nicht umwandeln" @@ -4495,10 +4500,10 @@ msgid "sort operator can only be specified for single-argument aggregates" msgstr "Sortieroperator kann nur für Aggregatfunktionen mit einem Argument angegeben werden" -#: catalog/pg_aggregate.c:817 commands/typecmds.c:1736 commands/typecmds.c:1787 -#: commands/typecmds.c:1826 commands/typecmds.c:1849 commands/typecmds.c:1870 -#: commands/typecmds.c:1897 commands/typecmds.c:1924 commands/typecmds.c:2001 -#: commands/typecmds.c:2043 parser/parse_func.c:369 parser/parse_func.c:398 +#: catalog/pg_aggregate.c:817 commands/typecmds.c:1738 commands/typecmds.c:1789 +#: commands/typecmds.c:1828 commands/typecmds.c:1851 commands/typecmds.c:1872 +#: commands/typecmds.c:1899 commands/typecmds.c:1926 commands/typecmds.c:2003 +#: commands/typecmds.c:2045 parser/parse_func.c:369 parser/parse_func.c:398 #: parser/parse_func.c:423 parser/parse_func.c:437 parser/parse_func.c:512 #: parser/parse_func.c:523 parser/parse_func.c:1988 #, c-format @@ -4575,7 +4580,7 @@ msgid "default conversion for %s to %s already exists" msgstr "Standardumwandlung von %s nach %s existiert bereits" -#: catalog/pg_depend.c:163 commands/extension.c:3238 +#: catalog/pg_depend.c:163 commands/extension.c:3246 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "%s ist schon Mitglied der Erweiterung »%s«" @@ -4829,7 +4834,7 @@ msgstr "Relation »%s« ist schon Mitglied der Publikation »%s«" #: catalog/pg_publication.c:402 catalog/pg_publication.c:423 -#: commands/publicationcmds.c:401 commands/publicationcmds.c:702 +#: commands/publicationcmds.c:406 commands/publicationcmds.c:714 #, c-format msgid "publication \"%s\" does not exist" msgstr "Publikation »%s« existiert nicht" @@ -4864,41 +4869,41 @@ msgid "database %u was concurrently dropped" msgstr "Datenbank %u wurde gleichzeitig gelöscht" -#: catalog/pg_shdepend.c:1077 +#: catalog/pg_shdepend.c:1083 #, c-format msgid "owner of %s" msgstr "Eigentümer von %s" -#: catalog/pg_shdepend.c:1079 +#: catalog/pg_shdepend.c:1085 #, c-format msgid "privileges for %s" msgstr "Privilegien für %s" -#: catalog/pg_shdepend.c:1081 +#: catalog/pg_shdepend.c:1087 #, c-format msgid "target of %s" msgstr "Ziel von %s" #. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1089 +#: catalog/pg_shdepend.c:1095 #, c-format msgid "%d object in %s" msgid_plural "%d objects in %s" msgstr[0] "%d Objekt in %s" msgstr[1] "%d Objekte in %s" -#: catalog/pg_shdepend.c:1200 +#: catalog/pg_shdepend.c:1206 #, c-format msgid "cannot drop objects owned by %s because they are required by the database system" msgstr "kann Objekte, die %s gehören, nicht löschen, weil sie vom Datenbanksystem benötigt werden" -#: catalog/pg_shdepend.c:1337 +#: catalog/pg_shdepend.c:1343 #, c-format msgid "cannot reassign ownership of objects owned by %s because they are required by the database system" msgstr "kann den Eigentümer von den Objekten, die %s gehören, nicht ändern, weil die Objekte vom Datenbanksystem benötigt werden" -#: catalog/pg_subscription.c:176 commands/subscriptioncmds.c:633 -#: commands/subscriptioncmds.c:843 commands/subscriptioncmds.c:1066 +#: catalog/pg_subscription.c:176 commands/subscriptioncmds.c:637 +#: commands/subscriptioncmds.c:847 commands/subscriptioncmds.c:1070 #, c-format msgid "subscription \"%s\" does not exist" msgstr "Subskription »%s« existiert nicht" @@ -5060,7 +5065,7 @@ msgid "publication \"%s\" already exists" msgstr "Publikation »%s« existiert bereits" -#: commands/alter.c:99 commands/subscriptioncmds.c:358 +#: commands/alter.c:99 commands/subscriptioncmds.c:361 #, c-format msgid "subscription \"%s\" already exists" msgstr "Subskription »%s« existiert bereits" @@ -5347,42 +5352,47 @@ msgid "parameter \"lc_ctype\" must be specified" msgstr "Parameter »lc_ctype« muss angegeben werden" -#: commands/collationcmds.c:246 +#: commands/collationcmds.c:208 +#, c-format +msgid "current database's encoding is not supported with this provider" +msgstr "Kodierung der aktuellen Datenbank wird von diesem Provider nicht unterstützt" + +#: commands/collationcmds.c:265 #, 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«" -#: commands/collationcmds.c:257 +#: commands/collationcmds.c:276 #, c-format msgid "collation \"%s\" already exists in schema \"%s\"" msgstr "Sortierfolge »%s« existiert bereits in Schema »%s«" -#: commands/collationcmds.c:305 +#: commands/collationcmds.c:324 #, c-format msgid "changing version from %s to %s" msgstr "Version wird von %s in %s geändert" -#: commands/collationcmds.c:320 +#: commands/collationcmds.c:339 #, c-format msgid "version has not changed" msgstr "Version hat sich nicht geändert" -#: commands/collationcmds.c:451 +#: commands/collationcmds.c:470 #, c-format msgid "could not convert locale name \"%s\" to language tag: %s" msgstr "konnte Locale-Namen »%s« nicht in Sprach-Tag umwandeln: %s" -#: commands/collationcmds.c:509 +#: commands/collationcmds.c:528 #, c-format msgid "must be superuser to import system collations" msgstr "nur Superuser können Systemsortierfolgen importieren" -#: commands/collationcmds.c:537 commands/copy.c:1825 commands/copy.c:3183 +#: commands/collationcmds.c:556 commands/copy.c:1825 commands/copy.c:3183 #, c-format msgid "could not execute command \"%s\": %m" msgstr "konnte Befehl »%s« nicht ausführen: %m" -#: commands/collationcmds.c:668 +#: commands/collationcmds.c:687 #, c-format msgid "no usable system locales were found" msgstr "keine brauchbaren System-Locales gefunden" @@ -5963,7 +5973,7 @@ msgstr "Spalte »%s« existiert nicht" #: commands/copy.c:4847 commands/tablecmds.c:1743 commands/trigger.c:826 -#: parser/parse_target.c:1018 parser/parse_target.c:1029 +#: parser/parse_target.c:1017 parser/parse_target.c:1028 #, c-format msgid "column \"%s\" specified more than once" msgstr "Spalte »%s« mehrmals angegeben" @@ -6171,7 +6181,6 @@ #: commands/dbcommands.c:1355 commands/dbcommands.c:1900 #: commands/dbcommands.c:2104 commands/dbcommands.c:2159 -#: commands/tablespace.c:604 #, 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" @@ -6699,17 +6708,17 @@ msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "Version »%s« von Erweiterung »%s« ist bereits installiert" -#: commands/extension.c:3250 +#: commands/extension.c:3258 #, c-format msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension" msgstr "kann Schema »%s« nicht zu Erweiterung »%s« hinzufügen, weil das Schema die Erweiterung enthält" -#: commands/extension.c:3278 +#: commands/extension.c:3286 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "%s ist kein Mitglied der Erweiterung »%s«" -#: commands/extension.c:3344 +#: commands/extension.c:3352 #, c-format msgid "file \"%s\" is too large" msgstr "Datei »%s« ist zu groß" @@ -7267,7 +7276,7 @@ msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "Zugriffsmethode »%s« unterstützt die Optionen NULLS FIRST/LAST nicht" -#: commands/indexcmds.c:1352 commands/typecmds.c:1974 +#: commands/indexcmds.c:1352 commands/typecmds.c:1976 #, 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«" @@ -7283,7 +7292,7 @@ msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "Operatorklasse »%s« existiert nicht für Zugriffsmethode »%s«" -#: commands/indexcmds.c:1404 commands/typecmds.c:1962 +#: commands/indexcmds.c:1404 commands/typecmds.c:1964 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "Operatorklasse »%s« akzeptiert Datentyp %s nicht" @@ -7328,12 +7337,12 @@ msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view." msgstr "Erzeugen Sie einen Unique Index ohne WHERE-Klausel für eine oder mehrere Spalten der materialisierten Sicht." -#: commands/matview.c:645 +#: commands/matview.c:652 #, c-format msgid "new data for materialized view \"%s\" contains duplicate rows without any null columns" msgstr "neue Daten für materialisierte Sicht »%s« enthalten doppelte Zeilen ohne Spalten mit NULL-Werten" -#: commands/matview.c:647 +#: commands/matview.c:654 #, c-format msgid "Row: %s" msgstr "Zeile: %s" @@ -7545,8 +7554,8 @@ msgid "operator attribute \"%s\" cannot be changed" msgstr "Operator-Attribut »%s« kann nicht geändert werden" -#: commands/policy.c:87 commands/policy.c:378 commands/policy.c:468 -#: commands/statscmds.c:132 commands/tablecmds.c:1171 commands/tablecmds.c:1561 +#: commands/policy.c:88 commands/policy.c:379 commands/statscmds.c:132 +#: commands/tablecmds.c:1171 commands/tablecmds.c:1561 #: commands/tablecmds.c:2562 commands/tablecmds.c:4760 #: commands/tablecmds.c:7125 commands/tablecmds.c:13219 #: commands/tablecmds.c:13254 commands/trigger.c:259 commands/trigger.c:1320 @@ -7556,42 +7565,37 @@ msgid "permission denied: \"%s\" is a system catalog" msgstr "keine Berechtigung: »%s« ist ein Systemkatalog" -#: commands/policy.c:170 +#: commands/policy.c:171 #, c-format msgid "ignoring specified roles other than PUBLIC" msgstr "angegebene Rollen außer PUBLIC werden ignoriert" -#: commands/policy.c:171 +#: commands/policy.c:172 #, c-format msgid "All roles are members of the PUBLIC role." msgstr "Alle Rollen sind Mitglieder der Rolle PUBLIC." -#: commands/policy.c:492 -#, c-format -msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" -msgstr "Rolle »%s« konnte nicht aus Policy »%s« für »%s« entfernt werden" - -#: commands/policy.c:698 +#: commands/policy.c:604 #, c-format msgid "WITH CHECK cannot be applied to SELECT or DELETE" msgstr "WITH CHECK kann nicht auf SELECT oder DELETE angewendet werden" -#: commands/policy.c:707 commands/policy.c:1005 +#: commands/policy.c:613 commands/policy.c:911 #, c-format msgid "only WITH CHECK expression allowed for INSERT" msgstr "für INSERT sind nur WITH-CHECK-Ausdrücke erlaubt" -#: commands/policy.c:780 commands/policy.c:1225 +#: commands/policy.c:686 commands/policy.c:1131 #, c-format msgid "policy \"%s\" for table \"%s\" already exists" msgstr "Policy »%s« für Tabelle »%s« existiert bereits" -#: commands/policy.c:977 commands/policy.c:1253 commands/policy.c:1325 +#: commands/policy.c:883 commands/policy.c:1159 commands/policy.c:1231 #, c-format msgid "policy \"%s\" for table \"%s\" does not exist" msgstr "Policy »%s« für Tabelle »%s« existiert nicht" -#: commands/policy.c:995 +#: commands/policy.c:901 #, c-format msgid "only USING expression allowed for SELECT, DELETE" msgstr "für SELECT und DELETE sind nur USING-Ausdrücke erlaubt" @@ -7627,32 +7631,32 @@ msgid "utility statements cannot be prepared" msgstr "Utility-Anweisungen können nicht vorbereitet werden" -#: commands/prepare.c:269 commands/prepare.c:274 +#: commands/prepare.c:280 commands/prepare.c:285 #, c-format msgid "prepared statement is not a SELECT" msgstr "vorbereitete Anweisung ist kein SELECT" -#: commands/prepare.c:342 +#: commands/prepare.c:346 #, c-format msgid "wrong number of parameters for prepared statement \"%s\"" msgstr "falsche Anzahl Parameter für vorbereitete Anweisung »%s«" -#: commands/prepare.c:344 +#: commands/prepare.c:348 #, c-format msgid "Expected %d parameters but got %d." msgstr "%d Parameter erwartet aber %d erhalten." -#: commands/prepare.c:380 +#: commands/prepare.c:384 #, 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" -#: commands/prepare.c:474 +#: commands/prepare.c:478 #, c-format msgid "prepared statement \"%s\" already exists" msgstr "vorbereitete Anweisung »%s« existiert bereits" -#: commands/prepare.c:513 +#: commands/prepare.c:517 #, c-format msgid "prepared statement \"%s\" does not exist" msgstr "vorbereitete Anweisung »%s« existiert nicht" @@ -7708,27 +7712,27 @@ msgid "must be superuser to create FOR ALL TABLES publication" msgstr "nur Superuser können eine Publikation FOR ALL TABLES erzeugen" -#: commands/publicationcmds.c:321 +#: commands/publicationcmds.c:326 #, c-format msgid "publication \"%s\" is defined as FOR ALL TABLES" msgstr "Publikation »%s« ist als FOR ALL TABLES definiert" -#: commands/publicationcmds.c:323 +#: commands/publicationcmds.c:328 #, c-format msgid "Tables cannot be added to or dropped from FOR ALL TABLES publications." msgstr "In einer FOR-ALL-TABLES-Publikation können keine Tabellen hinzugefügt oder entfernt werden." -#: commands/publicationcmds.c:624 +#: commands/publicationcmds.c:636 #, c-format msgid "relation \"%s\" is not part of the publication" msgstr "Relation »%s« ist nicht Teil der Publikation" -#: commands/publicationcmds.c:667 +#: commands/publicationcmds.c:679 #, c-format msgid "permission denied to change owner of publication \"%s\"" msgstr "keine Berechtigung, um Eigentümer der Publikation »%s« zu ändern" -#: commands/publicationcmds.c:669 +#: commands/publicationcmds.c:681 #, c-format msgid "The owner of a FOR ALL TABLES publication must be a superuser." msgstr "Der Eigentümer einer FOR-ALL-TABLES-Publikation muss ein Superuser sein." @@ -7944,149 +7948,149 @@ msgid "unrecognized statistics kind \"%s\"" msgstr "unbekannte Statistikart »%s«" -#: commands/subscriptioncmds.c:187 +#: commands/subscriptioncmds.c:190 #, c-format msgid "unrecognized subscription parameter: %s" msgstr "unbekannter Subskriptionsparameter: %s" -#: commands/subscriptioncmds.c:200 +#: commands/subscriptioncmds.c:203 #, c-format msgid "connect = false and enabled = true are mutually exclusive options" msgstr "die Optionen connect = false und enabled = true schließen einander aus" -#: commands/subscriptioncmds.c:205 +#: commands/subscriptioncmds.c:208 #, c-format msgid "connect = false and create_slot = true are mutually exclusive options" msgstr "die Optionen connect = false und create_slot = true schließen einander aus" -#: commands/subscriptioncmds.c:210 +#: commands/subscriptioncmds.c:213 #, c-format msgid "connect = false and copy_data = true are mutually exclusive options" msgstr "die Optionen connect = false und copy_data = true schließen einander aus" -#: commands/subscriptioncmds.c:227 +#: commands/subscriptioncmds.c:230 #, c-format msgid "slot_name = NONE and enabled = true are mutually exclusive options" msgstr "die Optionen slot_name = NONE und enabled = true schließen einander aus" -#: commands/subscriptioncmds.c:232 +#: commands/subscriptioncmds.c:235 #, c-format msgid "slot_name = NONE and create_slot = true are mutually exclusive options" msgstr "die Optionen slot_name = NONE und create_slot = true schließen einander aus" -#: commands/subscriptioncmds.c:237 +#: commands/subscriptioncmds.c:240 #, c-format msgid "subscription with slot_name = NONE must also set enabled = false" msgstr "Subskription mit slot_name = NONE muss auch enabled = false setzen" -#: commands/subscriptioncmds.c:242 +#: commands/subscriptioncmds.c:245 #, c-format msgid "subscription with slot_name = NONE must also set create_slot = false" msgstr "Subskription mit slot_name = NONE muss auch create_slot = false setzen" -#: commands/subscriptioncmds.c:284 +#: commands/subscriptioncmds.c:287 #, c-format msgid "publication name \"%s\" used more than once" msgstr "Publikationsname »%s« mehrmals angegeben" -#: commands/subscriptioncmds.c:347 +#: commands/subscriptioncmds.c:350 #, c-format msgid "must be superuser to create subscriptions" msgstr "nur Superuser können Subskriptionen erzeugen" -#: commands/subscriptioncmds.c:427 commands/subscriptioncmds.c:520 -#: replication/logical/tablesync.c:856 replication/logical/worker.c:1689 +#: commands/subscriptioncmds.c:430 commands/subscriptioncmds.c:524 +#: replication/logical/tablesync.c:859 replication/logical/worker.c:1675 #, c-format msgid "could not connect to the publisher: %s" msgstr "konnte nicht mit dem Publikationsserver verbinden: %s" -#: commands/subscriptioncmds.c:469 +#: commands/subscriptioncmds.c:472 #, c-format msgid "created replication slot \"%s\" on publisher" msgstr "Replikations-Slot »%s« wurde auf dem Publikationsserver erzeugt" -#: commands/subscriptioncmds.c:486 +#: commands/subscriptioncmds.c:489 #, c-format msgid "tables were not subscribed, you will have to run ALTER SUBSCRIPTION ... REFRESH PUBLICATION to subscribe the tables" msgstr "keine Tabellen wurden zur Subskription hinzugefügt; Sie müssen ALTER SUBSCRIPTION ... REFRESH PUBLICATION ausführen, um Tabellen zur Subskription hinzuzufügen" -#: commands/subscriptioncmds.c:576 +#: commands/subscriptioncmds.c:580 #, c-format msgid "table \"%s.%s\" added to subscription \"%s\"" msgstr "Tabelle »%s.%s« wurde zur Subskription »%s« hinzugefügt" -#: commands/subscriptioncmds.c:600 +#: commands/subscriptioncmds.c:604 #, c-format msgid "table \"%s.%s\" removed from subscription \"%s\"" msgstr "Tabelle »%s.%s« wurde aus Subskription »%s« entfernt" -#: commands/subscriptioncmds.c:669 +#: commands/subscriptioncmds.c:673 #, c-format msgid "cannot set slot_name = NONE for enabled subscription" msgstr "für eine aktivierte Subskription kann nicht slot_name = NONE gesetzt werden" -#: commands/subscriptioncmds.c:703 +#: commands/subscriptioncmds.c:707 #, c-format msgid "cannot enable subscription that does not have a slot name" msgstr "eine Subskription ohne Slot-Name kann nicht aktiviert werden" -#: commands/subscriptioncmds.c:749 +#: commands/subscriptioncmds.c:753 #, c-format msgid "ALTER SUBSCRIPTION with refresh is not allowed for disabled subscriptions" msgstr "ALTER SUBSCRIPTION mit Refresh ist für deaktivierte Subskriptionen nicht erlaubt" -#: commands/subscriptioncmds.c:750 +#: commands/subscriptioncmds.c:754 #, c-format msgid "Use ALTER SUBSCRIPTION ... SET PUBLICATION ... WITH (refresh = false)." msgstr "Verwenden Sie ALTER SUBSCRIPTION ... SET PUBLICATION ... WITH (refresh = false)." -#: commands/subscriptioncmds.c:768 +#: commands/subscriptioncmds.c:772 #, c-format msgid "ALTER SUBSCRIPTION ... REFRESH is not allowed for disabled subscriptions" msgstr "ALTER SUBSCRIPTION ... REFRESH ist für eine deaktivierte Subskription nicht erlaubt" -#: commands/subscriptioncmds.c:847 +#: commands/subscriptioncmds.c:851 #, c-format msgid "subscription \"%s\" does not exist, skipping" msgstr "Subskription »%s« existiert nicht, wird übersprungen" -#: commands/subscriptioncmds.c:971 +#: commands/subscriptioncmds.c:975 #, c-format msgid "could not connect to publisher when attempting to drop the replication slot \"%s\"" msgstr "konnte beim Versuch den Replikations-Slot »%s« zu löschen nicht mit dem Publikationsserver verbinden" -#: commands/subscriptioncmds.c:973 commands/subscriptioncmds.c:987 -#: replication/logical/tablesync.c:906 replication/logical/tablesync.c:928 +#: commands/subscriptioncmds.c:977 commands/subscriptioncmds.c:991 +#: replication/logical/tablesync.c:909 replication/logical/tablesync.c:931 #, c-format msgid "The error was: %s" msgstr "Der Fehler war: %s" -#: commands/subscriptioncmds.c:974 +#: commands/subscriptioncmds.c:978 #, c-format msgid "Use ALTER SUBSCRIPTION ... SET (slot_name = NONE) to disassociate the subscription from the slot." msgstr "Verwenden Sie ALTER SUBSCRIPTION ... SET (slot_name = NONE), um die Subskription vom Slot zu trennen." -#: commands/subscriptioncmds.c:985 +#: commands/subscriptioncmds.c:989 #, c-format msgid "could not drop the replication slot \"%s\" on publisher" msgstr "konnte Replikations-Slot »%s« auf dem Publikationsserver nicht löschen" -#: commands/subscriptioncmds.c:990 +#: commands/subscriptioncmds.c:994 #, c-format msgid "dropped replication slot \"%s\" on publisher" msgstr "Replikations-Slot »%s« auf dem Publikationsserver wurde gelöscht" -#: commands/subscriptioncmds.c:1031 +#: commands/subscriptioncmds.c:1035 #, c-format msgid "permission denied to change owner of subscription \"%s\"" msgstr "keine Berechtigung, um Eigentümer der Subskription »%s« zu ändern" -#: commands/subscriptioncmds.c:1033 +#: commands/subscriptioncmds.c:1037 #, c-format msgid "The owner of a subscription must be a superuser." msgstr "Der Eigentümer einer Subskription muss ein Superuser sein." -#: commands/subscriptioncmds.c:1146 +#: commands/subscriptioncmds.c:1150 #, c-format msgid "could not receive list of replicated tables from the publisher: %s" msgstr "konnte Liste der replizierten Tabellen nicht vom Publikationsserver empfangen: %s" @@ -8287,9 +8291,9 @@ #: commands/tablecmds.c:1931 commands/tablecmds.c:1954 #: commands/tablecmds.c:2159 commands/tablecmds.c:2189 -#: parser/parse_coerce.c:1657 parser/parse_coerce.c:1677 -#: parser/parse_coerce.c:1697 parser/parse_coerce.c:1743 -#: parser/parse_coerce.c:1782 parser/parse_param.c:218 +#: parser/parse_coerce.c:1669 parser/parse_coerce.c:1689 +#: parser/parse_coerce.c:1709 parser/parse_coerce.c:1755 +#: parser/parse_coerce.c:1794 parser/parse_param.c:218 #, c-format msgid "%s versus %s" msgstr "%s gegen %s" @@ -8979,7 +8983,7 @@ msgid "no matching relations in tablespace \"%s\" found" msgstr "keine passenden Relationen in Tablespace »%s« gefunden" -#: commands/tablecmds.c:11016 storage/buffer/bufmgr.c:915 +#: commands/tablecmds.c:11016 storage/buffer/bufmgr.c:924 #, c-format msgid "invalid page in block %u of relation %s" msgstr "ungültige Seite in Block %u von Relation %s" @@ -9316,17 +9320,17 @@ #: commands/tablespace.c:162 commands/tablespace.c:179 #: commands/tablespace.c:190 commands/tablespace.c:198 -#: commands/tablespace.c:623 replication/slot.c:1191 storage/file/copydir.c:47 +#: commands/tablespace.c:609 replication/slot.c:1191 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" msgstr "konnte Verzeichnis »%s« nicht erzeugen: %m" -#: commands/tablespace.c:209 +#: commands/tablespace.c:209 commands/tablespace.c:604 #, c-format msgid "could not stat directory \"%s\": %m" msgstr "konnte »stat« für Verzeichnis »%s« nicht ausführen: %m" -#: commands/tablespace.c:218 +#: commands/tablespace.c:218 commands/tablespace.c:615 #, c-format msgid "\"%s\" exists but is not a directory" msgstr "»%s« existiert, ist aber kein Verzeichnis" @@ -9361,24 +9365,24 @@ msgid "tablespace location should not be inside the data directory" msgstr "Tablespace-Pfad sollte nicht innerhalb des Datenverzeichnisses sein" -#: commands/tablespace.c:304 commands/tablespace.c:950 +#: commands/tablespace.c:304 commands/tablespace.c:946 #, c-format msgid "unacceptable tablespace name \"%s\"" msgstr "inakzeptabler Tablespace-Name »%s«" -#: commands/tablespace.c:306 commands/tablespace.c:951 +#: commands/tablespace.c:306 commands/tablespace.c:947 #, c-format msgid "The prefix \"pg_\" is reserved for system tablespaces." msgstr "Der Präfix »pg_« ist für System-Tablespaces reserviert." -#: commands/tablespace.c:316 commands/tablespace.c:963 +#: commands/tablespace.c:316 commands/tablespace.c:959 #, c-format msgid "tablespace \"%s\" already exists" msgstr "Tablespace »%s« existiert bereits" -#: commands/tablespace.c:428 commands/tablespace.c:933 -#: commands/tablespace.c:1013 commands/tablespace.c:1082 -#: commands/tablespace.c:1218 commands/tablespace.c:1421 +#: commands/tablespace.c:428 commands/tablespace.c:929 +#: commands/tablespace.c:1009 commands/tablespace.c:1078 +#: commands/tablespace.c:1214 commands/tablespace.c:1417 #, c-format msgid "tablespace \"%s\" does not exist" msgstr "Tablespace »%s« existiert nicht" @@ -9408,38 +9412,38 @@ msgid "could not set permissions on directory \"%s\": %m" msgstr "konnte Zugriffsrechte für Verzeichnis »%s« nicht setzen: %m" -#: commands/tablespace.c:618 +#: commands/tablespace.c:620 #, c-format msgid "directory \"%s\" already in use as a tablespace" msgstr "Verzeichnis »%s« ist bereits als Tablespace in Verwendung" -#: commands/tablespace.c:742 commands/tablespace.c:755 -#: commands/tablespace.c:791 commands/tablespace.c:883 +#: commands/tablespace.c:738 commands/tablespace.c:751 +#: commands/tablespace.c:787 commands/tablespace.c:879 #, c-format msgid "could not remove directory \"%s\": %m" msgstr "konnte Verzeichnis »%s« nicht löschen: %m" -#: commands/tablespace.c:804 commands/tablespace.c:892 +#: commands/tablespace.c:800 commands/tablespace.c:888 #, c-format msgid "could not remove symbolic link \"%s\": %m" msgstr "konnte symbolische Verknüpfung »%s« nicht löschen: %m" -#: commands/tablespace.c:814 commands/tablespace.c:901 +#: commands/tablespace.c:810 commands/tablespace.c:897 #, c-format msgid "\"%s\" is not a directory or symbolic link" msgstr "»%s« ist kein Verzeichnis oder symbolische Verknüpfung" -#: commands/tablespace.c:1087 +#: commands/tablespace.c:1083 #, c-format msgid "Tablespace \"%s\" does not exist." msgstr "Tablespace »%s« existiert nicht." -#: commands/tablespace.c:1520 +#: 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" -#: commands/tablespace.c:1522 +#: commands/tablespace.c:1518 #, c-format msgid "You can remove the directories manually if necessary." msgstr "Sie können die Verzeichnisse falls nötig manuell entfernen." @@ -9665,7 +9669,7 @@ msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." msgstr "Verwenden Sie einen AFTER-Trigger anstelle eines BEFORE-Triggers, um Änderungen an andere Zeilen zu propagieren." -#: commands/trigger.c:3070 executor/execMain.c:2713 executor/nodeLockRows.c:220 +#: commands/trigger.c:3070 executor/execMain.c:2719 executor/nodeLockRows.c:220 #: executor/nodeModifyTable.c:218 executor/nodeModifyTable.c:717 #: executor/nodeModifyTable.c:1012 executor/nodeModifyTable.c:1181 #, c-format @@ -9787,7 +9791,7 @@ msgid "must be superuser to create a base type" msgstr "nur Superuser können Basistypen anlegen" -#: commands/typecmds.c:290 commands/typecmds.c:1435 +#: commands/typecmds.c:290 commands/typecmds.c:1437 #, c-format msgid "type attribute \"%s\" not recognized" msgstr "Typ-Attribut »%s« nicht erkannt" @@ -9887,188 +9891,188 @@ msgid "multiple default expressions" msgstr "mehrere Vorgabeausdrücke" -#: commands/typecmds.c:959 commands/typecmds.c:968 +#: commands/typecmds.c:961 commands/typecmds.c:970 #, c-format msgid "conflicting NULL/NOT NULL constraints" msgstr "wiedersprüchliche NULL/NOT NULL-Constraints" -#: commands/typecmds.c:984 +#: commands/typecmds.c:986 #, c-format msgid "check constraints for domains cannot be marked NO INHERIT" msgstr "Check-Constraints für Domänen können nicht als NO INHERIT markiert werden" -#: commands/typecmds.c:993 commands/typecmds.c:2559 +#: commands/typecmds.c:995 commands/typecmds.c:2561 #, c-format msgid "unique constraints not possible for domains" msgstr "Unique-Constraints sind nicht für Domänen möglich" -#: commands/typecmds.c:999 commands/typecmds.c:2565 +#: commands/typecmds.c:1001 commands/typecmds.c:2567 #, c-format msgid "primary key constraints not possible for domains" msgstr "Primärschlüssel-Constraints sind nicht fürDomänen möglich" -#: commands/typecmds.c:1005 commands/typecmds.c:2571 +#: commands/typecmds.c:1007 commands/typecmds.c:2573 #, c-format msgid "exclusion constraints not possible for domains" msgstr "Exclusion-Constraints sind nicht für Domänen möglich" -#: commands/typecmds.c:1011 commands/typecmds.c:2577 +#: commands/typecmds.c:1013 commands/typecmds.c:2579 #, c-format msgid "foreign key constraints not possible for domains" msgstr "Fremdschlüssel-Constraints sind nicht für Domänen möglich" -#: commands/typecmds.c:1020 commands/typecmds.c:2586 +#: commands/typecmds.c:1022 commands/typecmds.c:2588 #, c-format msgid "specifying constraint deferrability not supported for domains" msgstr "Setzen des Constraint-Modus wird für Domänen nicht unterstützt" -#: commands/typecmds.c:1305 utils/cache/typcache.c:1698 +#: commands/typecmds.c:1307 utils/cache/typcache.c:1698 #, c-format msgid "%s is not an enum" msgstr "»%s« ist kein Enum" -#: commands/typecmds.c:1443 +#: commands/typecmds.c:1445 #, c-format msgid "type attribute \"subtype\" is required" msgstr "Typ-Attribut »subtype« muss angegeben werden" -#: commands/typecmds.c:1448 +#: commands/typecmds.c:1450 #, c-format msgid "range subtype cannot be %s" msgstr "Bereichtsuntertyp kann nicht %s sein" -#: commands/typecmds.c:1467 +#: commands/typecmds.c:1469 #, c-format msgid "range collation specified but subtype does not support collation" msgstr "Sortierfolge für Bereichstyp angegeben, aber Untertyp unterstützt keine Sortierfolgen" -#: commands/typecmds.c:1700 +#: commands/typecmds.c:1702 #, c-format msgid "type input function %s has multiple matches" msgstr "Typeingabefunktion %s hat mehrere Übereinstimmungen" -#: commands/typecmds.c:1718 +#: commands/typecmds.c:1720 #, c-format msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" msgstr "ändere Argumenttyp von Funktion %s von »opaque« in »cstring«" -#: commands/typecmds.c:1769 +#: commands/typecmds.c:1771 #, c-format msgid "changing argument type of function %s from \"opaque\" to %s" msgstr "ändere Argumenttyp von Funktion %s von »opaque« in %s" -#: commands/typecmds.c:1816 +#: commands/typecmds.c:1818 #, c-format msgid "type receive function %s has multiple matches" msgstr "Typempfangsfunktion %s hat mehrere Übereinstimmungen" -#: commands/typecmds.c:1876 +#: commands/typecmds.c:1878 #, c-format msgid "typmod_in function %s must return type %s" msgstr "typmod_in-Funktion %s muss Typ %s zurückgeben" -#: commands/typecmds.c:1903 +#: commands/typecmds.c:1905 #, c-format msgid "typmod_out function %s must return type %s" msgstr "typmod_out-Funktion %s muss Typ %s zurückgeben" -#: commands/typecmds.c:1930 +#: commands/typecmds.c:1932 #, c-format msgid "type analyze function %s must return type %s" msgstr "Typanalysefunktion %s muss Typ %s zurückgeben" -#: commands/typecmds.c:1976 +#: commands/typecmds.c:1978 #, c-format msgid "You must specify an operator class for the range type or define a default operator class for the subtype." msgstr "Sie müssen für den Bereichstyp eine Operatorklasse angeben oder eine Standardoperatorklasse für den Untertyp definieren." -#: commands/typecmds.c:2007 +#: commands/typecmds.c:2009 #, c-format msgid "range canonical function %s must return range type" msgstr "Bereichstyp-Canonical-Funktion %s muss Bereichstyp zurückgeben" -#: commands/typecmds.c:2013 +#: commands/typecmds.c:2015 #, c-format msgid "range canonical function %s must be immutable" msgstr "Bereichstyp-Canonical-Funktion %s muss »immutable« sein" -#: commands/typecmds.c:2049 +#: commands/typecmds.c:2051 #, c-format msgid "range subtype diff function %s must return type %s" msgstr "Bereichstyp-Untertyp-Diff-Funktion %s muss Typ %s zurückgeben" -#: commands/typecmds.c:2056 +#: commands/typecmds.c:2058 #, c-format msgid "range subtype diff function %s must be immutable" msgstr "Bereichstyp-Untertyp-Diff-Funktion %s muss »immutable« sein" -#: commands/typecmds.c:2083 +#: commands/typecmds.c:2085 #, c-format msgid "pg_type array OID value not set when in binary upgrade mode" msgstr "Array-OID-Wert für pg_type ist im Binary-Upgrade-Modus nicht gesetzt" -#: commands/typecmds.c:2387 +#: commands/typecmds.c:2389 #, c-format msgid "column \"%s\" of table \"%s\" contains null values" msgstr "Spalte »%s« von Tabelle »%s« enthält NULL-Werte" -#: commands/typecmds.c:2500 commands/typecmds.c:2683 +#: commands/typecmds.c:2502 commands/typecmds.c:2685 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist" msgstr "Constraint »%s« von Domäne »%s« existiert nicht" -#: commands/typecmds.c:2504 +#: commands/typecmds.c:2506 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping" msgstr "Constraint »%s« von Domäne »%s« existiert nicht, wird übersprungen" -#: commands/typecmds.c:2689 +#: commands/typecmds.c:2691 #, c-format msgid "constraint \"%s\" of domain \"%s\" is not a check constraint" msgstr "Constraint »%s« von Domäne »%s« ist kein Check-Constraint" -#: commands/typecmds.c:2794 +#: commands/typecmds.c:2796 #, c-format msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "Spalte »%s« von Tabelle »%s« enthält Werte, die den neuen Constraint verletzen" -#: commands/typecmds.c:3022 commands/typecmds.c:3227 commands/typecmds.c:3309 -#: commands/typecmds.c:3496 +#: commands/typecmds.c:3024 commands/typecmds.c:3234 commands/typecmds.c:3316 +#: commands/typecmds.c:3503 #, c-format msgid "%s is not a domain" msgstr "%s ist keine Domäne" -#: commands/typecmds.c:3056 +#: commands/typecmds.c:3058 #, c-format msgid "constraint \"%s\" for domain \"%s\" already exists" msgstr "Constraint »%s« für Domäne »%s« existiert bereits" -#: commands/typecmds.c:3107 +#: commands/typecmds.c:3114 #, c-format msgid "cannot use table references in domain check constraint" msgstr "Tabellenverweise können in Domänen-Check-Constraints nicht verwendet werden" -#: commands/typecmds.c:3239 commands/typecmds.c:3321 commands/typecmds.c:3613 +#: commands/typecmds.c:3246 commands/typecmds.c:3328 commands/typecmds.c:3620 #, c-format msgid "%s is a table's row type" msgstr "%s ist der Zeilentyp einer Tabelle" -#: commands/typecmds.c:3241 commands/typecmds.c:3323 commands/typecmds.c:3615 +#: commands/typecmds.c:3248 commands/typecmds.c:3330 commands/typecmds.c:3622 #, c-format msgid "Use ALTER TABLE instead." msgstr "Verwenden Sie stattdessen ALTER TABLE." -#: commands/typecmds.c:3248 commands/typecmds.c:3330 commands/typecmds.c:3528 +#: commands/typecmds.c:3255 commands/typecmds.c:3337 commands/typecmds.c:3535 #, c-format msgid "cannot alter array type %s" msgstr "Array-Typ %s kann nicht verändert werden" -#: commands/typecmds.c:3250 commands/typecmds.c:3332 commands/typecmds.c:3530 +#: commands/typecmds.c:3257 commands/typecmds.c:3339 commands/typecmds.c:3537 #, c-format msgid "You can alter type %s, which will alter the array type as well." msgstr "Sie können den Typ %s ändern, wodurch der Array-Typ ebenfalls geändert wird." -#: commands/typecmds.c:3598 +#: commands/typecmds.c:3605 #, c-format msgid "type \"%s\" already exists in schema \"%s\"" msgstr "Typ %s existiert bereits in Schema »%s«" @@ -10631,32 +10635,32 @@ msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" msgstr "Cursor »%s« ist kein einfach aktualisierbarer Scan der Tabelle »%s«" -#: executor/execCurrent.c:277 executor/execExprInterp.c:1889 +#: executor/execCurrent.c:277 executor/execExprInterp.c:1898 #, c-format msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)" msgstr "Typ von Parameter %d (%s) stimmt nicht mit dem überein, als der Plan vorbereitet worden ist (%s)" -#: executor/execCurrent.c:289 executor/execExprInterp.c:1901 +#: executor/execCurrent.c:289 executor/execExprInterp.c:1910 #, c-format msgid "no value found for parameter %d" msgstr "kein Wert für Parameter %d gefunden" -#: executor/execExpr.c:780 parser/parse_agg.c:779 +#: executor/execExpr.c:811 parser/parse_agg.c:772 #, c-format msgid "window function calls cannot be nested" msgstr "Aufrufe von Fensterfunktionen können nicht geschachtelt werden" -#: executor/execExpr.c:1236 +#: executor/execExpr.c:1267 #, c-format msgid "target type is not an array" msgstr "Zieltyp ist kein Array" -#: executor/execExpr.c:1559 +#: executor/execExpr.c:1590 #, c-format msgid "ROW() column has type %s instead of type %s" msgstr "ROW()-Spalte hat Typ %s statt Typ %s" -#: executor/execExpr.c:2094 executor/execSRF.c:672 parser/parse_func.c:120 +#: executor/execExpr.c:2125 executor/execSRF.c:672 parser/parse_func.c:120 #: parser/parse_func.c:547 parser/parse_func.c:921 #, c-format msgid "cannot pass more than %d argument to a function" @@ -10664,91 +10668,91 @@ msgstr[0] "kann nicht mehr als %d Argument an Funktion übergeben" msgstr[1] "kann nicht mehr als %d Argumente an Funktion übergeben" -#: executor/execExpr.c:2371 executor/execExpr.c:2377 -#: executor/execExprInterp.c:2226 utils/adt/arrayfuncs.c:260 -#: utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1300 -#: utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5251 -#: utils/adt/arrayfuncs.c:5768 +#: executor/execExpr.c:2402 executor/execExpr.c:2408 +#: executor/execExprInterp.c:2235 utils/adt/arrayfuncs.c:260 +#: utils/adt/arrayfuncs.c:560 utils/adt/arrayfuncs.c:1302 +#: utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5253 +#: utils/adt/arrayfuncs.c:5774 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "Anzahl der Arraydimensionen (%d) überschreitet erlaubtes Maximum (%d)" -#: executor/execExprInterp.c:1561 +#: executor/execExprInterp.c:1566 #, c-format msgid "attribute %d of type %s has been dropped" msgstr "Attribut %d von Typ %s wurde gelöscht" -#: executor/execExprInterp.c:1567 +#: executor/execExprInterp.c:1572 #, c-format msgid "attribute %d of type %s has wrong type" msgstr "Attribut %d von Typ %s hat falschen Typ" -#: executor/execExprInterp.c:1569 executor/execExprInterp.c:2512 +#: executor/execExprInterp.c:1574 executor/execExprInterp.c:2525 #, c-format msgid "Table has type %s, but query expects %s." msgstr "Tabelle hat Typ %s, aber Anfrage erwartet %s." -#: executor/execExprInterp.c:1979 +#: executor/execExprInterp.c:1988 #, c-format msgid "WHERE CURRENT OF is not supported for this table type" msgstr "WHERE CURRENT OF wird für diesen Tabellentyp nicht unterstützt" -#: executor/execExprInterp.c:2204 +#: executor/execExprInterp.c:2213 #, c-format msgid "cannot merge incompatible arrays" msgstr "kann inkompatible Arrays nicht verschmelzen" -#: executor/execExprInterp.c:2205 +#: executor/execExprInterp.c:2214 #, c-format msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." msgstr "Arrayelement mit Typ %s kann nicht in ARRAY-Konstrukt mit Elementtyp %s verwendet werden." -#: executor/execExprInterp.c:2246 executor/execExprInterp.c:2276 +#: executor/execExprInterp.c:2255 executor/execExprInterp.c:2285 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl Dimensionen haben" -#: executor/execExprInterp.c:2511 +#: executor/execExprInterp.c:2524 #, c-format msgid "attribute %d has wrong type" msgstr "Attribut %d hat falschen Typ" -#: executor/execExprInterp.c:2620 +#: executor/execExprInterp.c:2633 #, c-format msgid "array subscript in assignment must not be null" msgstr "Arrayindex in Zuweisung darf nicht NULL sein" -#: executor/execExprInterp.c:3053 utils/adt/domains.c:148 +#: executor/execExprInterp.c:3066 utils/adt/domains.c:148 #, c-format msgid "domain %s does not allow null values" msgstr "Domäne %s erlaubt keine NULL-Werte" -#: executor/execExprInterp.c:3068 utils/adt/domains.c:183 +#: executor/execExprInterp.c:3081 utils/adt/domains.c:183 #, c-format msgid "value for domain %s violates check constraint \"%s\"" msgstr "Wert für Domäne %s verletzt Check-Constraint »%s«" -#: executor/execExprInterp.c:3435 executor/execExprInterp.c:3452 -#: executor/execExprInterp.c:3554 executor/nodeModifyTable.c:100 +#: executor/execExprInterp.c:3448 executor/execExprInterp.c:3465 +#: executor/execExprInterp.c:3567 executor/nodeModifyTable.c:100 #: executor/nodeModifyTable.c:110 executor/nodeModifyTable.c:127 #: executor/nodeModifyTable.c:135 #, c-format msgid "table row type and query-specified row type do not match" msgstr "Zeilentyp der Tabelle und der von der Anfrage angegebene Zeilentyp stimmen nicht überein" -#: executor/execExprInterp.c:3436 +#: executor/execExprInterp.c:3449 #, c-format msgid "Table row contains %d attribute, but query expects %d." msgid_plural "Table row contains %d attributes, but query expects %d." msgstr[0] "Tabellenzeile enthält %d Attribut, aber Anfrage erwartet %d." msgstr[1] "Tabellenzeile enthält %d Attribute, aber Anfrage erwartet %d." -#: executor/execExprInterp.c:3453 executor/nodeModifyTable.c:111 +#: executor/execExprInterp.c:3466 executor/nodeModifyTable.c:111 #, c-format msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "Tabelle hat Typ %s auf Position %d, aber Anfrage erwartet %s." -#: executor/execExprInterp.c:3555 executor/execSRF.c:927 +#: executor/execExprInterp.c:3568 executor/execSRF.c:927 #, 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." @@ -10798,38 +10802,38 @@ msgid "cannot change TOAST relation \"%s\"" msgstr "kann TOAST-Relation »%s« nicht ändern" -#: executor/execMain.c:1140 rewrite/rewriteHandler.c:2895 -#: rewrite/rewriteHandler.c:3661 +#: executor/execMain.c:1140 rewrite/rewriteHandler.c:2918 +#: rewrite/rewriteHandler.c:3698 #, c-format msgid "cannot insert into view \"%s\"" msgstr "kann nicht in Sicht »%s« einfügen" -#: executor/execMain.c:1142 rewrite/rewriteHandler.c:2898 -#: rewrite/rewriteHandler.c:3664 +#: executor/execMain.c:1142 rewrite/rewriteHandler.c:2921 +#: rewrite/rewriteHandler.c:3701 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." msgstr "Um Einfügen in die Sicht zu ermöglichen, richten Sie einen INSTEAD OF INSERT Trigger oder eine ON INSERT DO INSTEAD Regel ohne Bedingung ein." -#: executor/execMain.c:1148 rewrite/rewriteHandler.c:2903 -#: rewrite/rewriteHandler.c:3669 +#: executor/execMain.c:1148 rewrite/rewriteHandler.c:2926 +#: rewrite/rewriteHandler.c:3706 #, c-format msgid "cannot update view \"%s\"" msgstr "kann Sicht »%s« nicht aktualisieren" -#: executor/execMain.c:1150 rewrite/rewriteHandler.c:2906 -#: rewrite/rewriteHandler.c:3672 +#: executor/execMain.c:1150 rewrite/rewriteHandler.c:2929 +#: rewrite/rewriteHandler.c:3709 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." msgstr "Um Aktualisieren der Sicht zu ermöglichen, richten Sie einen INSTEAD OF UPDATE Trigger oder eine ON UPDATE DO INSTEAD Regel ohne Bedingung ein." -#: executor/execMain.c:1156 rewrite/rewriteHandler.c:2911 -#: rewrite/rewriteHandler.c:3677 +#: executor/execMain.c:1156 rewrite/rewriteHandler.c:2934 +#: rewrite/rewriteHandler.c:3714 #, c-format msgid "cannot delete from view \"%s\"" msgstr "kann nicht aus Sicht »%s« löschen" -#: executor/execMain.c:1158 rewrite/rewriteHandler.c:2914 -#: rewrite/rewriteHandler.c:3680 +#: executor/execMain.c:1158 rewrite/rewriteHandler.c:2937 +#: rewrite/rewriteHandler.c:3717 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." msgstr "Um Löschen aus der Sicht zu ermöglichen, richten Sie einen INSTEAD OF DELETE Trigger oder eine ON DELETE DO INSTEAD Regel ohne Bedingung ein." @@ -10894,7 +10898,7 @@ msgid "cannot lock rows in materialized view \"%s\"" msgstr "kann Zeilen in materialisierter Sicht »%s« nicht sperren" -#: executor/execMain.c:1289 executor/execMain.c:2947 +#: executor/execMain.c:1289 executor/execMain.c:2953 #: executor/nodeLockRows.c:136 #, c-format msgid "cannot lock rows in foreign table \"%s\"" @@ -10951,12 +10955,12 @@ msgid "new row violates row-level security policy (USING expression) for table \"%s\"" msgstr "neue Zeile verletzt Policy für Sicherheit auf Zeilenebene (USING-Ausdruck) für Tabelle »%s«" -#: executor/execMain.c:3463 +#: executor/execMain.c:3469 #, c-format msgid "no partition of relation \"%s\" found for row" msgstr "keine Partition von Relation »%s« für die Zeile gefunden" -#: executor/execMain.c:3465 +#: executor/execMain.c:3471 #, c-format msgid "Partition key of the failing row contains %s." msgstr "Partitionierungsschlüssel der fehlgeschlagenen Zeile enthält %s." @@ -10967,9 +10971,9 @@ msgstr "gleichzeitige Aktualisierung, versuche erneut" #: executor/execReplication.c:252 parser/parse_oper.c:228 -#: utils/adt/array_userfuncs.c:724 utils/adt/array_userfuncs.c:863 -#: utils/adt/arrayfuncs.c:3651 utils/adt/arrayfuncs.c:4089 -#: utils/adt/arrayfuncs.c:6049 utils/adt/rowtypes.c:1167 +#: utils/adt/array_userfuncs.c:725 utils/adt/array_userfuncs.c:864 +#: utils/adt/arrayfuncs.c:3653 utils/adt/arrayfuncs.c:4091 +#: utils/adt/arrayfuncs.c:6057 utils/adt/rowtypes.c:1167 #, c-format msgid "could not identify an equality operator for type %s" msgstr "konnte keinen Ist-Gleich-Operator für Typ %s ermitteln" @@ -11125,7 +11129,7 @@ msgid "return type %s is not supported for SQL functions" msgstr "Rückgabetyp %s wird von SQL-Funktionen nicht unterstützt" -#: executor/nodeAgg.c:3509 parser/parse_agg.c:618 parser/parse_agg.c:648 +#: executor/nodeAgg.c:3509 parser/parse_agg.c:613 parser/parse_agg.c:641 #, c-format msgid "aggregate function calls cannot be nested" msgstr "Aufrufe von Aggregatfunktionen können nicht geschachtelt werden" @@ -11660,84 +11664,84 @@ msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" msgstr "unbekannter Konfigurationsparameter »%s« in Datei »%s« Zeile %u" -#: guc-file.l:350 utils/misc/guc.c:6017 utils/misc/guc.c:6214 +#: guc-file.l:352 utils/misc/guc.c:6017 utils/misc/guc.c:6214 #: utils/misc/guc.c:6308 utils/misc/guc.c:6402 utils/misc/guc.c:6522 #: utils/misc/guc.c:6621 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" msgstr "Parameter »%s« kann nicht geändert werden, ohne den Server neu zu starten" -#: guc-file.l:386 +#: guc-file.l:388 #, c-format msgid "parameter \"%s\" removed from configuration file, reset to default" msgstr "Parameter »%s« wurde aus Konfigurationsdatei entfernt, wird auf Standardwert zurückgesetzt" -#: guc-file.l:452 +#: guc-file.l:454 #, c-format msgid "parameter \"%s\" changed to \"%s\"" msgstr "Parameter »%s« auf »%s« gesetzt" -#: guc-file.l:494 +#: guc-file.l:496 #, c-format msgid "configuration file \"%s\" contains errors" msgstr "Konfigurationsdatei »%s« enthält Fehler" -#: guc-file.l:499 +#: guc-file.l:501 #, c-format msgid "configuration file \"%s\" contains errors; unaffected changes were applied" msgstr "Konfigurationsdatei »%s« enthält Fehler; nicht betroffene Änderungen wurden durchgeführt" -#: guc-file.l:504 +#: guc-file.l:506 #, c-format msgid "configuration file \"%s\" contains errors; no changes were applied" msgstr "Konfigurationsdatei »%s« enthält Fehler; keine Änderungen wurden durchgeführt" -#: guc-file.l:576 +#: guc-file.l:578 #, c-format msgid "empty configuration file name: \"%s\"" msgstr "leerer Konfigurationsdateiname: »%s«" -#: guc-file.l:593 +#: guc-file.l:595 #, c-format msgid "could not open configuration file \"%s\": maximum nesting depth exceeded" msgstr "konnte Konfigurationsdatei »%s« nicht öffnen: maximale Verschachtelungstiefe überschritten" -#: guc-file.l:613 +#: guc-file.l:615 #, c-format msgid "configuration file recursion in \"%s\"" msgstr "Konfigurationsdateirekursion in »%s«" -#: guc-file.l:629 libpq/hba.c:2117 libpq/hba.c:2526 +#: guc-file.l:631 libpq/hba.c:2117 libpq/hba.c:2526 #, c-format msgid "could not open configuration file \"%s\": %m" msgstr "konnte Konfigurationsdatei »%s« nicht öffnen: %m" -#: guc-file.l:640 +#: guc-file.l:642 #, c-format msgid "skipping missing configuration file \"%s\"" msgstr "fehlende Konfigurationsdatei »%s« wird übersprungen" -#: guc-file.l:894 +#: guc-file.l:896 #, c-format msgid "syntax error in file \"%s\" line %u, near end of line" msgstr "Syntaxfehler in Datei »%s«, Zeile %u, am Ende der Zeile" -#: guc-file.l:904 +#: guc-file.l:906 #, c-format msgid "syntax error in file \"%s\" line %u, near token \"%s\"" msgstr "Syntaxfehler in Datei »%s«, Zeile %u, bei »%s«" -#: guc-file.l:924 +#: guc-file.l:926 #, c-format msgid "too many syntax errors found, abandoning file \"%s\"" msgstr "zu viele Syntaxfehler gefunden, Datei »%s« wird aufgegeben" -#: guc-file.l:979 +#: guc-file.l:981 #, c-format msgid "empty configuration directory name: \"%s\"" msgstr "leerer Konfigurationsverzeichnisname: »%s«" -#: guc-file.l:998 +#: guc-file.l:1000 #, c-format msgid "could not open configuration directory \"%s\": %m" msgstr "konnte Konfigurationsverzeichnis »%s« nicht öffnen: %m" @@ -12053,412 +12057,412 @@ msgid "client selected an invalid SASL authentication mechanism" msgstr "Client hat einen ungültigen SASL-Authentifizierungsmechanismums gewählt" -#: libpq/auth.c:1109 +#: libpq/auth.c:1133 #, c-format msgid "GSSAPI is not supported in protocol version 2" msgstr "GSSAPI wird in Protokollversion 2 nicht unterstützt" -#: libpq/auth.c:1169 +#: libpq/auth.c:1193 #, c-format msgid "expected GSS response, got message type %d" msgstr "GSS-Antwort erwartet, Message-Typ %d empfangen" -#: libpq/auth.c:1231 +#: libpq/auth.c:1255 msgid "accepting GSS security context failed" msgstr "Annahme des GSS-Sicherheitskontexts fehlgeschlagen" -#: libpq/auth.c:1257 +#: libpq/auth.c:1281 msgid "retrieving GSS user name failed" msgstr "Abfrage des GSS-Benutzernamens fehlgeschlagen" -#: libpq/auth.c:1382 +#: libpq/auth.c:1414 #, c-format msgid "SSPI is not supported in protocol version 2" msgstr "SSL wird in Protokollversion 2 nicht unterstützt" -#: libpq/auth.c:1397 +#: libpq/auth.c:1429 msgid "could not acquire SSPI credentials" msgstr "konnte SSPI-Credentials nicht erhalten" -#: libpq/auth.c:1415 +#: libpq/auth.c:1447 #, c-format msgid "expected SSPI response, got message type %d" msgstr "SSPI-Antwort erwartet, Message-Typ %d empfangen" -#: libpq/auth.c:1488 +#: libpq/auth.c:1520 msgid "could not accept SSPI security context" msgstr "konnte SSPI-Sicherheitskontext nicht akzeptieren" -#: libpq/auth.c:1550 +#: libpq/auth.c:1582 msgid "could not get token from SSPI security context" msgstr "konnte kein Token vom SSPI-Sicherheitskontext erhalten" -#: libpq/auth.c:1669 libpq/auth.c:1688 +#: libpq/auth.c:1701 libpq/auth.c:1720 #, c-format msgid "could not translate name" msgstr "konnte Namen nicht umwandeln" -#: libpq/auth.c:1701 +#: libpq/auth.c:1733 #, c-format msgid "realm name too long" msgstr "Realm-Name zu lang" -#: libpq/auth.c:1716 +#: libpq/auth.c:1748 #, c-format msgid "translated account name too long" msgstr "umgewandelter Account-Name zu lang" -#: libpq/auth.c:1902 +#: libpq/auth.c:1934 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "konnte Socket für Ident-Verbindung nicht erzeugen: %m" -#: libpq/auth.c:1917 +#: libpq/auth.c:1949 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "konnte nicht mit lokaler Adresse »%s« verbinden: %m" -#: libpq/auth.c:1929 +#: libpq/auth.c:1961 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "konnte nicht mit Ident-Server auf Adresse »%s«, Port %s verbinden: %m" -#: libpq/auth.c:1951 +#: libpq/auth.c:1983 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "konnte Anfrage an Ident-Server auf Adresse »%s«, Port %s nicht senden: %m" -#: libpq/auth.c:1968 +#: libpq/auth.c:2000 #, c-format msgid "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "konnte Antwort von Ident-Server auf Adresse »%s«, Port %s nicht empfangen: %m" -#: libpq/auth.c:1978 +#: libpq/auth.c:2010 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "ungültig formatierte Antwort vom Ident-Server: »%s«" -#: libpq/auth.c:2018 +#: libpq/auth.c:2050 #, c-format msgid "peer authentication is not supported on this platform" msgstr "Peer-Authentifizierung wird auf dieser Plattform nicht unterstützt" -#: libpq/auth.c:2022 +#: libpq/auth.c:2054 #, c-format msgid "could not get peer credentials: %m" msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %m" -#: libpq/auth.c:2033 +#: libpq/auth.c:2065 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "konnte lokale Benutzer-ID %ld nicht nachschlagen: %s" -#: libpq/auth.c:2123 +#: libpq/auth.c:2155 #, c-format msgid "error from underlying PAM layer: %s" msgstr "Fehler von der unteren PAM-Ebene: %s" -#: libpq/auth.c:2193 +#: libpq/auth.c:2225 #, c-format msgid "could not create PAM authenticator: %s" msgstr "konnte PAM-Authenticator nicht erzeugen: %s" -#: libpq/auth.c:2204 +#: libpq/auth.c:2236 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "pam_set_item(PAM_USER) fehlgeschlagen: %s" -#: libpq/auth.c:2236 +#: libpq/auth.c:2268 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "pam_set_item(PAM_RHOST) fehlgeschlagen: %s" -#: libpq/auth.c:2248 +#: libpq/auth.c:2280 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "pam_set_item(PAM_CONV) fehlgeschlagen: %s" -#: libpq/auth.c:2261 +#: libpq/auth.c:2293 #, c-format msgid "pam_authenticate failed: %s" msgstr "pam_authenticate fehlgeschlagen: %s" -#: libpq/auth.c:2274 +#: libpq/auth.c:2306 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "pam_acct_mgmt fehlgeschlagen: %s" -#: libpq/auth.c:2285 +#: libpq/auth.c:2317 #, c-format msgid "could not release PAM authenticator: %s" msgstr "konnte PAM-Authenticator nicht freigeben: %s" -#: libpq/auth.c:2352 +#: libpq/auth.c:2384 #, c-format msgid "could not initialize LDAP: %m" msgstr "konnte LDAP nicht initialisieren: %m" -#: libpq/auth.c:2355 +#: libpq/auth.c:2387 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "konnte LDAP nicht initialisieren: Fehlercode %d" -#: libpq/auth.c:2365 +#: libpq/auth.c:2397 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "konnte LDAP-Protokollversion nicht setzen: %s" -#: libpq/auth.c:2394 +#: libpq/auth.c:2426 #, c-format msgid "could not load wldap32.dll" msgstr "konnte wldap32.dll nicht laden" -#: libpq/auth.c:2402 +#: libpq/auth.c:2434 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "konnte Funktion _ldap_start_tls_sA in wldap32.dll nicht laden" -#: libpq/auth.c:2403 +#: libpq/auth.c:2435 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP über SSL wird auf dieser Plattform nicht unterstützt." -#: libpq/auth.c:2418 +#: libpq/auth.c:2450 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "konnte LDAP-TLS-Sitzung nicht starten: %s" -#: libpq/auth.c:2440 +#: libpq/auth.c:2472 #, c-format msgid "LDAP server not specified" msgstr "LDAP-Server nicht angegeben" -#: libpq/auth.c:2489 +#: libpq/auth.c:2521 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "ungültiges Zeichen im Benutzernamen für LDAP-Authentifizierung" -#: libpq/auth.c:2505 +#: libpq/auth.c:2537 #, c-format msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" msgstr "erstes LDAP-Binden für ldapbinddn »%s« auf Server »%s« fehlgeschlagen: %s" -#: libpq/auth.c:2531 +#: libpq/auth.c:2563 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "konnte LDAP nicht mit Filter »%s« auf Server »%s« durchsuchen: %s" -#: libpq/auth.c:2543 +#: libpq/auth.c:2575 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "LDAP-Benutzer »%s« existiert nicht" -#: libpq/auth.c:2544 +#: libpq/auth.c:2576 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "LDAP-Suche nach Filter »%s« auf Server »%s« gab keine Einträge zurück." -#: libpq/auth.c:2548 +#: libpq/auth.c:2580 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "LDAP-Benutzer »%s« ist nicht eindeutig" -#: libpq/auth.c:2549 +#: libpq/auth.c:2581 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." msgstr[0] "LDAP-Suche nach Filter »%s« auf Server »%s« gab %d Eintrag zurück." msgstr[1] "LDAP-Suche nach Filter »%s« auf Server »%s« gab %d Einträge zurück." -#: libpq/auth.c:2568 +#: libpq/auth.c:2600 #, c-format msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" msgstr "konnte DN fũr den ersten Treffer für »%s« auf Server »%s« nicht lesen: %s" -#: libpq/auth.c:2589 +#: libpq/auth.c:2621 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "Losbinden fehlgeschlagen nach Suche nach Benutzer »%s« auf Server »%s«: %s" -#: libpq/auth.c:2621 +#: libpq/auth.c:2653 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "LDAP-Login fehlgeschlagen für Benutzer »%s« auf Server »%s«: %s" -#: libpq/auth.c:2651 +#: libpq/auth.c:2683 #, c-format msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" msgstr "Zertifikatauthentifizierung für Benutzer »%s« fehlgeschlagen: Client-Zertifikat enthält keinen Benutzernamen" -#: libpq/auth.c:2754 +#: libpq/auth.c:2786 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-Server nicht angegeben" -#: libpq/auth.c:2761 +#: libpq/auth.c:2793 #, c-format msgid "RADIUS secret not specified" msgstr "RADIUS-Geheimnis nicht angegeben" -#: libpq/auth.c:2775 +#: libpq/auth.c:2807 #, c-format msgid "RADIUS authentication does not support passwords longer than %d characters" msgstr "RADIUS-Authentifizierung unterstützt keine Passwörter länger als %d Zeichen" -#: libpq/auth.c:2880 libpq/hba.c:1883 +#: libpq/auth.c:2912 libpq/hba.c:1883 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "konnte RADIUS-Servername »%s« nicht in Adresse übersetzen: %s" -#: libpq/auth.c:2894 +#: libpq/auth.c:2926 #, c-format msgid "could not generate random encryption vector" msgstr "konnte zufälligen Verschlüsselungsvektor nicht erzeugen" -#: libpq/auth.c:2928 +#: libpq/auth.c:2960 #, c-format msgid "could not perform MD5 encryption of password" msgstr "konnte MD5-Verschlüsselung des Passworts nicht durchführen" -#: libpq/auth.c:2954 +#: libpq/auth.c:2986 #, c-format msgid "could not create RADIUS socket: %m" msgstr "konnte RADIUS-Socket nicht erstellen: %m" -#: libpq/auth.c:2976 +#: libpq/auth.c:3008 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "konnte lokales RADIUS-Socket nicht binden: %m" -#: libpq/auth.c:2986 +#: libpq/auth.c:3018 #, c-format msgid "could not send RADIUS packet: %m" msgstr "konnte RADIUS-Paket nicht senden: %m" -#: libpq/auth.c:3019 libpq/auth.c:3045 +#: libpq/auth.c:3051 libpq/auth.c:3077 #, c-format msgid "timeout waiting for RADIUS response from %s" msgstr "Zeitüberschreitung beim Warten auf RADIUS-Antwort von %s" -#: libpq/auth.c:3038 +#: libpq/auth.c:3070 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "konnte Status des RADIUS-Sockets nicht prüfen: %m" -#: libpq/auth.c:3068 +#: libpq/auth.c:3100 #, c-format msgid "could not read RADIUS response: %m" msgstr "konnte RADIUS-Antwort nicht lesen: %m" -#: libpq/auth.c:3081 libpq/auth.c:3085 +#: libpq/auth.c:3113 libpq/auth.c:3117 #, c-format msgid "RADIUS response from %s was sent from incorrect port: %d" msgstr "RADIUS-Antwort von %s wurde von falschem Port gesendet: %d" -#: libpq/auth.c:3094 +#: libpq/auth.c:3126 #, c-format msgid "RADIUS response from %s too short: %d" msgstr "RADIUS-Antwort von %s zu kurz: %d" -#: libpq/auth.c:3101 +#: libpq/auth.c:3133 #, c-format msgid "RADIUS response from %s has corrupt length: %d (actual length %d)" msgstr "RADIUS-Antwort von %s hat verfälschte Länge: %d (tatsächliche Länge %d)" -#: libpq/auth.c:3109 +#: libpq/auth.c:3141 #, c-format msgid "RADIUS response from %s is to a different request: %d (should be %d)" msgstr "RADIUS-Antwort von %s unterscheidet sich von Anfrage: %d (sollte %d sein)" -#: libpq/auth.c:3134 +#: libpq/auth.c:3166 #, c-format msgid "could not perform MD5 encryption of received packet" msgstr "konnte MD5-Verschlüsselung des empfangenen Pakets nicht durchführen" -#: libpq/auth.c:3143 +#: libpq/auth.c:3175 #, c-format msgid "RADIUS response from %s has incorrect MD5 signature" msgstr "RADIUS-Antwort von %s hat falsche MD5-Signatur" -#: libpq/auth.c:3161 +#: libpq/auth.c:3193 #, c-format msgid "RADIUS response from %s has invalid code (%d) for user \"%s\"" msgstr "RADIUS-Antwort von %s hat ungültigen Code (%d) für Benutzer »%s«" -#: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:163 libpq/be-fsstubs.c:197 -#: libpq/be-fsstubs.c:237 libpq/be-fsstubs.c:262 libpq/be-fsstubs.c:310 -#: libpq/be-fsstubs.c:333 libpq/be-fsstubs.c:590 +#: libpq/be-fsstubs.c:140 libpq/be-fsstubs.c:169 libpq/be-fsstubs.c:203 +#: libpq/be-fsstubs.c:243 libpq/be-fsstubs.c:268 libpq/be-fsstubs.c:306 +#: libpq/be-fsstubs.c:329 libpq/be-fsstubs.c:581 #, c-format msgid "invalid large-object descriptor: %d" msgstr "ungültiger Large-Object-Deskriptor: %d" -#: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:609 -#: libpq/be-fsstubs.c:797 libpq/be-fsstubs.c:917 +#: libpq/be-fsstubs.c:184 libpq/be-fsstubs.c:222 libpq/be-fsstubs.c:600 +#: libpq/be-fsstubs.c:794 libpq/be-fsstubs.c:912 #, c-format msgid "permission denied for large object %u" msgstr "keine Berechtigung für Large Object %u" -#: libpq/be-fsstubs.c:203 libpq/be-fsstubs.c:596 +#: libpq/be-fsstubs.c:209 libpq/be-fsstubs.c:587 #, 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:245 +#: libpq/be-fsstubs.c:251 #, c-format msgid "lo_lseek result out of range for large-object descriptor %d" msgstr "Ergebnis von lo_lseek ist außerhalb des gültigen Bereichs für Large-Object-Deskriptor %d" -#: libpq/be-fsstubs.c:318 +#: libpq/be-fsstubs.c:314 #, c-format msgid "lo_tell result out of range for large-object descriptor %d" msgstr "Ergebnis von lo_tell ist außerhalb des gültigen Bereichs für Large-Object-Deskriptor: %d" -#: libpq/be-fsstubs.c:455 +#: libpq/be-fsstubs.c:448 #, c-format msgid "must be superuser to use server-side lo_import()" msgstr "nur Superuser können das serverseitige lo_import() verwenden" -#: libpq/be-fsstubs.c:456 +#: libpq/be-fsstubs.c:449 #, c-format msgid "Anyone can use the client-side lo_import() provided by libpq." msgstr "Jeder kann das clientseitige lo_import() von libpq verwenden." -#: libpq/be-fsstubs.c:469 +#: libpq/be-fsstubs.c:460 #, c-format msgid "could not open server file \"%s\": %m" msgstr "konnte Serverdatei »%s« nicht öffnen: %m" -#: libpq/be-fsstubs.c:491 +#: libpq/be-fsstubs.c:483 #, c-format msgid "could not read server file \"%s\": %m" msgstr "konnte Serverdatei »%s« nicht lesen: %m" -#: libpq/be-fsstubs.c:521 +#: libpq/be-fsstubs.c:513 #, c-format msgid "must be superuser to use server-side lo_export()" msgstr "nur Superuser können das serverseitige lo_export() verwenden" -#: libpq/be-fsstubs.c:522 +#: libpq/be-fsstubs.c:514 #, c-format msgid "Anyone can use the client-side lo_export() provided by libpq." msgstr "Jeder kann das clientseitige lo_export() von libpq verwenden." -#: libpq/be-fsstubs.c:556 +#: libpq/be-fsstubs.c:547 #, c-format msgid "could not create server file \"%s\": %m" msgstr "konnte Serverdatei »%s« nicht erstellen: %m" -#: libpq/be-fsstubs.c:568 +#: libpq/be-fsstubs.c:559 #, c-format msgid "could not write server file \"%s\": %m" msgstr "konnte Serverdatei »%s« nicht schreiben: %m" -#: libpq/be-fsstubs.c:822 +#: libpq/be-fsstubs.c:819 #, c-format msgid "large object read request is too large" msgstr "Large-Object-Leseaufforderung ist zu groß" -#: libpq/be-fsstubs.c:864 utils/adt/genfile.c:205 utils/adt/genfile.c:246 +#: libpq/be-fsstubs.c:861 utils/adt/genfile.c:205 utils/adt/genfile.c:246 #, c-format msgid "requested length cannot be negative" msgstr "verlangte Länge darf nicht negativ sein" @@ -12513,132 +12517,132 @@ msgid "check of private key failed: %s" msgstr "Überprüfung des privaten Schlüssels fehlgeschlagen: %s" -#: libpq/be-secure-openssl.c:313 +#: libpq/be-secure-openssl.c:323 #, c-format msgid "could not set the cipher list (no valid ciphers available)" msgstr "konnte Cipher-Liste nicht setzen (keine gültigen Ciphers verfügbar)" -#: libpq/be-secure-openssl.c:333 +#: libpq/be-secure-openssl.c:343 #, c-format msgid "could not load root certificate file \"%s\": %s" msgstr "konnte Root-Zertifikat-Datei »%s« nicht laden: %s" -#: libpq/be-secure-openssl.c:379 +#: libpq/be-secure-openssl.c:389 #, c-format msgid "SSL certificate revocation list file \"%s\" ignored" msgstr "SSL-Certificate-Revocation-List-Datei »%s« ignoriert" -#: libpq/be-secure-openssl.c:381 +#: libpq/be-secure-openssl.c:391 #, c-format msgid "SSL library does not support certificate revocation lists." msgstr "SSL-Bibliothek unterstützt keine Certificate-Revocation-Lists." -#: libpq/be-secure-openssl.c:388 +#: libpq/be-secure-openssl.c:398 #, c-format msgid "could not load SSL certificate revocation list file \"%s\": %s" msgstr "konnte SSL-Certificate-Revocation-List-Datei »%s« nicht laden: %s" -#: libpq/be-secure-openssl.c:450 +#: libpq/be-secure-openssl.c:460 #, c-format msgid "could not initialize SSL connection: SSL context not set up" msgstr "konnte SSL-Verbindung nicht initialisieren: SSL-Kontext nicht eingerichtet" -#: libpq/be-secure-openssl.c:458 +#: libpq/be-secure-openssl.c:468 #, c-format msgid "could not initialize SSL connection: %s" msgstr "konnte SSL-Verbindung nicht initialisieren: %s" -#: libpq/be-secure-openssl.c:466 +#: libpq/be-secure-openssl.c:476 #, c-format msgid "could not set SSL socket: %s" msgstr "konnte SSL-Socket nicht setzen: %s" -#: libpq/be-secure-openssl.c:521 +#: libpq/be-secure-openssl.c:531 #, c-format msgid "could not accept SSL connection: %m" msgstr "konnte SSL-Verbindung nicht annehmen: %m" -#: libpq/be-secure-openssl.c:525 libpq/be-secure-openssl.c:536 +#: libpq/be-secure-openssl.c:535 libpq/be-secure-openssl.c:546 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "konnte SSL-Verbindung nicht annehmen: EOF entdeckt" -#: libpq/be-secure-openssl.c:530 +#: libpq/be-secure-openssl.c:540 #, c-format msgid "could not accept SSL connection: %s" msgstr "konnte SSL-Verbindung nicht annehmen: %s" -#: libpq/be-secure-openssl.c:541 libpq/be-secure-openssl.c:682 -#: libpq/be-secure-openssl.c:749 +#: libpq/be-secure-openssl.c:551 libpq/be-secure-openssl.c:692 +#: libpq/be-secure-openssl.c:759 #, c-format msgid "unrecognized SSL error code: %d" msgstr "unbekannter SSL-Fehlercode: %d" -#: libpq/be-secure-openssl.c:583 +#: libpq/be-secure-openssl.c:593 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "Common-Name im SSL-Zertifikat enthält Null-Byte" -#: libpq/be-secure-openssl.c:594 +#: libpq/be-secure-openssl.c:604 #, c-format msgid "SSL connection from \"%s\"" msgstr "SSL-Verbindung von »%s«" -#: libpq/be-secure-openssl.c:671 libpq/be-secure-openssl.c:733 +#: libpq/be-secure-openssl.c:681 libpq/be-secure-openssl.c:743 #, c-format msgid "SSL error: %s" msgstr "SSL-Fehler: %s" -#: libpq/be-secure-openssl.c:914 +#: libpq/be-secure-openssl.c:925 #, c-format msgid "could not open DH parameters file \"%s\": %m" msgstr "konnte DH-Parameterdatei »%s« nicht öffnen: %m" -#: libpq/be-secure-openssl.c:926 +#: libpq/be-secure-openssl.c:937 #, c-format msgid "could not load DH parameters file: %s" msgstr "konnte DH-Parameterdatei nicht laden: %s" -#: libpq/be-secure-openssl.c:936 +#: libpq/be-secure-openssl.c:947 #, c-format msgid "invalid DH parameters: %s" msgstr "ungültige DH-Parameter: %s" -#: libpq/be-secure-openssl.c:945 +#: libpq/be-secure-openssl.c:956 #, c-format msgid "invalid DH parameters: p is not prime" msgstr "ungültige DH-Parameter: p ist keine Primzahl" -#: libpq/be-secure-openssl.c:954 +#: libpq/be-secure-openssl.c:965 #, c-format msgid "invalid DH parameters: neither suitable generator or safe prime" msgstr "ungültige DH-Parameter: weder geeigneter Generator noch sichere Primzahl" -#: libpq/be-secure-openssl.c:1096 +#: libpq/be-secure-openssl.c:1107 #, c-format msgid "DH: could not load DH parameters" msgstr "DH: konnte DH-Parameter nicht laden" -#: libpq/be-secure-openssl.c:1104 +#: libpq/be-secure-openssl.c:1115 #, c-format msgid "DH: could not set DH parameters: %s" msgstr "DH: konnte DH-Parameter nicht setzen: %s" -#: libpq/be-secure-openssl.c:1131 +#: libpq/be-secure-openssl.c:1142 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: unbekannter Kurvenname: %s" -#: libpq/be-secure-openssl.c:1140 +#: libpq/be-secure-openssl.c:1151 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: konnte Schlüssel nicht erzeugen" -#: libpq/be-secure-openssl.c:1168 +#: libpq/be-secure-openssl.c:1179 msgid "no SSL error reported" msgstr "kein SSL-Fehler berichtet" -#: libpq/be-secure-openssl.c:1172 +#: libpq/be-secure-openssl.c:1183 #, c-format msgid "SSL error code %lu" msgstr "SSL-Fehlercode %lu" @@ -13140,7 +13144,7 @@ msgid "could not receive data from client: %m" msgstr "konnte Daten vom Client nicht empfangen: %m" -#: libpq/pqcomm.c:1219 tcop/postgres.c:3967 +#: libpq/pqcomm.c:1219 tcop/postgres.c:3977 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "Verbindung wird abgebrochen, weil Protokollsynchronisierung verloren wurde" @@ -13171,7 +13175,7 @@ msgstr "keine Daten in Message übrig" #: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 -#: utils/adt/arrayfuncs.c:1469 utils/adt/rowtypes.c:563 +#: utils/adt/arrayfuncs.c:1458 utils/adt/rowtypes.c:563 #, c-format msgid "insufficient data left in message" msgstr "nicht genug Daten in Message übrig" @@ -13486,8 +13490,8 @@ msgid "ExtensibleNodeMethods \"%s\" was not registered" msgstr "ExtensibleNodeMethods »%s« wurde nicht registriert" -#: nodes/nodeFuncs.c:123 nodes/nodeFuncs.c:154 parser/parse_coerce.c:1851 -#: parser/parse_coerce.c:1879 parser/parse_coerce.c:1955 +#: nodes/nodeFuncs.c:123 nodes/nodeFuncs.c:154 parser/parse_coerce.c:1863 +#: parser/parse_coerce.c:1891 parser/parse_coerce.c:1967 #: parser/parse_expr.c:2110 parser/parse_func.c:602 parser/parse_oper.c:964 #: utils/fmgr/funcapi.c:466 #, c-format @@ -13630,7 +13634,7 @@ msgstr "SELECT ... INTO ist hier nicht erlaubt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1559 parser/analyze.c:2826 +#: parser/analyze.c:1559 parser/analyze.c:2841 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s kann nicht auf VALUES angewendet werden" @@ -13765,43 +13769,43 @@ msgstr "%s ist nicht mit Funktionen mit Ergebnismenge in der Targetliste erlaubt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2768 +#: parser/analyze.c:2781 #, c-format msgid "%s must specify unqualified relation names" msgstr "%s muss unqualifizierte Relationsnamen angeben" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2799 +#: parser/analyze.c:2814 #, c-format msgid "%s cannot be applied to a join" msgstr "%s kann nicht auf einen Verbund angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2808 +#: parser/analyze.c:2823 #, c-format msgid "%s cannot be applied to a function" msgstr "%s kann nicht auf eine Funktion angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2817 +#: parser/analyze.c:2832 #, c-format msgid "%s cannot be applied to a table function" msgstr "%s kann nicht auf eine Tabellenfunktion angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2835 +#: parser/analyze.c:2850 #, c-format msgid "%s cannot be applied to a WITH query" msgstr "%s kann nicht auf eine WITH-Anfrage angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2844 +#: parser/analyze.c:2859 #, c-format msgid "%s cannot be applied to a named tuplestore" msgstr "%s kann nicht auf einen benannten Tupelstore angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2861 +#: parser/analyze.c:2876 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "Relation »%s« in %s nicht in der FROM-Klausel gefunden" @@ -13945,112 +13949,112 @@ msgid "grouping operations are not allowed in %s" msgstr "Gruppieroperationen sind in %s nicht erlaubt" -#: parser/parse_agg.c:641 +#: parser/parse_agg.c:634 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "Aggregatfunktion auf äußerer Ebene kann keine Variable einer unteren Ebene in ihren direkten Argumenten haben" -#: parser/parse_agg.c:720 +#: parser/parse_agg.c:713 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "Aufrufe von Aggregatfunktionen können keine Aufrufe von Funktionen mit Ergebnismenge enthalten" -#: parser/parse_agg.c:721 parser/parse_expr.c:1761 parser/parse_expr.c:2237 +#: parser/parse_agg.c:714 parser/parse_expr.c:1761 parser/parse_expr.c:2237 #: parser/parse_func.c:773 #, c-format msgid "You might be able to move the set-returning function into a LATERAL FROM item." msgstr "Sie können möglicherweise die Funktion mit Ergebnismenge in ein LATERAL-FROM-Element verschieben." -#: parser/parse_agg.c:726 +#: parser/parse_agg.c:719 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "Aufrufe von Aggregatfunktionen können keine Aufrufe von Fensterfunktionen enthalten" -#: parser/parse_agg.c:805 +#: parser/parse_agg.c:798 msgid "window functions are not allowed in JOIN conditions" msgstr "Fensterfunktionen sind in JOIN-Bedingungen nicht erlaubt" -#: parser/parse_agg.c:812 +#: parser/parse_agg.c:805 msgid "window functions are not allowed in functions in FROM" msgstr "Fensterfunktionen sind in Funktionen in FROM nicht erlaubt" -#: parser/parse_agg.c:818 +#: parser/parse_agg.c:811 msgid "window functions are not allowed in policy expressions" msgstr "Fensterfunktionen sind in Policy-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:830 +#: parser/parse_agg.c:823 msgid "window functions are not allowed in window definitions" msgstr "Fensterfunktionen sind in Fensterdefinitionen nicht erlaubt" -#: parser/parse_agg.c:862 +#: parser/parse_agg.c:855 msgid "window functions are not allowed in check constraints" msgstr "Fensterfunktionen sind in Check-Constraints nicht erlaubt" -#: parser/parse_agg.c:866 +#: parser/parse_agg.c:859 msgid "window functions are not allowed in DEFAULT expressions" msgstr "Fensterfunktionen sind in DEFAULT-Ausdrücken nicht erlaubt" -#: parser/parse_agg.c:869 +#: parser/parse_agg.c:862 msgid "window functions are not allowed in index expressions" msgstr "Fensterfunktionen sind in Indexausdrücken nicht erlaubt" -#: parser/parse_agg.c:872 +#: parser/parse_agg.c:865 msgid "window functions are not allowed in index predicates" msgstr "Fensterfunktionen sind in Indexprädikaten nicht erlaubt" -#: parser/parse_agg.c:875 +#: parser/parse_agg.c:868 msgid "window functions are not allowed in transform expressions" msgstr "Fensterfunktionen sind in Umwandlungsausdrücken nicht erlaubt" -#: parser/parse_agg.c:878 +#: parser/parse_agg.c:871 msgid "window functions are not allowed in EXECUTE parameters" msgstr "Fensterfunktionen sind in EXECUTE-Parametern nicht erlaubt" -#: parser/parse_agg.c:881 +#: parser/parse_agg.c:874 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "Fensterfunktionen sind in der WHEN-Bedingung eines Triggers nicht erlaubt" -#: parser/parse_agg.c:884 +#: parser/parse_agg.c:877 msgid "window functions are not allowed in partition key expression" msgstr "Fensterfunktionen sind in Partitionierungsschlüsselausdrücken nicht erlaubt" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:904 parser/parse_clause.c:1820 +#: parser/parse_agg.c:897 parser/parse_clause.c:1820 #, c-format msgid "window functions are not allowed in %s" msgstr "Fensterfunktionen sind in %s nicht erlaubt" -#: parser/parse_agg.c:938 parser/parse_clause.c:2654 +#: parser/parse_agg.c:931 parser/parse_clause.c:2654 #, c-format msgid "window \"%s\" does not exist" msgstr "Fenster »%s« existiert nicht" -#: parser/parse_agg.c:1023 +#: parser/parse_agg.c:1016 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "zu viele Grouping-Sets vorhanden (maximal 4096)" -#: parser/parse_agg.c:1172 +#: parser/parse_agg.c:1165 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "Aggregatfunktionen sind nicht im rekursiven Ausdruck einer rekursiven Anfrage erlaubt" -#: parser/parse_agg.c:1365 +#: parser/parse_agg.c:1358 #, c-format msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function" msgstr "Spalte »%s.%s« muss in der GROUP-BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden" -#: parser/parse_agg.c:1368 +#: parser/parse_agg.c:1361 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "Direkte Argumente einer Ordered-Set-Aggregatfunktion dürfen nur gruppierte Spalten verwenden." -#: parser/parse_agg.c:1373 +#: parser/parse_agg.c:1366 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "Unteranfrage verwendet nicht gruppierte Spalte »%s.%s« aus äußerer Anfrage" -#: parser/parse_agg.c:1537 +#: parser/parse_agg.c:1530 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "Argumente von GROUPING müssen Gruppierausdrücke der zugehörigen Anfrageebene sein" @@ -14291,102 +14295,102 @@ msgid "Ordering operators must be \"<\" or \">\" members of btree operator families." msgstr "Sortieroperatoren müssen die Mitglieder »<« oder »>« einer »btree«-Operatorfamilie sein." -#: parser/parse_coerce.c:978 parser/parse_coerce.c:1008 -#: parser/parse_coerce.c:1026 parser/parse_coerce.c:1041 -#: parser/parse_expr.c:2144 parser/parse_expr.c:2732 parser/parse_target.c:936 +#: parser/parse_coerce.c:990 parser/parse_coerce.c:1020 +#: parser/parse_coerce.c:1038 parser/parse_coerce.c:1053 +#: parser/parse_expr.c:2144 parser/parse_expr.c:2732 parser/parse_target.c:935 #, c-format msgid "cannot cast type %s to %s" msgstr "kann Typ %s nicht in Typ %s umwandeln" -#: parser/parse_coerce.c:1011 +#: parser/parse_coerce.c:1023 #, c-format msgid "Input has too few columns." msgstr "Eingabe hat zu wenige Spalten." -#: parser/parse_coerce.c:1029 +#: parser/parse_coerce.c:1041 #, 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:1044 +#: parser/parse_coerce.c:1056 #, c-format msgid "Input has too many columns." msgstr "Eingabe hat zu viele Spalten." #. translator: first %s is name of a SQL construct, eg WHERE #. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:1087 parser/parse_coerce.c:1135 +#: parser/parse_coerce.c:1099 parser/parse_coerce.c:1147 #, c-format msgid "argument of %s must be type %s, not type %s" msgstr "Argument von %s muss Typ %s haben, nicht Typ %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:1098 parser/parse_coerce.c:1147 +#: parser/parse_coerce.c:1110 parser/parse_coerce.c:1159 #, c-format msgid "argument of %s must not return a set" msgstr "Argument von %s darf keine Ergebnismenge zurückgeben" #. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1287 +#: parser/parse_coerce.c:1299 #, c-format msgid "%s types %s and %s cannot be matched" msgstr "%s-Typen %s und %s passen nicht zusammen" #. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1354 +#: parser/parse_coerce.c:1366 #, c-format msgid "%s could not convert type %s to %s" msgstr "%s konnte Typ %s nicht in %s umwandeln" -#: parser/parse_coerce.c:1656 +#: parser/parse_coerce.c:1668 #, c-format msgid "arguments declared \"anyelement\" are not all alike" msgstr "als »anyelement« deklariert Argumente sind nicht alle gleich" -#: parser/parse_coerce.c:1676 +#: parser/parse_coerce.c:1688 #, c-format msgid "arguments declared \"anyarray\" are not all alike" msgstr "als »anyarray« deklarierte Argumente sind nicht alle gleich" -#: parser/parse_coerce.c:1696 +#: parser/parse_coerce.c:1708 #, c-format msgid "arguments declared \"anyrange\" are not all alike" msgstr "als »anyrange« deklarierte Argumente sind nicht alle gleich" -#: parser/parse_coerce.c:1725 parser/parse_coerce.c:1940 -#: parser/parse_coerce.c:1974 utils/fmgr/funcapi.c:425 +#: parser/parse_coerce.c:1737 parser/parse_coerce.c:1952 +#: parser/parse_coerce.c:1986 utils/fmgr/funcapi.c:425 #, c-format msgid "argument declared %s is not an array but type %s" msgstr "als %s deklariertes Argument ist kein Array sondern Typ %s" -#: parser/parse_coerce.c:1741 parser/parse_coerce.c:1780 +#: parser/parse_coerce.c:1753 parser/parse_coerce.c:1792 #, c-format msgid "argument declared %s is not consistent with argument declared %s" msgstr "als %s deklariertes Argument ist nicht mit als %s deklariertem Argument konsistent" -#: parser/parse_coerce.c:1763 parser/parse_coerce.c:1987 +#: parser/parse_coerce.c:1775 parser/parse_coerce.c:1999 #: utils/fmgr/funcapi.c:439 #, c-format msgid "argument declared %s is not a range type but type %s" msgstr "als %s deklariertes Argument ist kein Bereichstyp sondern Typ %s" -#: parser/parse_coerce.c:1801 +#: parser/parse_coerce.c:1813 #, c-format msgid "could not determine polymorphic type because input has type %s" msgstr "konnte polymorphischen Typ nicht bestimmen, weil Eingabe Typ %s hat" -#: parser/parse_coerce.c:1812 +#: parser/parse_coerce.c:1824 #, c-format msgid "type matched to anynonarray is an array type: %s" msgstr "mit »anynonarray« gepaarter Typ ist ein Array-Typ: %s" -#: parser/parse_coerce.c:1822 +#: parser/parse_coerce.c:1834 #, c-format msgid "type matched to anyenum is not an enum type: %s" msgstr "mit »anyenum« gepaarter Typ ist kein Enum-Typ: %s" -#: parser/parse_coerce.c:1862 parser/parse_coerce.c:1892 +#: parser/parse_coerce.c:1874 parser/parse_coerce.c:1904 #, c-format msgid "could not find range type for data type %s" msgstr "konnte Bereichstyp für Datentyp %s nicht finden" @@ -14534,13 +14538,13 @@ msgid "column notation .%s applied to type %s, which is not a composite type" msgstr "Spaltenschreibweise .%s mit Typ %s verwendet, der kein zusammengesetzter Typ ist" -#: parser/parse_expr.c:458 parser/parse_target.c:722 +#: parser/parse_expr.c:458 parser/parse_target.c:721 #, c-format msgid "row expansion via \"*\" is not supported here" msgstr "Zeilenexpansion mit »*« wird hier nicht unterstützt" #: parser/parse_expr.c:767 parser/parse_relation.c:689 -#: parser/parse_relation.c:789 parser/parse_target.c:1171 +#: parser/parse_relation.c:789 parser/parse_target.c:1170 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "Spaltenverweis »%s« ist nicht eindeutig" @@ -15112,47 +15116,47 @@ msgid "Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\"." msgstr "Vielleicht wurde beabsichtigt, auf die Spalte »%s.%s« oder die Spalte »%s.%s« zu verweisen." -#: parser/parse_target.c:483 parser/parse_target.c:775 +#: parser/parse_target.c:482 parser/parse_target.c:774 #, c-format msgid "cannot assign to system column \"%s\"" msgstr "kann Systemspalte »%s« keinen Wert zuweisen" -#: parser/parse_target.c:511 +#: parser/parse_target.c:510 #, c-format msgid "cannot set an array element to DEFAULT" msgstr "kann Arrayelement nicht auf DEFAULT setzen" -#: parser/parse_target.c:516 +#: parser/parse_target.c:515 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "kann Subfeld nicht auf DEFAULT setzen" -#: parser/parse_target.c:585 +#: parser/parse_target.c:584 #, c-format msgid "column \"%s\" is of type %s but expression is of type %s" msgstr "Spalte »%s« hat Typ %s, aber der Ausdruck hat Typ %s" -#: parser/parse_target.c:759 +#: parser/parse_target.c:758 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" msgstr "kann Feld »%s« in Spalte »%s« nicht setzen, weil ihr Typ %s kein zusammengesetzter Typ ist" -#: parser/parse_target.c:768 +#: parser/parse_target.c:767 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" msgstr "kann Feld »%s« in Spalte »%s« nicht setzen, weil es keine solche Spalte in Datentyp %s gibt" -#: parser/parse_target.c:835 +#: parser/parse_target.c:834 #, c-format msgid "array assignment to \"%s\" requires type %s but expression is of type %s" msgstr "Wertzuweisung für »%s« erfordert Typ %s, aber Ausdruck hat Typ %s" -#: parser/parse_target.c:845 +#: parser/parse_target.c:844 #, c-format msgid "subfield \"%s\" is of type %s but expression is of type %s" msgstr "Subfeld »%s« hat Typ %s, aber der Ausdruck hat Typ %s" -#: parser/parse_target.c:1261 +#: parser/parse_target.c:1260 #, c-format msgid "SELECT * with no tables specified is not valid" msgstr "SELECT * ist nicht gültig, wenn keine Tabellen angegeben sind" @@ -15500,17 +15504,17 @@ msgid "identifier \"%s\" will be truncated to \"%s\"" msgstr "Bezeichner »%s« wird auf »%s« gekürzt" -#: port/pg_shmem.c:217 port/sysv_shmem.c:217 +#: port/pg_shmem.c:227 port/sysv_shmem.c:227 #, c-format msgid "could not create shared memory segment: %m" msgstr "konnte Shared-Memory-Segment nicht erzeugen: %m" -#: port/pg_shmem.c:218 port/sysv_shmem.c:218 +#: port/pg_shmem.c:228 port/sysv_shmem.c:228 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." msgstr "Fehlgeschlagener Systemaufruf war shmget(Key=%lu, Größe=%zu, 0%o)." -#: port/pg_shmem.c:222 port/sysv_shmem.c:222 +#: port/pg_shmem.c:232 port/sysv_shmem.c:232 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n" @@ -15519,7 +15523,7 @@ "Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte Shared-Memory-Segment den Kernel-Parameter SHMMAX überschreitet, oder eventuell, dass es kleiner als der Kernel-Parameter SHMMIN ist.\n" "Die PostgreSQL-Dokumentation enthält weitere Informationen über die Konfiguration von Shared Memory." -#: port/pg_shmem.c:229 port/sysv_shmem.c:229 +#: port/pg_shmem.c:239 port/sysv_shmem.c:239 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n" @@ -15528,7 +15532,7 @@ "Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte Shared-Memory-Segment den Kernel-Parameter SHMALL überschreitet. Sie müssen eventuell den Kernel mit einem größeren SHMALL neu konfigurieren.\n" "Die PostgreSQL-Dokumentation enthält weitere Informationen über die Konfiguration von Shared Memory." -#: port/pg_shmem.c:235 port/sysv_shmem.c:235 +#: port/pg_shmem.c:245 port/sysv_shmem.c:245 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n" @@ -15537,34 +15541,34 @@ "Dieser Fehler bedeutet *nicht*, dass kein Platz mehr auf der Festplatte ist. Er tritt auf, wenn entweder alle verfügbaren Shared-Memory-IDs aufgebraucht sind, dann müssen den Kernelparameter SHMMNI erhöhen, oder weil die Systemhöchstgrenze für Shared Memory insgesamt erreicht wurde.\n" "Die PostgreSQL-Dokumentation enthält weitere Informationen über die Konfiguration von Shared Memory." -#: port/pg_shmem.c:580 port/sysv_shmem.c:580 +#: port/pg_shmem.c:590 port/sysv_shmem.c:590 #, c-format msgid "could not map anonymous shared memory: %m" msgstr "konnte anonymes Shared Memory nicht mappen: %m" -#: port/pg_shmem.c:582 port/sysv_shmem.c:582 +#: port/pg_shmem.c:592 port/sysv_shmem.c:592 #, c-format msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections." msgstr "" "Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte Shared-Memory-Segment den verfügbaren Speicher, Swap-Space oder Huge Pages überschreitet. Um die benötigte Shared-Memory-Größe zu reduzieren (aktuell %zu Bytes), reduzieren Sie den Shared-Memory-Verbrauch von PostgreSQL, beispielsweise indem Sie »shared_buffers« oder »max_connections« reduzieren.\n" "Die PostgreSQL-Dokumentation enthält weitere Informationen über die Konfiguration von Shared Memory." -#: port/pg_shmem.c:644 port/sysv_shmem.c:644 port/win32_shmem.c:151 +#: port/pg_shmem.c:654 port/sysv_shmem.c:654 port/win32_shmem.c:151 #, c-format msgid "huge pages not supported on this platform" msgstr "Huge Pages werden auf dieser Plattform nicht unterstützt" -#: port/pg_shmem.c:704 port/sysv_shmem.c:704 utils/init/miscinit.c:977 +#: port/pg_shmem.c:714 port/sysv_shmem.c:714 utils/init/miscinit.c:977 #, 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" -#: port/pg_shmem.c:707 port/sysv_shmem.c:707 utils/init/miscinit.c:979 +#: port/pg_shmem.c:717 port/sysv_shmem.c:717 utils/init/miscinit.c:979 #, c-format msgid "Terminate any old server processes associated with data directory \"%s\"." msgstr "Beenden Sie alle alten Serverprozesse, die zum Datenverzeichnis »%s« gehören." -#: port/pg_shmem.c:758 port/sysv_shmem.c:758 +#: port/pg_shmem.c:768 port/sysv_shmem.c:768 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "konnte »stat« für Datenverzeichnis »%s« nicht ausführen: %m" @@ -15738,64 +15742,64 @@ msgid "Enable the \"track_counts\" option." msgstr "Schalten Sie die Option »track_counts« ein." -#: postmaster/bgworker.c:404 postmaster/bgworker.c:915 +#: postmaster/bgworker.c:406 postmaster/bgworker.c:926 #, c-format msgid "registering background worker \"%s\"" msgstr "registriere Background-Worker »%s«" -#: postmaster/bgworker.c:436 +#: postmaster/bgworker.c:447 #, c-format msgid "unregistering background worker \"%s\"" msgstr "deregistriere Background-Worker »%s«" -#: postmaster/bgworker.c:649 +#: postmaster/bgworker.c:660 #, c-format msgid "background worker \"%s\": must attach to shared memory in order to request a database connection" msgstr "Background-Worker »%s«: muss mit Shared Memory verbinden, um eine Datenbankverbindung anzufordern" -#: postmaster/bgworker.c:658 +#: postmaster/bgworker.c:669 #, c-format msgid "background worker \"%s\": cannot request database access if starting at postmaster start" msgstr "Background-Worker »%s«: kann kein Datenbankzugriff anfordern, wenn er nach Postmaster-Start gestartet hat" -#: postmaster/bgworker.c:672 +#: postmaster/bgworker.c:683 #, c-format msgid "background worker \"%s\": invalid restart interval" msgstr "Background-Worker »%s«: ungültiges Neustart-Intervall" -#: postmaster/bgworker.c:687 +#: postmaster/bgworker.c:698 #, c-format msgid "background worker \"%s\": parallel workers may not be configured for restart" msgstr "Background-Worker »%s«: parallele Arbeitsprozesse dürfen nicht für Neustart konfiguriert sein" -#: postmaster/bgworker.c:725 +#: postmaster/bgworker.c:736 #, c-format msgid "terminating background worker \"%s\" due to administrator command" msgstr "Background-Worker »%s« wird abgebrochen aufgrund von Anweisung des Administrators" -#: postmaster/bgworker.c:923 +#: postmaster/bgworker.c:934 #, c-format msgid "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "Background-Worker »%s«: muss in shared_preload_libraries registriert sein" -#: postmaster/bgworker.c:935 +#: postmaster/bgworker.c:946 #, c-format msgid "background worker \"%s\": only dynamic background workers can request notification" msgstr "Background-Worker »%s«: nur dynamische Background-Worker können Benachrichtigung verlangen" -#: postmaster/bgworker.c:950 +#: postmaster/bgworker.c:961 #, c-format msgid "too many background workers" msgstr "zu viele Background-Worker" -#: postmaster/bgworker.c:951 +#: postmaster/bgworker.c:962 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "Up to %d background workers can be registered with the current settings." msgstr[0] "Mit den aktuellen Einstellungen können bis zu %d Background-Worker registriert werden." msgstr[1] "Mit den aktuellen Einstellungen können bis zu %d Background-Worker registriert werden." -#: postmaster/bgworker.c:955 +#: postmaster/bgworker.c:966 #, c-format msgid "Consider increasing the configuration parameter \"max_worker_processes\"." msgstr "Erhöhen Sie eventuell den Konfigurationsparameter »max_worker_processes«." @@ -17026,44 +17030,44 @@ msgid "no replication origin is configured" msgstr "kein Replication-Origin konfiguriert" -#: replication/logical/relation.c:283 +#: replication/logical/relation.c:270 #, c-format msgid "logical replication target relation \"%s.%s\" does not exist" msgstr "Zielrelation für logische Replikation »%s.%s« existiert nicht" -#: replication/logical/relation.c:325 +#: replication/logical/relation.c:312 #, c-format msgid "logical replication target relation \"%s.%s\" is missing some replicated columns" msgstr "in Zielrelation für logische Replikation »%s.%s« fehlen replizierte Spalten" -#: replication/logical/relation.c:365 +#: replication/logical/relation.c:352 #, c-format msgid "logical replication target relation \"%s.%s\" uses system columns in REPLICA IDENTITY index" msgstr "Zielrelation für logische Replikation »%s.%s« verwendet Systemspalten in REPLICA-IDENTITY-Index" -#: replication/logical/reorderbuffer.c:2446 +#: replication/logical/reorderbuffer.c:2469 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "konnte nicht in Datendatei für XID %u schreiben: %m" -#: replication/logical/reorderbuffer.c:2550 -#: replication/logical/reorderbuffer.c:2572 +#: replication/logical/reorderbuffer.c:2573 +#: replication/logical/reorderbuffer.c:2595 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "konnte nicht aus Reorder-Buffer-Spill-Datei lesen: %m" -#: replication/logical/reorderbuffer.c:2554 -#: replication/logical/reorderbuffer.c:2576 +#: replication/logical/reorderbuffer.c:2577 +#: replication/logical/reorderbuffer.c:2599 #, c-format msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes" msgstr "konnte nicht aus Reorder-Buffer-Spill-Datei lesen: %d statt %u Bytes gelesen" -#: replication/logical/reorderbuffer.c:2788 +#: replication/logical/reorderbuffer.c:2812 #, c-format msgid "could not remove file \"%s\" during removal of pg_replslot/%s/*.xid: %m" msgstr "konnte Datei »%s« nicht entfernen, während des Entfernens von pg_replslot/%s/*.xid: %m" -#: replication/logical/reorderbuffer.c:3258 +#: replication/logical/reorderbuffer.c:3282 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "konnte nicht aus Datei »%s« lesen: %d statt %d Bytes gelesen" @@ -17080,64 +17084,64 @@ msgstr[0] "logischer Dekodierungs-Snapshot exportiert: »%s« mit %u Transaktions-ID" msgstr[1] "logischer Dekodierungs-Snapshot exportiert: »%s« mit %u Transaktions-IDs" -#: replication/logical/snapbuild.c:1271 replication/logical/snapbuild.c:1364 -#: replication/logical/snapbuild.c:1882 +#: replication/logical/snapbuild.c:1287 replication/logical/snapbuild.c:1380 +#: replication/logical/snapbuild.c:1898 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "logisches Dekodieren fand konsistenten Punkt bei %X/%X" -#: replication/logical/snapbuild.c:1273 +#: replication/logical/snapbuild.c:1289 #, c-format msgid "There are no running transactions." msgstr "Keine laufenden Transaktionen." -#: replication/logical/snapbuild.c:1315 +#: replication/logical/snapbuild.c:1331 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "logisches Dekodieren fand initialen Startpunkt bei %X/%X" -#: replication/logical/snapbuild.c:1317 replication/logical/snapbuild.c:1341 +#: replication/logical/snapbuild.c:1333 replication/logical/snapbuild.c:1357 #, c-format msgid "Waiting for transactions (approximately %d) older than %u to end." msgstr "Warten auf Abschluss der Transaktionen (ungefähr %d), die älter als %u sind." -#: replication/logical/snapbuild.c:1339 +#: replication/logical/snapbuild.c:1355 #, c-format msgid "logical decoding found initial consistent point at %X/%X" msgstr "logisches Dekodieren fand initialen konsistenten Punkt bei %X/%X" -#: replication/logical/snapbuild.c:1366 +#: replication/logical/snapbuild.c:1382 #, c-format msgid "There are no old transactions anymore." msgstr "Es laufen keine alten Transaktionen mehr." -#: replication/logical/snapbuild.c:1744 replication/logical/snapbuild.c:1777 -#: replication/logical/snapbuild.c:1797 replication/logical/snapbuild.c:1816 +#: replication/logical/snapbuild.c:1760 replication/logical/snapbuild.c:1793 +#: replication/logical/snapbuild.c:1813 replication/logical/snapbuild.c:1832 #, c-format msgid "could not read file \"%s\", read %d of %d: %m" msgstr "konnte Datei »%s« nicht lesen, %d von %d gelesen: %m" -#: replication/logical/snapbuild.c:1751 +#: replication/logical/snapbuild.c:1767 #, c-format msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" msgstr "Scanbuild-State-Datei »%s« hat falsche magische Zahl %u statt %u" -#: replication/logical/snapbuild.c:1757 +#: replication/logical/snapbuild.c:1773 #, c-format msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" msgstr "Snapbuild-State-Datei »%s« hat nicht unterstützte Version: %u statt %u" -#: replication/logical/snapbuild.c:1829 +#: replication/logical/snapbuild.c:1845 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "Prüfsummenfehler bei Snapbuild-State-Datei »%s«: ist %u, sollte %u sein" -#: replication/logical/snapbuild.c:1884 +#: replication/logical/snapbuild.c:1900 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "Logische Dekodierung beginnt mit gespeichertem Snapshot." -#: replication/logical/snapbuild.c:1956 +#: replication/logical/snapbuild.c:1972 #, c-format msgid "could not parse file name \"%s\"" msgstr "konnte Dateinamen »%s« nicht parsen" @@ -17147,122 +17151,122 @@ msgid "logical replication table synchronization worker for subscription \"%s\", table \"%s\" has finished" msgstr "Arbeitsprozess für logische Replikation für Tabellensynchronisation für Subskription »%s«, Tabelle »%s« hat abgeschlossen" -#: replication/logical/tablesync.c:685 +#: replication/logical/tablesync.c:686 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "konnte Tabelleninformationen für Tabelle »%s.%s« nicht vom Publikationsserver holen: %s" -#: replication/logical/tablesync.c:691 +#: replication/logical/tablesync.c:692 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "Tabelle »%s.%s« nicht auf dem Publikationsserver gefunden" -#: replication/logical/tablesync.c:721 +#: replication/logical/tablesync.c:723 #, c-format msgid "could not fetch table info for table \"%s.%s\": %s" msgstr "konnte Tabelleninformationen für Tabelle »%s.%s« nicht holen: %s" -#: replication/logical/tablesync.c:791 +#: replication/logical/tablesync.c:793 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "konnte Kopieren des Anfangsinhalts für Tabelle »%s.%s« nicht starten: %s" -#: replication/logical/tablesync.c:905 +#: replication/logical/tablesync.c:908 #, c-format msgid "table copy could not start transaction on publisher" msgstr "beim Kopieren der Tabelle konnte die Transaktion auf dem Publikationsserver nicht gestartet werden" -#: replication/logical/tablesync.c:927 +#: replication/logical/tablesync.c:930 #, c-format msgid "table copy could not finish transaction on publisher" msgstr "beim Kopieren der Tabelle konnte die Transaktion auf dem Publikationsserver nicht beenden werden" -#: replication/logical/worker.c:305 +#: replication/logical/worker.c:294 #, c-format -msgid "processing remote data for replication target relation \"%s.%s\" column \"%s\", remote type %s, local type %s" -msgstr "Verarbeiten empfangener Daten für Replikationszielrelation »%s.%s« Spalte »%s«, entfernter Typ %s, lokaler Typ %s" +msgid "processing remote data for replication target relation \"%s.%s\" column \"%s\"" +msgstr "Verarbeiten empfangener Daten für Replikationszielrelation »%s.%s« Spalte »%s«" -#: replication/logical/worker.c:542 +#: replication/logical/worker.c:529 #, c-format msgid "ORIGIN message sent out of order" msgstr "ORIGIN-Nachricht in falscher Reihenfolge gesendet" -#: replication/logical/worker.c:675 +#: replication/logical/worker.c:660 #, c-format msgid "publisher did not send replica identity column expected by the logical replication target relation \"%s.%s\"" msgstr "Publikationsserver hat nicht die Replikidentitätsspalten gesendet, die von Replikationszielrelation »%s.%s« erwartet wurden" -#: replication/logical/worker.c:682 +#: replication/logical/worker.c:667 #, c-format msgid "logical replication target relation \"%s.%s\" has neither REPLICA IDENTITY index nor PRIMARY KEY and published relation does not have REPLICA IDENTITY FULL" msgstr "Zielrelation für logische Replikation »%s.%s« hat weder REPLICA-IDENTITY-Index noch Primärschlüssel und die publizierte Relation hat kein REPLICA IDENTITY FULL" -#: replication/logical/worker.c:913 +#: replication/logical/worker.c:898 #, c-format msgid "logical replication could not find row for delete in replication target relation \"%s\"" msgstr "logische Replikation konnte zu löschende Zeile in Zielrelation »%s« nicht finden" -#: replication/logical/worker.c:980 +#: replication/logical/worker.c:965 #, c-format msgid "invalid logical replication message type \"%c\"" msgstr "ungültiger Nachrichtentyp für logische Replikation »%c«" -#: replication/logical/worker.c:1123 +#: replication/logical/worker.c:1108 #, c-format msgid "data stream from publisher has ended" msgstr "Datenstrom vom Publikationsserver endete" -#: replication/logical/worker.c:1282 +#: replication/logical/worker.c:1267 #, c-format msgid "terminating logical replication worker due to timeout" msgstr "Arbeitsprozess für logische Replikation wird abgebrochen wegen Zeitüberschreitung" -#: replication/logical/worker.c:1427 +#: replication/logical/worker.c:1413 #, c-format msgid "logical replication apply worker for subscription \"%s\" will stop because the subscription was removed" msgstr "Apply-Worker für logische Replikation für Subskription »%s« wird anhalten, weil die Subskription entfernt wurde" -#: replication/logical/worker.c:1441 +#: replication/logical/worker.c:1427 #, c-format msgid "logical replication apply worker for subscription \"%s\" will stop because the subscription was disabled" msgstr "Apply-Worker für logische Replikation für Subskription »%s« wird anhalten, weil die Subskription deaktiviert wurde" -#: replication/logical/worker.c:1455 +#: replication/logical/worker.c:1441 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because the connection information was changed" msgstr "Apply-Worker für logische Replikation für Subskription »%s« wird neu starten, weil die Verbindungsinformationen geändert wurden" -#: replication/logical/worker.c:1469 +#: replication/logical/worker.c:1455 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because subscription was renamed" msgstr "Apply-Worker für logische Replikation für Subskription »%s« wird neu starten, weil die Subskription umbenannt wurde" -#: replication/logical/worker.c:1486 +#: replication/logical/worker.c:1472 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because the replication slot name was changed" msgstr "Apply-Worker für logische Replikation für Subskription »%s« wird neu starten, weil der Replikations-Slot-Name geändert wurde" -#: replication/logical/worker.c:1500 +#: replication/logical/worker.c:1486 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because subscription's publications were changed" msgstr "Apply-Worker für logische Replikation für Subskription »%s« wird neu starten, weil die Publikationen der Subskription geandert wurden" -#: replication/logical/worker.c:1614 +#: replication/logical/worker.c:1600 #, c-format msgid "logical replication apply worker for subscription \"%s\" will not start because the subscription was disabled during startup" msgstr "Apply-Worker für logische Replikation für Subskription »%s« wird nicht starten, weil die Subskription während des Starts deaktiviert wurde" -#: replication/logical/worker.c:1628 +#: replication/logical/worker.c:1614 #, c-format msgid "logical replication table synchronization worker for subscription \"%s\", table \"%s\" has started" msgstr "Arbeitsprozess für logische Replikation für Tabellensynchronisation für Subskription »%s«, Tabelle »%s« hat gestartet" -#: replication/logical/worker.c:1632 +#: replication/logical/worker.c:1618 #, c-format msgid "logical replication apply worker for subscription \"%s\" has started" msgstr "Apply-Worker für logische Replikation für Subskription »%s« hat gestartet" -#: replication/logical/worker.c:1672 +#: replication/logical/worker.c:1658 #, c-format msgid "subscription has no replication slot set" msgstr "für die Subskription ist kein Replikations-Slot gesetzt" @@ -17447,77 +17451,77 @@ msgid "number of synchronous standbys (%d) must be greater than zero" msgstr "Anzahl synchroner Standbys (%d) muss größer als null sein" -#: replication/walreceiver.c:159 +#: replication/walreceiver.c:160 #, c-format msgid "terminating walreceiver process due to administrator command" msgstr "WAL-Receiver-Prozess wird abgebrochen aufgrund von Anweisung des Administrators" -#: replication/walreceiver.c:283 +#: replication/walreceiver.c:284 #, c-format msgid "could not connect to the primary server: %s" msgstr "konnte nicht mit dem Primärserver verbinden: %s" -#: replication/walreceiver.c:320 +#: replication/walreceiver.c:321 #, c-format msgid "database system identifier differs between the primary and standby" msgstr "Datenbanksystemidentifikator unterscheidet sich zwischen Primär- und Standby-Server" -#: replication/walreceiver.c:321 +#: replication/walreceiver.c:322 #, c-format msgid "The primary's identifier is %s, the standby's identifier is %s." msgstr "Identifikator des Primärservers ist %s, Identifikator des Standby ist %s." -#: replication/walreceiver.c:331 +#: replication/walreceiver.c:332 #, c-format msgid "highest timeline %u of the primary is behind recovery timeline %u" msgstr "höchste Zeitleiste %u des primären Servers liegt hinter Wiederherstellungszeitleiste %u zurück" -#: replication/walreceiver.c:367 +#: replication/walreceiver.c:368 #, c-format msgid "started streaming WAL from primary at %X/%X on timeline %u" msgstr "WAL-Streaming vom Primärserver gestartet bei %X/%X auf Zeitleiste %u" -#: replication/walreceiver.c:372 +#: replication/walreceiver.c:373 #, c-format msgid "restarted WAL streaming at %X/%X on timeline %u" msgstr "WAL-Streaming neu gestartet bei %X/%X auf Zeitleiste %u" -#: replication/walreceiver.c:401 +#: replication/walreceiver.c:402 #, c-format msgid "cannot continue WAL streaming, recovery has already ended" msgstr "kann WAL-Streaming nicht fortsetzen, Wiederherstellung ist bereits beendet" -#: replication/walreceiver.c:438 +#: replication/walreceiver.c:439 #, c-format msgid "replication terminated by primary server" msgstr "Replikation wurde durch Primärserver beendet" -#: replication/walreceiver.c:439 +#: replication/walreceiver.c:440 #, c-format msgid "End of WAL reached on timeline %u at %X/%X." msgstr "WAL-Ende erreicht auf Zeitleiste %u bei %X/%X." -#: replication/walreceiver.c:536 +#: replication/walreceiver.c:537 #, c-format msgid "terminating walreceiver due to timeout" msgstr "WAL-Receiver-Prozess wird abgebrochen wegen Zeitüberschreitung" -#: replication/walreceiver.c:574 +#: replication/walreceiver.c:575 #, c-format msgid "primary server contains no more WAL on requested timeline %u" msgstr "Primärserver enthält kein WAL mehr auf angeforderter Zeitleiste %u" -#: replication/walreceiver.c:589 replication/walreceiver.c:945 +#: replication/walreceiver.c:590 replication/walreceiver.c:1079 #, c-format msgid "could not close log segment %s: %m" msgstr "konnte Logsegment %s nicht schließen: %m" -#: replication/walreceiver.c:714 +#: replication/walreceiver.c:715 #, c-format msgid "fetching timeline history file for timeline %u from primary server" msgstr "hole Zeitleisten-History-Datei für Zeitleiste %u vom Primärserver" -#: replication/walreceiver.c:999 +#: replication/walreceiver.c:970 #, c-format msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "konnte nicht in Logsegment %s bei Position %u, Länge %lu schreiben: %m" @@ -17587,49 +17591,49 @@ msgid "cannot execute new commands while WAL sender is in stopping mode" msgstr "während der WAL-Sender im Stoppmodus ist können keine neuen Befehle ausgeführt werden" -#: replication/walsender.c:1479 +#: replication/walsender.c:1483 +#, c-format +msgid "cannot execute SQL commands in WAL sender for physical replication" +msgstr "im WAL-Sender für physische Replikation können keine SQL-Befehle ausgeführt werden" + +#: replication/walsender.c:1506 #, c-format msgid "received replication command: %s" msgstr "Replikationsbefehl empfangen: %s" -#: replication/walsender.c:1495 tcop/fastpath.c:287 tcop/postgres.c:1020 +#: replication/walsender.c:1514 tcop/fastpath.c:287 tcop/postgres.c:1020 #: tcop/postgres.c:1330 tcop/postgres.c:1589 tcop/postgres.c:1994 #: tcop/postgres.c:2362 tcop/postgres.c:2437 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "aktuelle Transaktion wurde abgebrochen, Befehle werden bis zum Ende der Transaktion ignoriert" -#: replication/walsender.c:1563 -#, c-format -msgid "cannot execute SQL commands in WAL sender for physical replication" -msgstr "im WAL-Sender für physische Replikation können keine SQL-Befehle ausgeführt werden" - -#: replication/walsender.c:1616 replication/walsender.c:1632 +#: replication/walsender.c:1622 replication/walsender.c:1638 #, c-format msgid "unexpected EOF on standby connection" msgstr "unerwartetes EOF auf Standby-Verbindung" -#: replication/walsender.c:1671 +#: replication/walsender.c:1677 #, c-format msgid "invalid standby message type \"%c\"" msgstr "ungültiger Standby-Message-Typ »%c«" -#: replication/walsender.c:1712 +#: replication/walsender.c:1718 #, c-format msgid "unexpected message type \"%c\"" msgstr "unerwarteter Message-Typ »%c«" -#: replication/walsender.c:2084 +#: replication/walsender.c:2090 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "WAL-Sender-Prozess wird abgebrochen wegen Zeitüberschreitung bei der Replikation" -#: replication/walsender.c:2168 +#: replication/walsender.c:2174 #, c-format msgid "\"%s\" has now caught up with upstream server" msgstr "»%s« hat jetzt den Upstream-Server eingeholt" -#: replication/walsender.c:2281 +#: replication/walsender.c:2287 #, c-format msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "Anzahl angeforderter Standby-Verbindungen überschreitet max_wal_senders (aktuell %d)" @@ -17845,188 +17849,198 @@ msgid "renaming an ON SELECT rule is not allowed" msgstr "Umbenennen einer ON-SELECT-Regel ist nicht erlaubt" -#: rewrite/rewriteHandler.c:542 +#: rewrite/rewriteHandler.c:545 #, c-format msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten" msgstr "WITH-Anfragename »%s« erscheint sowohl in der Regelaktion als auch in der umzuschreibenden Anfrage" -#: rewrite/rewriteHandler.c:602 +#: rewrite/rewriteHandler.c:572 +#, c-format +msgid "INSERT...SELECT rule actions are not supported for queries having data-modifying statements in WITH" +msgstr "INSTEAD...SELECT-Regelaktionen werden für Anfrangen mit datenmodifizierenden Anweisungen in WITH nicht unterstützt" + +#: rewrite/rewriteHandler.c:625 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "RETURNING-Listen können nicht in mehreren Regeln auftreten" -#: rewrite/rewriteHandler.c:811 +#: rewrite/rewriteHandler.c:834 #, c-format msgid "cannot insert into column \"%s\"" msgstr "kann nicht in Spalte »%s« einfügen" -#: rewrite/rewriteHandler.c:812 rewrite/rewriteHandler.c:827 +#: rewrite/rewriteHandler.c:835 rewrite/rewriteHandler.c:850 #, c-format msgid "Column \"%s\" is an identity column defined as GENERATED ALWAYS." msgstr "Spalte »%s« ist eine Identitätsspalte, die als GENERATED ALWAYS definiert ist." -#: rewrite/rewriteHandler.c:814 +#: rewrite/rewriteHandler.c:837 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "Verwenden Sie OVERRIDING SYSTEM VALUE, um diese Einschränkung außer Kraft zu setzen." -#: rewrite/rewriteHandler.c:826 +#: rewrite/rewriteHandler.c:849 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "Spalte »%s« kann nur auf DEFAULT aktualisiert werden" -#: rewrite/rewriteHandler.c:988 rewrite/rewriteHandler.c:1006 +#: rewrite/rewriteHandler.c:1011 rewrite/rewriteHandler.c:1029 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "mehrere Zuweisungen zur selben Spalte »%s«" -#: rewrite/rewriteHandler.c:1937 rewrite/rewriteHandler.c:3735 +#: rewrite/rewriteHandler.c:1960 rewrite/rewriteHandler.c:3772 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "unendliche Rekursion entdeckt in Regeln für Relation »%s«" -#: rewrite/rewriteHandler.c:2023 +#: rewrite/rewriteHandler.c:2046 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "unendliche Rekursion entdeckt in Policys für Relation »%s«" -#: rewrite/rewriteHandler.c:2343 +#: rewrite/rewriteHandler.c:2366 msgid "Junk view columns are not updatable." msgstr "Junk-Sichtspalten sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2348 +#: rewrite/rewriteHandler.c:2371 msgid "View columns that are not columns of their base relation are not updatable." msgstr "Sichtspalten, die nicht Spalten ihrer Basisrelation sind, sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2351 +#: rewrite/rewriteHandler.c:2374 msgid "View columns that refer to system columns are not updatable." msgstr "Sichtspalten, die auf Systemspalten verweisen, sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2354 +#: rewrite/rewriteHandler.c:2377 msgid "View columns that return whole-row references are not updatable." msgstr "Sichtspalten, die Verweise auf ganze Zeilen zurückgeben, sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2415 +#: rewrite/rewriteHandler.c:2438 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Sichten, die DISTINCT enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2418 +#: rewrite/rewriteHandler.c:2441 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Sichten, die GROUP BY enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2421 +#: rewrite/rewriteHandler.c:2444 msgid "Views containing HAVING are not automatically updatable." msgstr "Sichten, die HAVING enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2424 +#: rewrite/rewriteHandler.c:2447 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "Sichten, die UNION, INTERSECT oder EXCEPT enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2427 +#: rewrite/rewriteHandler.c:2450 msgid "Views containing WITH are not automatically updatable." msgstr "Sichten, die WITH enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2430 +#: rewrite/rewriteHandler.c:2453 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Sichten, die LIMIT oder OFFSET enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2442 +#: rewrite/rewriteHandler.c:2465 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Sichten, die Aggregatfunktionen zurückgeben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2445 +#: rewrite/rewriteHandler.c:2468 msgid "Views that return window functions are not automatically updatable." msgstr "Sichten, die Fensterfunktionen zurückgeben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2448 +#: rewrite/rewriteHandler.c:2471 msgid "Views that return set-returning functions are not automatically updatable." msgstr "Sichten, die Funktionen mit Ergebnismenge zurückgeben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2455 rewrite/rewriteHandler.c:2459 -#: rewrite/rewriteHandler.c:2467 +#: rewrite/rewriteHandler.c:2478 rewrite/rewriteHandler.c:2482 +#: rewrite/rewriteHandler.c:2490 msgid "Views that do not select from a single table or view are not automatically updatable." msgstr "Sichten, die nicht aus einer einzigen Tabelle oder Sicht lesen, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2470 +#: rewrite/rewriteHandler.c:2493 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Sichten, die TABLESAMPLE enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2494 +#: rewrite/rewriteHandler.c:2517 msgid "Views that have no updatable columns are not automatically updatable." msgstr "Sichten, die keine aktualisierbaren Spalten haben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2971 +#: rewrite/rewriteHandler.c:2994 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "kann nicht in Spalte »%s« von Sicht »%s« einfügen" -#: rewrite/rewriteHandler.c:2979 +#: rewrite/rewriteHandler.c:3002 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "kann Spalte »%s« von Sicht »%s« nicht aktualisieren" -#: rewrite/rewriteHandler.c:3449 +#: rewrite/rewriteHandler.c:3475 +#, c-format +msgid "DO INSTEAD NOTIFY rules are not supported for data-modifying statements in WITH" +msgstr "DO-INSTEAD-NOTIFY-Regeln werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" + +#: rewrite/rewriteHandler.c:3486 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "DO-INSTEAD-NOTHING-Regeln werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" -#: rewrite/rewriteHandler.c:3463 +#: rewrite/rewriteHandler.c:3500 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "DO-INSTEAD-Regeln mit Bedingung werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" -#: rewrite/rewriteHandler.c:3467 +#: rewrite/rewriteHandler.c:3504 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "DO-ALSO-Regeln werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" -#: rewrite/rewriteHandler.c:3472 +#: rewrite/rewriteHandler.c:3509 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "DO-INSTEAD-Regeln mit mehreren Anweisungen werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" -#: rewrite/rewriteHandler.c:3663 rewrite/rewriteHandler.c:3671 -#: rewrite/rewriteHandler.c:3679 +#: rewrite/rewriteHandler.c:3700 rewrite/rewriteHandler.c:3708 +#: rewrite/rewriteHandler.c:3716 #, c-format msgid "Views with conditional DO INSTEAD rules are not automatically updatable." msgstr "Sichten mit DO-INSTEAD-Regeln mit Bedingung sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:3772 +#: rewrite/rewriteHandler.c:3809 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "INSERT RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:3774 +#: rewrite/rewriteHandler.c:3811 #, c-format msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "Sie benötigen eine ON INSERT DO INSTEAD Regel ohne Bedingung, mit RETURNING-Klausel." -#: rewrite/rewriteHandler.c:3779 +#: rewrite/rewriteHandler.c:3816 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "UPDATE RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:3781 +#: rewrite/rewriteHandler.c:3818 #, c-format msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "Sie benötigen eine ON UPDATE DO INSTEAD Regel ohne Bedingung, mit RETURNING-Klausel." -#: rewrite/rewriteHandler.c:3786 +#: rewrite/rewriteHandler.c:3823 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "DELETE RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:3788 +#: rewrite/rewriteHandler.c:3825 #, c-format msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "Sie benötigen eine ON DELETE DO INSTEAD Regel ohne Bedingung, mit RETURNING-Klausel." -#: rewrite/rewriteHandler.c:3806 +#: rewrite/rewriteHandler.c:3843 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" msgstr "INSERT mit ON-CONFLICT-Klausel kann nicht mit Tabelle verwendet werden, die INSERT- oder UPDATE-Regeln hat" -#: rewrite/rewriteHandler.c:3863 +#: rewrite/rewriteHandler.c:3900 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" msgstr "WITH kann nicht in einer Anfrage verwendet werden, die durch Regeln in mehrere Anfragen umgeschrieben wird" @@ -18189,7 +18203,7 @@ msgid "missing Language parameter" msgstr "Parameter »Language« fehlt" -#: statistics/dependencies.c:670 statistics/dependencies.c:723 +#: statistics/dependencies.c:682 statistics/dependencies.c:735 #: statistics/mvdistinct.c:333 statistics/mvdistinct.c:386 #: utils/adt/pseudotypes.c:94 utils/adt/pseudotypes.c:122 #: utils/adt/pseudotypes.c:147 utils/adt/pseudotypes.c:171 @@ -18200,7 +18214,7 @@ msgid "cannot accept a value of type %s" msgstr "kann keinen Wert vom Typ %s annehmen" -#: statistics/extended_stats.c:103 +#: statistics/extended_stats.c:105 #, c-format msgid "statistics object \"%s.%s\" could not be computed for relation \"%s.%s\"" msgstr "Statistikobjekt »%s.%s« konnte für Relation »%s.%s« nicht berechnet werden" @@ -18210,37 +18224,42 @@ msgid "cannot access temporary tables of other sessions" msgstr "auf temporäre Tabellen anderer Sitzungen kann nicht zugegriffen werden" -#: storage/buffer/bufmgr.c:807 +#: storage/buffer/bufmgr.c:735 +#, c-format +msgid "cannot extend relation %s beyond %u blocks" +msgstr "kann Relation %s nicht auf über %u Blöcke erweitern" + +#: storage/buffer/bufmgr.c:816 #, c-format msgid "unexpected data beyond EOF in block %u of relation %s" msgstr "unerwartete Daten hinter Dateiende in Block %u von Relation %s" -#: storage/buffer/bufmgr.c:809 +#: storage/buffer/bufmgr.c:818 #, c-format msgid "This has been seen to occur with buggy kernels; consider updating your system." msgstr "Das scheint mit fehlerhaften Kernels vorzukommen; Sie sollten eine Systemaktualisierung in Betracht ziehen." -#: storage/buffer/bufmgr.c:907 +#: storage/buffer/bufmgr.c:916 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "ungültige Seite in Block %u von Relation %s; fülle Seite mit Nullen" -#: storage/buffer/bufmgr.c:4013 +#: storage/buffer/bufmgr.c:4022 #, c-format msgid "could not write block %u of %s" msgstr "konnte Block %u von %s nicht schreiben" -#: storage/buffer/bufmgr.c:4015 +#: storage/buffer/bufmgr.c:4024 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Mehrere Fehlschläge --- Schreibfehler ist möglicherweise dauerhaft." -#: storage/buffer/bufmgr.c:4036 storage/buffer/bufmgr.c:4055 +#: storage/buffer/bufmgr.c:4045 storage/buffer/bufmgr.c:4064 #, c-format msgid "writing block %u of relation %s" msgstr "schreibe Block %u von Relation %s" -#: storage/buffer/bufmgr.c:4358 +#: storage/buffer/bufmgr.c:4367 #, c-format msgid "snapshot too old" msgstr "Snapshot zu alt" @@ -18435,8 +18454,8 @@ msgstr "ungültige Nachrichtengröße %zu in Shared-Memory-Queue" #: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:190 storage/lmgr/lock.c:905 -#: storage/lmgr/lock.c:943 storage/lmgr/lock.c:2730 storage/lmgr/lock.c:4047 -#: storage/lmgr/lock.c:4112 storage/lmgr/lock.c:4419 +#: storage/lmgr/lock.c:943 storage/lmgr/lock.c:2730 storage/lmgr/lock.c:4132 +#: storage/lmgr/lock.c:4197 storage/lmgr/lock.c:4547 #: storage/lmgr/predicate.c:2476 storage/lmgr/predicate.c:2491 #: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:5037 #: utils/hash/dynahash.c:1061 @@ -18469,7 +18488,7 @@ msgid "requested shared memory size overflows size_t" msgstr "angeforderte Shared-Memory-Größe übersteigt Kapazität von size_t" -#: storage/ipc/standby.c:673 tcop/postgres.c:3024 +#: storage/ipc/standby.c:673 tcop/postgres.c:3034 #, c-format msgid "canceling statement due to conflict with recovery" msgstr "storniere Anfrage wegen Konflikt mit der Wiederherstellung" @@ -18484,17 +18503,17 @@ msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d" msgstr "pg_largeobject-Eintrag für OID %u, Seite %d hat ungültige Datenfeldgröße %d" -#: storage/large_object/inv_api.c:284 +#: storage/large_object/inv_api.c:286 #, c-format msgid "invalid flags for opening a large object: %d" msgstr "ungültige Flags zum Öffnen eines Large Objects: %d" -#: storage/large_object/inv_api.c:436 +#: storage/large_object/inv_api.c:432 #, c-format msgid "invalid whence setting: %d" msgstr "ungültige »whence«-Angabe: %d" -#: storage/large_object/inv_api.c:593 +#: storage/large_object/inv_api.c:589 #, c-format msgid "invalid large object write request size: %d" msgstr "ungültige Größe der Large-Object-Schreibaufforderung: %d" @@ -18559,62 +18578,62 @@ msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\"" msgstr "beim Prüfen eines Exclusion-Constraints für Tupel (%u,%u) in Relation »%s«" -#: storage/lmgr/lmgr.c:1022 +#: storage/lmgr/lmgr.c:1023 #, c-format msgid "relation %u of database %u" msgstr "Relation %u der Datenbank %u" -#: storage/lmgr/lmgr.c:1028 +#: storage/lmgr/lmgr.c:1029 #, c-format msgid "extension of relation %u of database %u" msgstr "Erweiterung von Relation %u in Datenbank %u" -#: storage/lmgr/lmgr.c:1034 +#: storage/lmgr/lmgr.c:1035 #, c-format msgid "pg_database.datfrozenxid of database %u" msgstr "pg_database.datfrozenxid der Datenbank %u" -#: storage/lmgr/lmgr.c:1039 +#: storage/lmgr/lmgr.c:1040 #, c-format msgid "page %u of relation %u of database %u" msgstr "Seite %u von Relation %u von Datenbank %u" -#: storage/lmgr/lmgr.c:1046 +#: storage/lmgr/lmgr.c:1047 #, c-format msgid "tuple (%u,%u) of relation %u of database %u" msgstr "Tupel (%u, %u) von Relation %u von Datenbank %u" -#: storage/lmgr/lmgr.c:1054 +#: storage/lmgr/lmgr.c:1055 #, c-format msgid "transaction %u" msgstr "Transaktion %u" -#: storage/lmgr/lmgr.c:1059 +#: storage/lmgr/lmgr.c:1060 #, c-format msgid "virtual transaction %d/%u" msgstr "virtuelle Transaktion %d/%u" -#: storage/lmgr/lmgr.c:1065 +#: storage/lmgr/lmgr.c:1066 #, c-format msgid "speculative token %u of transaction %u" msgstr "spekulatives Token %u von Transaktion %u" -#: storage/lmgr/lmgr.c:1071 +#: storage/lmgr/lmgr.c:1072 #, c-format msgid "object %u of class %u of database %u" msgstr "Objekt %u von Klasse %u von Datenbank %u" -#: storage/lmgr/lmgr.c:1079 +#: storage/lmgr/lmgr.c:1080 #, c-format msgid "user lock [%u,%u,%u]" msgstr "Benutzersperre [%u,%u,%u]" -#: storage/lmgr/lmgr.c:1086 +#: storage/lmgr/lmgr.c:1087 #, c-format msgid "advisory lock [%u,%u,%u,%u]" msgstr "Benutzersperre [%u,%u,%u,%u]" -#: storage/lmgr/lmgr.c:1094 +#: storage/lmgr/lmgr.c:1095 #, c-format msgid "unrecognized locktag type %d" msgstr "unbekannter Locktag-Typ %d" @@ -18630,12 +18649,12 @@ msgstr "Nur Sperren gleich oder unter RowExclusiveLock können während der Wiederherstellung auf Datenbankobjekte gesetzt werden." #: storage/lmgr/lock.c:906 storage/lmgr/lock.c:944 storage/lmgr/lock.c:2731 -#: storage/lmgr/lock.c:4048 storage/lmgr/lock.c:4113 storage/lmgr/lock.c:4420 +#: storage/lmgr/lock.c:4133 storage/lmgr/lock.c:4198 storage/lmgr/lock.c:4548 #, c-format msgid "You might need to increase max_locks_per_transaction." msgstr "Sie müssen möglicherweise max_locks_per_transaction erhöhen." -#: storage/lmgr/lock.c:3164 storage/lmgr/lock.c:3280 +#: storage/lmgr/lock.c:3181 storage/lmgr/lock.c:3249 storage/lmgr/lock.c:3365 #, c-format msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object" msgstr "PREPARE kann nicht ausgeführt werden, wenn für das selbe Objekt Sperren auf Sitzungsebene und auf Transaktionsebene gehalten werden" @@ -18793,83 +18812,83 @@ msgid "corrupted item pointer: offset = %u, length = %u" msgstr "verfälschter Item-Zeiger: offset = %u, length = %u" -#: storage/smgr/md.c:438 storage/smgr/md.c:1008 +#: storage/smgr/md.c:438 storage/smgr/md.c:1009 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "kann Datei »%s« nicht kürzen: %m" -#: storage/smgr/md.c:557 +#: storage/smgr/md.c:558 #, c-format msgid "cannot extend file \"%s\" beyond %u blocks" msgstr "kann Datei »%s« nicht auf über %u Blöcke erweitern" # XXX -#: storage/smgr/md.c:579 storage/smgr/md.c:788 storage/smgr/md.c:864 +#: storage/smgr/md.c:580 storage/smgr/md.c:789 storage/smgr/md.c:865 #, c-format msgid "could not seek to block %u in file \"%s\": %m" msgstr "konnte Positionszeiger nicht auf Block %u in Datei »%s« setzen: %m" -#: storage/smgr/md.c:587 +#: storage/smgr/md.c:588 #, c-format msgid "could not extend file \"%s\": %m" msgstr "konnte Datei »%s« nicht erweitern: %m" -#: storage/smgr/md.c:589 storage/smgr/md.c:596 storage/smgr/md.c:891 +#: storage/smgr/md.c:590 storage/smgr/md.c:597 storage/smgr/md.c:892 #, c-format msgid "Check free disk space." msgstr "Prüfen Sie den freien Festplattenplatz." -#: storage/smgr/md.c:593 +#: storage/smgr/md.c:594 #, c-format msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" msgstr "konnte Datei »%s« nicht erweitern: es wurden nur %d von %d Bytes bei Block %u geschrieben" -#: storage/smgr/md.c:806 +#: storage/smgr/md.c:807 #, c-format msgid "could not read block %u in file \"%s\": %m" msgstr "konnte Block %u in Datei »%s« nicht lesen: %m" -#: storage/smgr/md.c:822 +#: storage/smgr/md.c:823 #, c-format msgid "could not read block %u in file \"%s\": read only %d of %d bytes" msgstr "konnte Block %u in Datei »%s« nicht lesen: es wurden nur %d von %d Bytes gelesen" -#: storage/smgr/md.c:882 +#: storage/smgr/md.c:883 #, c-format msgid "could not write block %u in file \"%s\": %m" msgstr "konnte Block %u in Datei »%s« nicht schreiben: %m" -#: storage/smgr/md.c:887 +#: storage/smgr/md.c:888 #, c-format msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "konnte Block %u in Datei »%s« nicht schreiben: es wurden nur %d von %d Bytes geschrieben" -#: storage/smgr/md.c:979 +#: storage/smgr/md.c:980 #, c-format msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" msgstr "konnte Datei »%s« nicht auf %u Blöcke kürzen: es sind jetzt nur %u Blöcke" -#: storage/smgr/md.c:1034 +#: storage/smgr/md.c:1035 #, c-format msgid "could not truncate file \"%s\" to %u blocks: %m" msgstr "konnte Datei »%s« nicht auf %u Blöcke kürzen: %m" -#: storage/smgr/md.c:1329 +#: storage/smgr/md.c:1330 #, c-format msgid "could not fsync file \"%s\" but retrying: %m" msgstr "konnte Datei »%s« nicht fsyncen, versuche erneut: %m" -#: storage/smgr/md.c:1492 +#: storage/smgr/md.c:1493 #, c-format msgid "could not forward fsync request because request queue is full" msgstr "konnte fsync-Anfrage nicht weiterleiten, weil Anfrageschlange voll ist" -#: storage/smgr/md.c:1992 +#: storage/smgr/md.c:1993 #, c-format msgid "could not open file \"%s\" (target block %u): previous segment is only %u blocks" msgstr "konnte Datei »%s« nicht öffnen (Zielblock %u): vorhergehendes Segment hat nur %u Blöcke" -#: storage/smgr/md.c:2006 +#: storage/smgr/md.c:2007 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "konnte Datei »%s« nicht öffnen (Zielblock %u): %m" @@ -18921,7 +18940,7 @@ msgstr "unerwartetes EOF auf Client-Verbindung" #: tcop/postgres.c:432 tcop/postgres.c:444 tcop/postgres.c:455 -#: tcop/postgres.c:467 tcop/postgres.c:4368 +#: tcop/postgres.c:467 tcop/postgres.c:4378 #, c-format msgid "invalid frontend message type %d" msgstr "ungültiger Frontend-Message-Typ %d" @@ -19054,7 +19073,7 @@ msgid "The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory." msgstr "Der Postmaster hat diesen Serverprozess angewiesen, die aktuelle Transaktion zurückzurollen und die Sitzung zu beenden, weil ein anderer Serverprozess abnormal beendet wurde und möglicherweise das Shared Memory verfälscht hat." -#: tcop/postgres.c:2621 tcop/postgres.c:2954 +#: tcop/postgres.c:2621 tcop/postgres.c:2960 #, c-format msgid "In a moment you should be able to reconnect to the database and repeat your command." msgstr "In einem Moment sollten Sie wieder mit der Datenbank verbinden und Ihren Befehl wiederholen können." @@ -19069,127 +19088,127 @@ msgid "An invalid floating-point operation was signaled. This probably means an out-of-range result or an invalid operation, such as division by zero." msgstr "Eine ungültige Fließkommaoperation wurde signalisiert. Das bedeutet wahrscheinlich ein Ergebnis außerhalb des gültigen Bereichs oder eine ungültige Operation, zum Beispiel Division durch null." -#: tcop/postgres.c:2884 +#: tcop/postgres.c:2890 #, c-format msgid "canceling authentication due to timeout" msgstr "storniere Authentifizierung wegen Zeitüberschreitung" -#: tcop/postgres.c:2888 +#: tcop/postgres.c:2894 #, c-format msgid "terminating autovacuum process due to administrator command" msgstr "Autovacuum-Prozess wird abgebrochen aufgrund von Anweisung des Administrators" -#: tcop/postgres.c:2892 +#: tcop/postgres.c:2898 #, c-format msgid "terminating logical replication worker due to administrator command" msgstr "Arbeitsprozess für logische Replikation wird abgebrochen aufgrund von Anweisung des Administrators" -#: tcop/postgres.c:2896 +#: tcop/postgres.c:2902 #, c-format msgid "logical replication launcher shutting down" msgstr "Logical-Replication-Launcher fährt herunter" -#: tcop/postgres.c:2909 tcop/postgres.c:2919 tcop/postgres.c:2952 +#: tcop/postgres.c:2915 tcop/postgres.c:2925 tcop/postgres.c:2958 #, c-format msgid "terminating connection due to conflict with recovery" msgstr "Verbindung wird abgebrochen wegen Konflikt mit der Wiederherstellung" -#: tcop/postgres.c:2925 +#: tcop/postgres.c:2931 #, c-format msgid "terminating connection due to administrator command" msgstr "Verbindung wird abgebrochen aufgrund von Anweisung des Administrators" -#: tcop/postgres.c:2935 +#: tcop/postgres.c:2941 #, c-format msgid "connection to client lost" msgstr "Verbindung zum Client wurde verloren" -#: tcop/postgres.c:3001 +#: tcop/postgres.c:3011 #, c-format msgid "canceling statement due to lock timeout" msgstr "storniere Anfrage wegen Zeitüberschreitung einer Sperre" -#: tcop/postgres.c:3008 +#: tcop/postgres.c:3018 #, c-format msgid "canceling statement due to statement timeout" msgstr "storniere Anfrage wegen Zeitüberschreitung der Anfrage" -#: tcop/postgres.c:3015 +#: tcop/postgres.c:3025 #, c-format msgid "canceling autovacuum task" msgstr "storniere Autovacuum-Aufgabe" -#: tcop/postgres.c:3038 +#: tcop/postgres.c:3048 #, c-format msgid "canceling statement due to user request" msgstr "storniere Anfrage wegen Benutzeraufforderung" -#: tcop/postgres.c:3048 +#: tcop/postgres.c:3058 #, c-format msgid "terminating connection due to idle-in-transaction timeout" msgstr "Verbindung wird abgebrochen wegen Zeitüberschreitung in inaktiver Transaktion" -#: tcop/postgres.c:3162 +#: tcop/postgres.c:3172 #, c-format msgid "stack depth limit exceeded" msgstr "Grenze für Stacktiefe überschritten" -#: tcop/postgres.c:3163 +#: tcop/postgres.c:3173 #, c-format msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate." msgstr "Erhöhen Sie den Konfigurationsparameter »max_stack_depth« (aktuell %dkB), nachdem Sie sichergestellt haben, dass die Stacktiefenbegrenzung Ihrer Plattform ausreichend ist." -#: tcop/postgres.c:3226 +#: tcop/postgres.c:3236 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." msgstr "»max_stack_depth« darf %ldkB nicht überschreiten." -#: tcop/postgres.c:3228 +#: tcop/postgres.c:3238 #, c-format msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." msgstr "Erhöhen Sie die Stacktiefenbegrenzung Ihrer Plattform mit »ulimit -s« oder der lokalen Entsprechung." -#: tcop/postgres.c:3588 +#: tcop/postgres.c:3598 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "ungültiges Kommandozeilenargument für Serverprozess: %s" -#: tcop/postgres.c:3589 tcop/postgres.c:3595 +#: tcop/postgres.c:3599 tcop/postgres.c:3605 #, c-format msgid "Try \"%s --help\" for more information." msgstr "Versuchen Sie »%s --help« für weitere Informationen." -#: tcop/postgres.c:3593 +#: tcop/postgres.c:3603 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s: ungültiges Kommandozeilenargument: %s" -#: tcop/postgres.c:3655 +#: tcop/postgres.c:3665 #, c-format msgid "%s: no database nor user name specified" msgstr "%s: weder Datenbankname noch Benutzername angegeben" -#: tcop/postgres.c:4276 +#: tcop/postgres.c:4286 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "ungültiger Subtyp %d von CLOSE-Message" -#: tcop/postgres.c:4311 +#: tcop/postgres.c:4321 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "ungültiger Subtyp %d von DESCRIBE-Message" -#: tcop/postgres.c:4389 +#: tcop/postgres.c:4399 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "Fastpath-Funktionsaufrufe werden auf einer Replikationsverbindung nicht unterstützt" -#: tcop/postgres.c:4393 +#: tcop/postgres.c:4403 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "erweitertes Anfrageprotokoll wird nicht auf einer Replikationsverbindung unterstützt" -#: tcop/postgres.c:4563 +#: tcop/postgres.c:4573 #, c-format msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" msgstr "Verbindungsende: Sitzungszeit: %d:%02d:%02d.%03d Benutzer=%s Datenbank=%s Host=%s%s%s" @@ -19592,17 +19611,17 @@ msgid "must be member of role \"%s\"" msgstr "Berechtigung nur für Mitglied von Rolle »%s«" -#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 -#: utils/adt/arrayfuncs.c:1531 utils/adt/arrayfuncs.c:3263 -#: utils/adt/arrayfuncs.c:3401 utils/adt/arrayfuncs.c:5858 -#: utils/adt/arrayfuncs.c:6169 utils/adt/arrayutils.c:93 +#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:933 +#: utils/adt/arrayfuncs.c:1520 utils/adt/arrayfuncs.c:3263 +#: utils/adt/arrayfuncs.c:3403 utils/adt/arrayfuncs.c:5866 +#: utils/adt/arrayfuncs.c:6177 utils/adt/arrayutils.c:93 #: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "Arraygröße überschreitet erlaubtes Maximum (%d)" -#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:471 -#: utils/adt/array_userfuncs.c:551 utils/adt/json.c:1765 utils/adt/json.c:1860 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:472 +#: utils/adt/array_userfuncs.c:552 utils/adt/json.c:1765 utils/adt/json.c:1860 #: utils/adt/json.c:1898 utils/adt/jsonb.c:1128 utils/adt/jsonb.c:1157 #: utils/adt/jsonb.c:1549 utils/adt/jsonb.c:1713 utils/adt/jsonb.c:1723 #, c-format @@ -19615,15 +19634,15 @@ msgstr "Eingabedatentyp ist kein Array" #: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 -#: utils/adt/arrayfuncs.c:1334 utils/adt/float.c:1234 utils/adt/float.c:1308 -#: utils/adt/float.c:3585 utils/adt/float.c:3601 utils/adt/int.c:608 -#: utils/adt/int.c:637 utils/adt/int.c:658 utils/adt/int.c:689 -#: utils/adt/int.c:722 utils/adt/int.c:744 utils/adt/int.c:892 -#: utils/adt/int.c:913 utils/adt/int.c:940 utils/adt/int.c:980 -#: utils/adt/int.c:1001 utils/adt/int.c:1028 utils/adt/int.c:1061 -#: utils/adt/int.c:1144 utils/adt/int8.c:1298 utils/adt/numeric.c:2953 -#: utils/adt/numeric.c:2962 utils/adt/varbit.c:1178 utils/adt/varbit.c:1566 -#: utils/adt/varlena.c:1054 utils/adt/varlena.c:2957 +#: utils/adt/float.c:1234 utils/adt/float.c:1308 utils/adt/float.c:3585 +#: utils/adt/float.c:3601 utils/adt/int.c:608 utils/adt/int.c:637 +#: utils/adt/int.c:658 utils/adt/int.c:689 utils/adt/int.c:722 +#: utils/adt/int.c:744 utils/adt/int.c:892 utils/adt/int.c:913 +#: utils/adt/int.c:940 utils/adt/int.c:980 utils/adt/int.c:1001 +#: utils/adt/int.c:1028 utils/adt/int.c:1061 utils/adt/int.c:1144 +#: utils/adt/int8.c:1298 utils/adt/numeric.c:2947 utils/adt/numeric.c:2952 +#: utils/adt/varbit.c:1178 utils/adt/varbit.c:1566 utils/adt/varlena.c:1054 +#: utils/adt/varlena.c:2957 #, c-format msgid "integer out of range" msgstr "integer ist außerhalb des gültigen Bereichs" @@ -19660,12 +19679,12 @@ msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "Arrays mit unterschiedlichen Dimensionen sind nicht kompatibel für Aneinanderhängen." -#: utils/adt/array_userfuncs.c:667 utils/adt/array_userfuncs.c:819 +#: utils/adt/array_userfuncs.c:668 utils/adt/array_userfuncs.c:820 #, c-format msgid "searching for elements in multidimensional arrays is not supported" msgstr "Suche nach Elementen in mehrdimensionalen Arrays wird nicht unterstützt" -#: utils/adt/array_userfuncs.c:691 +#: utils/adt/array_userfuncs.c:692 #, c-format msgid "initial position must not be null" msgstr "Startposition darf nicht NULL sein" @@ -19674,14 +19693,14 @@ #: utils/adt/arrayfuncs.c:293 utils/adt/arrayfuncs.c:315 #: utils/adt/arrayfuncs.c:330 utils/adt/arrayfuncs.c:344 #: utils/adt/arrayfuncs.c:350 utils/adt/arrayfuncs.c:357 -#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:504 -#: utils/adt/arrayfuncs.c:515 utils/adt/arrayfuncs.c:530 -#: utils/adt/arrayfuncs.c:551 utils/adt/arrayfuncs.c:581 -#: utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:596 -#: utils/adt/arrayfuncs.c:630 utils/adt/arrayfuncs.c:653 -#: utils/adt/arrayfuncs.c:673 utils/adt/arrayfuncs.c:785 -#: utils/adt/arrayfuncs.c:794 utils/adt/arrayfuncs.c:824 -#: utils/adt/arrayfuncs.c:839 utils/adt/arrayfuncs.c:892 +#: utils/adt/arrayfuncs.c:490 utils/adt/arrayfuncs.c:506 +#: utils/adt/arrayfuncs.c:517 utils/adt/arrayfuncs.c:532 +#: utils/adt/arrayfuncs.c:553 utils/adt/arrayfuncs.c:583 +#: utils/adt/arrayfuncs.c:590 utils/adt/arrayfuncs.c:598 +#: utils/adt/arrayfuncs.c:632 utils/adt/arrayfuncs.c:655 +#: utils/adt/arrayfuncs.c:675 utils/adt/arrayfuncs.c:787 +#: utils/adt/arrayfuncs.c:796 utils/adt/arrayfuncs.c:826 +#: utils/adt/arrayfuncs.c:841 utils/adt/arrayfuncs.c:894 #, c-format msgid "malformed array literal: \"%s\"" msgstr "fehlerhafte Arraykonstante: »%s«" @@ -19701,8 +19720,8 @@ msgid "Missing \"%s\" after array dimensions." msgstr "»%s« fehlt nach Arraydimensionen." -#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2882 -#: utils/adt/arrayfuncs.c:2914 utils/adt/arrayfuncs.c:2929 +#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2881 +#: utils/adt/arrayfuncs.c:2913 utils/adt/arrayfuncs.c:2928 #, c-format msgid "upper bound cannot be less than lower bound" msgstr "Obergrenze kann nicht kleiner als Untergrenze sein" @@ -19722,81 +19741,81 @@ msgid "Specified array dimensions do not match array contents." msgstr "Angegebene Array-Dimensionen stimmen nicht mit dem Array-Inhalt überein." -#: utils/adt/arrayfuncs.c:489 utils/adt/arrayfuncs.c:516 +#: utils/adt/arrayfuncs.c:491 utils/adt/arrayfuncs.c:518 #: utils/adt/rangetypes.c:2116 utils/adt/rangetypes.c:2124 #: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216 #, c-format msgid "Unexpected end of input." msgstr "Unerwartetes Ende der Eingabe." -#: utils/adt/arrayfuncs.c:505 utils/adt/arrayfuncs.c:552 -#: utils/adt/arrayfuncs.c:582 utils/adt/arrayfuncs.c:631 +#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:554 +#: utils/adt/arrayfuncs.c:584 utils/adt/arrayfuncs.c:633 #, c-format msgid "Unexpected \"%c\" character." msgstr "Unerwartetes Zeichen »%c«." -#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:654 +#: utils/adt/arrayfuncs.c:533 utils/adt/arrayfuncs.c:656 #, c-format msgid "Unexpected array element." msgstr "Unerwartetes Arrayelement." -#: utils/adt/arrayfuncs.c:589 +#: utils/adt/arrayfuncs.c:591 #, c-format msgid "Unmatched \"%c\" character." msgstr "Zeichen »%c« ohne Gegenstück." -#: utils/adt/arrayfuncs.c:597 utils/adt/jsonfuncs.c:2381 +#: utils/adt/arrayfuncs.c:599 utils/adt/jsonfuncs.c:2381 #, c-format msgid "Multidimensional arrays must have sub-arrays with matching dimensions." msgstr "Mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl Dimensionen haben." -#: utils/adt/arrayfuncs.c:674 +#: utils/adt/arrayfuncs.c:676 #, c-format msgid "Junk after closing right brace." msgstr "Müll nach schließender rechter geschweifter Klammer." -#: utils/adt/arrayfuncs.c:1296 utils/adt/arrayfuncs.c:3369 -#: utils/adt/arrayfuncs.c:5764 +#: utils/adt/arrayfuncs.c:1298 utils/adt/arrayfuncs.c:3369 +#: utils/adt/arrayfuncs.c:5770 #, c-format msgid "invalid number of dimensions: %d" msgstr "ungültige Anzahl Dimensionen: %d" -#: utils/adt/arrayfuncs.c:1307 +#: utils/adt/arrayfuncs.c:1309 #, c-format msgid "invalid array flags" msgstr "ungültige Array-Flags" -#: utils/adt/arrayfuncs.c:1315 +#: utils/adt/arrayfuncs.c:1317 #, c-format msgid "wrong element type" msgstr "falscher Elementtyp" -#: utils/adt/arrayfuncs.c:1365 utils/adt/rangetypes.c:334 +#: utils/adt/arrayfuncs.c:1354 utils/adt/rangetypes.c:334 #: utils/cache/lsyscache.c:2707 #, c-format msgid "no binary input function available for type %s" msgstr "keine binäre Eingabefunktion verfügbar für Typ %s" -#: utils/adt/arrayfuncs.c:1505 +#: utils/adt/arrayfuncs.c:1494 #, c-format msgid "improper binary format in array element %d" msgstr "falsches Binärformat in Arrayelement %d" -#: utils/adt/arrayfuncs.c:1586 utils/adt/rangetypes.c:339 +#: utils/adt/arrayfuncs.c:1575 utils/adt/rangetypes.c:339 #: utils/cache/lsyscache.c:2740 #, c-format msgid "no binary output function available for type %s" msgstr "keine binäre Ausgabefunktion verfügbar für Typ %s" -#: utils/adt/arrayfuncs.c:2064 +#: utils/adt/arrayfuncs.c:2053 #, c-format msgid "slices of fixed-length arrays not implemented" msgstr "Auswählen von Stücken aus Arrays mit fester Länge ist nicht implementiert" -#: utils/adt/arrayfuncs.c:2242 utils/adt/arrayfuncs.c:2264 -#: utils/adt/arrayfuncs.c:2313 utils/adt/arrayfuncs.c:2549 -#: utils/adt/arrayfuncs.c:2860 utils/adt/arrayfuncs.c:5750 -#: utils/adt/arrayfuncs.c:5776 utils/adt/arrayfuncs.c:5787 +#: utils/adt/arrayfuncs.c:2231 utils/adt/arrayfuncs.c:2253 +#: utils/adt/arrayfuncs.c:2302 utils/adt/arrayfuncs.c:2541 +#: utils/adt/arrayfuncs.c:2859 utils/adt/arrayfuncs.c:5756 +#: utils/adt/arrayfuncs.c:5782 utils/adt/arrayfuncs.c:5793 #: utils/adt/json.c:2259 utils/adt/json.c:2334 utils/adt/jsonb.c:1327 #: utils/adt/jsonb.c:1413 utils/adt/jsonfuncs.c:4153 utils/adt/jsonfuncs.c:4304 #: utils/adt/jsonfuncs.c:4349 utils/adt/jsonfuncs.c:4396 @@ -19804,119 +19823,124 @@ msgid "wrong number of array subscripts" msgstr "falsche Anzahl Arrayindizes" -#: utils/adt/arrayfuncs.c:2247 utils/adt/arrayfuncs.c:2355 -#: utils/adt/arrayfuncs.c:2613 utils/adt/arrayfuncs.c:2919 +#: utils/adt/arrayfuncs.c:2236 utils/adt/arrayfuncs.c:2344 +#: utils/adt/arrayfuncs.c:2605 utils/adt/arrayfuncs.c:2918 #, c-format msgid "array subscript out of range" msgstr "Arrayindex außerhalb des gültigen Bereichs" -#: utils/adt/arrayfuncs.c:2252 +#: utils/adt/arrayfuncs.c:2241 #, c-format msgid "cannot assign null value to an element of a fixed-length array" msgstr "Array mit fester Länge kann keinen NULL-Wert enthalten" -#: utils/adt/arrayfuncs.c:2807 +#: utils/adt/arrayfuncs.c:2806 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "Aktualisieren von Stücken aus Arrays mit fester Länge ist nicht implementiert" -#: utils/adt/arrayfuncs.c:2838 +#: utils/adt/arrayfuncs.c:2837 #, c-format msgid "array slice subscript must provide both boundaries" msgstr "Array-Slice-Index muss beide Begrenzungen angeben" -#: utils/adt/arrayfuncs.c:2839 +#: utils/adt/arrayfuncs.c:2838 #, c-format msgid "When assigning to a slice of an empty array value, slice boundaries must be fully specified." msgstr "Wenn ein Slice eines leeren Array-Wertes zugewiesen wird, dann müssen die Slice-Begrenzungen vollständig angegeben werden." -#: utils/adt/arrayfuncs.c:2850 utils/adt/arrayfuncs.c:2945 +#: utils/adt/arrayfuncs.c:2849 utils/adt/arrayfuncs.c:2945 #, c-format msgid "source array too small" msgstr "Quellarray ist zu klein" -#: utils/adt/arrayfuncs.c:3525 +#: utils/adt/arrayfuncs.c:3527 #, c-format msgid "null array element not allowed in this context" msgstr "NULL-Werte im Array sind in diesem Zusammenhang nicht erlaubt" -#: utils/adt/arrayfuncs.c:3627 utils/adt/arrayfuncs.c:3798 -#: utils/adt/arrayfuncs.c:4072 +#: utils/adt/arrayfuncs.c:3629 utils/adt/arrayfuncs.c:3800 +#: utils/adt/arrayfuncs.c:4074 #, c-format msgid "cannot compare arrays of different element types" msgstr "kann Arrays mit verschiedenen Elementtypen nicht vergleichen" -#: utils/adt/arrayfuncs.c:3974 utils/adt/rangetypes.c:1253 +#: utils/adt/arrayfuncs.c:3976 utils/adt/rangetypes.c:1253 #, c-format msgid "could not identify a hash function for type %s" msgstr "konnte keine Hash-Funktion für Typ %s ermitteln" -#: utils/adt/arrayfuncs.c:5164 +#: utils/adt/arrayfuncs.c:5166 #, c-format msgid "data type %s is not an array type" msgstr "Datentyp %s ist kein Array-Typ" -#: utils/adt/arrayfuncs.c:5219 +#: utils/adt/arrayfuncs.c:5221 #, c-format msgid "cannot accumulate null arrays" msgstr "Arrays, die NULL sind, können nicht akkumuliert werden" -#: utils/adt/arrayfuncs.c:5247 +#: utils/adt/arrayfuncs.c:5249 #, c-format msgid "cannot accumulate empty arrays" msgstr "leere Arrays können nicht akkumuliert werden" -#: utils/adt/arrayfuncs.c:5276 utils/adt/arrayfuncs.c:5282 +#: utils/adt/arrayfuncs.c:5278 utils/adt/arrayfuncs.c:5284 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "Arrays unterschiedlicher Dimensionalität können nicht akkumuliert werden" -#: utils/adt/arrayfuncs.c:5648 utils/adt/arrayfuncs.c:5688 +#: utils/adt/arrayfuncs.c:5654 utils/adt/arrayfuncs.c:5694 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "Dimensions-Array oder Untergrenzen-Array darf nicht NULL sein" -#: utils/adt/arrayfuncs.c:5751 utils/adt/arrayfuncs.c:5777 +#: utils/adt/arrayfuncs.c:5757 utils/adt/arrayfuncs.c:5783 #, c-format msgid "Dimension array must be one dimensional." msgstr "Dimensions-Array muss eindimensional sein." -#: utils/adt/arrayfuncs.c:5756 utils/adt/arrayfuncs.c:5782 +#: utils/adt/arrayfuncs.c:5762 utils/adt/arrayfuncs.c:5788 #, c-format msgid "dimension values cannot be null" msgstr "Dimensionswerte dürfen nicht NULL sein" -#: utils/adt/arrayfuncs.c:5788 +#: utils/adt/arrayfuncs.c:5794 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "Untergrenzen-Array hat andere Größe als Dimensions-Array." -#: utils/adt/arrayfuncs.c:6034 +#: utils/adt/arrayfuncs.c:6042 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "Entfernen von Elementen aus mehrdimensionalen Arrays wird nicht unterstützt" -#: utils/adt/arrayfuncs.c:6311 +#: utils/adt/arrayfuncs.c:6319 #, c-format msgid "thresholds must be one-dimensional array" msgstr "Parameter »thresholds« muss ein eindimensionales Array sein" -#: utils/adt/arrayfuncs.c:6316 +#: utils/adt/arrayfuncs.c:6324 #, c-format msgid "thresholds array must not contain NULLs" msgstr "»thresholds«-Array darf keine NULL-Werte enthalten" -#: utils/adt/arrayutils.c:209 +#: utils/adt/arrayutils.c:136 +#, c-format +msgid "array lower bound is too large: %d" +msgstr "Array-Untergrenze ist zu groß: %d" + +#: utils/adt/arrayutils.c:236 #, c-format msgid "typmod array must be type cstring[]" msgstr "Typmod-Array muss Typ cstring[] haben" -#: utils/adt/arrayutils.c:214 +#: utils/adt/arrayutils.c:241 #, c-format msgid "typmod array must be one-dimensional" msgstr "Typmod-Arrays müssen eindimensional sein" -#: utils/adt/arrayutils.c:219 +#: utils/adt/arrayutils.c:246 #, c-format msgid "typmod array must not contain nulls" msgstr "Typmod-Array darf keine NULL-Werte enthalten" @@ -19937,9 +19961,9 @@ #: utils/adt/geo_ops.c:4582 utils/adt/geo_ops.c:4589 utils/adt/mac.c:94 #: utils/adt/mac8.c:93 utils/adt/mac8.c:166 utils/adt/mac8.c:184 #: utils/adt/mac8.c:202 utils/adt/mac8.c:221 utils/adt/nabstime.c:1542 -#: utils/adt/network.c:58 utils/adt/numeric.c:593 utils/adt/numeric.c:620 -#: utils/adt/numeric.c:5498 utils/adt/numeric.c:5522 utils/adt/numeric.c:5546 -#: utils/adt/numeric.c:6348 utils/adt/numeric.c:6374 utils/adt/oid.c:44 +#: utils/adt/network.c:58 utils/adt/numeric.c:585 utils/adt/numeric.c:612 +#: utils/adt/numeric.c:5488 utils/adt/numeric.c:5512 utils/adt/numeric.c:5536 +#: utils/adt/numeric.c:6327 utils/adt/numeric.c:6353 utils/adt/oid.c:44 #: utils/adt/oid.c:58 utils/adt/oid.c:64 utils/adt/oid.c:86 #: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:50 utils/adt/tid.c:72 #: utils/adt/tid.c:80 utils/adt/tid.c:88 utils/adt/txid.c:405 @@ -19962,8 +19986,8 @@ #: utils/adt/int.c:846 utils/adt/int.c:954 utils/adt/int.c:1043 #: utils/adt/int.c:1082 utils/adt/int.c:1110 utils/adt/int8.c:597 #: utils/adt/int8.c:657 utils/adt/int8.c:897 utils/adt/int8.c:1005 -#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6912 -#: utils/adt/numeric.c:7201 utils/adt/numeric.c:8213 utils/adt/timestamp.c:3242 +#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6891 +#: utils/adt/numeric.c:7180 utils/adt/numeric.c:8247 utils/adt/timestamp.c:3242 #, c-format msgid "division by zero" msgstr "Division durch Null" @@ -19994,8 +20018,8 @@ msgid "date/time value \"current\" is no longer supported" msgstr "Datum/Zeitwert »current« wird nicht mehr unterstützt" -#: utils/adt/date.c:173 utils/adt/date.c:181 utils/adt/formatting.c:3621 -#: utils/adt/formatting.c:3630 +#: utils/adt/date.c:173 utils/adt/date.c:181 utils/adt/formatting.c:3625 +#: utils/adt/formatting.c:3634 #, c-format msgid "date out of range: \"%s\"" msgstr "date ist außerhalb des gültigen Bereichs: »%s«" @@ -20019,8 +20043,8 @@ #: utils/adt/date.c:328 utils/adt/date.c:351 utils/adt/date.c:377 #: utils/adt/date.c:1093 utils/adt/date.c:1139 utils/adt/date.c:1728 #: utils/adt/date.c:1759 utils/adt/date.c:1788 utils/adt/date.c:2525 -#: utils/adt/datetime.c:1688 utils/adt/formatting.c:3496 -#: utils/adt/formatting.c:3528 utils/adt/formatting.c:3596 +#: utils/adt/datetime.c:1688 utils/adt/formatting.c:3500 +#: utils/adt/formatting.c:3532 utils/adt/formatting.c:3600 #: utils/adt/json.c:1540 utils/adt/json.c:1562 utils/adt/jsonb.c:825 #: utils/adt/jsonb.c:849 utils/adt/nabstime.c:459 utils/adt/nabstime.c:502 #: utils/adt/nabstime.c:532 utils/adt/nabstime.c:575 utils/adt/timestamp.c:231 @@ -20093,7 +20117,7 @@ msgid "\"time with time zone\" units \"%s\" not recognized" msgstr "»time with time zone«-Einheit »%s« nicht erkannt" -#: utils/adt/date.c:2743 utils/adt/datetime.c:931 utils/adt/datetime.c:1846 +#: utils/adt/date.c:2745 utils/adt/datetime.c:931 utils/adt/datetime.c:1846 #: utils/adt/datetime.c:4632 utils/adt/timestamp.c:504 #: utils/adt/timestamp.c:531 utils/adt/timestamp.c:4894 #: utils/adt/timestamp.c:5102 @@ -20101,7 +20125,7 @@ msgid "time zone \"%s\" not recognized" msgstr "Zeitzone »%s« nicht erkannt" -#: utils/adt/date.c:2775 utils/adt/timestamp.c:4936 utils/adt/timestamp.c:5133 +#: utils/adt/date.c:2777 utils/adt/timestamp.c:4936 utils/adt/timestamp.c:5133 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "Intervall-Zeitzone »%s« darf keine Monate oder Tage enthalten" @@ -20141,17 +20165,17 @@ msgid "could not open tablespace directory \"%s\": %m" msgstr "konnte Tablespace-Verzeichnis »%s« nicht öffnen: %m" -#: utils/adt/dbsize.c:764 utils/adt/dbsize.c:832 +#: utils/adt/dbsize.c:768 utils/adt/dbsize.c:836 #, c-format msgid "invalid size: \"%s\"" msgstr "ungültige Größe: »%s«" -#: utils/adt/dbsize.c:833 +#: utils/adt/dbsize.c:837 #, c-format msgid "Invalid size unit: \"%s\"." msgstr "Ungültige Größeneinheit: »%s«." -#: utils/adt/dbsize.c:834 +#: utils/adt/dbsize.c:838 #, c-format msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." msgstr "Gültige Einheiten sind »kB«, »MB«, »GB« und »TB«." @@ -20254,32 +20278,32 @@ #: utils/adt/float.c:1259 utils/adt/float.c:1333 utils/adt/int.c:334 #: utils/adt/int.c:760 utils/adt/int.c:789 utils/adt/int.c:810 #: utils/adt/int.c:830 utils/adt/int.c:864 utils/adt/int.c:1159 -#: utils/adt/int8.c:1323 utils/adt/numeric.c:3050 utils/adt/numeric.c:3059 +#: utils/adt/int8.c:1323 utils/adt/numeric.c:3041 utils/adt/numeric.c:3046 #, c-format msgid "smallint out of range" msgstr "smallint ist außerhalb des gültigen Bereichs" -#: utils/adt/float.c:1459 utils/adt/numeric.c:7634 +#: utils/adt/float.c:1459 utils/adt/numeric.c:7613 #, c-format msgid "cannot take square root of a negative number" msgstr "Quadratwurzel von negativer Zahl kann nicht ermittelt werden" -#: utils/adt/float.c:1501 utils/adt/numeric.c:2853 +#: utils/adt/float.c:1501 utils/adt/numeric.c:2854 #, c-format msgid "zero raised to a negative power is undefined" msgstr "null hoch eine negative Zahl ist undefiniert" -#: utils/adt/float.c:1505 utils/adt/numeric.c:2859 +#: utils/adt/float.c:1505 utils/adt/numeric.c:8100 #, c-format msgid "a negative number raised to a non-integer power yields a complex result" msgstr "eine negative Zahl hoch eine nicht ganze Zahl ergibt ein komplexes Ergebnis" -#: utils/adt/float.c:1571 utils/adt/float.c:1601 utils/adt/numeric.c:7900 +#: utils/adt/float.c:1571 utils/adt/float.c:1601 utils/adt/numeric.c:7885 #, c-format msgid "cannot take logarithm of zero" msgstr "Logarithmus von null kann nicht ermittelt werden" -#: utils/adt/float.c:1575 utils/adt/float.c:1605 utils/adt/numeric.c:7904 +#: utils/adt/float.c:1575 utils/adt/float.c:1605 utils/adt/numeric.c:7889 #, c-format msgid "cannot take logarithm of a negative number" msgstr "Logarithmus negativer Zahlen kann nicht ermittelt werden" @@ -20292,12 +20316,12 @@ msgid "input is out of range" msgstr "Eingabe ist außerhalb des gültigen Bereichs" -#: utils/adt/float.c:3561 utils/adt/numeric.c:1493 +#: utils/adt/float.c:3561 utils/adt/numeric.c:1485 #, c-format msgid "count must be greater than zero" msgstr "Anzahl muss größer als null sein" -#: utils/adt/float.c:3566 utils/adt/numeric.c:1500 +#: utils/adt/float.c:3566 utils/adt/numeric.c:1492 #, c-format msgid "operand, lower bound, and upper bound cannot be NaN" msgstr "Operand, Untergrenze und Obergrenze dürfen nicht NaN sein" @@ -20307,223 +20331,223 @@ msgid "lower and upper bounds must be finite" msgstr "Untergrenze und Obergrenze müssen endlich sein" -#: utils/adt/float.c:3610 utils/adt/numeric.c:1513 +#: utils/adt/float.c:3610 utils/adt/numeric.c:1505 #, c-format msgid "lower bound cannot equal upper bound" msgstr "Untergrenze kann nicht gleich der Obergrenze sein" -#: utils/adt/formatting.c:482 +#: utils/adt/formatting.c:486 #, c-format msgid "invalid format specification for an interval value" msgstr "ungültige Formatangabe für Intervall-Wert" -#: utils/adt/formatting.c:483 +#: utils/adt/formatting.c:487 #, c-format msgid "Intervals are not tied to specific calendar dates." msgstr "Intervalle beziehen sich nicht auf bestimmte Kalenderdaten." -#: utils/adt/formatting.c:1051 +#: utils/adt/formatting.c:1055 #, c-format msgid "\"EEEE\" must be the last pattern used" msgstr "»EEEE« muss das letzte Muster sein" -#: utils/adt/formatting.c:1059 +#: utils/adt/formatting.c:1063 #, c-format msgid "\"9\" must be ahead of \"PR\"" msgstr "»9« muss vor »PR« stehen" -#: utils/adt/formatting.c:1075 +#: utils/adt/formatting.c:1079 #, c-format msgid "\"0\" must be ahead of \"PR\"" msgstr "»0« muss vor »PR« stehen" -#: utils/adt/formatting.c:1102 +#: utils/adt/formatting.c:1106 #, c-format msgid "multiple decimal points" msgstr "mehrere Dezimalpunkte" -#: utils/adt/formatting.c:1106 utils/adt/formatting.c:1189 +#: utils/adt/formatting.c:1110 utils/adt/formatting.c:1193 #, c-format msgid "cannot use \"V\" and decimal point together" msgstr "»V« und Dezimalpunkt können nicht zusammen verwendet werden" -#: utils/adt/formatting.c:1118 +#: utils/adt/formatting.c:1122 #, c-format msgid "cannot use \"S\" twice" msgstr "»S« kann nicht zweimal verwendet werden" -#: utils/adt/formatting.c:1122 +#: utils/adt/formatting.c:1126 #, c-format msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" msgstr "»S« und »PL«/»MI«/»SG«/»PR« können nicht zusammen verwendet werden" -#: utils/adt/formatting.c:1142 +#: utils/adt/formatting.c:1146 #, c-format msgid "cannot use \"S\" and \"MI\" together" msgstr "»S« und »MI« können nicht zusammen verwendet werden" -#: utils/adt/formatting.c:1152 +#: utils/adt/formatting.c:1156 #, c-format msgid "cannot use \"S\" and \"PL\" together" msgstr "»S« und »PL« können nicht zusammen verwendet werden" -#: utils/adt/formatting.c:1162 +#: utils/adt/formatting.c:1166 #, c-format msgid "cannot use \"S\" and \"SG\" together" msgstr "»S« und »SG« können nicht zusammen verwendet werden" -#: utils/adt/formatting.c:1171 +#: utils/adt/formatting.c:1175 #, c-format msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" msgstr "»PR« und »S«/»PL«/»MI«/»SG« können nicht zusammen verwendet werden" -#: utils/adt/formatting.c:1197 +#: utils/adt/formatting.c:1201 #, c-format msgid "cannot use \"EEEE\" twice" msgstr "»EEEE« kann nicht zweimal verwendet werden" -#: utils/adt/formatting.c:1203 +#: utils/adt/formatting.c:1207 #, c-format msgid "\"EEEE\" is incompatible with other formats" msgstr "»EEEE« ist mit anderen Formaten inkompatibel" -#: utils/adt/formatting.c:1204 +#: utils/adt/formatting.c:1208 #, c-format msgid "\"EEEE\" may only be used together with digit and decimal point patterns." msgstr "»EEEE« kann nur zusammen mit Platzhaltern für Ziffern oder Dezimalpunkt verwendet werden." -#: utils/adt/formatting.c:1393 +#: utils/adt/formatting.c:1397 #, c-format msgid "\"%s\" is not a number" msgstr "»%s« ist keine Zahl" -#: utils/adt/formatting.c:1471 +#: utils/adt/formatting.c:1475 #, c-format msgid "case conversion failed: %s" msgstr "Groß/Klein-Umwandlung fehlgeschlagen: %s" -#: utils/adt/formatting.c:1536 +#: utils/adt/formatting.c:1540 #, c-format msgid "could not determine which collation to use for lower() function" msgstr "konnte die für die Funktion lower() zu verwendende Sortierfolge nicht bestimmen" -#: utils/adt/formatting.c:1661 +#: utils/adt/formatting.c:1665 #, c-format msgid "could not determine which collation to use for upper() function" msgstr "konnte die für die Funktion upper() zu verwendende Sortierfolge nicht bestimmen" -#: utils/adt/formatting.c:1787 +#: utils/adt/formatting.c:1791 #, c-format msgid "could not determine which collation to use for initcap() function" msgstr "konnte die für die Funktion initcap() zu verwendende Sortierfolge nicht bestimmen" -#: utils/adt/formatting.c:2157 +#: utils/adt/formatting.c:2161 #, c-format msgid "invalid combination of date conventions" msgstr "ungültige Kombination von Datumskonventionen" -#: utils/adt/formatting.c:2158 +#: utils/adt/formatting.c:2162 #, c-format msgid "Do not mix Gregorian and ISO week date conventions in a formatting template." msgstr "Die Gregorianische und die ISO-Konvention für Wochendaten können nicht einer Formatvorlage gemischt werden." -#: utils/adt/formatting.c:2175 +#: utils/adt/formatting.c:2179 #, c-format msgid "conflicting values for \"%s\" field in formatting string" msgstr "widersprüchliche Werte für das Feld »%s« in Formatzeichenkette" -#: utils/adt/formatting.c:2177 +#: utils/adt/formatting.c:2181 #, c-format msgid "This value contradicts a previous setting for the same field type." msgstr "Der Wert widerspricht einer vorherigen Einstellung für den selben Feldtyp." -#: utils/adt/formatting.c:2241 +#: utils/adt/formatting.c:2245 #, c-format msgid "source string too short for \"%s\" formatting field" msgstr "Quellzeichenkette zu kurz für Formatfeld »%s»" -#: utils/adt/formatting.c:2243 +#: utils/adt/formatting.c:2247 #, 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:2246 utils/adt/formatting.c:2260 +#: utils/adt/formatting.c:2250 utils/adt/formatting.c:2264 #, c-format msgid "If your source string is not fixed-width, try using the \"FM\" modifier." msgstr "Wenn die Quellzeichenkette keine feste Breite hat, versuchen Sie den Modifikator »FM«." -#: utils/adt/formatting.c:2256 utils/adt/formatting.c:2269 -#: utils/adt/formatting.c:2399 +#: utils/adt/formatting.c:2260 utils/adt/formatting.c:2273 +#: utils/adt/formatting.c:2403 #, c-format msgid "invalid value \"%s\" for \"%s\"" msgstr "ungültiger Wert »%s« für »%s«" -#: utils/adt/formatting.c:2258 +#: utils/adt/formatting.c:2262 #, c-format msgid "Field requires %d characters, but only %d could be parsed." msgstr "Feld benötigt %d Zeichen, aber nur %d konnten geparst werden." -#: utils/adt/formatting.c:2271 +#: utils/adt/formatting.c:2275 #, c-format msgid "Value must be an integer." msgstr "Der Wert muss eine ganze Zahl sein." -#: utils/adt/formatting.c:2276 +#: utils/adt/formatting.c:2280 #, c-format msgid "value for \"%s\" in source string is out of range" msgstr "Wert für »%s« in der Eingabezeichenkette ist außerhalb des gültigen Bereichs" -#: utils/adt/formatting.c:2278 +#: utils/adt/formatting.c:2282 #, c-format msgid "Value must be in the range %d to %d." msgstr "Der Wert muss im Bereich %d bis %d sein." -#: utils/adt/formatting.c:2401 +#: utils/adt/formatting.c:2405 #, c-format msgid "The given value did not match any of the allowed values for this field." msgstr "Der angegebene Wert stimmte mit keinem der für dieses Feld zulässigen Werte überein." -#: utils/adt/formatting.c:2586 utils/adt/formatting.c:2606 -#: utils/adt/formatting.c:2626 utils/adt/formatting.c:2646 -#: utils/adt/formatting.c:2665 utils/adt/formatting.c:2684 -#: utils/adt/formatting.c:2708 utils/adt/formatting.c:2726 -#: utils/adt/formatting.c:2744 utils/adt/formatting.c:2762 -#: utils/adt/formatting.c:2779 utils/adt/formatting.c:2796 +#: utils/adt/formatting.c:2590 utils/adt/formatting.c:2610 +#: utils/adt/formatting.c:2630 utils/adt/formatting.c:2650 +#: utils/adt/formatting.c:2669 utils/adt/formatting.c:2688 +#: utils/adt/formatting.c:2712 utils/adt/formatting.c:2730 +#: utils/adt/formatting.c:2748 utils/adt/formatting.c:2766 +#: utils/adt/formatting.c:2783 utils/adt/formatting.c:2800 #, c-format msgid "localized string format value too long" msgstr "lokalisierter Formatwert ist zu lang" -#: utils/adt/formatting.c:3126 +#: utils/adt/formatting.c:3130 #, c-format msgid "formatting field \"%s\" is only supported in to_char" msgstr "Formatfeld »%s« wird nur in to_char unterstützt" -#: utils/adt/formatting.c:3237 +#: utils/adt/formatting.c:3241 #, c-format msgid "invalid input string for \"Y,YYY\"" msgstr "ungültige Eingabe für »Y,YYY«" -#: utils/adt/formatting.c:3739 +#: utils/adt/formatting.c:3743 #, c-format msgid "hour \"%d\" is invalid for the 12-hour clock" msgstr "Stunde »%d« ist bei einer 12-Stunden-Uhr ungültig" -#: utils/adt/formatting.c:3741 +#: utils/adt/formatting.c:3745 #, c-format msgid "Use the 24-hour clock, or give an hour between 1 and 12." msgstr "Verwenden Sie die 24-Stunden-Uhr oder geben Sie eine Stunde zwischen 1 und 12 an." -#: utils/adt/formatting.c:3850 +#: utils/adt/formatting.c:3854 #, c-format msgid "cannot calculate day of year without year information" msgstr "kann Tag des Jahres nicht berechnen ohne Jahrinformationen" -#: utils/adt/formatting.c:4717 +#: utils/adt/formatting.c:4721 #, c-format msgid "\"EEEE\" not supported for input" msgstr "»E« wird nicht bei der Eingabe unterstützt" -#: utils/adt/formatting.c:4729 +#: utils/adt/formatting.c:4733 #, c-format msgid "\"RN\" not supported for input" msgstr "»RN« wird nicht bei der Eingabe unterstützt" @@ -20661,7 +20685,7 @@ msgid "oidvector has too many elements" msgstr "oidvector-Wert hat zu viele Elemente" -#: utils/adt/int.c:1347 utils/adt/int8.c:1453 utils/adt/numeric.c:1401 +#: utils/adt/int.c:1347 utils/adt/int8.c:1453 utils/adt/numeric.c:1393 #: utils/adt/timestamp.c:5195 utils/adt/timestamp.c:5276 #, c-format msgid "step size cannot equal zero" @@ -20681,7 +20705,7 @@ #: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031 #: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112 #: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 -#: utils/adt/int8.c:1358 utils/adt/int8.c:1393 utils/adt/numeric.c:3005 +#: utils/adt/int8.c:1358 utils/adt/int8.c:1393 utils/adt/numeric.c:2996 #: utils/adt/varbit.c:1646 #, c-format msgid "bigint out of range" @@ -21036,7 +21060,7 @@ msgid "levenshtein argument exceeds maximum length of %d characters" msgstr "Levenshtein-Argument überschreitet die maximale Länge von %d Zeichen" -#: utils/adt/like.c:183 utils/adt/selfuncs.c:5651 +#: utils/adt/like.c:183 utils/adt/selfuncs.c:5678 #, c-format msgid "could not determine which collation to use for ILIKE" msgstr "konnte die für ILIKE zu verwendende Sortierfolge nicht bestimmen" @@ -21267,84 +21291,84 @@ msgid "cannot subtract inet values of different sizes" msgstr "Subtraktion von »inet«-Werten unterschiedlicher Größe nicht möglich" -#: utils/adt/numeric.c:819 +#: utils/adt/numeric.c:811 #, c-format msgid "invalid sign in external \"numeric\" value" msgstr "ungültiges Vorzeichen in externem »numeric«-Wert" -#: utils/adt/numeric.c:825 +#: utils/adt/numeric.c:817 #, c-format msgid "invalid scale in external \"numeric\" value" msgstr "ungültige Skala in externem »numeric«-Wert" -#: utils/adt/numeric.c:834 +#: utils/adt/numeric.c:826 #, c-format msgid "invalid digit in external \"numeric\" value" msgstr "ungültige Ziffer in externem »numeric«-Wert" -#: utils/adt/numeric.c:1024 utils/adt/numeric.c:1038 +#: utils/adt/numeric.c:1016 utils/adt/numeric.c:1030 #, c-format msgid "NUMERIC precision %d must be between 1 and %d" msgstr "Präzision von NUMERIC (%d) muss zwischen 1 und %d liegen" -#: utils/adt/numeric.c:1029 +#: utils/adt/numeric.c:1021 #, c-format msgid "NUMERIC scale %d must be between 0 and precision %d" msgstr "Skala von NUMERIC (%d) muss zwischen 0 und %d liegen" -#: utils/adt/numeric.c:1047 +#: utils/adt/numeric.c:1039 #, c-format msgid "invalid NUMERIC type modifier" msgstr "ungültiker Modifikator für Typ NUMERIC" -#: utils/adt/numeric.c:1379 +#: utils/adt/numeric.c:1371 #, c-format msgid "start value cannot be NaN" msgstr "Startwert kann nicht NaN sein" -#: utils/adt/numeric.c:1384 +#: utils/adt/numeric.c:1376 #, c-format msgid "stop value cannot be NaN" msgstr "Stoppwert kann nicht NaN sein" -#: utils/adt/numeric.c:1394 +#: utils/adt/numeric.c:1386 #, c-format msgid "step size cannot be NaN" msgstr "Schrittgröße kann nicht NaN sein" -#: utils/adt/numeric.c:2589 utils/adt/numeric.c:5561 utils/adt/numeric.c:6006 -#: utils/adt/numeric.c:7710 utils/adt/numeric.c:8135 utils/adt/numeric.c:8249 -#: utils/adt/numeric.c:8322 +#: utils/adt/numeric.c:2588 utils/adt/numeric.c:5551 utils/adt/numeric.c:5985 +#: utils/adt/numeric.c:7691 utils/adt/numeric.c:8157 utils/adt/numeric.c:8283 +#: utils/adt/numeric.c:8356 #, c-format msgid "value overflows numeric format" msgstr "Wert verursacht Überlauf im »numeric«-Format" -#: utils/adt/numeric.c:2931 +#: utils/adt/numeric.c:2926 #, c-format msgid "cannot convert NaN to integer" msgstr "kann NaN nicht in integer umwandeln" -#: utils/adt/numeric.c:2997 +#: utils/adt/numeric.c:2988 #, c-format msgid "cannot convert NaN to bigint" msgstr "kann NaN nicht in bigint umwandeln" -#: utils/adt/numeric.c:3042 +#: utils/adt/numeric.c:3033 #, c-format msgid "cannot convert NaN to smallint" msgstr "kann NaN nicht in smallint umwandeln" -#: utils/adt/numeric.c:3079 utils/adt/numeric.c:3150 +#: utils/adt/numeric.c:3069 utils/adt/numeric.c:3140 #, c-format msgid "cannot convert infinity to numeric" msgstr "kann Unendlich nicht in numeric umwandeln" -#: utils/adt/numeric.c:6076 +#: utils/adt/numeric.c:6055 #, c-format msgid "numeric field overflow" msgstr "Feldüberlauf bei Typ »numeric«" -#: utils/adt/numeric.c:6077 +#: utils/adt/numeric.c:6056 #, c-format msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d." msgstr "Ein Feld mit Präzision %d, Skala %d muss beim Runden einen Betrag von weniger als %s%d ergeben." @@ -21385,92 +21409,92 @@ msgid "percentile value %g is not between 0 and 1" msgstr "Perzentilwert %g ist nicht zwischen 0 und 1" -#: utils/adt/pg_locale.c:1260 +#: utils/adt/pg_locale.c:1264 #, c-format msgid "Apply system library package updates." msgstr "Aktualisieren Sie die Systembibliotheken." -#: utils/adt/pg_locale.c:1475 +#: utils/adt/pg_locale.c:1479 #, c-format msgid "could not create locale \"%s\": %m" msgstr "konnte Locale »%s« nicht erzeugen: %m" -#: utils/adt/pg_locale.c:1478 +#: utils/adt/pg_locale.c:1482 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." msgstr "Das Betriebssystem konnte keine Locale-Daten für den Locale-Namen »%s« finden." -#: utils/adt/pg_locale.c:1579 +#: utils/adt/pg_locale.c:1583 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "Sortierfolgen mit unterschiedlichen »collate«- und »ctype«-Werten werden auf dieser Plattform nicht unterstützt" -#: utils/adt/pg_locale.c:1588 +#: utils/adt/pg_locale.c:1592 #, c-format msgid "collation provider LIBC is not supported on this platform" msgstr "Sortierfolgen-Provider LIBC wird auf dieser Plattform nicht unterstützt" -#: utils/adt/pg_locale.c:1600 +#: utils/adt/pg_locale.c:1604 #, c-format msgid "collations with different collate and ctype values are not supported by ICU" msgstr "Sortierfolgen mit unterschiedlichen »collate«- und »ctype«-Werten werden von ICU nicht unterstützt" -#: utils/adt/pg_locale.c:1606 utils/adt/pg_locale.c:1694 +#: utils/adt/pg_locale.c:1610 utils/adt/pg_locale.c:1698 #, c-format msgid "could not open collator for locale \"%s\": %s" msgstr "konnte Collator für Locale »%s« nicht öffnen: %s" -#: utils/adt/pg_locale.c:1617 +#: utils/adt/pg_locale.c:1621 #, c-format msgid "ICU is not supported in this build" msgstr "ICU wird in dieser Installation nicht unterstützt" -#: utils/adt/pg_locale.c:1618 +#: utils/adt/pg_locale.c:1622 #, c-format msgid "You need to rebuild PostgreSQL using --with-icu." msgstr "Sie müssen PostgreSQL mit --with-icu neu bauen." -#: utils/adt/pg_locale.c:1638 +#: utils/adt/pg_locale.c:1642 #, c-format msgid "collation \"%s\" has no actual version, but a version was specified" msgstr "Sortierfolge »%s« hat keine tatsächliche Version, aber eine Version wurde angegeben" -#: utils/adt/pg_locale.c:1645 +#: utils/adt/pg_locale.c:1649 #, c-format msgid "collation \"%s\" has version mismatch" msgstr "Version von Sortierfolge »%s« stimmt nicht überein" -#: utils/adt/pg_locale.c:1647 +#: utils/adt/pg_locale.c:1651 #, c-format msgid "The collation in the database was created using version %s, but the operating system provides version %s." msgstr "Die Sortierfolge in der Datenbank wurde mit Version %s erzeugt, aber das Betriebssystem hat Version %s." -#: utils/adt/pg_locale.c:1650 +#: utils/adt/pg_locale.c:1654 #, c-format msgid "Rebuild all objects affected by this collation and run ALTER COLLATION %s REFRESH VERSION, or build PostgreSQL with the right library version." msgstr "Bauen Sie alle von dieser Sortierfolge beinflussten Objekte neu und führen Sie ALTER COLLATION %s REFRESH VERSION aus, oder bauen Sie PostgreSQL mit der richtigen Bibliotheksversion." -#: utils/adt/pg_locale.c:1734 +#: utils/adt/pg_locale.c:1738 #, c-format msgid "could not open ICU converter for encoding \"%s\": %s" msgstr "konnte ICU-Konverter für Kodierung »%s« nicht öffnen: %s" -#: utils/adt/pg_locale.c:1765 utils/adt/pg_locale.c:1774 +#: utils/adt/pg_locale.c:1769 utils/adt/pg_locale.c:1778 #, c-format msgid "ucnv_toUChars failed: %s" msgstr "ucnv_toUChars fehlgeschlagen: %s" -#: utils/adt/pg_locale.c:1803 utils/adt/pg_locale.c:1812 +#: utils/adt/pg_locale.c:1807 utils/adt/pg_locale.c:1816 #, c-format msgid "ucnv_fromUChars failed: %s" msgstr "ucnv_fromUChars fehlgeschlagen: %s" -#: utils/adt/pg_locale.c:1985 +#: utils/adt/pg_locale.c:1989 #, c-format msgid "invalid multibyte character for locale" msgstr "ungültiges Mehrbytezeichen für Locale" -#: utils/adt/pg_locale.c:1986 +#: utils/adt/pg_locale.c:1990 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "Die LC_CTYPE-Locale des Servers ist wahrscheinlich mit der Kodierung der Datenbank inkompatibel." @@ -21787,12 +21811,12 @@ msgid "rule \"%s\" has unsupported event type %d" msgstr "Regel »%s« hat nicht unterstützten Ereignistyp %d" -#: utils/adt/selfuncs.c:5636 +#: utils/adt/selfuncs.c:5663 #, c-format msgid "case insensitive matching not supported on type bytea" msgstr "Mustersuche ohne Rücksicht auf Groß-/Kleinschreibung wird für Typ bytea nicht unterstützt" -#: utils/adt/selfuncs.c:5738 +#: utils/adt/selfuncs.c:5765 #, c-format msgid "regular-expression matching not supported on type bytea" msgstr "Mustersuche mit regulären Ausdrücken wird für Typ bytea nicht unterstützt" @@ -21956,10 +21980,10 @@ msgid "gtsvector_in not implemented" msgstr "gtsvector_in ist nicht implementiert" -#: utils/adt/tsquery.c:166 +#: utils/adt/tsquery.c:166 utils/adt/tsquery_op.c:123 #, c-format -msgid "distance in phrase operator should not be greater than %d" -msgstr "Abstand im Phrasenoperator sollte nicht größer als %d sein" +msgid "distance in phrase operator must be an integer value between zero and %d inclusive" +msgstr "Abstand im Phrasenoperator muss eine ganze Zahl zwischen einschließlich null und %d sein" #: utils/adt/tsquery.c:254 utils/adt/tsquery.c:513 #: utils/adt/tsvector_parser.c:141 @@ -22002,11 +22026,6 @@ 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" -#: utils/adt/tsquery_op.c:123 -#, c-format -msgid "distance in phrase operator should be non-negative and less than %d" -msgstr "Abstand im Phrasenoperator sollte nicht negativ und kleiner als %d sein" - #: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" @@ -22476,17 +22495,17 @@ msgid "cached plan must not change result type" msgstr "gecachter Plan darf den Ergebnistyp nicht ändern" -#: utils/cache/relcache.c:5939 +#: utils/cache/relcache.c:6047 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "konnte Initialisierungsdatei für Relationscache »%s« nicht erzeugen: %m" -#: utils/cache/relcache.c:5941 +#: utils/cache/relcache.c:6049 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht." -#: utils/cache/relcache.c:6261 +#: utils/cache/relcache.c:6369 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "konnte Cache-Datei »%s« nicht löschen: %m" @@ -22496,37 +22515,37 @@ msgid "cannot PREPARE a transaction that modified relation mapping" msgstr "PREPARE kann nicht in einer Transaktion ausgeführt werden, die das Relation-Mapping geändert hat" -#: utils/cache/relmapper.c:652 utils/cache/relmapper.c:754 +#: utils/cache/relmapper.c:652 utils/cache/relmapper.c:760 #, c-format msgid "could not open relation mapping file \"%s\": %m" msgstr "konnte Relation-Mapping-Datei »%s« nicht öffnen: %m" -#: utils/cache/relmapper.c:666 +#: utils/cache/relmapper.c:669 #, c-format msgid "could not read relation mapping file \"%s\": %m" msgstr "konnte nicht aus Relation-Mapping-Datei »%s« lesen: %m" -#: utils/cache/relmapper.c:677 +#: utils/cache/relmapper.c:683 #, c-format msgid "relation mapping file \"%s\" contains invalid data" msgstr "Relation-Mapping-Datei »%s« enthält ungültige Daten" -#: utils/cache/relmapper.c:687 +#: utils/cache/relmapper.c:693 #, c-format msgid "relation mapping file \"%s\" contains incorrect checksum" msgstr "Relation-Mapping-Datei »%s« enthält falsche Prüfsumme" -#: utils/cache/relmapper.c:788 +#: utils/cache/relmapper.c:794 #, c-format msgid "could not write to relation mapping file \"%s\": %m" msgstr "konnte nicht in Relation-Mapping-Datei »%s« schreiben: %m" -#: utils/cache/relmapper.c:803 +#: utils/cache/relmapper.c:809 #, c-format msgid "could not fsync relation mapping file \"%s\": %m" msgstr "konnte Relation-Mapping-Datei »%s« nicht fsyncen: %m" -#: utils/cache/relmapper.c:810 +#: utils/cache/relmapper.c:816 #, c-format msgid "could not close relation mapping file \"%s\": %m" msgstr "konnte Relation-Mapping-Datei »%s« nicht schließen: %m" @@ -24294,7 +24313,7 @@ #: utils/misc/guc.c:2958 msgid "Sets the planner's estimate of the cost of passing each tuple (row) from worker to master backend." -msgstr "Setzt den vom Planer geschätzten Aufwand, um eine Zeile vom Arbeitsprozess and das Master-Backend zu senden." +msgstr "Setzt den vom Planer geschätzten Aufwand, um eine Zeile vom Arbeitsprozess an das Master-Backend zu senden." #: utils/misc/guc.c:2968 msgid "Sets the planner's estimate of the cost of starting up worker processes for parallel query." diff -Nru postgresql-10-10.17/src/backend/po/fr.po postgresql-10-10.19/src/backend/po/fr.po --- postgresql-10-10.17/src/backend/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2021-04-30 20:56+0000\n" -"PO-Revision-Date: 2021-05-02 17:27+0200\n" +"POT-Creation-Date: 2021-10-05 15:25+0000\n" +"PO-Revision-Date: 2021-10-06 11:37+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" "Language: fr\n" @@ -17,13 +17,13 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" #: ../common/config_info.c:130 ../common/config_info.c:138 ../common/config_info.c:146 ../common/config_info.c:154 ../common/config_info.c:162 ../common/config_info.c:170 ../common/config_info.c:178 ../common/config_info.c:186 ../common/config_info.c:194 msgid "not recorded" msgstr "non enregistré" -#: ../common/controldata_utils.c:58 commands/copy.c:3198 commands/extension.c:3350 utils/adt/genfile.c:128 +#: ../common/controldata_utils.c:58 commands/copy.c:3198 commands/extension.c:3358 utils/adt/genfile.c:128 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "n'a pas pu ouvrir le fichier « %s » pour une lecture : %m" @@ -33,8 +33,8 @@ msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" -#: ../common/controldata_utils.c:75 access/transam/timeline.c:142 access/transam/timeline.c:362 access/transam/xlog.c:3418 access/transam/xlog.c:10973 access/transam/xlog.c:10986 access/transam/xlog.c:11403 access/transam/xlog.c:11446 access/transam/xlog.c:11485 access/transam/xlog.c:11528 access/transam/xlogfuncs.c:668 access/transam/xlogfuncs.c:687 commands/extension.c:3360 libpq/hba.c:499 replication/logical/origin.c:726 -#: replication/logical/origin.c:756 replication/logical/reorderbuffer.c:3251 replication/walsender.c:514 storage/file/buffile.c:269 storage/file/copydir.c:204 utils/adt/genfile.c:145 utils/adt/misc.c:935 +#: ../common/controldata_utils.c:75 access/transam/timeline.c:142 access/transam/timeline.c:362 access/transam/xlog.c:3442 access/transam/xlog.c:11135 access/transam/xlog.c:11148 access/transam/xlog.c:11565 access/transam/xlog.c:11608 access/transam/xlog.c:11647 access/transam/xlog.c:11690 access/transam/xlogfuncs.c:668 access/transam/xlogfuncs.c:687 commands/extension.c:3368 libpq/hba.c:499 replication/logical/origin.c:726 +#: replication/logical/origin.c:756 replication/logical/reorderbuffer.c:3275 replication/walsender.c:514 storage/file/buffile.c:269 storage/file/copydir.c:204 utils/adt/genfile.c:145 utils/adt/misc.c:935 #, c-format msgid "could not read file \"%s\": %m" msgstr "n'a pas pu lire le fichier « %s » : %m" @@ -162,9 +162,9 @@ msgid "could not close directory \"%s\": %s\n" msgstr "n'a pas pu fermer le répertoire « %s » : %s\n" -#: ../common/psprintf.c:180 ../port/path.c:630 ../port/path.c:668 ../port/path.c:685 access/transam/twophase.c:1320 access/transam/xlog.c:6431 lib/stringinfo.c:258 libpq/auth.c:1131 libpq/auth.c:1502 libpq/auth.c:1570 libpq/auth.c:2088 postmaster/bgworker.c:348 postmaster/bgworker.c:967 postmaster/postmaster.c:2472 postmaster/postmaster.c:2494 postmaster/postmaster.c:4063 postmaster/postmaster.c:4779 postmaster/postmaster.c:4854 -#: postmaster/postmaster.c:5586 postmaster/postmaster.c:5946 replication/libpqwalreceiver/libpqwalreceiver.c:280 replication/logical/logical.c:175 storage/buffer/localbuf.c:436 storage/file/fd.c:793 storage/file/fd.c:1222 storage/file/fd.c:1340 storage/file/fd.c:2078 storage/ipc/procarray.c:1069 storage/ipc/procarray.c:1557 storage/ipc/procarray.c:1564 storage/ipc/procarray.c:1987 storage/ipc/procarray.c:2598 utils/adt/formatting.c:1571 -#: utils/adt/formatting.c:1696 utils/adt/formatting.c:1822 utils/adt/pg_locale.c:470 utils/adt/pg_locale.c:634 utils/adt/regexp.c:223 utils/adt/varlena.c:4703 utils/adt/varlena.c:4724 utils/fmgr/dfmgr.c:221 utils/hash/dynahash.c:444 utils/hash/dynahash.c:553 utils/hash/dynahash.c:1065 utils/mb/mbutils.c:382 utils/mb/mbutils.c:409 utils/mb/mbutils.c:738 utils/mb/mbutils.c:764 utils/misc/guc.c:4005 utils/misc/guc.c:4021 utils/misc/guc.c:4034 +#: ../common/psprintf.c:180 ../port/path.c:630 ../port/path.c:668 ../port/path.c:685 access/transam/twophase.c:1320 access/transam/xlog.c:6478 lib/stringinfo.c:258 libpq/auth.c:1155 libpq/auth.c:1534 libpq/auth.c:1602 libpq/auth.c:2120 postmaster/bgworker.c:350 postmaster/bgworker.c:978 postmaster/postmaster.c:2472 postmaster/postmaster.c:2494 postmaster/postmaster.c:4063 postmaster/postmaster.c:4779 postmaster/postmaster.c:4854 +#: postmaster/postmaster.c:5586 postmaster/postmaster.c:5946 replication/libpqwalreceiver/libpqwalreceiver.c:280 replication/logical/logical.c:175 storage/buffer/localbuf.c:436 storage/file/fd.c:793 storage/file/fd.c:1222 storage/file/fd.c:1340 storage/file/fd.c:2078 storage/ipc/procarray.c:1069 storage/ipc/procarray.c:1557 storage/ipc/procarray.c:1564 storage/ipc/procarray.c:1987 storage/ipc/procarray.c:2598 utils/adt/formatting.c:1575 +#: utils/adt/formatting.c:1700 utils/adt/formatting.c:1826 utils/adt/pg_locale.c:474 utils/adt/pg_locale.c:638 utils/adt/regexp.c:223 utils/adt/varlena.c:4703 utils/adt/varlena.c:4724 utils/fmgr/dfmgr.c:221 utils/hash/dynahash.c:444 utils/hash/dynahash.c:553 utils/hash/dynahash.c:1065 utils/mb/mbutils.c:382 utils/mb/mbutils.c:409 utils/mb/mbutils.c:738 utils/mb/mbutils.c:764 utils/misc/guc.c:4005 utils/misc/guc.c:4021 utils/misc/guc.c:4034 #: utils/misc/guc.c:7039 utils/misc/tzparser.c:468 utils/mmgr/aset.c:404 utils/mmgr/dsa.c:701 utils/mmgr/dsa.c:723 utils/mmgr/dsa.c:804 utils/mmgr/mcxt.c:725 utils/mmgr/mcxt.c:760 utils/mmgr/mcxt.c:797 utils/mmgr/mcxt.c:834 utils/mmgr/mcxt.c:868 utils/mmgr/mcxt.c:897 utils/mmgr/mcxt.c:931 utils/mmgr/mcxt.c:982 utils/mmgr/mcxt.c:1016 utils/mmgr/mcxt.c:1050 #, c-format msgid "out of memory" @@ -237,7 +237,7 @@ msgid "could not look up effective user ID %ld: %s" msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s" -#: ../common/username.c:45 libpq/auth.c:2035 +#: ../common/username.c:45 libpq/auth.c:2067 msgid "user does not exist" msgstr "l'utilisateur n'existe pas" @@ -363,7 +363,7 @@ msgid "request for BRIN range summarization for index \"%s\" page %u was not recorded" msgstr "la demande de résumé d'intervalle BRIN pour l'index « %s » à la page %u n'a pas été enregistrée" -#: access/brin/brin.c:874 access/brin/brin.c:951 access/gin/ginfast.c:990 access/transam/xlog.c:10387 access/transam/xlog.c:10912 access/transam/xlogfuncs.c:296 access/transam/xlogfuncs.c:323 access/transam/xlogfuncs.c:362 access/transam/xlogfuncs.c:383 access/transam/xlogfuncs.c:404 access/transam/xlogfuncs.c:474 access/transam/xlogfuncs.c:530 +#: access/brin/brin.c:874 access/brin/brin.c:951 access/gin/ginfast.c:990 access/transam/xlog.c:10549 access/transam/xlog.c:11074 access/transam/xlogfuncs.c:296 access/transam/xlogfuncs.c:323 access/transam/xlogfuncs.c:362 access/transam/xlogfuncs.c:383 access/transam/xlogfuncs.c:404 access/transam/xlogfuncs.c:474 access/transam/xlogfuncs.c:530 #, c-format msgid "recovery is in progress" msgstr "restauration en cours" @@ -388,7 +388,7 @@ msgid "could not open parent table of index %s" msgstr "n'a pas pu ouvrir la table parent de l'index %s" -#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:364 access/brin/brin_pageops.c:830 access/gin/ginentrypage.c:110 access/gist/gist.c:1369 access/nbtree/nbtinsert.c:577 access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1933 +#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:364 access/brin/brin_pageops.c:830 access/gin/ginentrypage.c:110 access/gist/gist.c:1369 access/nbtree/nbtinsert.c:577 access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1938 access/spgist/spgdoinsert.c:2206 #, c-format msgid "index row size %zu exceeds maximum %zu for index \"%s\"" msgstr "la taille de la ligne index, %zu, dépasse le maximum, %zu, pour l'index « %s »" @@ -604,7 +604,7 @@ msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Pour corriger ceci, faites un REINDEX INDEX « %s »." -#: access/gin/ginutil.c:134 executor/execExpr.c:1780 utils/adt/arrayfuncs.c:3815 utils/adt/arrayfuncs.c:6335 utils/adt/rowtypes.c:927 +#: access/gin/ginutil.c:134 executor/execExpr.c:1811 utils/adt/arrayfuncs.c:3817 utils/adt/arrayfuncs.c:6343 utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" msgstr "n'a pas pu identifier une fonction de comparaison pour le type %s" @@ -690,7 +690,7 @@ msgid "index row size %zu exceeds hash maximum %zu" msgstr "la taille de la ligne index, %zu, dépasse le hachage maximum, %zu" -#: access/hash/hashinsert.c:84 access/spgist/spgdoinsert.c:1937 access/spgist/spgutils.c:708 +#: access/hash/hashinsert.c:84 access/spgist/spgdoinsert.c:1942 access/spgist/spgdoinsert.c:2210 access/spgist/spgutils.c:708 #, c-format msgid "Values larger than a buffer page cannot be indexed." msgstr "Les valeurs plus larges qu'une page de tampon ne peuvent pas être indexées." @@ -708,7 +708,7 @@ #: access/hash/hashsearch.c:250 #, c-format msgid "hash indexes do not support whole-index scans" -msgstr "les index hâchés ne supportent pas les parcours complets d'index" +msgstr "les index hachés ne supportent pas les parcours complets d'index" #: access/hash/hashutil.c:277 #, c-format @@ -742,32 +742,32 @@ msgid "\"%s\" is a composite type" msgstr "« %s » est un type composite" -#: access/heap/heapam.c:2605 +#: access/heap/heapam.c:2609 #, c-format msgid "cannot insert tuples during a parallel operation" msgstr "ne peut pas insérer les lignes lors d'une opération parallèle" -#: access/heap/heapam.c:3050 +#: access/heap/heapam.c:3054 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "ne peut pas supprimer les lignes lors d'une opération parallèle" -#: access/heap/heapam.c:3096 +#: access/heap/heapam.c:3100 #, c-format msgid "attempted to delete invisible tuple" msgstr "a tenté de supprimer la ligne invisible" -#: access/heap/heapam.c:3526 access/heap/heapam.c:6301 +#: access/heap/heapam.c:3534 access/heap/heapam.c:6309 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "ne peut pas mettre à jour les lignes lors d'une opération parallèle" -#: access/heap/heapam.c:3674 +#: access/heap/heapam.c:3682 #, c-format msgid "attempted to update invisible tuple" msgstr "a tenté de mettre à jour la ligne invisible" -#: access/heap/heapam.c:4974 access/heap/heapam.c:5012 access/heap/heapam.c:5264 executor/execMain.c:2648 +#: access/heap/heapam.c:4982 access/heap/heapam.c:5020 access/heap/heapam.c:5272 executor/execMain.c:2654 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "n'a pas pu obtenir un verrou sur la relation « %s »" @@ -782,12 +782,12 @@ msgid "could not write to file \"%s\", wrote %d of %d: %m" msgstr "n'a pas pu écrire le fichier « %s », a écrit %d de %d : %m" -#: access/heap/rewriteheap.c:981 access/heap/rewriteheap.c:1204 access/heap/rewriteheap.c:1304 access/transam/timeline.c:428 access/transam/timeline.c:508 access/transam/xlog.c:3283 access/transam/xlog.c:3451 replication/logical/snapbuild.c:1653 replication/slot.c:1319 replication/slot.c:1415 storage/file/fd.c:651 storage/file/fd.c:3244 storage/smgr/md.c:1078 storage/smgr/md.c:1323 storage/smgr/md.c:1497 utils/misc/guc.c:7061 +#: access/heap/rewriteheap.c:981 access/heap/rewriteheap.c:1204 access/heap/rewriteheap.c:1304 access/transam/timeline.c:428 access/transam/timeline.c:508 access/transam/xlog.c:3307 access/transam/xlog.c:3475 replication/logical/snapbuild.c:1653 replication/slot.c:1319 replication/slot.c:1415 storage/file/fd.c:651 storage/file/fd.c:3244 storage/smgr/md.c:1079 storage/smgr/md.c:1324 storage/smgr/md.c:1498 utils/misc/guc.c:7061 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier « %s » : %m" -#: access/heap/rewriteheap.c:1036 access/heap/rewriteheap.c:1156 access/transam/timeline.c:329 access/transam/timeline.c:483 access/transam/xlog.c:3237 access/transam/xlog.c:3389 access/transam/xlog.c:10722 access/transam/xlog.c:10760 access/transam/xlog.c:11164 postmaster/postmaster.c:4546 replication/logical/origin.c:582 replication/slot.c:1266 storage/file/copydir.c:176 storage/smgr/md.c:328 utils/time/snapmgr.c:1297 +#: access/heap/rewriteheap.c:1036 access/heap/rewriteheap.c:1156 access/transam/timeline.c:329 access/transam/timeline.c:483 access/transam/xlog.c:3261 access/transam/xlog.c:3413 access/transam/xlog.c:10884 access/transam/xlog.c:10922 access/transam/xlog.c:11326 postmaster/postmaster.c:4546 replication/logical/origin.c:582 replication/slot.c:1266 storage/file/copydir.c:176 storage/smgr/md.c:328 utils/time/snapmgr.c:1297 #, c-format msgid "could not create file \"%s\": %m" msgstr "n'a pas pu créer le fichier « %s » : %m" @@ -797,24 +797,24 @@ msgid "could not truncate file \"%s\" to %u: %m" msgstr "n'a pas pu tronquer le fichier « %s » en %u : %m" -#: access/heap/rewriteheap.c:1174 replication/walsender.c:494 storage/smgr/md.c:2027 +#: access/heap/rewriteheap.c:1174 replication/walsender.c:494 storage/smgr/md.c:2028 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "n'a pas pu trouver la fin du fichier « %s » : %m" -#: access/heap/rewriteheap.c:1191 access/transam/timeline.c:384 access/transam/timeline.c:420 access/transam/timeline.c:500 access/transam/xlog.c:3269 access/transam/xlog.c:3442 postmaster/postmaster.c:4556 postmaster/postmaster.c:4566 replication/logical/origin.c:597 replication/logical/origin.c:642 replication/logical/origin.c:664 replication/logical/snapbuild.c:1629 replication/slot.c:1301 storage/file/buffile.c:343 +#: access/heap/rewriteheap.c:1191 access/transam/timeline.c:384 access/transam/timeline.c:420 access/transam/timeline.c:500 access/transam/xlog.c:3293 access/transam/xlog.c:3466 postmaster/postmaster.c:4556 postmaster/postmaster.c:4566 replication/logical/origin.c:597 replication/logical/origin.c:642 replication/logical/origin.c:664 replication/logical/snapbuild.c:1629 replication/slot.c:1301 storage/file/buffile.c:343 #: storage/file/copydir.c:217 utils/init/miscinit.c:1253 utils/init/miscinit.c:1264 utils/init/miscinit.c:1272 utils/misc/guc.c:7022 utils/misc/guc.c:7053 utils/misc/guc.c:8901 utils/misc/guc.c:8915 utils/time/snapmgr.c:1302 utils/time/snapmgr.c:1309 #, c-format msgid "could not write to file \"%s\": %m" msgstr "n'a pas pu écrire dans le fichier « %s » : %m" -#: access/heap/rewriteheap.c:1278 access/transam/xlogarchive.c:112 access/transam/xlogarchive.c:457 postmaster/postmaster.c:1281 postmaster/syslogger.c:1455 replication/logical/origin.c:569 replication/logical/reorderbuffer.c:2753 replication/logical/snapbuild.c:1570 replication/logical/snapbuild.c:1976 replication/slot.c:1385 storage/file/fd.c:702 storage/ipc/dsm.c:322 storage/smgr/md.c:473 storage/smgr/md.c:517 storage/smgr/md.c:1444 +#: access/heap/rewriteheap.c:1278 access/transam/xlogarchive.c:112 access/transam/xlogarchive.c:457 postmaster/postmaster.c:1281 postmaster/syslogger.c:1455 replication/logical/origin.c:569 replication/logical/reorderbuffer.c:2777 replication/logical/snapbuild.c:1570 replication/logical/snapbuild.c:1976 replication/slot.c:1385 storage/file/fd.c:702 storage/ipc/dsm.c:322 storage/smgr/md.c:473 storage/smgr/md.c:517 storage/smgr/md.c:1445 #, c-format msgid "could not remove file \"%s\": %m" msgstr "n'a pas pu supprimer le fichier « %s » : %m" -#: access/heap/rewriteheap.c:1293 access/transam/timeline.c:110 access/transam/timeline.c:250 access/transam/timeline.c:348 access/transam/xlog.c:3213 access/transam/xlog.c:3333 access/transam/xlog.c:3374 access/transam/xlog.c:3653 access/transam/xlog.c:3756 access/transam/xlogutils.c:706 postmaster/syslogger.c:1464 replication/basebackup.c:490 replication/basebackup.c:1236 replication/logical/origin.c:719 -#: replication/logical/reorderbuffer.c:2269 replication/logical/reorderbuffer.c:2525 replication/logical/reorderbuffer.c:3231 replication/logical/snapbuild.c:1615 replication/logical/snapbuild.c:1718 replication/slot.c:1400 replication/walsender.c:487 replication/walsender.c:2403 storage/file/copydir.c:169 storage/file/fd.c:634 storage/file/fd.c:3156 storage/file/fd.c:3223 storage/smgr/md.c:650 utils/error/elog.c:1872 +#: access/heap/rewriteheap.c:1293 access/transam/timeline.c:110 access/transam/timeline.c:250 access/transam/timeline.c:348 access/transam/xlog.c:3237 access/transam/xlog.c:3357 access/transam/xlog.c:3398 access/transam/xlog.c:3677 access/transam/xlog.c:3780 access/transam/xlogutils.c:706 postmaster/syslogger.c:1464 replication/basebackup.c:490 replication/basebackup.c:1236 replication/logical/origin.c:719 +#: replication/logical/reorderbuffer.c:2291 replication/logical/reorderbuffer.c:2548 replication/logical/reorderbuffer.c:3255 replication/logical/snapbuild.c:1615 replication/logical/snapbuild.c:1718 replication/slot.c:1400 replication/walsender.c:487 replication/walsender.c:2409 storage/file/copydir.c:169 storage/file/fd.c:634 storage/file/fd.c:3156 storage/file/fd.c:3223 storage/smgr/md.c:651 utils/error/elog.c:1872 #: utils/init/miscinit.c:1177 utils/init/miscinit.c:1312 utils/init/miscinit.c:1389 utils/misc/guc.c:7278 utils/misc/guc.c:7311 #, c-format msgid "could not open file \"%s\": %m" @@ -946,14 +946,14 @@ "la base de données n'accepte pas de commandes qui génèrent de nouveaux MultiXactId pour éviter des pertes de données à cause de la réinitialisation de l'identifiant de transaction dans\n" "la base de données d'OID %u" -#: access/transam/multixact.c:1028 access/transam/multixact.c:2320 +#: access/transam/multixact.c:1028 access/transam/multixact.c:2323 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "database \"%s\" must be vacuumed before %u more MultiXactIds are used" msgstr[0] "un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de %u MultiXactId" msgstr[1] "un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de %u MultiXactId" -#: access/transam/multixact.c:1037 access/transam/multixact.c:2329 +#: access/transam/multixact.c:1037 access/transam/multixact.c:2332 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" @@ -989,7 +989,7 @@ msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Exécute un VACUUM sur la base dans cette base avec une configuration réduite pour vacuum_multixact_freeze_min_age et vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1277 +#: access/transam/multixact.c:1279 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "le MultiXactId %u n'existe plus - wraparound apparent" @@ -999,12 +999,12 @@ msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "le MultiXactId %u n'a pas encore été créé : wraparound apparent" -#: access/transam/multixact.c:2270 +#: access/transam/multixact.c:2273 #, c-format msgid "MultiXactId wrap limit is %u, limited by database with OID %u" msgstr "La limite de réinitialisation MultiXactId est %u, limité par la base de données d'OID %u" -#: access/transam/multixact.c:2325 access/transam/multixact.c:2334 access/transam/varsup.c:146 access/transam/varsup.c:153 access/transam/varsup.c:405 access/transam/varsup.c:412 +#: access/transam/multixact.c:2328 access/transam/multixact.c:2337 access/transam/varsup.c:146 access/transam/varsup.c:153 access/transam/varsup.c:405 access/transam/varsup.c:412 #, c-format msgid "" "To avoid a database shutdown, execute a database-wide VACUUM in that database.\n" @@ -1014,71 +1014,71 @@ "base. Vous pouvez avoir besoin d'enregistrer ou d'annuler les anciennes\n" "transactions préparées." -#: access/transam/multixact.c:2604 +#: access/transam/multixact.c:2607 #, c-format msgid "oldest MultiXactId member is at offset %u" msgstr "le membre le plus ancien du MultiXactId est au décalage %u" -#: access/transam/multixact.c:2608 +#: access/transam/multixact.c:2611 #, c-format msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk" msgstr "Les protections sur la réutilisation d'un membre MultiXact sont désactivées car le plus ancien MultiXact géré par un checkpoint, %u, n'existe pas sur disque" -#: access/transam/multixact.c:2630 +#: access/transam/multixact.c:2633 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "Les protections sur la réutilisation d'un membre MultiXact sont maintenant activées" -#: access/transam/multixact.c:2633 +#: access/transam/multixact.c:2636 #, c-format msgid "MultiXact member stop limit is now %u based on MultiXact %u" msgstr "La limite d'arrêt d'un membre MultiXact est maintenant %u, basée sur le MultiXact %u" -#: access/transam/multixact.c:3021 +#: access/transam/multixact.c:3024 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" msgstr "plus ancien MultiXact introuvable %u, plus récent MultiXact %u, ignore le troncage" -#: access/transam/multixact.c:3039 +#: access/transam/multixact.c:3042 #, c-format msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" msgstr "ne peut pas tronquer jusqu'au MutiXact %u car il n'existe pas sur disque, ignore le troncage" -#: access/transam/multixact.c:3365 +#: access/transam/multixact.c:3368 #, c-format msgid "invalid MultiXactId: %u" msgstr "MultiXactId invalide : %u" -#: access/transam/parallel.c:608 +#: access/transam/parallel.c:619 #, c-format msgid "parallel worker failed to initialize" msgstr "échec de l'initialisation du worker parallèle" -#: access/transam/parallel.c:609 +#: access/transam/parallel.c:620 #, c-format msgid "More details may be available in the server log." msgstr "Plus de détails sont disponibles dans les traces du serveur." -#: access/transam/parallel.c:670 +#: access/transam/parallel.c:681 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "postmaster a quitté pendant une transaction parallèle" -#: access/transam/parallel.c:857 +#: access/transam/parallel.c:868 #, c-format msgid "lost connection to parallel worker" msgstr "perte de la connexion au processus parallèle" -#: access/transam/parallel.c:919 access/transam/parallel.c:921 +#: access/transam/parallel.c:930 access/transam/parallel.c:932 msgid "parallel worker" msgstr "processus parallèle" -#: access/transam/parallel.c:1064 +#: access/transam/parallel.c:1077 #, c-format msgid "could not map dynamic shared memory segment" msgstr "n'a pas pu mapper le segment de mémoire partagée dynamique" -#: access/transam/parallel.c:1069 +#: access/transam/parallel.c:1082 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "numéro magique invalide dans le segment de mémoire partagée dynamique" @@ -1170,7 +1170,7 @@ "Les identifiants timeline doivent être plus petits que les enfants des\n" "identifiants timeline." -#: access/transam/timeline.c:434 access/transam/timeline.c:514 access/transam/xlog.c:3290 access/transam/xlog.c:3457 access/transam/xlogfuncs.c:693 commands/copy.c:1741 storage/file/copydir.c:228 +#: access/transam/timeline.c:434 access/transam/timeline.c:514 access/transam/xlog.c:3314 access/transam/xlog.c:3481 access/transam/xlogfuncs.c:693 commands/copy.c:1741 storage/file/copydir.c:228 #, c-format msgid "could not close file \"%s\": %m" msgstr "n'a pas pu fermer le fichier « %s » : %m" @@ -1270,7 +1270,7 @@ "n'a pas pu lire le fichier d'état de la validation en deux phases nommé\n" "« %s » : %m" -#: access/transam/twophase.c:1321 access/transam/xlog.c:6432 +#: access/transam/twophase.c:1321 access/transam/xlog.c:6479 #, c-format msgid "Failed while allocating a WAL reading processor." msgstr "Échec lors de l'allocation d'un processeur de lecture de journaux de transactions." @@ -1524,142 +1524,142 @@ msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "ne peut pas avoir plus de 2^32-1 sous-transactions dans une transaction" -#: access/transam/xlog.c:2469 +#: access/transam/xlog.c:2493 #, c-format msgid "could not seek in log file %s to offset %u: %m" msgstr "n'a pas pu se déplacer dans le fichier de transactions « %s » au décalage %u : %m" -#: access/transam/xlog.c:2491 +#: access/transam/xlog.c:2515 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "n'a pas pu écrire le fichier de transactions %s au décalage %u, longueur %zu : %m" -#: access/transam/xlog.c:2767 +#: access/transam/xlog.c:2791 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" msgstr "mise à jour du point minimum de restauration sur %X/%X pour la timeline %u" -#: access/transam/xlog.c:3422 +#: access/transam/xlog.c:3446 #, c-format msgid "not enough data in file \"%s\"" msgstr "données insuffisantes dans le fichier « %s »" -#: access/transam/xlog.c:3568 +#: access/transam/xlog.c:3592 #, c-format msgid "could not open write-ahead log file \"%s\": %m" msgstr "n'a pas pu écrire dans le journal de transactions « %s » : %m" -#: access/transam/xlog.c:3782 access/transam/xlog.c:5631 +#: access/transam/xlog.c:3806 access/transam/xlog.c:5668 #, c-format msgid "could not close log file %s: %m" msgstr "n'a pas pu fermer le fichier de transactions « %s » : %m" -#: access/transam/xlog.c:3846 access/transam/xlogutils.c:701 replication/walsender.c:2398 +#: access/transam/xlog.c:3870 access/transam/xlogutils.c:701 replication/walsender.c:2404 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "le segment demandé du journal de transaction, %s, a déjà été supprimé" -#: access/transam/xlog.c:3907 access/transam/xlog.c:3982 access/transam/xlog.c:4177 +#: access/transam/xlog.c:3931 access/transam/xlog.c:4006 access/transam/xlog.c:4201 #, c-format msgid "could not open write-ahead log directory \"%s\": %m" msgstr "n'a pas pu ouvrir le répertoire des journaux de transactions « %s » : %m" -#: access/transam/xlog.c:4063 +#: access/transam/xlog.c:4087 #, c-format msgid "recycled write-ahead log file \"%s\"" msgstr "recyclage du journal de transactions « %s »" -#: access/transam/xlog.c:4075 +#: access/transam/xlog.c:4099 #, c-format msgid "removing write-ahead log file \"%s\"" msgstr "suppression du journal de transactions « %s »" -#: access/transam/xlog.c:4095 +#: access/transam/xlog.c:4119 #, c-format msgid "could not rename old write-ahead log file \"%s\": %m" msgstr "n'a pas pu renommer l'ancien journal de transactions « %s » : %m" -#: access/transam/xlog.c:4137 access/transam/xlog.c:4147 +#: access/transam/xlog.c:4161 access/transam/xlog.c:4171 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "le répertoire « %s » requis pour les journaux de transactions n'existe pas" -#: access/transam/xlog.c:4153 +#: access/transam/xlog.c:4177 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "création du répertoire manquant « %s » pour les journaux de transactions" -#: access/transam/xlog.c:4156 +#: access/transam/xlog.c:4180 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "n'a pas pu créer le répertoire « %s » manquant : %m" -#: access/transam/xlog.c:4267 +#: access/transam/xlog.c:4304 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "identifiant timeline %u inattendu dans le journal de transactions %s, décalage %u" -#: access/transam/xlog.c:4405 +#: access/transam/xlog.c:4442 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "" "le nouveau timeline %u n'est pas un fils du timeline %u du système de bases\n" "de données" -#: access/transam/xlog.c:4419 +#: access/transam/xlog.c:4456 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "" "la nouvelle timeline %u a été créée à partir de la timeline de la base de données système %u\n" "avant le point de restauration courant %X/%X" -#: access/transam/xlog.c:4438 +#: access/transam/xlog.c:4475 #, c-format msgid "new target timeline is %u" msgstr "la nouvelle timeline cible est %u" -#: access/transam/xlog.c:4519 +#: access/transam/xlog.c:4556 #, c-format msgid "could not create control file \"%s\": %m" msgstr "n'a pas pu créer le fichier de contrôle « %s » : %m" -#: access/transam/xlog.c:4531 access/transam/xlog.c:4765 +#: access/transam/xlog.c:4568 access/transam/xlog.c:4802 #, c-format msgid "could not write to control file: %m" msgstr "n'a pas pu écrire le fichier de contrôle : %m" -#: access/transam/xlog.c:4539 access/transam/xlog.c:4773 +#: access/transam/xlog.c:4576 access/transam/xlog.c:4810 #, c-format msgid "could not fsync control file: %m" msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de contrôle : %m" -#: access/transam/xlog.c:4545 access/transam/xlog.c:4779 +#: access/transam/xlog.c:4582 access/transam/xlog.c:4816 #, c-format msgid "could not close control file: %m" msgstr "n'a pas pu fermer le fichier de contrôle : %m" -#: access/transam/xlog.c:4564 access/transam/xlog.c:4753 +#: access/transam/xlog.c:4601 access/transam/xlog.c:4790 #, c-format msgid "could not open control file \"%s\": %m" msgstr "n'a pas pu ouvrir le fichier de contrôle « %s » : %m" -#: access/transam/xlog.c:4574 +#: access/transam/xlog.c:4611 #, c-format msgid "could not read from control file: %m" msgstr "n'a pas pu lire le fichier de contrôle : %m" -#: access/transam/xlog.c:4577 +#: access/transam/xlog.c:4614 #, c-format msgid "could not read from control file: read %d bytes, expected %d" msgstr "n'a pas pu lire le fichier de contrôle : %d octets lus, %d attendus" -#: access/transam/xlog.c:4592 access/transam/xlog.c:4601 access/transam/xlog.c:4625 access/transam/xlog.c:4632 access/transam/xlog.c:4639 access/transam/xlog.c:4644 access/transam/xlog.c:4651 access/transam/xlog.c:4658 access/transam/xlog.c:4665 access/transam/xlog.c:4672 access/transam/xlog.c:4679 access/transam/xlog.c:4686 access/transam/xlog.c:4693 access/transam/xlog.c:4702 access/transam/xlog.c:4709 access/transam/xlog.c:4718 -#: access/transam/xlog.c:4725 utils/init/miscinit.c:1410 +#: access/transam/xlog.c:4629 access/transam/xlog.c:4638 access/transam/xlog.c:4662 access/transam/xlog.c:4669 access/transam/xlog.c:4676 access/transam/xlog.c:4681 access/transam/xlog.c:4688 access/transam/xlog.c:4695 access/transam/xlog.c:4702 access/transam/xlog.c:4709 access/transam/xlog.c:4716 access/transam/xlog.c:4723 access/transam/xlog.c:4730 access/transam/xlog.c:4739 access/transam/xlog.c:4746 access/transam/xlog.c:4755 +#: access/transam/xlog.c:4762 utils/init/miscinit.c:1410 #, c-format msgid "database files are incompatible with server" msgstr "les fichiers de la base de données sont incompatibles avec le serveur" -#: access/transam/xlog.c:4593 +#: access/transam/xlog.c:4630 #, 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 "" @@ -1667,303 +1667,303 @@ "%d (0x%08x) alors que le serveur a été compilé avec un PG_CONTROL_VERSION à\n" "%d (0x%08x)." -#: access/transam/xlog.c:4597 +#: access/transam/xlog.c:4634 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "" "Ceci peut être un problème d'incohérence dans l'ordre des octets.\n" "Il se peut que vous ayez besoin d'initdb." -#: access/transam/xlog.c:4602 +#: access/transam/xlog.c:4639 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "" "Le cluster de base de données a été initialisé avec un PG_CONTROL_VERSION à\n" "%d alors que le serveur a été compilé avec un PG_CONTROL_VERSION à %d." -#: access/transam/xlog.c:4605 access/transam/xlog.c:4629 access/transam/xlog.c:4636 access/transam/xlog.c:4641 +#: access/transam/xlog.c:4642 access/transam/xlog.c:4666 access/transam/xlog.c:4673 access/transam/xlog.c:4678 #, c-format msgid "It looks like you need to initdb." msgstr "Il semble que vous avez besoin d'initdb." -#: access/transam/xlog.c:4616 +#: access/transam/xlog.c:4653 #, c-format msgid "incorrect checksum in control file" msgstr "somme de contrôle incorrecte dans le fichier de contrôle" -#: access/transam/xlog.c:4626 +#: access/transam/xlog.c:4663 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "" "Le cluster de base de données a été initialisé avec un CATALOG_VERSION_NO à\n" "%d alors que le serveur a été compilé avec un CATALOG_VERSION_NO à %d." -#: access/transam/xlog.c:4633 +#: access/transam/xlog.c:4670 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "" "Le cluster de bases de données a été initialisé avec un MAXALIGN à %d alors\n" "que le serveur a été compilé avec un MAXALIGN à %d." -#: access/transam/xlog.c:4640 +#: access/transam/xlog.c:4677 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "" "Le cluster de bases de données semble utiliser un format différent pour les\n" "nombres à virgule flottante de celui de l'exécutable serveur." -#: access/transam/xlog.c:4645 +#: access/transam/xlog.c:4682 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "" "Le cluster de base de données a été initialisé avec un BLCKSZ à %d alors que\n" "le serveur a été compilé avec un BLCKSZ à %d." -#: access/transam/xlog.c:4648 access/transam/xlog.c:4655 access/transam/xlog.c:4662 access/transam/xlog.c:4669 access/transam/xlog.c:4676 access/transam/xlog.c:4683 access/transam/xlog.c:4690 access/transam/xlog.c:4697 access/transam/xlog.c:4705 access/transam/xlog.c:4712 access/transam/xlog.c:4721 access/transam/xlog.c:4728 +#: access/transam/xlog.c:4685 access/transam/xlog.c:4692 access/transam/xlog.c:4699 access/transam/xlog.c:4706 access/transam/xlog.c:4713 access/transam/xlog.c:4720 access/transam/xlog.c:4727 access/transam/xlog.c:4734 access/transam/xlog.c:4742 access/transam/xlog.c:4749 access/transam/xlog.c:4758 access/transam/xlog.c:4765 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Il semble que vous avez besoin de recompiler ou de relancer initdb." -#: access/transam/xlog.c:4652 +#: access/transam/xlog.c:4689 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "" "Le cluster de bases de données a été initialisé avec un RELSEG_SIZE à %d\n" "alors que le serveur a été compilé avec un RELSEG_SIZE à %d." -#: access/transam/xlog.c:4659 +#: access/transam/xlog.c:4696 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "" "Le cluster de base de données a été initialisé avec un XLOG_BLCKSZ à %d\n" "alors que le serveur a été compilé avec un XLOG_BLCKSZ à %d." -#: access/transam/xlog.c:4666 +#: access/transam/xlog.c:4703 #, c-format msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d." msgstr "" "Le cluster de bases de données a été initialisé avec un XLOG_SEG_SIZE à %d\n" "alors que le serveur a été compilé avec un XLOG_SEG_SIZE à %d." -#: access/transam/xlog.c:4673 +#: access/transam/xlog.c:4710 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "" "Le cluster de bases de données a été initialisé avec un NAMEDATALEN à %d\n" "alors que le serveur a été compilé avec un NAMEDATALEN à %d." -#: access/transam/xlog.c:4680 +#: access/transam/xlog.c:4717 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "" "Le groupe de bases de données a été initialisé avec un INDEX_MAX_KEYS à %d\n" "alors que le serveur a été compilé avec un INDEX_MAX_KEYS à %d." -#: access/transam/xlog.c:4687 +#: access/transam/xlog.c:4724 #, c-format msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "" "Le cluster de bases de données a été initialisé avec un TOAST_MAX_CHUNK_SIZE\n" "à %d alors que le serveur a été compilé avec un TOAST_MAX_CHUNK_SIZE à %d." -#: access/transam/xlog.c:4694 +#: access/transam/xlog.c:4731 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "" "Le cluster de base de données a été initialisé avec un LOBLKSIZE à %d alors que\n" "le serveur a été compilé avec un LOBLKSIZE à %d." -#: access/transam/xlog.c:4703 +#: access/transam/xlog.c:4740 #, c-format msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." msgstr "" "Le cluster de base de données a été initialisé sans USE_FLOAT4_BYVAL\n" "alors que le serveur a été compilé avec USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4710 +#: access/transam/xlog.c:4747 #, c-format msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL." msgstr "" "Le cluster de base de données a été initialisé avec USE_FLOAT4_BYVAL\n" "alors que le serveur a été compilé sans USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4719 +#: access/transam/xlog.c:4756 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "" "Le cluster de base de données a été initialisé sans USE_FLOAT8_BYVAL\n" "alors que le serveur a été compilé avec USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4726 +#: access/transam/xlog.c:4763 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "" "Le cluster de base de données a été initialisé avec USE_FLOAT8_BYVAL\n" "alors que le serveur a été compilé sans USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:5082 +#: access/transam/xlog.c:5119 #, c-format msgid "could not generate secret authorization token" msgstr "n'a pas pu générer le jeton secret d'autorisation" -#: access/transam/xlog.c:5172 +#: access/transam/xlog.c:5209 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "n'a pas pu écrire le « bootstrap » du journal des transactions : %m" -#: access/transam/xlog.c:5180 +#: access/transam/xlog.c:5217 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "" "n'a pas pu synchroniser sur disque (fsync) le « bootstrap » du journal des\n" "transactions : %m" -#: access/transam/xlog.c:5186 +#: access/transam/xlog.c:5223 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "n'a pas pu fermer le « bootstrap » du journal des transactions : %m" -#: access/transam/xlog.c:5262 +#: access/transam/xlog.c:5299 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "n'a pas pu ouvrir le fichier de restauration « %s » : %m" -#: access/transam/xlog.c:5308 access/transam/xlog.c:5410 +#: access/transam/xlog.c:5345 access/transam/xlog.c:5447 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" msgstr "valeur invalide pour le paramètre de restauration « %s » : « %s »" -#: access/transam/xlog.c:5311 +#: access/transam/xlog.c:5348 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "Les valeurs valides sont « pause », « promote » et « shutdown »." -#: access/transam/xlog.c:5331 +#: access/transam/xlog.c:5368 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" msgstr "recovery_target_timeline n'est pas un nombre valide : « %s »" -#: access/transam/xlog.c:5348 +#: access/transam/xlog.c:5385 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" msgstr "recovery_target_xid n'est pas un nombre valide : « %s »" -#: access/transam/xlog.c:5379 +#: access/transam/xlog.c:5416 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" msgstr "recovery_target_name est trop long (%d caractères maximum)" -#: access/transam/xlog.c:5413 +#: access/transam/xlog.c:5450 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "La seule valeur autorisée est « immediate »." -#: access/transam/xlog.c:5426 access/transam/xlog.c:5437 commands/extension.c:547 commands/extension.c:555 utils/misc/guc.c:5761 +#: access/transam/xlog.c:5463 access/transam/xlog.c:5474 commands/extension.c:547 commands/extension.c:555 utils/misc/guc.c:5761 #, c-format msgid "parameter \"%s\" requires a Boolean value" msgstr "le paramètre « %s » requiert une valeur booléenne" -#: access/transam/xlog.c:5472 +#: access/transam/xlog.c:5509 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "le paramètre « %s » requiert une valeur temporelle" -#: access/transam/xlog.c:5474 catalog/dependency.c:985 catalog/dependency.c:986 catalog/dependency.c:992 catalog/dependency.c:993 catalog/dependency.c:1004 catalog/dependency.c:1005 commands/tablecmds.c:951 commands/tablecmds.c:10536 commands/user.c:1078 commands/view.c:504 libpq/auth.c:329 replication/syncrep.c:1309 storage/lmgr/deadlock.c:1145 storage/lmgr/proc.c:1318 utils/adt/acl.c:5331 utils/misc/guc.c:5783 utils/misc/guc.c:5876 +#: access/transam/xlog.c:5511 catalog/dependency.c:985 catalog/dependency.c:986 catalog/dependency.c:992 catalog/dependency.c:993 catalog/dependency.c:1004 catalog/dependency.c:1005 commands/tablecmds.c:951 commands/tablecmds.c:10536 commands/user.c:1078 commands/view.c:504 libpq/auth.c:329 replication/syncrep.c:1309 storage/lmgr/deadlock.c:1145 storage/lmgr/proc.c:1318 utils/adt/acl.c:5331 utils/misc/guc.c:5783 utils/misc/guc.c:5876 #: utils/misc/guc.c:9915 utils/misc/guc.c:9949 utils/misc/guc.c:9983 utils/misc/guc.c:10026 utils/misc/guc.c:10068 #, c-format msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5481 +#: access/transam/xlog.c:5518 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "paramètre de restauration « %s » non reconnu" -#: access/transam/xlog.c:5492 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command" msgstr "le fichier de restauration « %s » n'a spécifié ni primary_conninfo ni restore_command" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5531 #, c-format msgid "The database server will regularly poll the pg_wal 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_wal pour vérifier les fichiers placés ici." -#: access/transam/xlog.c:5501 +#: access/transam/xlog.c:5538 #, c-format msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled" msgstr "" "le fichier de restauration « %s » doit spécifier restore_command quand le mode\n" "de restauration n'est pas activé" -#: access/transam/xlog.c:5522 +#: access/transam/xlog.c:5559 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "le mode de restauration n'est pas supporté pour les serveurs mono-utilisateur" -#: access/transam/xlog.c:5541 +#: access/transam/xlog.c:5578 #, c-format msgid "recovery target timeline %u does not exist" msgstr "le timeline cible, %u, de la restauration n'existe pas" -#: access/transam/xlog.c:5650 +#: access/transam/xlog.c:5687 #, c-format msgid "archive recovery complete" msgstr "restauration terminée de l'archive" -#: access/transam/xlog.c:5709 access/transam/xlog.c:5975 +#: access/transam/xlog.c:5746 access/transam/xlog.c:6012 #, c-format msgid "recovery stopping after reaching consistency" msgstr "arrêt de la restauration après avoir atteint le point de cohérence" -#: access/transam/xlog.c:5730 +#: access/transam/xlog.c:5767 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "arrêt de la restauration avant l'emplacement WAL (LSN) « %X/%X »" -#: access/transam/xlog.c:5816 +#: access/transam/xlog.c:5853 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "arrêt de la restauration avant validation de la transaction %u, %s" -#: access/transam/xlog.c:5823 +#: access/transam/xlog.c:5860 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "arrêt de la restauration avant annulation de la transaction %u, %s" -#: access/transam/xlog.c:5869 +#: access/transam/xlog.c:5906 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "restauration en arrêt au point de restauration « %s », heure %s" -#: access/transam/xlog.c:5887 +#: access/transam/xlog.c:5924 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "arrêt de la restauration après l'emplacement WAL (LSN) « %X/%X »" -#: access/transam/xlog.c:5955 +#: access/transam/xlog.c:5992 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "arrêt de la restauration après validation de la transaction %u, %s" -#: access/transam/xlog.c:5963 +#: access/transam/xlog.c:6000 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "arrêt de la restauration après annulation de la transaction %u, %s" -#: access/transam/xlog.c:6003 +#: access/transam/xlog.c:6040 #, c-format msgid "recovery has paused" msgstr "restauration en pause" -#: access/transam/xlog.c:6004 +#: access/transam/xlog.c:6041 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "Exécuter pg_wal_replay_resume() pour continuer." -#: access/transam/xlog.c:6209 +#: access/transam/xlog.c:6256 #, 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 "" @@ -1971,271 +1971,271 @@ "paramètrage plus bas que celui du serveur maître des journaux de transactions\n" "(la valeur était %d)" -#: access/transam/xlog.c:6235 +#: access/transam/xlog.c:6282 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "" "le journal de transactions a été généré avec le paramètre wal_level configuré\n" "à « minimal », des données pourraient manquer" -#: access/transam/xlog.c:6236 +#: access/transam/xlog.c:6283 #, c-format msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup." msgstr "" "Ceci peut arriver si vous configurez temporairement wal_level à minimal sans avoir\n" "pris une nouvelle sauvegarde de base." -#: access/transam/xlog.c:6247 +#: access/transam/xlog.c:6294 #, c-format msgid "hot standby is not possible because wal_level was not set to \"replica\" or higher on the master server" msgstr "" "les connexions en lecture seules ne sont pas possibles parce que le paramètre wal_level\n" "n'a pas été positionné à « replica » ou plus sur le serveur maître" -#: access/transam/xlog.c:6248 +#: access/transam/xlog.c:6295 #, c-format msgid "Either set wal_level to \"replica\" on the master, or turn off hot_standby here." msgstr "" "Vous devez soit positionner le paramètre wal_level à « replica » sur le maître,\n" "soit désactiver le hot_standby ici." -#: access/transam/xlog.c:6305 +#: access/transam/xlog.c:6352 #, c-format msgid "control file contains invalid data" msgstr "le fichier de contrôle contient des données invalides" -#: access/transam/xlog.c:6311 +#: access/transam/xlog.c:6358 #, c-format msgid "database system was shut down at %s" msgstr "le système de bases de données a été arrêté à %s" -#: access/transam/xlog.c:6316 +#: access/transam/xlog.c:6363 #, c-format msgid "database system was shut down in recovery at %s" msgstr "le système de bases de données a été arrêté pendant la restauration à %s" -#: access/transam/xlog.c:6320 +#: access/transam/xlog.c:6367 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "le système de bases de données a été interrompu ; dernier lancement connu à %s" -#: access/transam/xlog.c:6324 +#: access/transam/xlog.c:6371 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "le système de bases de données a été interrompu lors d'une restauration à %s" -#: access/transam/xlog.c:6326 +#: access/transam/xlog.c:6373 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "" "Ceci signifie probablement que des données ont été corrompues et que vous\n" "devrez utiliser la dernière sauvegarde pour la restauration." -#: access/transam/xlog.c:6330 +#: access/transam/xlog.c:6377 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "" "le système de bases de données a été interrompu lors d'une récupération à %s\n" "(moment de la journalisation)" -#: access/transam/xlog.c:6332 +#: access/transam/xlog.c:6379 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." msgstr "" "Si c'est arrivé plus d'une fois, des données ont pu être corrompues et vous\n" "pourriez avoir besoin de choisir une cible de récupération antérieure." -#: access/transam/xlog.c:6336 +#: access/transam/xlog.c:6383 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "le système de bases de données a été interrompu ; dernier lancement connu à %s" -#: access/transam/xlog.c:6392 +#: access/transam/xlog.c:6439 #, c-format msgid "entering standby mode" msgstr "entre en mode standby" -#: access/transam/xlog.c:6395 +#: access/transam/xlog.c:6442 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "début de la restauration de l'archive au XID %u" -#: access/transam/xlog.c:6399 +#: access/transam/xlog.c:6446 #, c-format msgid "starting point-in-time recovery to %s" msgstr "début de la restauration de l'archive à %s" -#: access/transam/xlog.c:6403 +#: access/transam/xlog.c:6450 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "début de la restauration PITR à « %s »" -#: access/transam/xlog.c:6407 +#: access/transam/xlog.c:6454 #, c-format msgid "starting point-in-time recovery to WAL location (LSN) \"%X/%X\"" msgstr "début de la restauration PITR à l'emplacement WAL (LSN) « %X/%X »" -#: access/transam/xlog.c:6412 +#: access/transam/xlog.c:6459 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "début de la restauration de l'archive jusqu'au point de cohérence le plus proche" -#: access/transam/xlog.c:6415 +#: access/transam/xlog.c:6462 #, c-format msgid "starting archive recovery" msgstr "début de la restauration de l'archive" -#: access/transam/xlog.c:6469 access/transam/xlog.c:6597 +#: access/transam/xlog.c:6516 access/transam/xlog.c:6644 #, c-format msgid "checkpoint record is at %X/%X" msgstr "l'enregistrement du point de vérification est à %X/%X" -#: access/transam/xlog.c:6483 +#: access/transam/xlog.c:6530 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "n'a pas pu localiser l'enregistrement redo référencé par le point de vérification" -#: access/transam/xlog.c:6484 access/transam/xlog.c:6491 +#: access/transam/xlog.c:6531 access/transam/xlog.c:6538 #, c-format msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." msgstr "" "Si vous n'avez pas pu restaurer une sauvegarde, essayez de supprimer le\n" "fichier « %s/backup_label »." -#: access/transam/xlog.c:6490 +#: access/transam/xlog.c:6537 #, c-format msgid "could not locate required checkpoint record" msgstr "n'a pas pu localiser l'enregistrement d'un point de vérification requis" -#: access/transam/xlog.c:6516 commands/tablespace.c:639 +#: access/transam/xlog.c:6563 commands/tablespace.c:635 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "n'a pas pu créer le lien symbolique « %s » : %m" -#: access/transam/xlog.c:6548 access/transam/xlog.c:6554 +#: access/transam/xlog.c:6595 access/transam/xlog.c:6601 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "ignore le fichier « %s » car le fichier « %s » n'existe pas" -#: access/transam/xlog.c:6550 access/transam/xlog.c:11607 +#: access/transam/xlog.c:6597 access/transam/xlog.c:11769 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Le fichier « %s » a été renommé en « %s »." -#: access/transam/xlog.c:6556 +#: access/transam/xlog.c:6603 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "N'a pas pu renommer le fichier « %s » en « %s » : %m" -#: access/transam/xlog.c:6607 access/transam/xlog.c:6622 +#: access/transam/xlog.c:6654 access/transam/xlog.c:6669 #, c-format msgid "could not locate a valid checkpoint record" msgstr "n'a pas pu localiser un enregistrement d'un point de vérification valide" -#: access/transam/xlog.c:6616 +#: access/transam/xlog.c:6663 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "utilisation du précédent enregistrement d'un point de vérification à %X/%X" -#: access/transam/xlog.c:6660 +#: access/transam/xlog.c:6707 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "la timeline requise %u n'est pas un fils de l'historique de ce serveur" -#: access/transam/xlog.c:6662 +#: access/transam/xlog.c:6709 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." msgstr "Le dernier checkpoint est à %X/%X sur la timeline %u, mais dans l'historique de la timeline demandée, le serveur est sorti de cette timeline à %X/%X." -#: access/transam/xlog.c:6678 +#: access/transam/xlog.c:6725 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "la timeline requise, %u, ne contient pas le point de restauration minimum (%X/%X) sur la timeline %u" -#: access/transam/xlog.c:6709 +#: access/transam/xlog.c:6756 #, c-format msgid "invalid next transaction ID" msgstr "prochain ID de transaction invalide" -#: access/transam/xlog.c:6804 +#: access/transam/xlog.c:6851 #, c-format msgid "invalid redo in checkpoint record" msgstr "ré-exécution invalide dans l'enregistrement du point de vérification" -#: access/transam/xlog.c:6815 +#: access/transam/xlog.c:6862 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "enregistrement de ré-exécution invalide dans le point de vérification d'arrêt" -#: access/transam/xlog.c:6849 +#: access/transam/xlog.c:6902 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "" "le système de bases de données n'a pas été arrêté proprement ; restauration\n" "automatique en cours" -#: access/transam/xlog.c:6853 +#: access/transam/xlog.c:6906 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "la restauration après crash commence avec la timeline %u et a la timeline %u en cible" -#: access/transam/xlog.c:6901 +#: access/transam/xlog.c:6954 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label contient des données incohérentes avec le fichier de contrôle" -#: access/transam/xlog.c:6902 +#: access/transam/xlog.c:6955 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "" "Ceci signifie que la sauvegarde a été corrompue et que vous devrez utiliser\n" "la dernière sauvegarde pour la restauration." -#: access/transam/xlog.c:6993 +#: access/transam/xlog.c:7046 #, c-format msgid "initializing for hot standby" msgstr "initialisation pour « Hot Standby »" -#: access/transam/xlog.c:7125 +#: access/transam/xlog.c:7178 #, c-format msgid "redo starts at %X/%X" msgstr "la ré-exécution commence à %X/%X" -#: access/transam/xlog.c:7359 +#: access/transam/xlog.c:7412 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "" "le point d'arrêt de la restauration demandée se trouve avant le point\n" "cohérent de restauration" -#: access/transam/xlog.c:7397 +#: access/transam/xlog.c:7450 #, c-format msgid "redo done at %X/%X" msgstr "ré-exécution faite à %X/%X" -#: access/transam/xlog.c:7402 access/transam/xlog.c:9451 +#: access/transam/xlog.c:7455 access/transam/xlog.c:9583 #, c-format msgid "last completed transaction was at log time %s" msgstr "la dernière transaction a eu lieu à %s (moment de la journalisation)" -#: access/transam/xlog.c:7411 +#: access/transam/xlog.c:7464 #, c-format msgid "redo is not required" msgstr "la ré-exécution n'est pas nécessaire" -#: access/transam/xlog.c:7490 access/transam/xlog.c:7494 +#: access/transam/xlog.c:7548 access/transam/xlog.c:7552 #, c-format msgid "WAL ends before end of online backup" msgstr "le journal de transactions se termine avant la fin de la sauvegarde de base" -#: access/transam/xlog.c:7491 +#: access/transam/xlog.c:7549 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "" "Tous les journaux de transactions générés pendant la sauvegarde en ligne\n" "doivent être disponibles pour la restauration." -#: access/transam/xlog.c:7495 +#: access/transam/xlog.c:7553 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "" @@ -2243,224 +2243,229 @@ "pg_stop_backup() et tous les journaux de transactions générés entre les deux\n" "doivent être disponibles pour la restauration." -#: access/transam/xlog.c:7498 +#: access/transam/xlog.c:7556 #, c-format msgid "WAL ends before consistent recovery point" msgstr "Le journal de transaction se termine avant un point de restauration cohérent" -#: access/transam/xlog.c:7533 +#: access/transam/xlog.c:7591 #, c-format msgid "selected new timeline ID: %u" msgstr "identifiant d'un timeline nouvellement sélectionné : %u" -#: access/transam/xlog.c:7981 +#: access/transam/xlog.c:8066 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "état de restauration cohérent atteint à %X/%X" -#: access/transam/xlog.c:8191 +#: access/transam/xlog.c:8276 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "lien du point de vérification primaire invalide dans le fichier de contrôle" -#: access/transam/xlog.c:8195 +#: access/transam/xlog.c:8280 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "lien du point de vérification secondaire invalide dans le fichier de contrôle" -#: access/transam/xlog.c:8199 +#: access/transam/xlog.c:8284 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "lien du point de vérification invalide dans le fichier backup_label" -#: access/transam/xlog.c:8216 +#: access/transam/xlog.c:8301 #, c-format msgid "invalid primary checkpoint record" msgstr "enregistrement du point de vérification primaire invalide" -#: access/transam/xlog.c:8220 +#: access/transam/xlog.c:8305 #, c-format msgid "invalid secondary checkpoint record" msgstr "enregistrement du point de vérification secondaire invalide" -#: access/transam/xlog.c:8224 +#: access/transam/xlog.c:8309 #, c-format msgid "invalid checkpoint record" msgstr "enregistrement du point de vérification invalide" -#: access/transam/xlog.c:8235 +#: access/transam/xlog.c:8320 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement primaire du point de vérification" -#: access/transam/xlog.c:8239 +#: access/transam/xlog.c:8324 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement secondaire du point de vérification" -#: access/transam/xlog.c:8243 +#: access/transam/xlog.c:8328 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement du point de vérification" -#: access/transam/xlog.c:8256 +#: access/transam/xlog.c:8341 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "xl_info invalide dans l'enregistrement du point de vérification primaire" -#: access/transam/xlog.c:8260 +#: access/transam/xlog.c:8345 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "xl_info invalide dans l'enregistrement du point de vérification secondaire" -#: access/transam/xlog.c:8264 +#: access/transam/xlog.c:8349 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "xl_info invalide dans l'enregistrement du point de vérification" -#: access/transam/xlog.c:8275 +#: access/transam/xlog.c:8360 #, c-format msgid "invalid length of primary checkpoint record" msgstr "longueur invalide de l'enregistrement primaire du point de vérification" -#: access/transam/xlog.c:8279 +#: access/transam/xlog.c:8364 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "longueur invalide de l'enregistrement secondaire du point de vérification" -#: access/transam/xlog.c:8283 +#: access/transam/xlog.c:8368 #, c-format msgid "invalid length of checkpoint record" msgstr "longueur invalide de l'enregistrement du point de vérification" -#: access/transam/xlog.c:8486 +#: access/transam/xlog.c:8571 #, c-format msgid "shutting down" msgstr "arrêt en cours" -#: access/transam/xlog.c:8791 +#: access/transam/xlog.c:8876 #, c-format msgid "checkpoint skipped because system is idle" msgstr "checkpoint ignoré parce que le système est en attente" -#: access/transam/xlog.c:8996 +#: access/transam/xlog.c:9081 #, c-format msgid "concurrent write-ahead log activity while database system is shutting down" msgstr "" "activité en cours du journal de transactions alors que le système de bases\n" "de données est en cours d'arrêt" -#: access/transam/xlog.c:9250 +#: access/transam/xlog.c:9382 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "restartpoint ignoré, la récupération est déjà terminée" -#: access/transam/xlog.c:9273 +#: access/transam/xlog.c:9405 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "ignore le point de redémarrage, déjà réalisé à %X/%X" -#: access/transam/xlog.c:9449 +#: access/transam/xlog.c:9581 #, c-format msgid "recovery restart point at %X/%X" msgstr "la ré-exécution en restauration commence à %X/%X" -#: access/transam/xlog.c:9585 +#: access/transam/xlog.c:9717 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "point de restauration « %s » créé à %X/%X" -#: access/transam/xlog.c:9727 +#: access/transam/xlog.c:9859 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "identifiant de timeline précédent %u inattendu (identifiant de la timeline courante %u) dans l'enregistrement du point de vérification" -#: access/transam/xlog.c:9736 +#: access/transam/xlog.c:9868 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "" "identifiant timeline %u inattendu (après %u) dans l'enregistrement du point\n" "de vérification" -#: access/transam/xlog.c:9752 +#: access/transam/xlog.c:9884 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "identifiant timeline %u inattendu dans l'enregistrement du checkpoint, avant d'atteindre le point de restauration minimum %X/%X sur la timeline %u" -#: access/transam/xlog.c:9828 +#: access/transam/xlog.c:9960 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "la sauvegarde en ligne a été annulée, la restauration ne peut pas continuer" -#: access/transam/xlog.c:9886 access/transam/xlog.c:9944 access/transam/xlog.c:9967 +#: access/transam/xlog.c:10018 access/transam/xlog.c:10076 access/transam/xlog.c:10106 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "" "identifiant timeline %u inattendu (devrait être %u) dans l'enregistrement du\n" "point de vérification" -#: access/transam/xlog.c:10255 +#: access/transam/xlog.c:10264 +#, c-format +msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" +msgstr "ignore avec succès le contrecord manquant à %X/%X, surchargé à %s" + +#: access/transam/xlog.c:10417 #, c-format msgid "could not fsync log segment %s: %m" msgstr "n'a pas pu synchroniser sur disque (fsync) le segment du journal des transactions %s : %m" -#: access/transam/xlog.c:10280 +#: access/transam/xlog.c:10442 #, c-format msgid "could not fsync log file %s: %m" msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de transactions « %s » : %m" -#: access/transam/xlog.c:10288 +#: access/transam/xlog.c:10450 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "n'a pas pu synchroniser sur disque (fsync) le journal des transactions %s : %m" -#: access/transam/xlog.c:10297 +#: access/transam/xlog.c:10459 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "n'a pas pu synchroniser sur disque (fdatasync) le journal de transactions %s : %m" -#: access/transam/xlog.c:10388 access/transam/xlog.c:10913 access/transam/xlogfuncs.c:297 access/transam/xlogfuncs.c:324 access/transam/xlogfuncs.c:363 access/transam/xlogfuncs.c:384 access/transam/xlogfuncs.c:405 +#: access/transam/xlog.c:10550 access/transam/xlog.c:11075 access/transam/xlogfuncs.c:297 access/transam/xlogfuncs.c:324 access/transam/xlogfuncs.c:363 access/transam/xlogfuncs.c:384 access/transam/xlogfuncs.c:405 #, c-format msgid "WAL control functions cannot be executed during recovery." msgstr "" "les fonctions de contrôle des journaux de transactions ne peuvent pas\n" "être exécutées lors de la restauration." -#: access/transam/xlog.c:10397 access/transam/xlog.c:10922 +#: access/transam/xlog.c:10559 access/transam/xlog.c:11084 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "" "Le niveau de journalisation (configuré par wal_level) n'est pas suffisant pour\n" "faire une sauvegarde en ligne." -#: access/transam/xlog.c:10398 access/transam/xlog.c:10923 access/transam/xlogfuncs.c:330 +#: access/transam/xlog.c:10560 access/transam/xlog.c:11085 access/transam/xlogfuncs.c:330 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "" "wal_level doit être configuré à « replica » ou « logical »\n" "au démarrage du serveur." -#: access/transam/xlog.c:10403 +#: access/transam/xlog.c:10565 #, c-format msgid "backup label too long (max %d bytes)" msgstr "label de sauvegarde trop long (%d octets maximum)" -#: access/transam/xlog.c:10440 access/transam/xlog.c:10713 access/transam/xlog.c:10751 +#: access/transam/xlog.c:10602 access/transam/xlog.c:10875 access/transam/xlog.c:10913 #, c-format msgid "a backup is already in progress" msgstr "une sauvegarde est déjà en cours" -#: access/transam/xlog.c:10441 +#: access/transam/xlog.c:10603 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Exécutez pg_stop_backup() et tentez de nouveau." -#: access/transam/xlog.c:10536 +#: access/transam/xlog.c:10698 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "Les journaux générés avec full_page_writes=off ont été rejoués depuis le dernier restartpoint." -#: access/transam/xlog.c:10538 access/transam/xlog.c:11118 +#: access/transam/xlog.c:10700 access/transam/xlog.c:11280 #, c-format msgid "This means that the backup being taken on the standby is corrupt and should not be used. Enable full_page_writes and run CHECKPOINT on the master, and then try an online backup again." msgstr "" @@ -2468,86 +2473,86 @@ "corrompue et ne doit pas être utilisée. Activez full_page_writes et lancez\n" "CHECKPOINT sur le maître, puis recommencez la sauvegarde." -#: access/transam/xlog.c:10605 replication/basebackup.c:1114 utils/adt/misc.c:511 +#: access/transam/xlog.c:10767 replication/basebackup.c:1114 utils/adt/misc.c:511 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "n'a pas pu lire le lien symbolique « %s » : %m" -#: access/transam/xlog.c:10612 replication/basebackup.c:1119 utils/adt/misc.c:516 +#: access/transam/xlog.c:10774 replication/basebackup.c:1119 utils/adt/misc.c:516 #, c-format msgid "symbolic link \"%s\" target is too long" -msgstr "la cible du lien symbolique « %s » est trop long" +msgstr "la cible du lien symbolique « %s » est trop longue" -#: access/transam/xlog.c:10665 commands/tablespace.c:389 commands/tablespace.c:551 replication/basebackup.c:1134 utils/adt/misc.c:524 +#: access/transam/xlog.c:10827 commands/tablespace.c:389 commands/tablespace.c:551 replication/basebackup.c:1134 utils/adt/misc.c:524 #, c-format msgid "tablespaces are not supported on this platform" msgstr "les tablespaces ne sont pas supportés sur cette plateforme" -#: access/transam/xlog.c:10707 access/transam/xlog.c:10745 access/transam/xlog.c:10961 access/transam/xlogarchive.c:104 access/transam/xlogarchive.c:263 commands/copy.c:1871 commands/copy.c:3208 commands/extension.c:3339 commands/tablespace.c:780 commands/tablespace.c:871 guc-file.l:1059 replication/basebackup.c:496 replication/basebackup.c:566 replication/logical/snapbuild.c:1528 storage/file/copydir.c:72 storage/file/copydir.c:115 +#: access/transam/xlog.c:10869 access/transam/xlog.c:10907 access/transam/xlog.c:11123 access/transam/xlogarchive.c:104 access/transam/xlogarchive.c:263 commands/copy.c:1871 commands/copy.c:3208 commands/extension.c:3347 commands/tablespace.c:776 commands/tablespace.c:867 guc-file.l:1061 replication/basebackup.c:496 replication/basebackup.c:566 replication/logical/snapbuild.c:1528 storage/file/copydir.c:72 storage/file/copydir.c:115 #: storage/file/fd.c:3018 storage/file/fd.c:3110 utils/adt/dbsize.c:70 utils/adt/dbsize.c:227 utils/adt/dbsize.c:307 utils/adt/genfile.c:108 utils/adt/genfile.c:327 utils/adt/genfile.c:547 #, c-format msgid "could not stat file \"%s\": %m" msgstr "n'a pas pu tester le fichier « %s » : %m" -#: access/transam/xlog.c:10714 access/transam/xlog.c:10752 +#: access/transam/xlog.c:10876 access/transam/xlog.c:10914 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "" "Si vous êtes certain qu'aucune sauvegarde n'est en cours, supprimez le\n" "fichier « %s » et recommencez de nouveau." -#: access/transam/xlog.c:10731 access/transam/xlog.c:10769 access/transam/xlog.c:11176 postmaster/syslogger.c:1475 postmaster/syslogger.c:1488 +#: access/transam/xlog.c:10893 access/transam/xlog.c:10931 access/transam/xlog.c:11338 postmaster/syslogger.c:1475 postmaster/syslogger.c:1488 #, c-format msgid "could not write file \"%s\": %m" msgstr "impossible d'écrire le fichier « %s » : %m" -#: access/transam/xlog.c:10938 +#: access/transam/xlog.c:11100 #, c-format msgid "exclusive backup not in progress" msgstr "une sauvegarde exclusive n'est pas en cours" -#: access/transam/xlog.c:10965 +#: access/transam/xlog.c:11127 #, c-format msgid "a backup is not in progress" msgstr "une sauvegarde n'est pas en cours" -#: access/transam/xlog.c:11051 access/transam/xlog.c:11064 access/transam/xlog.c:11417 access/transam/xlog.c:11423 access/transam/xlog.c:11507 access/transam/xlogfuncs.c:698 +#: access/transam/xlog.c:11213 access/transam/xlog.c:11226 access/transam/xlog.c:11579 access/transam/xlog.c:11585 access/transam/xlog.c:11669 access/transam/xlogfuncs.c:698 #, c-format msgid "invalid data in file \"%s\"" msgstr "données invalides dans le fichier « %s »" -#: access/transam/xlog.c:11068 replication/basebackup.c:1012 +#: access/transam/xlog.c:11230 replication/basebackup.c:1012 #, c-format msgid "the standby was promoted during online backup" msgstr "le standby a été promu lors de la sauvegarde en ligne" -#: access/transam/xlog.c:11069 replication/basebackup.c:1013 +#: access/transam/xlog.c:11231 replication/basebackup.c:1013 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "" "Cela signifie que la sauvegarde en cours de réalisation est corrompue et ne\n" "doit pas être utilisée. Recommencez la sauvegarde." -#: access/transam/xlog.c:11116 +#: access/transam/xlog.c:11278 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "" "le journal de transactions généré avec full_page_writes=off a été rejoué lors\n" "de la sauvegarde en ligne" -#: access/transam/xlog.c:11231 +#: access/transam/xlog.c:11393 #, c-format msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "nettoyage de pg_stop_backup terminé, en attente des journaux de transactions requis à archiver" -#: access/transam/xlog.c:11241 +#: access/transam/xlog.c:11403 #, c-format msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "" "pg_stop_backup toujours en attente de la fin de l'archivage des segments de\n" "journaux de transactions requis (%d secondes passées)" -#: access/transam/xlog.c:11243 +#: access/transam/xlog.c:11405 #, c-format msgid "Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments." msgstr "" @@ -2555,12 +2560,12 @@ "peut être annulé avec sûreté mais la sauvegarde de la base ne sera pas\n" "utilisable sans tous les segments WAL." -#: access/transam/xlog.c:11250 +#: access/transam/xlog.c:11412 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "pg_stop_backup terminé, tous les journaux de transactions requis ont été archivés" -#: access/transam/xlog.c:11254 +#: access/transam/xlog.c:11416 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "" @@ -2569,57 +2574,57 @@ "transactions sont copiés par d'autre moyens pour terminer la sauvegarde." #. translator: %s is a WAL record description -#: access/transam/xlog.c:11547 +#: access/transam/xlog.c:11709 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "rejeu des WAL à %X/%X pour %s" -#: access/transam/xlog.c:11596 +#: access/transam/xlog.c:11758 #, c-format msgid "online backup mode was not canceled" msgstr "le mode de sauvegarde en ligne n'a pas été annulé" -#: access/transam/xlog.c:11597 +#: access/transam/xlog.c:11759 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Le fichier « %s » n'a pas pu être renommé en « %s » : %m" -#: access/transam/xlog.c:11606 access/transam/xlog.c:11618 access/transam/xlog.c:11628 +#: access/transam/xlog.c:11768 access/transam/xlog.c:11780 access/transam/xlog.c:11790 #, c-format msgid "online backup mode canceled" msgstr "mode de sauvegarde en ligne annulé" -#: access/transam/xlog.c:11619 +#: access/transam/xlog.c:11781 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "Les fichiers « %s » et « %s » sont renommés respectivement « %s » et « %s »." -#: access/transam/xlog.c:11629 +#: access/transam/xlog.c:11791 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." msgstr "Le fichier « %s » a été renommé en « %s », mais le fichier « %s » n'a pas pu être renommé en « %s » : %m" -#: access/transam/xlog.c:11753 access/transam/xlogutils.c:726 replication/walreceiver.c:982 replication/walsender.c:2415 +#: access/transam/xlog.c:11915 access/transam/xlogutils.c:726 replication/walreceiver.c:953 replication/walsender.c:2421 #, c-format msgid "could not seek in log segment %s to offset %u: %m" msgstr "n'a pas pu se déplacer dans le journal de transactions %s au décalage %u : %m" -#: access/transam/xlog.c:11769 +#: access/transam/xlog.c:11931 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "n'a pas pu lire le journal de transactions %s, décalage %u : %m" -#: access/transam/xlog.c:12324 +#: access/transam/xlog.c:12497 #, c-format msgid "received promote request" msgstr "a reçu une demande de promotion" -#: access/transam/xlog.c:12337 +#: access/transam/xlog.c:12510 #, c-format msgid "trigger file found: %s" msgstr "fichier trigger trouvé : %s" -#: access/transam/xlog.c:12346 +#: access/transam/xlog.c:12519 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "n'a pas pu tester le fichier trigger « %s » : %m" @@ -2672,7 +2677,7 @@ msgid "a backup is already in progress in this session" msgstr "une sauvegarde est déjà en cours dans cette session" -#: access/transam/xlogfuncs.c:92 commands/tablespace.c:703 commands/tablespace.c:713 postmaster/postmaster.c:1482 replication/basebackup.c:381 replication/basebackup.c:726 storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2470 storage/file/fd.c:3083 storage/ipc/dsm.c:296 utils/adt/misc.c:427 utils/misc/tzparser.c:339 +#: access/transam/xlogfuncs.c:92 commands/tablespace.c:699 commands/tablespace.c:709 postmaster/postmaster.c:1482 replication/basebackup.c:381 replication/basebackup.c:726 storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2470 storage/file/fd.c:3083 storage/ipc/dsm.c:296 utils/adt/misc.c:427 utils/misc/tzparser.c:339 #, c-format msgid "could not open directory \"%s\": %m" msgstr "n'a pas pu ouvrir le répertoire « %s » : %m" @@ -2687,15 +2692,15 @@ msgid "Did you mean to use pg_stop_backup('f')?" msgstr "Souhaitiez-vous utiliser pg_stop_backup('f') ?" -#: access/transam/xlogfuncs.c:205 commands/event_trigger.c:1493 commands/event_trigger.c:2051 commands/extension.c:1915 commands/extension.c:2024 commands/extension.c:2248 commands/prepare.c:721 executor/execExpr.c:2121 executor/execSRF.c:690 executor/functions.c:1029 foreign/foreign.c:488 libpq/hba.c:2579 replication/logical/launcher.c:1126 replication/logical/logicalfuncs.c:176 replication/logical/origin.c:1467 replication/slotfuncs.c:197 -#: replication/walsender.c:3182 utils/adt/datetime.c:4796 utils/adt/genfile.c:421 utils/adt/genfile.c:501 utils/adt/jsonfuncs.c:1689 utils/adt/jsonfuncs.c:1819 utils/adt/jsonfuncs.c:2007 utils/adt/jsonfuncs.c:2134 utils/adt/jsonfuncs.c:3484 utils/adt/misc.c:383 utils/adt/pgstatfuncs.c:458 utils/adt/pgstatfuncs.c:559 utils/fmgr/funcapi.c:71 utils/misc/guc.c:8610 utils/mmgr/portalmem.c:1067 +#: access/transam/xlogfuncs.c:205 commands/event_trigger.c:1493 commands/event_trigger.c:2051 commands/extension.c:1915 commands/extension.c:2024 commands/extension.c:2248 commands/prepare.c:725 executor/execExpr.c:2152 executor/execSRF.c:690 executor/functions.c:1029 foreign/foreign.c:488 libpq/hba.c:2579 replication/logical/launcher.c:1126 replication/logical/logicalfuncs.c:176 replication/logical/origin.c:1467 replication/slotfuncs.c:197 +#: replication/walsender.c:3188 utils/adt/datetime.c:4796 utils/adt/genfile.c:421 utils/adt/genfile.c:501 utils/adt/jsonfuncs.c:1689 utils/adt/jsonfuncs.c:1819 utils/adt/jsonfuncs.c:2007 utils/adt/jsonfuncs.c:2134 utils/adt/jsonfuncs.c:3484 utils/adt/misc.c:383 utils/adt/pgstatfuncs.c:458 utils/adt/pgstatfuncs.c:559 utils/fmgr/funcapi.c:71 utils/misc/guc.c:8610 utils/mmgr/portalmem.c:1067 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "" -"la fonction avec set-value a été appelé dans un contexte qui n'accepte pas\n" +"la fonction avec set-value a été appelée dans un contexte qui n'accepte pas\n" "un ensemble" -#: access/transam/xlogfuncs.c:209 commands/event_trigger.c:1497 commands/event_trigger.c:2055 commands/extension.c:1919 commands/extension.c:2028 commands/extension.c:2252 commands/prepare.c:725 foreign/foreign.c:493 libpq/hba.c:2583 replication/logical/launcher.c:1130 replication/logical/logicalfuncs.c:180 replication/logical/origin.c:1471 replication/slotfuncs.c:201 replication/walsender.c:3186 utils/adt/datetime.c:4800 +#: access/transam/xlogfuncs.c:209 commands/event_trigger.c:1497 commands/event_trigger.c:2055 commands/extension.c:1919 commands/extension.c:2028 commands/extension.c:2252 commands/prepare.c:729 foreign/foreign.c:493 libpq/hba.c:2583 replication/logical/launcher.c:1130 replication/logical/logicalfuncs.c:180 replication/logical/origin.c:1471 replication/slotfuncs.c:201 replication/walsender.c:3192 utils/adt/datetime.c:4800 #: utils/adt/genfile.c:425 utils/adt/genfile.c:505 utils/adt/misc.c:387 utils/adt/pgstatfuncs.c:462 utils/adt/pgstatfuncs.c:563 utils/misc/guc.c:8614 utils/misc/pg_config.c:44 utils/mmgr/portalmem.c:1071 #, c-format msgid "materialize mode required, but it is not allowed in this context" @@ -2745,154 +2750,154 @@ "Les fonctions de contrôle de la restauration peuvent seulement être exécutées\n" "lors de la restauration." -#: access/transam/xlogreader.c:297 +#: access/transam/xlogreader.c:302 #, c-format msgid "invalid record offset at %X/%X" msgstr "décalage invalide de l'enregistrement %X/%X" -#: access/transam/xlogreader.c:305 +#: access/transam/xlogreader.c:310 #, c-format msgid "contrecord is requested by %X/%X" msgstr "« contrecord » est requis par %X/%X" -#: access/transam/xlogreader.c:346 access/transam/xlogreader.c:644 +#: access/transam/xlogreader.c:351 access/transam/xlogreader.c:681 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "longueur invalide de l'enregistrement à %X/%X : voulait %u, a eu %u" -#: access/transam/xlogreader.c:361 +#: access/transam/xlogreader.c:366 #, c-format msgid "record length %u at %X/%X too long" msgstr "longueur trop importante de l'enregistrement %u à %X/%X" -#: access/transam/xlogreader.c:402 +#: access/transam/xlogreader.c:425 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "il n'existe pas de drapeau contrecord à %X/%X" -#: access/transam/xlogreader.c:415 +#: access/transam/xlogreader.c:438 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "longueur %u invalide du contrecord à %X/%X" -#: access/transam/xlogreader.c:652 +#: access/transam/xlogreader.c:689 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "identifiant du gestionnaire de ressources invalide %u à %X/%X" -#: access/transam/xlogreader.c:666 access/transam/xlogreader.c:683 +#: access/transam/xlogreader.c:703 access/transam/xlogreader.c:720 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "enregistrement avec prev-link %X/%X incorrect à %X/%X" -#: access/transam/xlogreader.c:720 +#: access/transam/xlogreader.c:757 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "" "somme de contrôle des données du gestionnaire de ressources incorrecte à\n" "l'enregistrement %X/%X" -#: access/transam/xlogreader.c:757 +#: access/transam/xlogreader.c:794 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "numéro magique invalide %04X dans le segment %s, décalage %u" -#: access/transam/xlogreader.c:771 access/transam/xlogreader.c:822 +#: access/transam/xlogreader.c:808 access/transam/xlogreader.c:859 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "bits d'information %04X invalides dans le segment %s, décalage %u" -#: access/transam/xlogreader.c:797 +#: access/transam/xlogreader.c:834 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s" msgstr "le fichier WAL provient d'un système différent : l'identifiant système de la base dans le fichier WAL est %s, alors que l'identifiant système de la base dans pg_control est %s" -#: access/transam/xlogreader.c:804 +#: access/transam/xlogreader.c:841 #, c-format msgid "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page header" msgstr "le fichier WAL provient d'un système différent : XLOG_SEG_SIZE invalide dans l'en-tête de page" -#: access/transam/xlogreader.c:810 +#: access/transam/xlogreader.c:847 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "le fichier WAL provient d'un système différent : XLOG_BLCKSZ invalide dans l'en-tête de page" -#: access/transam/xlogreader.c:841 +#: access/transam/xlogreader.c:878 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "pageaddr %X/%X inattendue dans le journal de transactions %s, segment %u" -#: access/transam/xlogreader.c:866 +#: access/transam/xlogreader.c:903 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "identifiant timeline %u hors de la séquence (après %u) dans le segment %s, décalage %u" -#: access/transam/xlogreader.c:1111 +#: access/transam/xlogreader.c:1148 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id %u désordonné à %X/%X" -#: access/transam/xlogreader.c:1134 +#: access/transam/xlogreader.c:1171 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA configuré, mais aucune donnée inclus à %X/%X" -#: access/transam/xlogreader.c:1141 +#: access/transam/xlogreader.c:1178 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA non configuré, mais la longueur des données est %u à %X/%X" -#: access/transam/xlogreader.c:1177 +#: access/transam/xlogreader.c:1214 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE initialisé, mais décalage du trou %u longueur %u longueur de l'image du bloc %u à %X/%X" -#: access/transam/xlogreader.c:1193 +#: access/transam/xlogreader.c:1230 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE non initialisé, mais décalage du trou %u longueur %u à %X/%X" -#: access/transam/xlogreader.c:1208 +#: access/transam/xlogreader.c:1245 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED configuré, mais la longueur de l'image du bloc est %u à %X/%X" -#: access/transam/xlogreader.c:1223 +#: access/transam/xlogreader.c:1260 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "ni BKPIMAGE_HAS_HOLE ni BKPIMAGE_IS_COMPRESSED configuré, mais la longueur de l'image du bloc est %u à %X/%X" -#: access/transam/xlogreader.c:1239 +#: access/transam/xlogreader.c:1276 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL configuré, mais pas de relation précédente à %X/%X" -#: access/transam/xlogreader.c:1251 +#: access/transam/xlogreader.c:1288 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "block_id %u invalide à %X/%X" -#: access/transam/xlogreader.c:1334 +#: access/transam/xlogreader.c:1371 #, c-format msgid "record with invalid length at %X/%X" msgstr "enregistrement de longueur invalide à %X/%X" -#: access/transam/xlogreader.c:1423 +#: access/transam/xlogreader.c:1460 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "image compressée invalide à %X/%X, bloc %d" -#: access/transam/xlogutils.c:751 replication/walsender.c:2434 +#: access/transam/xlogutils.c:751 replication/walsender.c:2440 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "n'a pas pu lire le journal de transactions %s, décalage %u, longueur %lu : %m" -#: bootstrap/bootstrap.c:272 postmaster/postmaster.c:843 tcop/postgres.c:3549 +#: bootstrap/bootstrap.c:272 postmaster/postmaster.c:843 tcop/postgres.c:3559 #, c-format msgid "--%s requires a value" msgstr "--%s requiert une valeur" -#: bootstrap/bootstrap.c:277 postmaster/postmaster.c:848 tcop/postgres.c:3554 +#: bootstrap/bootstrap.c:277 postmaster/postmaster.c:848 tcop/postgres.c:3564 #, c-format msgid "-c %s requires a value" msgstr "-c %s requiert une valeur" @@ -3025,8 +3030,8 @@ #: catalog/aclchk.c:885 catalog/aclchk.c:894 commands/collationcmds.c:114 commands/copy.c:1048 commands/copy.c:1068 commands/copy.c:1077 commands/copy.c:1086 commands/copy.c:1095 commands/copy.c:1104 commands/copy.c:1113 commands/copy.c:1122 commands/copy.c:1131 commands/copy.c:1149 commands/copy.c:1165 commands/copy.c:1185 commands/copy.c:1202 commands/dbcommands.c:155 commands/dbcommands.c:164 commands/dbcommands.c:173 #: commands/dbcommands.c:182 commands/dbcommands.c:191 commands/dbcommands.c:200 commands/dbcommands.c:209 commands/dbcommands.c:218 commands/dbcommands.c:227 commands/dbcommands.c:1427 commands/dbcommands.c:1436 commands/dbcommands.c:1445 commands/dbcommands.c:1454 commands/extension.c:1698 commands/extension.c:1708 commands/extension.c:1718 commands/extension.c:1728 commands/extension.c:2969 commands/foreigncmds.c:537 #: commands/foreigncmds.c:546 commands/functioncmds.c:526 commands/functioncmds.c:643 commands/functioncmds.c:652 commands/functioncmds.c:661 commands/functioncmds.c:670 commands/functioncmds.c:2097 commands/functioncmds.c:2105 commands/publicationcmds.c:90 commands/sequence.c:1264 commands/sequence.c:1274 commands/sequence.c:1284 commands/sequence.c:1294 commands/sequence.c:1304 commands/sequence.c:1314 commands/sequence.c:1324 -#: commands/sequence.c:1334 commands/sequence.c:1344 commands/subscriptioncmds.c:110 commands/subscriptioncmds.c:120 commands/subscriptioncmds.c:130 commands/subscriptioncmds.c:140 commands/subscriptioncmds.c:154 commands/subscriptioncmds.c:165 commands/subscriptioncmds.c:179 commands/tablecmds.c:6043 commands/typecmds.c:298 commands/typecmds.c:1396 commands/typecmds.c:1405 commands/typecmds.c:1413 commands/typecmds.c:1421 -#: commands/typecmds.c:1429 commands/user.c:134 commands/user.c:148 commands/user.c:157 commands/user.c:166 commands/user.c:175 commands/user.c:184 commands/user.c:193 commands/user.c:202 commands/user.c:211 commands/user.c:220 commands/user.c:229 commands/user.c:238 commands/user.c:247 commands/user.c:567 commands/user.c:575 commands/user.c:583 commands/user.c:591 commands/user.c:599 commands/user.c:607 commands/user.c:615 +#: commands/sequence.c:1334 commands/sequence.c:1344 commands/subscriptioncmds.c:111 commands/subscriptioncmds.c:121 commands/subscriptioncmds.c:131 commands/subscriptioncmds.c:141 commands/subscriptioncmds.c:157 commands/subscriptioncmds.c:168 commands/subscriptioncmds.c:182 commands/tablecmds.c:6043 commands/typecmds.c:298 commands/typecmds.c:1398 commands/typecmds.c:1407 commands/typecmds.c:1415 commands/typecmds.c:1423 +#: commands/typecmds.c:1431 commands/user.c:134 commands/user.c:148 commands/user.c:157 commands/user.c:166 commands/user.c:175 commands/user.c:184 commands/user.c:193 commands/user.c:202 commands/user.c:211 commands/user.c:220 commands/user.c:229 commands/user.c:238 commands/user.c:247 commands/user.c:567 commands/user.c:575 commands/user.c:583 commands/user.c:591 commands/user.c:599 commands/user.c:607 commands/user.c:615 #: commands/user.c:623 commands/user.c:632 commands/user.c:640 commands/user.c:648 parser/parse_utilcmd.c:427 replication/pgoutput/pgoutput.c:108 replication/pgoutput/pgoutput.c:129 replication/walsender.c:808 replication/walsender.c:819 replication/walsender.c:829 #, c-format msgid "conflicting or redundant options" @@ -3368,7 +3373,7 @@ msgid "language with OID %u does not exist" msgstr "le langage d'OID %u n'existe pas" -#: catalog/aclchk.c:4014 catalog/aclchk.c:4738 commands/collationcmds.c:514 +#: catalog/aclchk.c:4014 catalog/aclchk.c:4738 commands/collationcmds.c:533 #, c-format msgid "schema with OID %u does not exist" msgstr "le schéma d'OID %u n'existe pas" @@ -3423,7 +3428,7 @@ msgid "event trigger with OID %u does not exist" msgstr "le trigger sur événement d'OID %u n'existe pas" -#: catalog/aclchk.c:5006 commands/collationcmds.c:348 +#: catalog/aclchk.c:5006 commands/collationcmds.c:367 #, c-format msgid "collation with OID %u does not exist" msgstr "le collationnement d'OID %u n'existe pas" @@ -3438,12 +3443,12 @@ msgid "extension with OID %u does not exist" msgstr "l'extension d'OID %u n'existe pas" -#: catalog/aclchk.c:5100 commands/publicationcmds.c:733 +#: catalog/aclchk.c:5100 commands/publicationcmds.c:745 #, c-format msgid "publication with OID %u does not exist" msgstr "la publication d'OID %u n'existe pas" -#: catalog/aclchk.c:5126 commands/subscriptioncmds.c:1097 +#: catalog/aclchk.c:5126 commands/subscriptioncmds.c:1101 #, c-format msgid "subscription with OID %u does not exist" msgstr "la souscription d'OID %u n'existe pas" @@ -3566,7 +3571,7 @@ 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:591 commands/createas.c:204 commands/createas.c:501 commands/indexcmds.c:1177 commands/tablecmds.c:13584 commands/view.c:105 regex/regc_pg_locale.c:263 utils/adt/formatting.c:1537 utils/adt/formatting.c:1662 utils/adt/formatting.c:1788 utils/adt/like.c:184 utils/adt/selfuncs.c:5652 utils/adt/varlena.c:1417 utils/adt/varlena.c:1854 +#: catalog/heap.c:591 commands/createas.c:204 commands/createas.c:501 commands/indexcmds.c:1177 commands/tablecmds.c:13584 commands/view.c:105 regex/regc_pg_locale.c:263 utils/adt/formatting.c:1541 utils/adt/formatting.c:1666 utils/adt/formatting.c:1792 utils/adt/like.c:184 utils/adt/selfuncs.c:5679 utils/adt/varlena.c:1417 utils/adt/varlena.c:1854 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." msgstr "Utilisez la clause COLLARE pour configurer explicitement le collationnement." @@ -3576,7 +3581,7 @@ msgid "relation \"%s\" already exists" msgstr "la relation « %s » existe déjà" -#: catalog/heap.c:1093 catalog/pg_type.c:418 catalog/pg_type.c:733 commands/typecmds.c:239 commands/typecmds.c:788 commands/typecmds.c:1139 commands/typecmds.c:1371 commands/typecmds.c:2152 +#: catalog/heap.c:1093 catalog/pg_type.c:418 catalog/pg_type.c:733 commands/typecmds.c:239 commands/typecmds.c:788 commands/typecmds.c:1141 commands/typecmds.c:1373 commands/typecmds.c:2154 #, c-format msgid "type \"%s\" already exists" msgstr "le type « %s » existe déjà" @@ -3633,12 +3638,12 @@ 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:2681 rewrite/rewriteHandler.c:1164 +#: catalog/heap.c:2681 rewrite/rewriteHandler.c:1187 #, 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:2686 commands/prepare.c:384 parser/parse_node.c:430 parser/parse_target.c:590 parser/parse_target.c:840 parser/parse_target.c:850 rewrite/rewriteHandler.c:1169 +#: catalog/heap.c:2686 commands/prepare.c:388 parser/parse_node.c:430 parser/parse_target.c:590 parser/parse_target.c:840 parser/parse_target.c:850 rewrite/rewriteHandler.c:1192 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Vous devez réécrire l'expression ou lui appliquer une transformation de type." @@ -3722,12 +3727,12 @@ msgid "building index \"%s\" on table \"%s\"" msgstr "construction de l'index « %s » sur la table « %s »" -#: catalog/index.c:3451 +#: catalog/index.c:3440 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "ne peut pas ré-indexer les tables temporaires des autres sessions" -#: catalog/index.c:3574 +#: catalog/index.c:3563 #, c-format msgid "index \"%s\" was reindexed" msgstr "l'index « %s » a été réindexée" @@ -3862,12 +3867,12 @@ msgid "cannot create temporary tables during a parallel operation" msgstr "ne peut pas créer de tables temporaires pendant une opération parallèle" -#: catalog/namespace.c:4133 commands/tablespace.c:1171 commands/variable.c:64 utils/misc/guc.c:10100 utils/misc/guc.c:10178 +#: catalog/namespace.c:4133 commands/tablespace.c:1167 commands/variable.c:64 utils/misc/guc.c:10100 utils/misc/guc.c:10178 #, c-format msgid "List syntax is invalid." msgstr "La syntaxe de la liste est invalide." -#: catalog/objectaddress.c:1237 catalog/pg_publication.c:66 commands/lockcmds.c:95 commands/policy.c:94 commands/policy.c:372 commands/policy.c:462 commands/tablecmds.c:225 commands/tablecmds.c:267 commands/tablecmds.c:1548 commands/tablecmds.c:4778 commands/tablecmds.c:8833 +#: catalog/objectaddress.c:1237 catalog/pg_publication.c:66 commands/lockcmds.c:95 commands/policy.c:95 commands/policy.c:373 commands/tablecmds.c:225 commands/tablecmds.c:267 commands/tablecmds.c:1548 commands/tablecmds.c:4778 commands/tablecmds.c:8833 #, c-format msgid "\"%s\" is not a table" msgstr "« %s » n'est pas une table" @@ -3902,7 +3907,7 @@ msgid "default value for column \"%s\" of relation \"%s\" does not exist" msgstr "la valeur par défaut de la colonne « %s » de la relation « %s » n'existe pas" -#: catalog/objectaddress.c:1508 commands/functioncmds.c:128 commands/tablecmds.c:253 commands/typecmds.c:3295 parser/parse_type.c:244 parser/parse_type.c:273 parser/parse_type.c:812 utils/adt/acl.c:4436 +#: catalog/objectaddress.c:1508 commands/functioncmds.c:128 commands/tablecmds.c:253 commands/typecmds.c:3302 parser/parse_type.c:244 parser/parse_type.c:273 parser/parse_type.c:812 utils/adt/acl.c:4436 #, c-format msgid "type \"%s\" does not exist" msgstr "le type « %s » n'existe pas" @@ -4002,77 +4007,77 @@ msgid "must have CREATEROLE privilege" msgstr "doit avoir l'attribut CREATEROLE" -#: catalog/objectaddress.c:2493 +#: catalog/objectaddress.c:2494 #, c-format msgid "unrecognized object type \"%s\"" msgstr "type d'objet non reconnu « %s »" -#: catalog/objectaddress.c:2688 +#: catalog/objectaddress.c:2689 #, c-format msgid " column %s" msgstr " colonne %s" -#: catalog/objectaddress.c:2694 +#: catalog/objectaddress.c:2695 #, c-format msgid "function %s" msgstr "fonction %s" -#: catalog/objectaddress.c:2699 +#: catalog/objectaddress.c:2700 #, c-format msgid "type %s" msgstr "type %s" -#: catalog/objectaddress.c:2729 +#: catalog/objectaddress.c:2730 #, c-format msgid "cast from %s to %s" msgstr "conversion de %s en %s" -#: catalog/objectaddress.c:2757 +#: catalog/objectaddress.c:2758 #, c-format msgid "collation %s" msgstr "collationnement %s" -#: catalog/objectaddress.c:2782 +#: catalog/objectaddress.c:2783 #, c-format msgid "constraint %s on %s" msgstr "contrainte %s sur %s" -#: catalog/objectaddress.c:2788 +#: catalog/objectaddress.c:2789 #, c-format msgid "constraint %s" msgstr "contrainte %s" -#: catalog/objectaddress.c:2815 +#: catalog/objectaddress.c:2816 #, c-format msgid "conversion %s" msgstr "conversion %s" -#: catalog/objectaddress.c:2853 +#: catalog/objectaddress.c:2854 #, c-format msgid "default for %s" msgstr "valeur par défaut pour %s" -#: catalog/objectaddress.c:2862 +#: catalog/objectaddress.c:2863 #, c-format msgid "language %s" msgstr "langage %s" -#: catalog/objectaddress.c:2867 +#: catalog/objectaddress.c:2868 #, c-format msgid "large object %u" msgstr "« Large Object » %u" -#: catalog/objectaddress.c:2872 +#: catalog/objectaddress.c:2873 #, c-format msgid "operator %s" msgstr "opérateur %s" -#: catalog/objectaddress.c:2904 +#: catalog/objectaddress.c:2905 #, c-format msgid "operator class %s for access method %s" msgstr "classe d'opérateur %s pour la méthode d'accès %s" -#: catalog/objectaddress.c:2927 +#: catalog/objectaddress.c:2928 #, c-format msgid "access method %s" msgstr "méthode d'accès %s" @@ -4081,7 +4086,7 @@ #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2970 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "opérateur %d (%s, %s) de %s : %s" @@ -4090,198 +4095,198 @@ #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:3019 +#: catalog/objectaddress.c:3020 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "fonction %d (%s, %s) de %s : %s" -#: catalog/objectaddress.c:3059 +#: catalog/objectaddress.c:3060 #, c-format msgid "rule %s on " msgstr "règle %s active " -#: catalog/objectaddress.c:3094 +#: catalog/objectaddress.c:3095 #, c-format msgid "trigger %s on " msgstr "trigger %s actif " -#: catalog/objectaddress.c:3111 +#: catalog/objectaddress.c:3112 #, c-format msgid "schema %s" msgstr "schéma %s" -#: catalog/objectaddress.c:3134 +#: catalog/objectaddress.c:3135 #, c-format msgid "statistics object %s" msgstr "objet statistique %s" -#: catalog/objectaddress.c:3161 +#: catalog/objectaddress.c:3162 #, c-format msgid "text search parser %s" msgstr "analyseur %s de la recherche plein texte" -#: catalog/objectaddress.c:3187 +#: catalog/objectaddress.c:3188 #, c-format msgid "text search dictionary %s" msgstr "dictionnaire %s de la recherche plein texte" -#: catalog/objectaddress.c:3213 +#: catalog/objectaddress.c:3214 #, c-format msgid "text search template %s" msgstr "modèle %s de la recherche plein texte" -#: catalog/objectaddress.c:3239 +#: catalog/objectaddress.c:3240 #, c-format msgid "text search configuration %s" msgstr "configuration %s de recherche plein texte" -#: catalog/objectaddress.c:3248 +#: catalog/objectaddress.c:3249 #, c-format msgid "role %s" msgstr "rôle %s" -#: catalog/objectaddress.c:3261 +#: catalog/objectaddress.c:3262 #, c-format msgid "database %s" msgstr "base de données %s" -#: catalog/objectaddress.c:3273 +#: catalog/objectaddress.c:3274 #, c-format msgid "tablespace %s" msgstr "tablespace %s" -#: catalog/objectaddress.c:3282 +#: catalog/objectaddress.c:3283 #, c-format msgid "foreign-data wrapper %s" msgstr "wrapper de données distantes %s" -#: catalog/objectaddress.c:3291 +#: catalog/objectaddress.c:3292 #, c-format msgid "server %s" msgstr "serveur %s" -#: catalog/objectaddress.c:3319 +#: catalog/objectaddress.c:3320 #, c-format msgid "user mapping for %s on server %s" msgstr "correspondance utilisateur pour %s sur le serveur %s" -#: catalog/objectaddress.c:3354 +#: catalog/objectaddress.c:3355 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "droits par défaut pour les nouvelles relations appartenant au rôle %s" -#: catalog/objectaddress.c:3359 +#: catalog/objectaddress.c:3360 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "droits par défaut pour les nouvelles séquences appartenant au rôle %s" -#: catalog/objectaddress.c:3364 +#: catalog/objectaddress.c:3365 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "droits par défaut pour les nouvelles fonctions appartenant au rôle %s" -#: catalog/objectaddress.c:3369 +#: catalog/objectaddress.c:3370 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "droits par défaut pour les nouveaux types appartenant au rôle %s" -#: catalog/objectaddress.c:3374 +#: catalog/objectaddress.c:3375 #, c-format msgid "default privileges on new schemas belonging to role %s" msgstr "droits par défaut pour les nouveaux schémas appartenant au rôle %s" -#: catalog/objectaddress.c:3380 +#: catalog/objectaddress.c:3381 #, c-format msgid "default privileges belonging to role %s" msgstr "droits par défaut appartenant au rôle %s" -#: catalog/objectaddress.c:3388 +#: catalog/objectaddress.c:3389 #, c-format msgid " in schema %s" msgstr " dans le schéma %s" -#: catalog/objectaddress.c:3405 +#: catalog/objectaddress.c:3406 #, c-format msgid "extension %s" msgstr "extension %s" -#: catalog/objectaddress.c:3418 +#: catalog/objectaddress.c:3419 #, c-format msgid "event trigger %s" msgstr "trigger sur événement %s" -#: catalog/objectaddress.c:3450 +#: catalog/objectaddress.c:3451 #, c-format msgid "policy %s on " msgstr "politique %s sur " -#: catalog/objectaddress.c:3461 +#: catalog/objectaddress.c:3462 #, c-format msgid "publication %s" msgstr "publication %s" #. translator: first %s is, e.g., "table %s" -#: catalog/objectaddress.c:3486 +#: catalog/objectaddress.c:3487 #, c-format msgid "publication of %s in publication %s" msgstr "publication de %s dans la publication %s" -#: catalog/objectaddress.c:3495 +#: catalog/objectaddress.c:3496 #, c-format msgid "subscription %s" msgstr "souscription %s" -#: catalog/objectaddress.c:3513 +#: catalog/objectaddress.c:3514 #, c-format msgid "transform for %s language %s" msgstr "transformation pour %s langage %s" -#: catalog/objectaddress.c:3576 +#: catalog/objectaddress.c:3577 #, c-format msgid "table %s" msgstr "table %s" -#: catalog/objectaddress.c:3580 +#: catalog/objectaddress.c:3581 #, c-format msgid "index %s" msgstr "index %s" -#: catalog/objectaddress.c:3584 +#: catalog/objectaddress.c:3585 #, c-format msgid "sequence %s" msgstr "séquence %s" -#: catalog/objectaddress.c:3588 +#: catalog/objectaddress.c:3589 #, c-format msgid "toast table %s" msgstr "table TOAST %s" -#: catalog/objectaddress.c:3592 +#: catalog/objectaddress.c:3593 #, c-format msgid "view %s" msgstr "vue %s" -#: catalog/objectaddress.c:3596 +#: catalog/objectaddress.c:3597 #, c-format msgid "materialized view %s" msgstr "vue matérialisée %s" -#: catalog/objectaddress.c:3600 +#: catalog/objectaddress.c:3601 #, c-format msgid "composite type %s" msgstr "type composite %s" -#: catalog/objectaddress.c:3604 +#: catalog/objectaddress.c:3605 #, c-format msgid "foreign table %s" msgstr "table distante %s" -#: catalog/objectaddress.c:3609 +#: catalog/objectaddress.c:3610 #, c-format msgid "relation %s" msgstr "relation %s" -#: catalog/objectaddress.c:3646 +#: catalog/objectaddress.c:3647 #, c-format msgid "operator family %s for access method %s" msgstr "famille d'opérateur %s pour la méthode d'accès %s" @@ -4303,7 +4308,7 @@ msgid "partition \"%s\" would overlap partition \"%s\"" msgstr "la partition « %s » surchargerait la partition « %s »" -#: catalog/partition.c:942 catalog/partition.c:1135 commands/analyze.c:1486 commands/copy.c:2562 commands/tablecmds.c:8924 executor/execExprInterp.c:2853 executor/execMain.c:1916 executor/execMain.c:1996 executor/execMain.c:2046 executor/execMain.c:2158 executor/execMain.c:3386 executor/nodeModifyTable.c:1437 parser/parse_utilcmd.c:1246 +#: catalog/partition.c:942 catalog/partition.c:1135 commands/analyze.c:1486 commands/copy.c:2562 commands/tablecmds.c:8924 executor/execExprInterp.c:2866 executor/execMain.c:1916 executor/execMain.c:1996 executor/execMain.c:2046 executor/execMain.c:2158 executor/execMain.c:3392 executor/nodeModifyTable.c:1437 parser/parse_utilcmd.c:1246 msgid "could not convert row type" msgstr "n'a pas pu convertir le type de ligne" @@ -4418,7 +4423,7 @@ 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:817 commands/typecmds.c:1736 commands/typecmds.c:1787 commands/typecmds.c:1826 commands/typecmds.c:1849 commands/typecmds.c:1870 commands/typecmds.c:1897 commands/typecmds.c:1924 commands/typecmds.c:2001 commands/typecmds.c:2043 parser/parse_func.c:369 parser/parse_func.c:398 parser/parse_func.c:423 parser/parse_func.c:437 parser/parse_func.c:512 parser/parse_func.c:523 parser/parse_func.c:1988 +#: catalog/pg_aggregate.c:817 commands/typecmds.c:1738 commands/typecmds.c:1789 commands/typecmds.c:1828 commands/typecmds.c:1851 commands/typecmds.c:1872 commands/typecmds.c:1899 commands/typecmds.c:1926 commands/typecmds.c:2003 commands/typecmds.c:2045 parser/parse_func.c:369 parser/parse_func.c:398 parser/parse_func.c:423 parser/parse_func.c:437 parser/parse_func.c:512 parser/parse_func.c:523 parser/parse_func.c:1988 #, c-format msgid "function %s does not exist" msgstr "la fonction %s n'existe pas" @@ -4493,7 +4498,7 @@ msgid "default conversion for %s to %s already exists" msgstr "la conversion par défaut de %s vers %s existe déjà" -#: catalog/pg_depend.c:163 commands/extension.c:3238 +#: catalog/pg_depend.c:163 commands/extension.c:3246 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "%s est déjà un membre de l'extension « %s »" @@ -4751,7 +4756,7 @@ msgid "relation \"%s\" is already member of publication \"%s\"" msgstr "la relation « %s » est déjà un membre de la publication « %s »" -#: catalog/pg_publication.c:402 catalog/pg_publication.c:423 commands/publicationcmds.c:401 commands/publicationcmds.c:702 +#: catalog/pg_publication.c:402 catalog/pg_publication.c:423 commands/publicationcmds.c:406 commands/publicationcmds.c:714 #, c-format msgid "publication \"%s\" does not exist" msgstr "la publication « %s » n'existe pas" @@ -4825,7 +4830,7 @@ "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_subscription.c:176 commands/subscriptioncmds.c:633 commands/subscriptioncmds.c:843 commands/subscriptioncmds.c:1066 +#: catalog/pg_subscription.c:176 commands/subscriptioncmds.c:637 commands/subscriptioncmds.c:847 commands/subscriptioncmds.c:1070 #, c-format msgid "subscription \"%s\" does not exist" msgstr "la souscription « %s » n'existe pas" @@ -4987,7 +4992,7 @@ msgid "publication \"%s\" already exists" msgstr "la publication « %s » existe déjà" -#: commands/alter.c:99 commands/subscriptioncmds.c:358 +#: commands/alter.c:99 commands/subscriptioncmds.c:361 #, c-format msgid "subscription \"%s\" already exists" msgstr "la souscription « %s » existe déjà" @@ -5287,42 +5292,47 @@ msgid "parameter \"lc_ctype\" must be specified" msgstr "le paramètre « lc_ctype » doit être spécifié" -#: commands/collationcmds.c:246 +#: commands/collationcmds.c:208 +#, c-format +msgid "current database's encoding is not supported with this provider" +msgstr "l'encodage de la base de données courante n'est pas supporté avec ce fournisseur" + +#: commands/collationcmds.c:265 #, c-format msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" msgstr "le collationnament « %s » pour l'encodage « %s » existe déjà dans le schéma « %s »" -#: commands/collationcmds.c:257 +#: commands/collationcmds.c:276 #, c-format msgid "collation \"%s\" already exists in schema \"%s\"" msgstr "le collationnement « %s » existe déjà dans le schéma « %s »" -#: commands/collationcmds.c:305 +#: commands/collationcmds.c:324 #, c-format msgid "changing version from %s to %s" msgstr "changement de version de %s à %s" -#: commands/collationcmds.c:320 +#: commands/collationcmds.c:339 #, c-format msgid "version has not changed" msgstr "la version n'a pas changé" -#: commands/collationcmds.c:451 +#: commands/collationcmds.c:470 #, c-format msgid "could not convert locale name \"%s\" to language tag: %s" msgstr "n'a pas pu convertir le nom de locale « %s » en balise de langage : %s" -#: commands/collationcmds.c:509 +#: commands/collationcmds.c:528 #, c-format msgid "must be superuser to import system collations" msgstr "doit être super-utilisateur pour importer les collationnements systèmes" -#: commands/collationcmds.c:537 commands/copy.c:1825 commands/copy.c:3183 +#: commands/collationcmds.c:556 commands/copy.c:1825 commands/copy.c:3183 #, c-format msgid "could not execute command \"%s\": %m" msgstr "n'a pas pu exécuter la commande « %s » : %m" -#: commands/collationcmds.c:668 +#: commands/collationcmds.c:687 #, c-format msgid "no usable system locales were found" msgstr "aucune locale système utilisable n'a été trouvée" @@ -5454,7 +5464,7 @@ #: commands/copy.c:1215 commands/dbcommands.c:242 commands/dbcommands.c:1461 #, c-format msgid "option \"%s\" not recognized" -msgstr "option « %s » non reconnu" +msgstr "option « %s » non reconnue" #: commands/copy.c:1227 #, c-format @@ -6120,7 +6130,7 @@ "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:1355 commands/dbcommands.c:1900 commands/dbcommands.c:2104 commands/dbcommands.c:2159 commands/tablespace.c:604 +#: commands/dbcommands.c:1355 commands/dbcommands.c:1900 commands/dbcommands.c:2104 commands/dbcommands.c:2159 #, c-format msgid "some useless files may be left behind in old database directory \"%s\"" msgstr "" @@ -6658,19 +6668,19 @@ msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "la version « %s » de l'extension « %s » est déjà installée" -#: commands/extension.c:3250 +#: commands/extension.c:3258 #, c-format msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension" msgstr "" "ne peut pas ajouter le schéma « %s » à l'extension « %s » car le schéma\n" "contient l'extension" -#: commands/extension.c:3278 +#: commands/extension.c:3286 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "%s n'est pas un membre de l'extension « %s »" -#: commands/extension.c:3344 +#: commands/extension.c:3352 #, c-format msgid "file \"%s\" is too large" msgstr "le fichier « %s » est trop gros" @@ -7243,7 +7253,7 @@ msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "la méthode d'accès « %s » ne supporte pas les options NULLS FIRST/LAST" -#: commands/indexcmds.c:1352 commands/typecmds.c:1974 +#: commands/indexcmds.c:1352 commands/typecmds.c:1976 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "" @@ -7262,7 +7272,7 @@ msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »" -#: commands/indexcmds.c:1404 commands/typecmds.c:1962 +#: commands/indexcmds.c:1404 commands/typecmds.c:1964 #, 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" @@ -7309,12 +7319,12 @@ msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view." msgstr "Crée un index unique sans clause WHERE sur une ou plusieurs colonnes de la vue matérialisée." -#: commands/matview.c:645 +#: commands/matview.c:652 #, c-format msgid "new data for materialized view \"%s\" contains duplicate rows without any null columns" msgstr "les nouvelles données pour la vue matérialisée « %s » contiennent des lignes dupliquées sans colonnes NULL" -#: commands/matview.c:647 +#: commands/matview.c:654 #, c-format msgid "Row: %s" msgstr "Ligne : %s" @@ -7538,47 +7548,42 @@ msgid "operator attribute \"%s\" cannot be changed" msgstr "l'attribut « %s » de l'opérateur ne peut pas être changé" -#: commands/policy.c:87 commands/policy.c:378 commands/policy.c:468 commands/statscmds.c:132 commands/tablecmds.c:1171 commands/tablecmds.c:1561 commands/tablecmds.c:2562 commands/tablecmds.c:4760 commands/tablecmds.c:7125 commands/tablecmds.c:13219 commands/tablecmds.c:13254 commands/trigger.c:259 commands/trigger.c:1320 commands/trigger.c:1429 rewrite/rewriteDefine.c:273 rewrite/rewriteDefine.c:936 +#: commands/policy.c:88 commands/policy.c:379 commands/statscmds.c:132 commands/tablecmds.c:1171 commands/tablecmds.c:1561 commands/tablecmds.c:2562 commands/tablecmds.c:4760 commands/tablecmds.c:7125 commands/tablecmds.c:13219 commands/tablecmds.c:13254 commands/trigger.c:259 commands/trigger.c:1320 commands/trigger.c:1429 rewrite/rewriteDefine.c:273 rewrite/rewriteDefine.c:936 #, c-format msgid "permission denied: \"%s\" is a system catalog" msgstr "droit refusé : « %s » est un catalogue système" -#: commands/policy.c:170 +#: commands/policy.c:171 #, c-format msgid "ignoring specified roles other than PUBLIC" msgstr "ingore les rôles spécifiés autre que PUBLIC" -#: commands/policy.c:171 +#: commands/policy.c:172 #, c-format msgid "All roles are members of the PUBLIC role." msgstr "Tous les rôles sont membres du rôle PUBLIC." -#: commands/policy.c:492 -#, c-format -msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" -msgstr "le rôle « %s » n'a pas pu être supprimé de la politique « %s » sur « %s »" - -#: commands/policy.c:698 +#: commands/policy.c:604 #, c-format msgid "WITH CHECK cannot be applied to SELECT or DELETE" msgstr "WITH CHECK ne peut pas être appliqué à SELECT et DELETE" -#: commands/policy.c:707 commands/policy.c:1005 +#: commands/policy.c:613 commands/policy.c:911 #, c-format msgid "only WITH CHECK expression allowed for INSERT" msgstr "seule une expression WITH CHECK est autorisée pour INSERT" -#: commands/policy.c:780 commands/policy.c:1225 +#: commands/policy.c:686 commands/policy.c:1131 #, c-format msgid "policy \"%s\" for table \"%s\" already exists" msgstr "la politique « %s » pour la table « %s » existe déjà" -#: commands/policy.c:977 commands/policy.c:1253 commands/policy.c:1325 +#: commands/policy.c:883 commands/policy.c:1159 commands/policy.c:1231 #, c-format msgid "policy \"%s\" for table \"%s\" does not exist" msgstr "la politique « %s » pour la table « %s » n'existe pas" -#: commands/policy.c:995 +#: commands/policy.c:901 #, c-format msgid "only USING expression allowed for SELECT, DELETE" msgstr "seule une expression USING est autorisée pour SELECT, DELETE" @@ -7613,34 +7618,34 @@ msgid "utility statements cannot be prepared" msgstr "les instructions utilitaires ne peuvent pas être préparées" -#: commands/prepare.c:269 commands/prepare.c:274 +#: commands/prepare.c:280 commands/prepare.c:285 #, c-format msgid "prepared statement is not a SELECT" msgstr "l'instruction préparée n'est pas un SELECT" -#: commands/prepare.c:342 +#: commands/prepare.c:346 #, c-format msgid "wrong number of parameters for prepared statement \"%s\"" msgstr "mauvais nombre de paramètres pour l'instruction préparée « %s »" -#: commands/prepare.c:344 +#: commands/prepare.c:348 #, c-format msgid "Expected %d parameters but got %d." msgstr "%d paramètres attendus mais %d reçus." -#: commands/prepare.c:380 +#: commands/prepare.c:384 #, 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" -#: commands/prepare.c:474 +#: commands/prepare.c:478 #, c-format msgid "prepared statement \"%s\" already exists" msgstr "l'instruction préparée « %s » existe déjà" -#: commands/prepare.c:513 +#: commands/prepare.c:517 #, c-format msgid "prepared statement \"%s\" does not exist" msgstr "l'instruction préparée « %s » n'existe pas" @@ -7697,27 +7702,27 @@ msgid "must be superuser to create FOR ALL TABLES publication" msgstr "doit être super-utilisateur pour créer une publication « FOR ALL TABLES »" -#: commands/publicationcmds.c:321 +#: commands/publicationcmds.c:326 #, c-format msgid "publication \"%s\" is defined as FOR ALL TABLES" msgstr "la publication « %s » est définie avec FOR ALL TABLES" -#: commands/publicationcmds.c:323 +#: commands/publicationcmds.c:328 #, c-format msgid "Tables cannot be added to or dropped from FOR ALL TABLES publications." msgstr "Les tables ne peuvent pas être ajoutées ou supprimées à des publications FOR ALL TABLES." -#: commands/publicationcmds.c:624 +#: commands/publicationcmds.c:636 #, c-format msgid "relation \"%s\" is not part of the publication" msgstr "la relation « %s » ne fait pas partie de la publication" -#: commands/publicationcmds.c:667 +#: commands/publicationcmds.c:679 #, c-format msgid "permission denied to change owner of publication \"%s\"" msgstr "droit refusé pour modifier le propriétaire de la publication « %s »" -#: commands/publicationcmds.c:669 +#: commands/publicationcmds.c:681 #, c-format msgid "The owner of a FOR ALL TABLES publication must be a superuser." msgstr "Le propriétaire d'une publication FOR ALL TABLES doit être un super-utilisateur." @@ -7934,147 +7939,147 @@ msgid "unrecognized statistics kind \"%s\"" msgstr "type de statistique « %s » non reconnu" -#: commands/subscriptioncmds.c:187 +#: commands/subscriptioncmds.c:190 #, c-format msgid "unrecognized subscription parameter: %s" msgstr "paramètre de souscription non reconnu : %s" -#: commands/subscriptioncmds.c:200 +#: commands/subscriptioncmds.c:203 #, c-format msgid "connect = false and enabled = true are mutually exclusive options" msgstr "connect = false et enabled = true sont des options mutuellement exclusives" -#: commands/subscriptioncmds.c:205 +#: commands/subscriptioncmds.c:208 #, c-format msgid "connect = false and create_slot = true are mutually exclusive options" msgstr "connect = false et create_slot = true sont des options mutuellement exclusives" -#: commands/subscriptioncmds.c:210 +#: commands/subscriptioncmds.c:213 #, c-format msgid "connect = false and copy_data = true are mutually exclusive options" msgstr "connect = false et copy_data = true sont des options mutuellement exclusives" -#: commands/subscriptioncmds.c:227 +#: commands/subscriptioncmds.c:230 #, c-format msgid "slot_name = NONE and enabled = true are mutually exclusive options" msgstr "slot_name = NONE et enabled = true sont des options mutuellement exclusives" -#: commands/subscriptioncmds.c:232 +#: commands/subscriptioncmds.c:235 #, c-format msgid "slot_name = NONE and create_slot = true are mutually exclusive options" msgstr "slot_name = NONE et create_slot = true sont des options mutuellement exclusives" -#: commands/subscriptioncmds.c:237 +#: commands/subscriptioncmds.c:240 #, c-format msgid "subscription with slot_name = NONE must also set enabled = false" msgstr "la souscription avec slot_name = NONE doit aussi être configurée avec enabled = false" -#: commands/subscriptioncmds.c:242 +#: commands/subscriptioncmds.c:245 #, c-format msgid "subscription with slot_name = NONE must also set create_slot = false" msgstr "la souscription avec slot_name = NONE doit aussi être configurée avec create_slot = false" -#: commands/subscriptioncmds.c:284 +#: commands/subscriptioncmds.c:287 #, c-format msgid "publication name \"%s\" used more than once" msgstr "nom de publication « %s » utilisé plus d'une fois" -#: commands/subscriptioncmds.c:347 +#: commands/subscriptioncmds.c:350 #, c-format msgid "must be superuser to create subscriptions" msgstr "doit être super-utilisateur pour créer des souscriptions" -#: commands/subscriptioncmds.c:427 commands/subscriptioncmds.c:520 replication/logical/tablesync.c:856 replication/logical/worker.c:1689 +#: commands/subscriptioncmds.c:430 commands/subscriptioncmds.c:524 replication/logical/tablesync.c:859 replication/logical/worker.c:1675 #, c-format msgid "could not connect to the publisher: %s" msgstr "n'a pas pu se connecter au publieur : %s" -#: commands/subscriptioncmds.c:469 +#: commands/subscriptioncmds.c:472 #, c-format msgid "created replication slot \"%s\" on publisher" msgstr "création du slot de réplication « %s » sur le publieur" -#: commands/subscriptioncmds.c:486 +#: commands/subscriptioncmds.c:489 #, c-format msgid "tables were not subscribed, you will have to run ALTER SUBSCRIPTION ... REFRESH PUBLICATION to subscribe the tables" msgstr "les tables n'étaient pas souscrites, vous devrez exécuter ALTER SUBSCRIPTION ... REFRESH PUBLICATION pour souscrire les tables" -#: commands/subscriptioncmds.c:576 +#: commands/subscriptioncmds.c:580 #, c-format msgid "table \"%s.%s\" added to subscription \"%s\"" msgstr "table « %s.%s » ajoutée à la souscription « %s »" -#: commands/subscriptioncmds.c:600 +#: commands/subscriptioncmds.c:604 #, c-format msgid "table \"%s.%s\" removed from subscription \"%s\"" msgstr "table « %s.%s » supprimée de la souscription « %s »" -#: commands/subscriptioncmds.c:669 +#: commands/subscriptioncmds.c:673 #, c-format msgid "cannot set slot_name = NONE for enabled subscription" msgstr "ne peut pas configurer slot_name = NONE pour la souscription activée" -#: commands/subscriptioncmds.c:703 +#: commands/subscriptioncmds.c:707 #, c-format msgid "cannot enable subscription that does not have a slot name" msgstr "ne peut pas activer une souscription qui n'a pas de nom de slot" -#: commands/subscriptioncmds.c:749 +#: commands/subscriptioncmds.c:753 #, c-format msgid "ALTER SUBSCRIPTION with refresh is not allowed for disabled subscriptions" msgstr "ALTER SUBSCRIPTION avec rafraichissement n'est pas autorisé pour les souscriptions désactivées" -#: commands/subscriptioncmds.c:750 +#: commands/subscriptioncmds.c:754 #, c-format msgid "Use ALTER SUBSCRIPTION ... SET PUBLICATION ... WITH (refresh = false)." msgstr "Utilisez ALTER SUBSCRIPTION ... SET PUBLICATION ... WITH (refresh = false)." -#: commands/subscriptioncmds.c:768 +#: commands/subscriptioncmds.c:772 #, c-format msgid "ALTER SUBSCRIPTION ... REFRESH is not allowed for disabled subscriptions" msgstr "ALTER SUBSCRIPTION ... REFRESH n'est pas autorisé pour les souscriptions désactivées" -#: commands/subscriptioncmds.c:847 +#: commands/subscriptioncmds.c:851 #, c-format msgid "subscription \"%s\" does not exist, skipping" msgstr "la souscription « %s » n'existe pas, poursuite du traitement" -#: commands/subscriptioncmds.c:971 +#: commands/subscriptioncmds.c:975 #, c-format msgid "could not connect to publisher when attempting to drop the replication slot \"%s\"" msgstr "n'a pas pu se connecter au publieur pour supprimer le slot de réplication « %s »" -#: commands/subscriptioncmds.c:973 commands/subscriptioncmds.c:987 replication/logical/tablesync.c:906 replication/logical/tablesync.c:928 +#: commands/subscriptioncmds.c:977 commands/subscriptioncmds.c:991 replication/logical/tablesync.c:909 replication/logical/tablesync.c:931 #, c-format msgid "The error was: %s" msgstr "L'erreur était : %s" -#: commands/subscriptioncmds.c:974 +#: commands/subscriptioncmds.c:978 #, c-format msgid "Use ALTER SUBSCRIPTION ... SET (slot_name = NONE) to disassociate the subscription from the slot." msgstr "Utilisez ALTER SUBSCRIPTION ... SET (slot_name = NONE) pour dissocier la souscription du slot." -#: commands/subscriptioncmds.c:985 +#: commands/subscriptioncmds.c:989 #, c-format msgid "could not drop the replication slot \"%s\" on publisher" msgstr "n'a pas pu supprimer le slot de réplication « %s » sur le publieur" -#: commands/subscriptioncmds.c:990 +#: commands/subscriptioncmds.c:994 #, c-format msgid "dropped replication slot \"%s\" on publisher" msgstr "slot de réplication « %s » supprimé sur le publieur" -#: commands/subscriptioncmds.c:1031 +#: commands/subscriptioncmds.c:1035 #, c-format msgid "permission denied to change owner of subscription \"%s\"" msgstr "droit refusé pour modifier le propriétaire de la souscription « %s »" -#: commands/subscriptioncmds.c:1033 +#: commands/subscriptioncmds.c:1037 #, c-format msgid "The owner of a subscription must be a superuser." msgstr "Le propriétaire d'une souscription doit être un super-utilisateur." -#: commands/subscriptioncmds.c:1146 +#: commands/subscriptioncmds.c:1150 #, c-format msgid "could not receive list of replicated tables from the publisher: %s" msgstr "n'a pas pu recevoir la liste des tables répliquées à partir du publieur : %s" @@ -8274,7 +8279,7 @@ msgid "inherited column \"%s\" has a type conflict" msgstr "la colonne héritée « %s » a un conflit de type" -#: commands/tablecmds.c:1931 commands/tablecmds.c:1954 commands/tablecmds.c:2159 commands/tablecmds.c:2189 parser/parse_coerce.c:1657 parser/parse_coerce.c:1677 parser/parse_coerce.c:1697 parser/parse_coerce.c:1743 parser/parse_coerce.c:1782 parser/parse_param.c:218 +#: commands/tablecmds.c:1931 commands/tablecmds.c:1954 commands/tablecmds.c:2159 commands/tablecmds.c:2189 parser/parse_coerce.c:1669 parser/parse_coerce.c:1689 parser/parse_coerce.c:1709 parser/parse_coerce.c:1755 parser/parse_coerce.c:1794 parser/parse_param.c:218 #, c-format msgid "%s versus %s" msgstr "%s versus %s" @@ -8718,7 +8723,7 @@ #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "" -"les constraintes sur des tables temporaires ne peuvent référencer que des\n" +"les contraintes sur des tables temporaires ne peuvent référencer que des\n" "tables temporaires" #: commands/tablecmds.c:7159 @@ -8761,7 +8766,7 @@ #: commands/tablecmds.c:7784 #, c-format msgid "constraint must be validated on child tables too" -msgstr "la contrainte doit aussi être validées sur les tables enfants" +msgstr "la contrainte doit aussi être validée sur les tables enfants" #: commands/tablecmds.c:7871 #, c-format @@ -8970,7 +8975,7 @@ msgid "no matching relations in tablespace \"%s\" found" msgstr "aucune relation correspondante trouvée dans le tablespace « %s »" -#: commands/tablecmds.c:11016 storage/buffer/bufmgr.c:915 +#: commands/tablecmds.c:11016 storage/buffer/bufmgr.c:924 #, c-format msgid "invalid page in block %u of relation %s" msgstr "page invalide dans le bloc %u de la relation %s" @@ -9309,17 +9314,17 @@ msgid "partition constraint for table \"%s\" is implied by existing constraints" msgstr "la contrainte de partitionnement pour la table « %s » provient des contraintes existantes" -#: commands/tablespace.c:162 commands/tablespace.c:179 commands/tablespace.c:190 commands/tablespace.c:198 commands/tablespace.c:623 replication/slot.c:1191 storage/file/copydir.c:47 +#: commands/tablespace.c:162 commands/tablespace.c:179 commands/tablespace.c:190 commands/tablespace.c:198 commands/tablespace.c:609 replication/slot.c:1191 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" msgstr "n'a pas pu créer le répertoire « %s » : %m" -#: commands/tablespace.c:209 +#: commands/tablespace.c:209 commands/tablespace.c:604 #, c-format msgid "could not stat directory \"%s\": %m" msgstr "n'a pas pu lire les informations sur le répertoire « %s » : %m" -#: commands/tablespace.c:218 +#: commands/tablespace.c:218 commands/tablespace.c:615 #, c-format msgid "\"%s\" exists but is not a directory" msgstr "« %s » existe mais n'est pas un répertoire" @@ -9354,22 +9359,22 @@ msgid "tablespace location should not be inside the data directory" msgstr "l'emplacement du tablespace ne doit pas être dans le répertoire de données" -#: commands/tablespace.c:304 commands/tablespace.c:950 +#: commands/tablespace.c:304 commands/tablespace.c:946 #, c-format msgid "unacceptable tablespace name \"%s\"" msgstr "nom inacceptable pour le tablespace « %s »" -#: commands/tablespace.c:306 commands/tablespace.c:951 +#: commands/tablespace.c:306 commands/tablespace.c:947 #, c-format msgid "The prefix \"pg_\" is reserved for system tablespaces." msgstr "Le préfixe « pg_ » est réservé pour les tablespaces système." -#: commands/tablespace.c:316 commands/tablespace.c:963 +#: commands/tablespace.c:316 commands/tablespace.c:959 #, c-format msgid "tablespace \"%s\" already exists" msgstr "le tablespace « %s » existe déjà" -#: commands/tablespace.c:428 commands/tablespace.c:933 commands/tablespace.c:1013 commands/tablespace.c:1082 commands/tablespace.c:1218 commands/tablespace.c:1421 +#: commands/tablespace.c:428 commands/tablespace.c:929 commands/tablespace.c:1009 commands/tablespace.c:1078 commands/tablespace.c:1214 commands/tablespace.c:1417 #, c-format msgid "tablespace \"%s\" does not exist" msgstr "le tablespace « %s » n'existe pas" @@ -9399,37 +9404,37 @@ msgid "could not set permissions on directory \"%s\": %m" msgstr "n'a pas pu configurer les droits du répertoire « %s » : %m" -#: commands/tablespace.c:618 +#: commands/tablespace.c:620 #, c-format msgid "directory \"%s\" already in use as a tablespace" msgstr "répertoire « %s » déjà utilisé comme tablespace" -#: commands/tablespace.c:742 commands/tablespace.c:755 commands/tablespace.c:791 commands/tablespace.c:883 +#: commands/tablespace.c:738 commands/tablespace.c:751 commands/tablespace.c:787 commands/tablespace.c:879 #, c-format msgid "could not remove directory \"%s\": %m" msgstr "n'a pas pu supprimer le répertoire « %s » : %m" -#: commands/tablespace.c:804 commands/tablespace.c:892 +#: commands/tablespace.c:800 commands/tablespace.c:888 #, c-format msgid "could not remove symbolic link \"%s\": %m" msgstr "n'a pas pu supprimer le lien symbolique « %s » : %m" -#: commands/tablespace.c:814 commands/tablespace.c:901 +#: commands/tablespace.c:810 commands/tablespace.c:897 #, c-format msgid "\"%s\" is not a directory or symbolic link" msgstr "« %s » n'est pas un répertoire ou un lien symbolique" -#: commands/tablespace.c:1087 +#: commands/tablespace.c:1083 #, c-format msgid "Tablespace \"%s\" does not exist." msgstr "Le tablespace « %s » n'existe pas." -#: commands/tablespace.c:1520 +#: commands/tablespace.c:1516 #, c-format msgid "directories for tablespace %u could not be removed" msgstr "les répertoires du tablespace %u n'ont pas pu être supprimés" -#: commands/tablespace.c:1522 +#: commands/tablespace.c:1518 #, c-format msgid "You can remove the directories manually if necessary." msgstr "Vous pouvez supprimer les répertoires manuellement si nécessaire." @@ -9655,7 +9660,7 @@ msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." msgstr "Considérez l'utilisation d'un trigger AFTER au lieu d'un trigger BEFORE pour propager les changements sur les autres lignes." -#: commands/trigger.c:3070 executor/execMain.c:2713 executor/nodeLockRows.c:220 executor/nodeModifyTable.c:218 executor/nodeModifyTable.c:717 executor/nodeModifyTable.c:1012 executor/nodeModifyTable.c:1181 +#: commands/trigger.c:3070 executor/execMain.c:2719 executor/nodeLockRows.c:220 executor/nodeModifyTable.c:218 executor/nodeModifyTable.c:717 executor/nodeModifyTable.c:1012 executor/nodeModifyTable.c:1181 #, c-format msgid "could not serialize access due to concurrent update" msgstr "n'a pas pu sérialiser un accès à cause d'une mise à jour en parallèle" @@ -9777,7 +9782,7 @@ msgid "must be superuser to create a base type" msgstr "doit être super-utilisateur pour créer un type de base" -#: commands/typecmds.c:290 commands/typecmds.c:1435 +#: commands/typecmds.c:290 commands/typecmds.c:1437 #, c-format msgid "type attribute \"%s\" not recognized" msgstr "attribut du type « %s » non reconnu" @@ -9879,197 +9884,197 @@ msgid "multiple default expressions" msgstr "multiples expressions par défaut" -#: commands/typecmds.c:959 commands/typecmds.c:968 +#: commands/typecmds.c:961 commands/typecmds.c:970 #, c-format msgid "conflicting NULL/NOT NULL constraints" msgstr "contraintes NULL/NOT NULL en conflit" -#: commands/typecmds.c:984 +#: commands/typecmds.c:986 #, c-format msgid "check constraints for domains cannot be marked NO INHERIT" msgstr "les contraintes CHECK pour les domaines ne peuvent pas être marquées NO INHERIT" -#: commands/typecmds.c:993 commands/typecmds.c:2559 +#: commands/typecmds.c:995 commands/typecmds.c:2561 #, c-format msgid "unique constraints not possible for domains" msgstr "contraintes uniques impossible pour les domaines" -#: commands/typecmds.c:999 commands/typecmds.c:2565 +#: commands/typecmds.c:1001 commands/typecmds.c:2567 #, c-format msgid "primary key constraints not possible for domains" msgstr "contraintes de clé primaire impossible pour les domaines" -#: commands/typecmds.c:1005 commands/typecmds.c:2571 +#: commands/typecmds.c:1007 commands/typecmds.c:2573 #, c-format msgid "exclusion constraints not possible for domains" msgstr "contraintes d'exclusion impossible pour les domaines" -#: commands/typecmds.c:1011 commands/typecmds.c:2577 +#: commands/typecmds.c:1013 commands/typecmds.c:2579 #, c-format msgid "foreign key constraints not possible for domains" msgstr "contraintes de clé étrangère impossible pour les domaines" -#: commands/typecmds.c:1020 commands/typecmds.c:2586 +#: commands/typecmds.c:1022 commands/typecmds.c:2588 #, c-format msgid "specifying constraint deferrability not supported for domains" msgstr "spécifier des contraintes déferrantes n'est pas supporté par les domaines" -#: commands/typecmds.c:1305 utils/cache/typcache.c:1698 +#: commands/typecmds.c:1307 utils/cache/typcache.c:1698 #, c-format msgid "%s is not an enum" msgstr "%s n'est pas un enum" -#: commands/typecmds.c:1443 +#: commands/typecmds.c:1445 #, c-format msgid "type attribute \"subtype\" is required" msgstr "l'attribut du sous-type est requis" -#: commands/typecmds.c:1448 +#: commands/typecmds.c:1450 #, c-format msgid "range subtype cannot be %s" msgstr "le sous-type de l'intervalle ne peut pas être %s" -#: commands/typecmds.c:1467 +#: commands/typecmds.c:1469 #, c-format msgid "range collation specified but subtype does not support collation" msgstr "collationnement spécifié pour l'intervalle mais le sous-type ne supporte pas les collationnements" -#: commands/typecmds.c:1700 +#: commands/typecmds.c:1702 #, c-format msgid "type input function %s has multiple matches" msgstr "la fonction d'entrée du type %s a plusieurs correspondances" -#: commands/typecmds.c:1718 +#: commands/typecmds.c:1720 #, 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 »" -#: commands/typecmds.c:1769 +#: commands/typecmds.c:1771 #, c-format msgid "changing argument type of function %s from \"opaque\" to %s" msgstr "changement du type d'argument de la fonction %s d'« opaque » à %s" -#: commands/typecmds.c:1816 +#: commands/typecmds.c:1818 #, c-format msgid "type receive function %s has multiple matches" msgstr "la fonction receive du type %s a plusieurs correspondances" -#: commands/typecmds.c:1876 +#: commands/typecmds.c:1878 #, c-format msgid "typmod_in function %s must return type %s" msgstr "le type de sortie de la fonction typmod_in %s doit être %s" -#: commands/typecmds.c:1903 +#: commands/typecmds.c:1905 #, c-format msgid "typmod_out function %s must return type %s" msgstr "le type de sortie de la fonction typmod_out %s doit être %s" -#: commands/typecmds.c:1930 +#: commands/typecmds.c:1932 #, c-format msgid "type analyze function %s must return type %s" msgstr "la fonction analyze du type %s doit renvoyer le type %s" -#: commands/typecmds.c:1976 +#: commands/typecmds.c:1978 #, c-format msgid "You must specify an operator class for the range type or define a default operator class for the subtype." msgstr "" "Vous devez spécifier une classe d'opérateur pour le type range ou définir une\n" "classe d'opérateur par défaut pour le sous-type." -#: commands/typecmds.c:2007 +#: commands/typecmds.c:2009 #, c-format msgid "range canonical function %s must return range type" msgstr "la fonction canonical %s du range doit renvoyer le type range" -#: commands/typecmds.c:2013 +#: commands/typecmds.c:2015 #, c-format msgid "range canonical function %s must be immutable" msgstr "la fonction canonical %s du range doit être immutable" -#: commands/typecmds.c:2049 +#: commands/typecmds.c:2051 #, c-format msgid "range subtype diff function %s must return type %s" msgstr "" "la fonction %s de calcul de différence pour le sous-type d'un intervalle de\n" "valeur doit renvoyer le type %s" -#: commands/typecmds.c:2056 +#: commands/typecmds.c:2058 #, c-format msgid "range subtype diff function %s must be immutable" msgstr "" "la fonction %s de calcul de différence pour le sous-type d'un intervalle de\n" "valeur doit être immutable" -#: commands/typecmds.c:2083 +#: commands/typecmds.c:2085 #, c-format msgid "pg_type array OID value not set when in binary upgrade mode" msgstr "les valeurs d'OID du tableau pgtype ne sont pas positionnées en mode de mise à jour binaire" -#: commands/typecmds.c:2387 +#: commands/typecmds.c:2389 #, c-format msgid "column \"%s\" of table \"%s\" contains null values" msgstr "la colonne « %s » de la table « %s » contient des valeurs NULL" -#: commands/typecmds.c:2500 commands/typecmds.c:2683 +#: commands/typecmds.c:2502 commands/typecmds.c:2685 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist" msgstr "la contrainte « %s » du domaine « %s » n'existe pas" -#: commands/typecmds.c:2504 +#: commands/typecmds.c:2506 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping" msgstr "la contrainte « %s » du domaine « %s » n'existe pas, ignore" -#: commands/typecmds.c:2689 +#: commands/typecmds.c:2691 #, c-format msgid "constraint \"%s\" of domain \"%s\" is not a check constraint" msgstr "la contrainte « %s » du domaine « %s » n'est pas une contrainte de vérification" -#: commands/typecmds.c:2794 +#: commands/typecmds.c:2796 #, c-format msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "" "la colonne « %s » de la table « %s » contient des valeurs violant la\n" "nouvelle contrainte" -#: commands/typecmds.c:3022 commands/typecmds.c:3227 commands/typecmds.c:3309 commands/typecmds.c:3496 +#: commands/typecmds.c:3024 commands/typecmds.c:3234 commands/typecmds.c:3316 commands/typecmds.c:3503 #, c-format msgid "%s is not a domain" msgstr "%s n'est pas un domaine" -#: commands/typecmds.c:3056 +#: commands/typecmds.c:3058 #, c-format msgid "constraint \"%s\" for domain \"%s\" already exists" msgstr "la contrainte « %s » du domaine « %s » existe déjà" -#: commands/typecmds.c:3107 +#: commands/typecmds.c:3114 #, c-format msgid "cannot use table references in domain check constraint" msgstr "" "ne peut pas utiliser les références de table dans la contrainte de\n" "vérification du domaine" -#: commands/typecmds.c:3239 commands/typecmds.c:3321 commands/typecmds.c:3613 +#: commands/typecmds.c:3246 commands/typecmds.c:3328 commands/typecmds.c:3620 #, c-format msgid "%s is a table's row type" msgstr "« %s » est du type ligne de table" -#: commands/typecmds.c:3241 commands/typecmds.c:3323 commands/typecmds.c:3615 +#: commands/typecmds.c:3248 commands/typecmds.c:3330 commands/typecmds.c:3622 #, c-format msgid "Use ALTER TABLE instead." msgstr "Utilisez ALTER TABLE à la place." -#: commands/typecmds.c:3248 commands/typecmds.c:3330 commands/typecmds.c:3528 +#: commands/typecmds.c:3255 commands/typecmds.c:3337 commands/typecmds.c:3535 #, c-format msgid "cannot alter array type %s" msgstr "ne peut pas modifier le type array %s" -#: commands/typecmds.c:3250 commands/typecmds.c:3332 commands/typecmds.c:3530 +#: commands/typecmds.c:3257 commands/typecmds.c:3339 commands/typecmds.c:3537 #, 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." -#: commands/typecmds.c:3598 +#: commands/typecmds.c:3605 #, c-format msgid "type \"%s\" already exists in schema \"%s\"" msgstr "le type « %s » existe déjà dans le schéma « %s »" @@ -10656,118 +10661,118 @@ msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" msgstr "le curseur « %s » n'est pas un parcours modifiable de la table « %s »" -#: executor/execCurrent.c:277 executor/execExprInterp.c:1889 +#: executor/execCurrent.c:277 executor/execExprInterp.c:1898 #, 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)" -#: executor/execCurrent.c:289 executor/execExprInterp.c:1901 +#: executor/execCurrent.c:289 executor/execExprInterp.c:1910 #, c-format msgid "no value found for parameter %d" msgstr "aucune valeur trouvée pour le paramètre %d" -#: executor/execExpr.c:780 parser/parse_agg.c:779 +#: executor/execExpr.c:811 parser/parse_agg.c:772 #, c-format msgid "window function calls cannot be nested" msgstr "les appels à la fonction window ne peuvent pas être imbriqués" -#: executor/execExpr.c:1236 +#: executor/execExpr.c:1267 #, c-format msgid "target type is not an array" msgstr "le type cible n'est pas un tableau" -#: executor/execExpr.c:1559 +#: executor/execExpr.c:1590 #, c-format msgid "ROW() column has type %s instead of type %s" msgstr "une colonne ROW() a le type %s au lieu du type %s" -#: executor/execExpr.c:2094 executor/execSRF.c:672 parser/parse_func.c:120 parser/parse_func.c:547 parser/parse_func.c:921 +#: executor/execExpr.c:2125 executor/execSRF.c:672 parser/parse_func.c:120 parser/parse_func.c:547 parser/parse_func.c:921 #, c-format msgid "cannot pass more than %d argument to a function" msgid_plural "cannot pass more than %d arguments to a function" msgstr[0] "ne peut pas passer plus de %d argument à une fonction" msgstr[1] "ne peut pas passer plus de %d arguments à une fonction" -#: executor/execExpr.c:2371 executor/execExpr.c:2377 executor/execExprInterp.c:2226 utils/adt/arrayfuncs.c:260 utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1300 utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5251 utils/adt/arrayfuncs.c:5768 +#: executor/execExpr.c:2402 executor/execExpr.c:2408 executor/execExprInterp.c:2235 utils/adt/arrayfuncs.c:260 utils/adt/arrayfuncs.c:560 utils/adt/arrayfuncs.c:1302 utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5253 utils/adt/arrayfuncs.c:5774 #, 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)" -#: executor/execExprInterp.c:1561 +#: executor/execExprInterp.c:1566 #, c-format msgid "attribute %d of type %s has been dropped" msgstr "l'attribut %d du type %s a été supprimé" -#: executor/execExprInterp.c:1567 +#: executor/execExprInterp.c:1572 #, c-format msgid "attribute %d of type %s has wrong type" msgstr "l'attribut %d de type %s a un mauvais type" -#: executor/execExprInterp.c:1569 executor/execExprInterp.c:2512 +#: executor/execExprInterp.c:1574 executor/execExprInterp.c:2525 #, c-format msgid "Table has type %s, but query expects %s." msgstr "La table a le type %s alors que la requête attend %s." -#: executor/execExprInterp.c:1979 +#: executor/execExprInterp.c:1988 #, c-format msgid "WHERE CURRENT OF is not supported for this table type" msgstr "WHERE CURRENT OF n'est pas supporté pour ce type de table" -#: executor/execExprInterp.c:2204 +#: executor/execExprInterp.c:2213 #, c-format msgid "cannot merge incompatible arrays" msgstr "ne peut pas fusionner les tableaux incompatibles" -#: executor/execExprInterp.c:2205 +#: executor/execExprInterp.c:2214 #, c-format msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." msgstr "Le tableau avec le type d'élément %s ne peut pas être inclus dans la construction ARRAY avec le type d'élément %s." -#: executor/execExprInterp.c:2246 executor/execExprInterp.c:2276 +#: executor/execExprInterp.c:2255 executor/execExprInterp.c:2285 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "" "les tableaux multidimensionnels doivent avoir des expressions de tableaux\n" "avec les dimensions correspondantes" -#: executor/execExprInterp.c:2511 +#: executor/execExprInterp.c:2524 #, c-format msgid "attribute %d has wrong type" msgstr "l'attribut %d a un type invalide" -#: executor/execExprInterp.c:2620 +#: executor/execExprInterp.c:2633 #, c-format msgid "array subscript in assignment must not be null" msgstr "l'indice du tableau dans l'affectation ne doit pas être NULL" -#: executor/execExprInterp.c:3053 utils/adt/domains.c:148 +#: executor/execExprInterp.c:3066 utils/adt/domains.c:148 #, c-format msgid "domain %s does not allow null values" msgstr "le domaine %s n'autorise pas les valeurs NULL" -#: executor/execExprInterp.c:3068 utils/adt/domains.c:183 +#: executor/execExprInterp.c:3081 utils/adt/domains.c:183 #, c-format msgid "value for domain %s violates check constraint \"%s\"" msgstr "la valeur pour le domaine %s viole la contrainte de vérification « %s »" -#: executor/execExprInterp.c:3435 executor/execExprInterp.c:3452 executor/execExprInterp.c:3554 executor/nodeModifyTable.c:100 executor/nodeModifyTable.c:110 executor/nodeModifyTable.c:127 executor/nodeModifyTable.c:135 +#: executor/execExprInterp.c:3448 executor/execExprInterp.c:3465 executor/execExprInterp.c:3567 executor/nodeModifyTable.c:100 executor/nodeModifyTable.c:110 executor/nodeModifyTable.c:127 executor/nodeModifyTable.c:135 #, c-format msgid "table row type and query-specified row type do not match" msgstr "Le type de ligne de la table et celui spécifié par la requête ne correspondent pas" -#: executor/execExprInterp.c:3436 +#: executor/execExprInterp.c:3449 #, 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." -#: executor/execExprInterp.c:3453 executor/nodeModifyTable.c:111 +#: executor/execExprInterp.c:3466 executor/nodeModifyTable.c:111 #, 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." -#: executor/execExprInterp.c:3555 executor/execSRF.c:927 +#: executor/execExprInterp.c:3568 executor/execSRF.c:927 #, c-format msgid "Physical storage mismatch on dropped attribute at ordinal position %d." msgstr "" @@ -10819,32 +10824,32 @@ msgid "cannot change TOAST relation \"%s\"" msgstr "ne peut pas modifier la relation TOAST « %s »" -#: executor/execMain.c:1140 rewrite/rewriteHandler.c:2895 rewrite/rewriteHandler.c:3661 +#: executor/execMain.c:1140 rewrite/rewriteHandler.c:2918 rewrite/rewriteHandler.c:3698 #, c-format msgid "cannot insert into view \"%s\"" msgstr "ne peut pas insérer dans la vue « %s »" -#: executor/execMain.c:1142 rewrite/rewriteHandler.c:2898 rewrite/rewriteHandler.c:3664 +#: executor/execMain.c:1142 rewrite/rewriteHandler.c:2921 rewrite/rewriteHandler.c:3701 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." msgstr "Pour activer l'insertion dans la vue, fournissez un trigger INSTEAD OF INSERT ou une règle ON INSERT DO INSTEAD sans condition." -#: executor/execMain.c:1148 rewrite/rewriteHandler.c:2903 rewrite/rewriteHandler.c:3669 +#: executor/execMain.c:1148 rewrite/rewriteHandler.c:2926 rewrite/rewriteHandler.c:3706 #, c-format msgid "cannot update view \"%s\"" msgstr "ne peut pas mettre à jour la vue « %s »" -#: executor/execMain.c:1150 rewrite/rewriteHandler.c:2906 rewrite/rewriteHandler.c:3672 +#: executor/execMain.c:1150 rewrite/rewriteHandler.c:2929 rewrite/rewriteHandler.c:3709 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." msgstr "Pour activer la mise à jour dans la vue, fournissez un trigger INSTEAD OF UPDATE ou une règle ON UPDATE DO INSTEAD sans condition." -#: executor/execMain.c:1156 rewrite/rewriteHandler.c:2911 rewrite/rewriteHandler.c:3677 +#: executor/execMain.c:1156 rewrite/rewriteHandler.c:2934 rewrite/rewriteHandler.c:3714 #, c-format msgid "cannot delete from view \"%s\"" msgstr "ne peut pas supprimer à partir de la vue « %s »" -#: executor/execMain.c:1158 rewrite/rewriteHandler.c:2914 rewrite/rewriteHandler.c:3680 +#: executor/execMain.c:1158 rewrite/rewriteHandler.c:2937 rewrite/rewriteHandler.c:3717 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." msgstr "Pour activer la suppression dans la vue, fournissez un trigger INSTEAD OF DELETE ou une règle ON DELETE DO INSTEAD sans condition." @@ -10909,7 +10914,7 @@ msgid "cannot lock rows in materialized view \"%s\"" msgstr "ne peut pas verrouiller les lignes dans la vue matérialisée « %s »" -#: executor/execMain.c:1289 executor/execMain.c:2947 executor/nodeLockRows.c:136 +#: executor/execMain.c:1289 executor/execMain.c:2953 executor/nodeLockRows.c:136 #, c-format msgid "cannot lock rows in foreign table \"%s\"" msgstr "ne peut pas verrouiller la table distante « %s »" @@ -10964,12 +10969,12 @@ msgid "new row violates row-level security policy (USING expression) for table \"%s\"" msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne (expression USING) pour la table « %s »" -#: executor/execMain.c:3463 +#: executor/execMain.c:3469 #, c-format msgid "no partition of relation \"%s\" found for row" msgstr "aucune partition de la relation « %s » trouvée pour la ligne" -#: executor/execMain.c:3465 +#: executor/execMain.c:3471 #, c-format msgid "Partition key of the failing row contains %s." msgstr "La clé de partitionnement de la ligne en échec contient %s." @@ -10979,7 +10984,7 @@ msgid "concurrent update, retrying" msgstr "mise à jour concurrente, nouvelle tentative" -#: executor/execReplication.c:252 parser/parse_oper.c:228 utils/adt/array_userfuncs.c:724 utils/adt/array_userfuncs.c:863 utils/adt/arrayfuncs.c:3651 utils/adt/arrayfuncs.c:4089 utils/adt/arrayfuncs.c:6049 utils/adt/rowtypes.c:1167 +#: executor/execReplication.c:252 parser/parse_oper.c:228 utils/adt/array_userfuncs.c:725 utils/adt/array_userfuncs.c:864 utils/adt/arrayfuncs.c:3653 utils/adt/arrayfuncs.c:4091 utils/adt/arrayfuncs.c:6057 utils/adt/rowtypes.c:1167 #, c-format msgid "could not identify an equality operator for type %s" msgstr "n'a pas pu identifier un opérateur d'égalité pour le type %s" @@ -11139,7 +11144,7 @@ msgid "return type %s is not supported for SQL functions" msgstr "le type de retour %s n'est pas supporté pour les fonctions SQL" -#: executor/nodeAgg.c:3509 parser/parse_agg.c:618 parser/parse_agg.c:648 +#: executor/nodeAgg.c:3509 parser/parse_agg.c:613 parser/parse_agg.c:641 #, c-format msgid "aggregate function calls cannot be nested" msgstr "les appels à la fonction d'agrégat ne peuvent pas être imbriqués" @@ -11159,19 +11164,19 @@ #: executor/nodeHashjoin.c:770 executor/nodeHashjoin.c:800 #, c-format msgid "could not rewind hash-join temporary file" -msgstr "n'a pas pu revenir au début du fichier temporaire de la jointure hâchée" +msgstr "n'a pas pu revenir au début du fichier temporaire de la jointure hachée" #: executor/nodeHashjoin.c:872 executor/nodeHashjoin.c:883 #, c-format msgid "could not read from hash-join temporary file: read only %zu of %zu bytes" msgstr "" -"n'a pas pu lire le fichier temporaire contenant la jointure hâchée : a lu seulement %zu octets\n" +"n'a pas pu lire le fichier temporaire contenant la jointure hachée : a lu seulement %zu octets\n" "sur %zu" #: executor/nodeIndexonlyscan.c:237 #, c-format msgid "lossy distance functions are not supported in index-only scans" -msgstr "les fonctions de distance à perte ne sont pas supportés dans les parcours d'index seul" +msgstr "les fonctions de distance à perte ne sont pas supportées dans les parcours d'index seul" #: executor/nodeLimit.c:262 #, c-format @@ -11672,86 +11677,86 @@ msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" msgstr "paramètre de configuration « %s » non reconnu dans le fichier « %s », ligne %u" -#: guc-file.l:350 utils/misc/guc.c:6017 utils/misc/guc.c:6214 utils/misc/guc.c:6308 utils/misc/guc.c:6402 utils/misc/guc.c:6522 utils/misc/guc.c:6621 +#: guc-file.l:352 utils/misc/guc.c:6017 utils/misc/guc.c:6214 utils/misc/guc.c:6308 utils/misc/guc.c:6402 utils/misc/guc.c:6522 utils/misc/guc.c:6621 #, 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" -#: guc-file.l:386 +#: guc-file.l:388 #, c-format msgid "parameter \"%s\" removed from configuration file, reset to default" msgstr "" "paramètre « %s » supprimé du fichier de configuration ;\n" "réinitialisation à la valeur par défaut" -#: guc-file.l:452 +#: guc-file.l:454 #, c-format msgid "parameter \"%s\" changed to \"%s\"" msgstr "paramètre « %s » modifié par « %s »" -#: guc-file.l:494 +#: guc-file.l:496 #, c-format msgid "configuration file \"%s\" contains errors" msgstr "le fichier de configuration « %s » contient des erreurs" -#: guc-file.l:499 +#: guc-file.l:501 #, c-format msgid "configuration file \"%s\" contains errors; unaffected changes were applied" msgstr "le fichier de configuration « %s » contient des erreurs ; les modifications non affectées ont été appliquées" -#: guc-file.l:504 +#: guc-file.l:506 #, c-format msgid "configuration file \"%s\" contains errors; no changes were applied" msgstr "le fichier de configuration « %s » contient des erreurs ; aucune modification n'a été appliquée" -#: guc-file.l:576 +#: guc-file.l:578 #, c-format msgid "empty configuration file name: \"%s\"" msgstr "nom du fichier de configuration vide : « %s »" -#: guc-file.l:593 +#: guc-file.l:595 #, c-format msgid "could not open configuration file \"%s\": maximum nesting depth exceeded" msgstr "" "n'a pas pu ouvrir le fichier de configuration « %s » : profondeur\n" "d'imbrication dépassé" -#: guc-file.l:613 +#: guc-file.l:615 #, c-format msgid "configuration file recursion in \"%s\"" msgstr "récursion du fichier de configuration dans « %s »" -#: guc-file.l:629 libpq/hba.c:2117 libpq/hba.c:2526 +#: guc-file.l:631 libpq/hba.c:2117 libpq/hba.c:2526 #, c-format msgid "could not open configuration file \"%s\": %m" msgstr "n'a pas pu ouvrir le fichier de configuration « %s » : %m" -#: guc-file.l:640 +#: guc-file.l:642 #, c-format msgid "skipping missing configuration file \"%s\"" msgstr "ignore le fichier de configuration « %s » manquant" -#: guc-file.l:894 +#: guc-file.l:896 #, 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" -#: guc-file.l:904 +#: guc-file.l:906 #, 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 »" -#: guc-file.l:924 +#: guc-file.l:926 #, c-format msgid "too many syntax errors found, abandoning file \"%s\"" msgstr "trop d'erreurs de syntaxe trouvées, abandon du fichier « %s »" -#: guc-file.l:979 +#: guc-file.l:981 #, c-format msgid "empty configuration directory name: \"%s\"" msgstr "nom du répertoire de configuration vide : « %s »" -#: guc-file.l:998 +#: guc-file.l:1000 #, c-format msgid "could not open configuration directory \"%s\": %m" msgstr "n'a pas pu ouvrir le répertoire de configuration « %s » : %m" @@ -12084,344 +12089,344 @@ msgid "client selected an invalid SASL authentication mechanism" msgstr "le client a sélectionné un mécanisme d'authentification SASL invalide" -#: libpq/auth.c:1109 +#: libpq/auth.c:1133 #, c-format msgid "GSSAPI is not supported in protocol version 2" msgstr "GSSAPI n'est pas supporté dans le protocole de version 2" -#: libpq/auth.c:1169 +#: libpq/auth.c:1193 #, c-format msgid "expected GSS response, got message type %d" msgstr "en attente d'une réponse GSS, a reçu un message de type %d" -#: libpq/auth.c:1231 +#: libpq/auth.c:1255 msgid "accepting GSS security context failed" msgstr "échec de l'acceptation du contexte de sécurité GSS" -#: libpq/auth.c:1257 +#: libpq/auth.c:1281 msgid "retrieving GSS user name failed" msgstr "échec lors de la récupération du nom de l'utilisateur avec GSS" -#: libpq/auth.c:1382 +#: libpq/auth.c:1414 #, c-format msgid "SSPI is not supported in protocol version 2" msgstr "SSPI n'est pas supporté dans le protocole de version 2" -#: libpq/auth.c:1397 +#: libpq/auth.c:1429 msgid "could not acquire SSPI credentials" msgstr "n'a pas pu obtenir les pièces d'identité SSPI" -#: libpq/auth.c:1415 +#: libpq/auth.c:1447 #, 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:1488 +#: libpq/auth.c:1520 msgid "could not accept SSPI security context" msgstr "n'a pas pu accepter le contexte de sécurité SSPI" -#: libpq/auth.c:1550 +#: libpq/auth.c:1582 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:1669 libpq/auth.c:1688 +#: libpq/auth.c:1701 libpq/auth.c:1720 #, c-format msgid "could not translate name" msgstr "n'a pas pu traduit le nom" -#: libpq/auth.c:1701 +#: libpq/auth.c:1733 #, c-format msgid "realm name too long" msgstr "nom du royaume trop long" -#: libpq/auth.c:1716 +#: libpq/auth.c:1748 #, c-format msgid "translated account name too long" msgstr "traduction du nom de compte trop longue" -#: libpq/auth.c:1902 +#: libpq/auth.c:1934 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "n'a pas pu créer le socket pour la connexion Ident : %m" -#: libpq/auth.c:1917 +#: libpq/auth.c:1949 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "n'a pas pu se lier à l'adresse locale « %s » : %m" -#: libpq/auth.c:1929 +#: libpq/auth.c:1961 #, 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" -#: libpq/auth.c:1951 +#: libpq/auth.c:1983 #, 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" -#: libpq/auth.c:1968 +#: libpq/auth.c:2000 #, 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" -#: libpq/auth.c:1978 +#: libpq/auth.c:2010 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "réponse mal formatée du serveur Ident : « %s »" -#: libpq/auth.c:2018 +#: libpq/auth.c:2050 #, c-format msgid "peer authentication is not supported on this platform" msgstr "la méthode d'authentification «peer n'est pas supportée sur cette plateforme" -#: libpq/auth.c:2022 +#: libpq/auth.c:2054 #, c-format msgid "could not get peer credentials: %m" msgstr "n'a pas pu obtenir l'authentification de l'autre : %m" -#: libpq/auth.c:2033 +#: libpq/auth.c:2065 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "n'a pas pu rechercher l'identifiant %ld de l'utilisateur local : %s" -#: libpq/auth.c:2123 +#: libpq/auth.c:2155 #, c-format msgid "error from underlying PAM layer: %s" msgstr "erreur provenant de la couche PAM : %s" -#: libpq/auth.c:2193 +#: libpq/auth.c:2225 #, c-format msgid "could not create PAM authenticator: %s" msgstr "n'a pas pu créer l'authenticateur PAM : %s" -#: libpq/auth.c:2204 +#: libpq/auth.c:2236 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "pam_set_item(PAM_USER) a échoué : %s" -#: libpq/auth.c:2236 +#: libpq/auth.c:2268 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "pam_set_item(PAM_RHOST) a échoué : %s" -#: libpq/auth.c:2248 +#: libpq/auth.c:2280 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "pam_set_item(PAM_CONV) a échoué : %s" -#: libpq/auth.c:2261 +#: libpq/auth.c:2293 #, c-format msgid "pam_authenticate failed: %s" msgstr "pam_authenticate a échoué : %s" -#: libpq/auth.c:2274 +#: libpq/auth.c:2306 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "pam_acct_mgmt a échoué : %s" -#: libpq/auth.c:2285 +#: libpq/auth.c:2317 #, c-format msgid "could not release PAM authenticator: %s" msgstr "n'a pas pu fermer l'authenticateur PAM : %s" -#: libpq/auth.c:2352 +#: libpq/auth.c:2384 #, c-format msgid "could not initialize LDAP: %m" msgstr "n'a pas pu initialiser LDAP : %m" -#: libpq/auth.c:2355 +#: libpq/auth.c:2387 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "n'a pas pu initialiser LDAP : code d'erreur %d" -#: libpq/auth.c:2365 +#: libpq/auth.c:2397 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "n'a pas pu initialiser la version du protocole LDAP : %s" -#: libpq/auth.c:2394 +#: libpq/auth.c:2426 #, c-format msgid "could not load wldap32.dll" msgstr "n'a pas pu charger wldap32.dll" -#: libpq/auth.c:2402 +#: libpq/auth.c:2434 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "n'a pas pu charger la fonction _ldap_start_tls_sA de wldap32.dll" -#: libpq/auth.c:2403 +#: libpq/auth.c:2435 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP via SSL n'est pas supporté sur cette plateforme." -#: libpq/auth.c:2418 +#: libpq/auth.c:2450 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "n'a pas pu démarrer la session TLS LDAP : %s" -#: libpq/auth.c:2440 +#: libpq/auth.c:2472 #, c-format msgid "LDAP server not specified" msgstr "serveur LDAP non précisé" -#: libpq/auth.c:2489 +#: libpq/auth.c:2521 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "caractère invalide dans le nom de l'utilisateur pour l'authentification LDAP" -#: libpq/auth.c:2505 +#: libpq/auth.c:2537 #, c-format msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" msgstr "n'a pas pu réaliser le lien LDAP initiale pour ldapbinddn « %s » sur le serveur « %s » : %s" -#: libpq/auth.c:2531 +#: libpq/auth.c:2563 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "n'a pas pu rechercher dans LDAP pour filtrer « %s » sur le serveur « %s » : %s" -#: libpq/auth.c:2543 +#: libpq/auth.c:2575 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "l'utilisateur LDAP « %s » n'existe pas" -#: libpq/auth.c:2544 +#: libpq/auth.c:2576 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "la recherche LDAP pour le filtre « %s » sur le serveur « %s » n'a renvoyé aucun enregistrement." -#: libpq/auth.c:2548 +#: libpq/auth.c:2580 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "l'utilisateur LDAP « %s » n'est pas unique" -#: libpq/auth.c:2549 +#: libpq/auth.c:2581 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." msgstr[0] "la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d enregistrement." msgstr[1] "la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d enregistrements." -#: libpq/auth.c:2568 +#: libpq/auth.c:2600 #, 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" -#: libpq/auth.c:2589 +#: libpq/auth.c:2621 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "" "n'a pas pu exécuter le unbind après la recherche de l'utilisateur « %s »\n" "sur le serveur « %s » : %s" -#: libpq/auth.c:2621 +#: libpq/auth.c:2653 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "échec de connexion LDAP pour l'utilisateur « %s » sur le serveur « %s » : %s" -#: libpq/auth.c:2651 +#: libpq/auth.c:2683 #, 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" -#: libpq/auth.c:2754 +#: libpq/auth.c:2786 #, c-format msgid "RADIUS server not specified" msgstr "serveur RADIUS non précisé" -#: libpq/auth.c:2761 +#: libpq/auth.c:2793 #, c-format msgid "RADIUS secret not specified" msgstr "secret RADIUS non précisé" -#: libpq/auth.c:2775 +#: libpq/auth.c:2807 #, c-format msgid "RADIUS authentication does not support passwords longer than %d characters" msgstr "" "l'authentification RADIUS ne supporte pas les mots de passe de plus de %d\n" "caractères" -#: libpq/auth.c:2880 libpq/hba.c:1883 +#: libpq/auth.c:2912 libpq/hba.c:1883 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "n'a pas pu traduire le nom du serveur RADIUS « %s » en une adresse : %s" -#: libpq/auth.c:2894 +#: libpq/auth.c:2926 #, c-format msgid "could not generate random encryption vector" msgstr "n'a pas pu générer le vecteur de chiffrement aléatoire" -#: libpq/auth.c:2928 +#: libpq/auth.c:2960 #, c-format msgid "could not perform MD5 encryption of password" msgstr "n'a pas pu réaliser le chiffrement MD5 du mot de passe" -#: libpq/auth.c:2954 +#: libpq/auth.c:2986 #, c-format msgid "could not create RADIUS socket: %m" msgstr "n'a pas pu créer le socket RADIUS : %m" -#: libpq/auth.c:2976 +#: libpq/auth.c:3008 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "n'a pas pu se lier à la socket RADIUS : %m" -#: libpq/auth.c:2986 +#: libpq/auth.c:3018 #, c-format msgid "could not send RADIUS packet: %m" msgstr "n'a pas pu transmettre le paquet RADIUS : %m" -#: libpq/auth.c:3019 libpq/auth.c:3045 +#: libpq/auth.c:3051 libpq/auth.c:3077 #, c-format msgid "timeout waiting for RADIUS response from %s" msgstr "dépassement du délai pour la réponse du RADIUS à partir de %s" -#: libpq/auth.c:3038 +#: libpq/auth.c:3070 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "n'a pas pu vérifier le statut sur la socket RADIUS : %m" -#: libpq/auth.c:3068 +#: libpq/auth.c:3100 #, c-format msgid "could not read RADIUS response: %m" msgstr "n'a pas pu lire la réponse RADIUS : %m" -#: libpq/auth.c:3081 libpq/auth.c:3085 +#: libpq/auth.c:3113 libpq/auth.c:3117 #, c-format msgid "RADIUS response from %s was sent from incorrect port: %d" msgstr "la réponse RADIUS de %s a été envoyée à partir d'un mauvais port : %d" -#: libpq/auth.c:3094 +#: libpq/auth.c:3126 #, c-format msgid "RADIUS response from %s too short: %d" msgstr "réponse RADIUS de %s trop courte : %d" -#: libpq/auth.c:3101 +#: libpq/auth.c:3133 #, c-format msgid "RADIUS response from %s has corrupt length: %d (actual length %d)" msgstr "la réponse RADIUS de %s a une longueur corrompue : %d (longueur actuelle %d)" -#: libpq/auth.c:3109 +#: libpq/auth.c:3141 #, c-format msgid "RADIUS response from %s is to a different request: %d (should be %d)" msgstr "la réponse RADIUS à partir de %s correspond à une demande différente : %d (devrait être %d)" -#: libpq/auth.c:3134 +#: libpq/auth.c:3166 #, c-format msgid "could not perform MD5 encryption of received packet" msgstr "n'a pas pu réaliser le chiffrement MD5 du paquet reçu" -#: libpq/auth.c:3143 +#: libpq/auth.c:3175 #, c-format msgid "RADIUS response from %s has incorrect MD5 signature" msgstr "la réponse RADIUS à partir de %s a une signature MD5 invalide" -#: libpq/auth.c:3161 +#: libpq/auth.c:3193 #, c-format msgid "RADIUS response from %s has invalid code (%d) for user \"%s\"" msgstr "la réponse RADIUS à partir de %s a un code invalide (%d) pour l'utilisateur « %s »" @@ -12555,131 +12560,131 @@ msgid "check of private key failed: %s" msgstr "échec de la vérification de la clé privée : %s" -#: libpq/be-secure-openssl.c:313 +#: libpq/be-secure-openssl.c:323 #, c-format msgid "could not set the cipher list (no valid ciphers available)" msgstr "n'a pas pu configurer la liste des algorithmes de chiffrement (pas d'algorithmes valides disponibles)" -#: libpq/be-secure-openssl.c:333 +#: libpq/be-secure-openssl.c:343 #, c-format msgid "could not load root certificate file \"%s\": %s" msgstr "n'a pas pu charger le fichier du certificat racine « %s » : %s" -#: libpq/be-secure-openssl.c:379 +#: libpq/be-secure-openssl.c:389 #, c-format msgid "SSL certificate revocation list file \"%s\" ignored" msgstr "liste de révocation des certificats SSL « %s » ignorée" -#: libpq/be-secure-openssl.c:381 +#: libpq/be-secure-openssl.c:391 #, c-format msgid "SSL library does not support certificate revocation lists." msgstr "La bibliothèque SSL ne supporte pas les listes de révocation des certificats." -#: libpq/be-secure-openssl.c:388 +#: libpq/be-secure-openssl.c:398 #, c-format msgid "could not load SSL certificate revocation list file \"%s\": %s" msgstr "n'a pas pu charger le fichier de liste de révocation des certificats SSL (« %s ») : %s" -#: libpq/be-secure-openssl.c:450 +#: libpq/be-secure-openssl.c:460 #, c-format msgid "could not initialize SSL connection: SSL context not set up" msgstr "n'a pas pu initialiser la connexion SSL : contexte SSL non configuré" -#: libpq/be-secure-openssl.c:458 +#: libpq/be-secure-openssl.c:468 #, c-format msgid "could not initialize SSL connection: %s" msgstr "n'a pas pu initialiser la connexion SSL : %s" -#: libpq/be-secure-openssl.c:466 +#: libpq/be-secure-openssl.c:476 #, c-format msgid "could not set SSL socket: %s" msgstr "n'a pas pu créer le socket SSL : %s" -#: libpq/be-secure-openssl.c:521 +#: libpq/be-secure-openssl.c:531 #, c-format msgid "could not accept SSL connection: %m" msgstr "n'a pas pu accepter la connexion SSL : %m" -#: libpq/be-secure-openssl.c:525 libpq/be-secure-openssl.c:536 +#: libpq/be-secure-openssl.c:535 libpq/be-secure-openssl.c:546 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "n'a pas pu accepter la connexion SSL : fin de fichier détecté" -#: libpq/be-secure-openssl.c:530 +#: libpq/be-secure-openssl.c:540 #, c-format msgid "could not accept SSL connection: %s" msgstr "n'a pas pu accepter la connexion SSL : %s" -#: libpq/be-secure-openssl.c:541 libpq/be-secure-openssl.c:682 libpq/be-secure-openssl.c:749 +#: libpq/be-secure-openssl.c:551 libpq/be-secure-openssl.c:692 libpq/be-secure-openssl.c:759 #, c-format msgid "unrecognized SSL error code: %d" msgstr "code d'erreur SSL inconnu : %d" -#: libpq/be-secure-openssl.c:583 +#: libpq/be-secure-openssl.c:593 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "le nom commun du certificat SSL contient des NULL" -#: libpq/be-secure-openssl.c:594 +#: libpq/be-secure-openssl.c:604 #, c-format msgid "SSL connection from \"%s\"" msgstr "connexion SSL de « %s »" -#: libpq/be-secure-openssl.c:671 libpq/be-secure-openssl.c:733 +#: libpq/be-secure-openssl.c:681 libpq/be-secure-openssl.c:743 #, c-format msgid "SSL error: %s" msgstr "erreur SSL : %s" -#: libpq/be-secure-openssl.c:914 +#: libpq/be-secure-openssl.c:925 #, c-format msgid "could not open DH parameters file \"%s\": %m" msgstr "n'a pas pu ouvrir le fichier de paramètres DH « %s » : %m" -#: libpq/be-secure-openssl.c:926 +#: libpq/be-secure-openssl.c:937 #, c-format msgid "could not load DH parameters file: %s" msgstr "n'a pas pu charger le fichier de paramètres DH : %s" -#: libpq/be-secure-openssl.c:936 +#: libpq/be-secure-openssl.c:947 #, c-format msgid "invalid DH parameters: %s" msgstr "paramètres DH invalides : %s" -#: libpq/be-secure-openssl.c:945 +#: libpq/be-secure-openssl.c:956 #, c-format msgid "invalid DH parameters: p is not prime" msgstr "paramètres DH invalides : p n'est pas premier" -#: libpq/be-secure-openssl.c:954 +#: libpq/be-secure-openssl.c:965 #, c-format msgid "invalid DH parameters: neither suitable generator or safe prime" msgstr "paramètres DH invalides : pas de générateur convenable ou de premier sûr" -#: libpq/be-secure-openssl.c:1096 +#: libpq/be-secure-openssl.c:1107 #, c-format msgid "DH: could not load DH parameters" msgstr "DH : n'a pas pu charger les paramètres DH" -#: libpq/be-secure-openssl.c:1104 +#: libpq/be-secure-openssl.c:1115 #, c-format msgid "DH: could not set DH parameters: %s" msgstr "DH : n'a pas pu configurer les paramètres DH : %s" -#: libpq/be-secure-openssl.c:1131 +#: libpq/be-secure-openssl.c:1142 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH : nome de courbe non reconnu : %s" -#: libpq/be-secure-openssl.c:1140 +#: libpq/be-secure-openssl.c:1151 #, c-format msgid "ECDH: could not create key" msgstr "ECDH : n'a pas pu créer la clé" -#: libpq/be-secure-openssl.c:1168 +#: libpq/be-secure-openssl.c:1179 msgid "no SSL error reported" msgstr "aucune erreur SSL reportée" -#: libpq/be-secure-openssl.c:1172 +#: libpq/be-secure-openssl.c:1183 #, c-format msgid "SSL error code %lu" msgstr "erreur SSL %lu" @@ -13191,7 +13196,7 @@ msgid "could not receive data from client: %m" msgstr "n'a pas pu recevoir les données du client : %m" -#: libpq/pqcomm.c:1219 tcop/postgres.c:3967 +#: libpq/pqcomm.c:1219 tcop/postgres.c:3977 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "arrêt de la connexion à cause d'une perte de synchronisation du protocole" @@ -13221,7 +13226,7 @@ msgid "no data left in message" msgstr "pas de données dans le message" -#: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 utils/adt/arrayfuncs.c:1469 utils/adt/rowtypes.c:563 +#: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 utils/adt/arrayfuncs.c:1458 utils/adt/rowtypes.c:563 #, c-format msgid "insufficient data left in message" msgstr "données insuffisantes laissées dans le message" @@ -13269,19 +13274,18 @@ #: main/main.c:331 #, c-format msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS nombre de tampons partagés\n" +msgstr " -B NBUFFERS nombre de blocs dans le cache disque de PostgreSQL\n" #: main/main.c:332 #, c-format msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c NOM=VALEUR configure un paramètre d'exécution\n" +msgstr " -c PARAM=VALEUR configure un paramètre d'exécution\n" #: main/main.c:333 #, c-format msgid " -C NAME print value of run-time parameter, then exit\n" msgstr "" -" -C NOM affiche la valeur d'un paramètre en exécution,\n" -" puis quitte\n" +" -C NOM affiche la valeur d'un paramètre en exécution, puis quitte\n" #: main/main.c:334 #, c-format @@ -13291,7 +13295,7 @@ #: main/main.c:335 #, c-format msgid " -D DATADIR database directory\n" -msgstr " -D RÉPDONNEES répertoire de la base de données\n" +msgstr " -D RÉP_DONNEES répertoire de la base de données\n" #: main/main.c:336 #, c-format @@ -13306,7 +13310,7 @@ #: main/main.c:338 #, c-format msgid " -h HOSTNAME host name or IP address to listen on\n" -msgstr " -h NOMHOTE nom d'hôte ou adresse IP à écouter\n" +msgstr " -h HÔTE nom d'hôte ou adresse IP à écouter\n" #: main/main.c:339 #, c-format @@ -13351,7 +13355,7 @@ #: main/main.c:349 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version et quitte\n" +msgstr " -V, --version affiche la version et quitte\n" #: main/main.c:350 #, c-format @@ -13366,7 +13370,7 @@ #: main/main.c:352 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide et quitte\n" +msgstr " -?, --help affiche cette aide et quitte\n" #: main/main.c:354 #, c-format @@ -13393,8 +13397,7 @@ #, c-format msgid " -O allow system table structure changes\n" msgstr "" -" -O autorise les modifications de structure des tables\n" -" système\n" +" -O autorise les modifications de structure des tables système\n" #: main/main.c:358 #, c-format @@ -13404,7 +13407,7 @@ #: main/main.c:359 #, c-format msgid " -t pa|pl|ex show timings after each query\n" -msgstr " -t pa|pl|ex affiche les horodatages pour chaque requête\n" +msgstr " -t pa|pl|ex affiche les horodatages pour chaque requête\n" #: main/main.c:360 #, c-format @@ -13439,7 +13442,7 @@ #: main/main.c:365 #, c-format msgid " DBNAME database name (defaults to user name)\n" -msgstr " NOMBASE nom de la base (par défaut, celui de l'utilisateur)\n" +msgstr " BASE nom de la base (par défaut, celui de l'utilisateur)\n" #: main/main.c:366 #, c-format @@ -13483,7 +13486,7 @@ #, c-format msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n" msgstr "" -" NOMBASE nom de la base (argument obligatoire dans le mode\n" +" BASE nom de la base (argument obligatoire dans le mode\n" " « bootstrapping »)\n" #: main/main.c:375 @@ -13551,7 +13554,7 @@ msgid "ExtensibleNodeMethods \"%s\" was not registered" msgstr "ExtensibleNodeMethods \"%s\" n'a pas été enregistré" -#: nodes/nodeFuncs.c:123 nodes/nodeFuncs.c:154 parser/parse_coerce.c:1851 parser/parse_coerce.c:1879 parser/parse_coerce.c:1955 parser/parse_expr.c:2110 parser/parse_func.c:602 parser/parse_oper.c:964 utils/fmgr/funcapi.c:466 +#: nodes/nodeFuncs.c:123 nodes/nodeFuncs.c:154 parser/parse_coerce.c:1863 parser/parse_coerce.c:1891 parser/parse_coerce.c:1967 parser/parse_expr.c:2110 parser/parse_func.c:602 parser/parse_oper.c:964 utils/fmgr/funcapi.c:466 #, c-format msgid "could not find array type for data type %s" msgstr "n'a pas pu trouver de type tableau pour le type de données %s" @@ -13699,7 +13702,7 @@ msgstr "SELECT ... INTO n'est pas autorisé ici" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1559 parser/analyze.c:2826 +#: parser/analyze.c:1559 parser/analyze.c:2841 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s ne peut pas être appliqué à VALUES" @@ -13838,43 +13841,43 @@ msgstr "%s n'est pas autorisé avec les fonctions renvoyant plusieurs lignes dans la liste cible" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2768 +#: parser/analyze.c:2781 #, c-format msgid "%s must specify unqualified relation names" msgstr "%s doit indiquer les noms de relation non qualifiés" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2799 +#: parser/analyze.c:2814 #, c-format msgid "%s cannot be applied to a join" msgstr "%s ne peut pas être appliqué à une jointure" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2808 +#: parser/analyze.c:2823 #, c-format msgid "%s cannot be applied to a function" msgstr "%s ne peut pas être appliqué à une fonction" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2817 +#: parser/analyze.c:2832 #, c-format msgid "%s cannot be applied to a table function" msgstr "%s ne peut pas être appliqué à une fonction de table" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2835 +#: parser/analyze.c:2850 #, c-format msgid "%s cannot be applied to a WITH query" msgstr "%s ne peut pas être appliqué à une requête WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2844 +#: parser/analyze.c:2859 #, c-format msgid "%s cannot be applied to a named tuplestore" msgstr "%s ne peut pas être appliqué à une tuplestore nommé" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2861 +#: parser/analyze.c:2876 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "relation « %s » dans une clause %s introuvable dans la clause FROM" @@ -14018,117 +14021,117 @@ msgid "grouping operations are not allowed in %s" msgstr "les fonctions de regroupement ne sont pas autorisés dans %s" -#: parser/parse_agg.c:641 +#: parser/parse_agg.c:634 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "un aggrégat de niveau externe ne peut pas contenir de variable de niveau inférieur dans ses arguments directs" -#: parser/parse_agg.c:720 +#: parser/parse_agg.c:713 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "" "les appels à la fonction d'agrégat ne peuvent pas contenir des appels à des\n" "fonction SETOF" -#: parser/parse_agg.c:721 parser/parse_expr.c:1761 parser/parse_expr.c:2237 parser/parse_func.c:773 +#: parser/parse_agg.c:714 parser/parse_expr.c:1761 parser/parse_expr.c:2237 parser/parse_func.c:773 #, c-format msgid "You might be able to move the set-returning function into a LATERAL FROM item." msgstr "Vous devriez être capable de déplacer la fonction SETOF dans un élément LATERAL FROM." -#: parser/parse_agg.c:726 +#: parser/parse_agg.c:719 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "" "les appels à la fonction d'agrégat ne peuvent pas contenir des appels à la\n" "fonction window" -#: parser/parse_agg.c:805 +#: parser/parse_agg.c:798 msgid "window functions are not allowed in JOIN conditions" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les conditions de jointure" -#: parser/parse_agg.c:812 +#: parser/parse_agg.c:805 msgid "window functions are not allowed in functions in FROM" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les fonctions contenues dans la clause FROM" -#: parser/parse_agg.c:818 +#: parser/parse_agg.c:811 msgid "window functions are not allowed in policy expressions" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions de politique" -#: parser/parse_agg.c:830 +#: parser/parse_agg.c:823 msgid "window functions are not allowed in window definitions" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les définitions de fenêtres" -#: parser/parse_agg.c:862 +#: parser/parse_agg.c:855 msgid "window functions are not allowed in check constraints" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les contraintes CHECK" -#: parser/parse_agg.c:866 +#: parser/parse_agg.c:859 msgid "window functions are not allowed in DEFAULT expressions" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions par défaut" -#: parser/parse_agg.c:869 +#: parser/parse_agg.c:862 msgid "window functions are not allowed in index expressions" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions d'index" -#: parser/parse_agg.c:872 +#: parser/parse_agg.c:865 msgid "window functions are not allowed in index predicates" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les prédicats d'index" -#: parser/parse_agg.c:875 +#: parser/parse_agg.c:868 msgid "window functions are not allowed in transform expressions" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions de transformation" -#: parser/parse_agg.c:878 +#: parser/parse_agg.c:871 msgid "window functions are not allowed in EXECUTE parameters" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les paramètres d'EXECUTE" -#: parser/parse_agg.c:881 +#: parser/parse_agg.c:874 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les conditions WHEN des triggers" -#: parser/parse_agg.c:884 +#: parser/parse_agg.c:877 msgid "window functions are not allowed in partition key expression" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions de clé de partitionnement" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:904 parser/parse_clause.c:1820 +#: parser/parse_agg.c:897 parser/parse_clause.c:1820 #, c-format msgid "window functions are not allowed in %s" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans %s" -#: parser/parse_agg.c:938 parser/parse_clause.c:2654 +#: parser/parse_agg.c:931 parser/parse_clause.c:2654 #, c-format msgid "window \"%s\" does not exist" msgstr "le window « %s » n'existe pas" -#: parser/parse_agg.c:1023 +#: parser/parse_agg.c:1016 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "trop d'ensembles de regroupement présents (4096 maximum)" -#: parser/parse_agg.c:1172 +#: parser/parse_agg.c:1165 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "les fonctions de fenêtrage ne sont pas autorisés dans le terme récursif d'une requête récursive" -#: parser/parse_agg.c:1365 +#: parser/parse_agg.c:1358 #, 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" -#: parser/parse_agg.c:1368 +#: parser/parse_agg.c:1361 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "Les arguments directs d'un agégat par ensemble ordonné doivent seulement utiliser des colonnes groupées." -#: parser/parse_agg.c:1373 +#: parser/parse_agg.c:1366 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "" "la sous-requête utilise une colonne « %s.%s » non groupée dans la requête\n" "externe" -#: parser/parse_agg.c:1537 +#: parser/parse_agg.c:1530 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "les arguments de la clause GROUPING doivent être des expressions de regroupement du niveau de la requête associée" @@ -14385,100 +14388,100 @@ "Les opérateurs de tri doivent être les membres « < » ou « > » des familles\n" "d'opérateurs btree." -#: parser/parse_coerce.c:978 parser/parse_coerce.c:1008 parser/parse_coerce.c:1026 parser/parse_coerce.c:1041 parser/parse_expr.c:2144 parser/parse_expr.c:2732 parser/parse_target.c:936 +#: parser/parse_coerce.c:990 parser/parse_coerce.c:1020 parser/parse_coerce.c:1038 parser/parse_coerce.c:1053 parser/parse_expr.c:2144 parser/parse_expr.c:2732 parser/parse_target.c:936 #, c-format msgid "cannot cast type %s to %s" msgstr "ne peut pas convertir le type %s en %s" -#: parser/parse_coerce.c:1011 +#: parser/parse_coerce.c:1023 #, c-format msgid "Input has too few columns." msgstr "L'entrée n'a pas assez de colonnes." -#: parser/parse_coerce.c:1029 +#: parser/parse_coerce.c:1041 #, 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:1044 +#: parser/parse_coerce.c:1056 #, c-format 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 #. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:1087 parser/parse_coerce.c:1135 +#: parser/parse_coerce.c:1099 parser/parse_coerce.c:1147 #, 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: %s is name of a SQL construct, eg WHERE #. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:1098 parser/parse_coerce.c:1147 +#: parser/parse_coerce.c:1110 parser/parse_coerce.c:1159 #, 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 CASE -#: parser/parse_coerce.c:1287 +#: parser/parse_coerce.c:1299 #, 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:1354 +#: parser/parse_coerce.c:1366 #, c-format msgid "%s could not convert type %s to %s" msgstr "%s n'a pas pu convertir le type %s en %s" -#: parser/parse_coerce.c:1656 +#: parser/parse_coerce.c:1668 #, c-format msgid "arguments declared \"anyelement\" are not all alike" msgstr "les arguments déclarés « anyelement » ne sont pas tous identiques" -#: parser/parse_coerce.c:1676 +#: parser/parse_coerce.c:1688 #, c-format msgid "arguments declared \"anyarray\" are not all alike" msgstr "les arguments déclarés « anyarray » ne sont pas tous identiques" -#: parser/parse_coerce.c:1696 +#: parser/parse_coerce.c:1708 #, c-format msgid "arguments declared \"anyrange\" are not all alike" msgstr "les arguments déclarés « anyrange » ne sont pas tous identiques" -#: parser/parse_coerce.c:1725 parser/parse_coerce.c:1940 parser/parse_coerce.c:1974 utils/fmgr/funcapi.c:425 +#: parser/parse_coerce.c:1737 parser/parse_coerce.c:1952 parser/parse_coerce.c:1986 utils/fmgr/funcapi.c:425 #, c-format msgid "argument declared %s is not an array but type %s" msgstr "l'argument déclaré %s n'est pas un tableau mais est du type %s" -#: parser/parse_coerce.c:1741 parser/parse_coerce.c:1780 +#: parser/parse_coerce.c:1753 parser/parse_coerce.c:1792 #, c-format msgid "argument declared %s is not consistent with argument declared %s" msgstr "l'argument déclaré %s n'est pas cohérent avec l'argument déclaré %s" -#: parser/parse_coerce.c:1763 parser/parse_coerce.c:1987 utils/fmgr/funcapi.c:439 +#: parser/parse_coerce.c:1775 parser/parse_coerce.c:1999 utils/fmgr/funcapi.c:439 #, c-format msgid "argument declared %s is not a range type but type %s" msgstr "l'argument déclaré %s n'est pas un type d'intervalle mais est du type %s" -#: parser/parse_coerce.c:1801 +#: parser/parse_coerce.c:1813 #, c-format msgid "could not determine polymorphic type because input has type %s" msgstr "" "n'a pas pu déterminer le type polymorphique car l'entrée dispose\n" "du type %s" -#: parser/parse_coerce.c:1812 +#: parser/parse_coerce.c:1824 #, c-format msgid "type matched to anynonarray is an array type: %s" msgstr "le type déclaré anynonarray est un type tableau : %s" -#: parser/parse_coerce.c:1822 +#: parser/parse_coerce.c:1834 #, 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" -#: parser/parse_coerce.c:1862 parser/parse_coerce.c:1892 +#: parser/parse_coerce.c:1874 parser/parse_coerce.c:1904 #, c-format msgid "could not find range type for data type %s" msgstr "n'a pas pu trouver le type range pour le type de données %s" @@ -15640,17 +15643,17 @@ msgid "identifier \"%s\" will be truncated to \"%s\"" msgstr "l'identifiant « %s » sera tronqué en « %s »" -#: port/pg_shmem.c:217 port/sysv_shmem.c:217 +#: port/pg_shmem.c:227 port/sysv_shmem.c:227 #, c-format msgid "could not create shared memory segment: %m" msgstr "n'a pas pu créer le segment de mémoire partagée : %m" -#: port/pg_shmem.c:218 port/sysv_shmem.c:218 +#: port/pg_shmem.c:228 port/sysv_shmem.c:228 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." msgstr "L'appel système qui a échoué était shmget(clé=%lu, taille=%zu, 0%o)." -#: port/pg_shmem.c:222 port/sysv_shmem.c:222 +#: port/pg_shmem.c:232 port/sysv_shmem.c:232 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n" @@ -15659,7 +15662,7 @@ "Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée dépasse la valeur du paramètre SHMMAX du noyau, ou est plus petite\n" "que votre paramètre SHMMIN du noyau. La documentation PostgreSQL contient plus d'information sur la configuration de la mémoire partagée." -#: port/pg_shmem.c:229 port/sysv_shmem.c:229 +#: port/pg_shmem.c:239 port/sysv_shmem.c:239 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n" @@ -15668,7 +15671,7 @@ "Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée dépasse le paramètre SHMALL du noyau. Vous pourriez avoir besoin de reconfigurer\n" "le noyau avec un SHMALL plus important. La documentation PostgreSQL contient plus d'information sur la configuration de la mémoire partagée." -#: port/pg_shmem.c:235 port/sysv_shmem.c:235 +#: port/pg_shmem.c:245 port/sysv_shmem.c:245 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n" @@ -15677,12 +15680,12 @@ "Cette erreur ne signifie *pas* que vous manquez d'espace disque. Elle survient si tous les identifiants de mémoire partagé disponibles ont été pris, auquel cas vous devez augmenter le paramètre SHMMNI de votre noyau, ou parce que la limite maximum de la mémoire partagée\n" "de votre système a été atteinte. La documentation de PostgreSQL contient plus d'informations sur la configuration de la mémoire partagée." -#: port/pg_shmem.c:580 port/sysv_shmem.c:580 +#: port/pg_shmem.c:590 port/sysv_shmem.c:590 #, c-format msgid "could not map anonymous shared memory: %m" msgstr "n'a pas pu créer le segment de mémoire partagée anonyme : %m" -#: port/pg_shmem.c:582 port/sysv_shmem.c:582 +#: port/pg_shmem.c:592 port/sysv_shmem.c:592 #, c-format msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections." msgstr "" @@ -15693,24 +15696,24 @@ "valeur du paramètre shared_buffers de PostgreSQL ou le paramètre\n" "max_connections." -#: port/pg_shmem.c:644 port/sysv_shmem.c:644 port/win32_shmem.c:151 +#: port/pg_shmem.c:654 port/sysv_shmem.c:654 port/win32_shmem.c:151 #, c-format msgid "huge pages not supported on this platform" msgstr "Huge Pages non supporté sur cette plateforme" -#: port/pg_shmem.c:704 port/sysv_shmem.c:704 utils/init/miscinit.c:977 +#: port/pg_shmem.c:714 port/sysv_shmem.c:714 utils/init/miscinit.c:977 #, c-format msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" msgstr "" "le bloc de mémoire partagé pré-existant (clé %lu, ID %lu) est en cours\n" "d'utilisation" -#: port/pg_shmem.c:707 port/sysv_shmem.c:707 utils/init/miscinit.c:979 +#: port/pg_shmem.c:717 port/sysv_shmem.c:717 utils/init/miscinit.c:979 #, c-format msgid "Terminate any old server processes associated with data directory \"%s\"." msgstr "Termine les anciens processus serveurs associés avec le répertoire de données « %s »." -#: port/pg_shmem.c:758 port/sysv_shmem.c:758 +#: port/pg_shmem.c:768 port/sysv_shmem.c:768 #, 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" @@ -15896,64 +15899,64 @@ msgid "Enable the \"track_counts\" option." msgstr "Activez l'option « track_counts »." -#: postmaster/bgworker.c:404 postmaster/bgworker.c:915 +#: postmaster/bgworker.c:406 postmaster/bgworker.c:926 #, c-format msgid "registering background worker \"%s\"" msgstr "enregistrement du processus en tâche de fond « %s »" -#: postmaster/bgworker.c:436 +#: postmaster/bgworker.c:447 #, c-format msgid "unregistering background worker \"%s\"" msgstr "désenregistrement du processus en tâche de fond « %s »" -#: postmaster/bgworker.c:649 +#: postmaster/bgworker.c:660 #, c-format msgid "background worker \"%s\": must attach to shared memory in order to request a database connection" msgstr "processus en tâche de fond « %s » : doit se lier à la mémoire partagée pour être capable de demander une connexion à une base" -#: postmaster/bgworker.c:658 +#: postmaster/bgworker.c:669 #, c-format msgid "background worker \"%s\": cannot request database access if starting at postmaster start" msgstr "processus en tâche de fond « %s » : ne peut pas réclamer un accès à la base s'il s'exécute au lancement de postmaster" -#: postmaster/bgworker.c:672 +#: postmaster/bgworker.c:683 #, c-format msgid "background worker \"%s\": invalid restart interval" msgstr "processus en tâche de fond « %s »: intervalle de redémarrage invalide" -#: postmaster/bgworker.c:687 +#: postmaster/bgworker.c:698 #, c-format msgid "background worker \"%s\": parallel workers may not be configured for restart" msgstr "processus en tâche de fond « %s »: les processus parallélisés pourraient ne pas être configurés pour redémarrer" -#: postmaster/bgworker.c:725 +#: postmaster/bgworker.c:736 #, c-format msgid "terminating background worker \"%s\" due to administrator command" msgstr "arrêt du processus en tâche de fond « %s » suite à la demande de l'administrateur" -#: postmaster/bgworker.c:923 +#: postmaster/bgworker.c:934 #, c-format msgid "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "processus en tâche de fond « %s » : doit être enregistré dans shared_preload_libraries" -#: postmaster/bgworker.c:935 +#: postmaster/bgworker.c:946 #, c-format msgid "background worker \"%s\": only dynamic background workers can request notification" msgstr "processus en tâche de fond « %s » : seuls les processus utilisateurs en tâche de fond dynamiques peuvent réclamer des notifications" -#: postmaster/bgworker.c:950 +#: postmaster/bgworker.c:961 #, c-format msgid "too many background workers" msgstr "trop de processus en tâche de fond" -#: postmaster/bgworker.c:951 +#: postmaster/bgworker.c:962 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "Up to %d background workers can be registered with the current settings." msgstr[0] "Un maximum de %d processus en tâche de fond peut être enregistré avec la configuration actuelle" msgstr[1] "Un maximum de %d processus en tâche de fond peut être enregistré avec la configuration actuelle" -#: postmaster/bgworker.c:955 +#: postmaster/bgworker.c:966 #, c-format msgid "Consider increasing the configuration parameter \"max_worker_processes\"." msgstr "Considérez l'augmentation du paramètre « max_worker_processes »." @@ -16895,7 +16898,7 @@ #: replication/basebackup.c:1318 #, c-format msgid "symbolic link target too long for tar format: file name \"%s\", target \"%s\"" -msgstr "cible du lien symbolique trop long pour le format tar : nom de fichier « %s », cible « %s »" +msgstr "cible du lien symbolique trop longue pour le format tar : nom de fichier « %s », cible « %s »" #: replication/libpqwalreceiver/libpqwalreceiver.c:225 #, c-format @@ -17217,44 +17220,44 @@ msgid "no replication origin is configured" msgstr "aucune origine de réplication n'est configurée" -#: replication/logical/relation.c:283 +#: replication/logical/relation.c:270 #, c-format msgid "logical replication target relation \"%s.%s\" does not exist" msgstr "la relation cible de la réplication logique « %s.%s » n'existe pas" -#: replication/logical/relation.c:325 +#: replication/logical/relation.c:312 #, c-format msgid "logical replication target relation \"%s.%s\" is missing some replicated columns" msgstr "il manque des colonnes répliquées dans la relation cible « %s.%s » de réplication logique" -#: replication/logical/relation.c:365 +#: replication/logical/relation.c:352 #, c-format msgid "logical replication target relation \"%s.%s\" uses system columns in REPLICA IDENTITY index" msgstr "la relation cible « %s.%s » de réplication logique utilise des colonnes systèmes dans l'index REPLICA IDENTITY" -#: replication/logical/reorderbuffer.c:2446 +#: replication/logical/reorderbuffer.c:2469 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "n'a pas pu écrire dans le fichier pour le XID %u : %m" -#: replication/logical/reorderbuffer.c:2550 replication/logical/reorderbuffer.c:2572 +#: replication/logical/reorderbuffer.c:2573 replication/logical/reorderbuffer.c:2595 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "n'a pas pu lire le fichier « reorderbuffer spill » : %m" -#: replication/logical/reorderbuffer.c:2554 replication/logical/reorderbuffer.c:2576 +#: replication/logical/reorderbuffer.c:2577 replication/logical/reorderbuffer.c:2599 #, c-format msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes" msgstr "" "n'a pas pu lire à partir du fichier « reorderbuffer spill » : a lu seulement %d octets\n" "sur %u" -#: replication/logical/reorderbuffer.c:2788 +#: replication/logical/reorderbuffer.c:2812 #, c-format msgid "could not remove file \"%s\" during removal of pg_replslot/%s/*.xid: %m" msgstr "n'a pas pu supprimer le fichier « %s » lors de la suppression de pg_replslot/%s/*.xid : %m" -#: replication/logical/reorderbuffer.c:3258 +#: replication/logical/reorderbuffer.c:3282 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "n'a pas pu lire à partir du fichier « %s » : lu %d octets au lieu de %d octets" @@ -17338,122 +17341,122 @@ msgid "logical replication table synchronization worker for subscription \"%s\", table \"%s\" has finished" msgstr "le worker de synchronisation de table en réplication logique pour la souscription « %s », table « %s », a terminé" -#: replication/logical/tablesync.c:685 +#: replication/logical/tablesync.c:686 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "n'a pas pu récupérer l'information sur la table « %s.%s » à partir du publieur : %s" -#: replication/logical/tablesync.c:691 +#: replication/logical/tablesync.c:692 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "table « %s.%s » non trouvée sur le publieur" -#: replication/logical/tablesync.c:721 +#: replication/logical/tablesync.c:723 #, c-format msgid "could not fetch table info for table \"%s.%s\": %s" msgstr "n'a pas pu récupérer les informations sur la table « %s.%s » : %s" -#: replication/logical/tablesync.c:791 +#: replication/logical/tablesync.c:793 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "n'a pas pu lancer la copie initiale du contenu de la table « %s.%s » : %s" -#: replication/logical/tablesync.c:905 +#: replication/logical/tablesync.c:908 #, c-format msgid "table copy could not start transaction on publisher" msgstr "la copie de table n'a pas pu démarrer la transaction sur le publieur" -#: replication/logical/tablesync.c:927 +#: replication/logical/tablesync.c:930 #, c-format msgid "table copy could not finish transaction on publisher" msgstr "la copie de table n'a pas pu finir la transaction sur le publieur" -#: replication/logical/worker.c:305 +#: replication/logical/worker.c:294 #, c-format -msgid "processing remote data for replication target relation \"%s.%s\" column \"%s\", remote type %s, local type %s" -msgstr "traitement des données distantes pour la relation cible « %s.%s » de réplication logique, colonne « %s », type distant %s, type local %s" +msgid "processing remote data for replication target relation \"%s.%s\" column \"%s\"" +msgstr "traitement des données distantes pour la relation cible de réplication « %s.%s », colonne « %s »" -#: replication/logical/worker.c:542 +#: replication/logical/worker.c:529 #, c-format msgid "ORIGIN message sent out of order" msgstr "message ORIGIN en désordre" -#: replication/logical/worker.c:675 +#: replication/logical/worker.c:660 #, c-format msgid "publisher did not send replica identity column expected by the logical replication target relation \"%s.%s\"" msgstr "le publieur n'a pas envoyé la colonne d'identité du réplicat attendue par la relation cible « %s.%s » de réplication logique" -#: replication/logical/worker.c:682 +#: replication/logical/worker.c:667 #, c-format msgid "logical replication target relation \"%s.%s\" has neither REPLICA IDENTITY index nor PRIMARY KEY and published relation does not have REPLICA IDENTITY FULL" msgstr "la relation cible « %s.%s » de réplication logique n'a ni un index REPLICA IDENTITY ni une clé primaire, et la relation publiée n'a pas REPLICA IDENTITY FULL" -#: replication/logical/worker.c:913 +#: replication/logical/worker.c:898 #, c-format msgid "logical replication could not find row for delete in replication target relation \"%s\"" msgstr "la réplication logique n'a pas pu trouver la ligne à supprimer dans la relation cible de réplication %s" -#: replication/logical/worker.c:980 +#: replication/logical/worker.c:965 #, c-format msgid "invalid logical replication message type \"%c\"" msgstr "type « %c » du message de la réplication logique invalide" -#: replication/logical/worker.c:1123 +#: replication/logical/worker.c:1108 #, c-format msgid "data stream from publisher has ended" msgstr "le flux de données provenant du publieur s'est terminé" -#: replication/logical/worker.c:1282 +#: replication/logical/worker.c:1267 #, c-format msgid "terminating logical replication worker due to timeout" msgstr "arrêt du processus worker de la réplication logique suite à l'expiration du délai de réplication" -#: replication/logical/worker.c:1427 +#: replication/logical/worker.c:1413 #, c-format msgid "logical replication apply worker for subscription \"%s\" will stop because the subscription was removed" msgstr "le processus apply de réplication logique pour la souscription « %s » s'arrêtera car la souscription a été supprimée" -#: replication/logical/worker.c:1441 +#: replication/logical/worker.c:1427 #, c-format msgid "logical replication apply worker for subscription \"%s\" will stop because the subscription was disabled" msgstr "le processus apply de réplication logique pour la souscription « %s » s'arrêtera car la souscription a été désactivée" -#: replication/logical/worker.c:1455 +#: replication/logical/worker.c:1441 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because the connection information was changed" msgstr "le processus apply de réplication logique pour la souscription « %s » redémarrera car la souscription a été modifiée" -#: replication/logical/worker.c:1469 +#: replication/logical/worker.c:1455 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because subscription was renamed" msgstr "le processus apply de réplication logique pour la souscription « %s » redémarrera car la souscription a été renommée" -#: replication/logical/worker.c:1486 +#: replication/logical/worker.c:1472 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because the replication slot name was changed" msgstr "le processus apply de réplication logique pour la souscription « %s » redémarrera car le nom du slot de réplication a été modifiée" -#: replication/logical/worker.c:1500 +#: replication/logical/worker.c:1486 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because subscription's publications were changed" msgstr "le processus apply de réplication logique pour la souscription « %s » redémarrera car les publications ont été modifiées" -#: replication/logical/worker.c:1614 +#: replication/logical/worker.c:1600 #, c-format msgid "logical replication apply worker for subscription \"%s\" will not start because the subscription was disabled during startup" msgstr "le processus apply de réplication logique pour la souscription « %s » ne démarrera pas car la souscription a été désactivée au démarrage" -#: replication/logical/worker.c:1628 +#: replication/logical/worker.c:1614 #, c-format msgid "logical replication table synchronization worker for subscription \"%s\", table \"%s\" has started" msgstr "le processus de synchronisation des tables en réplication logique pour la souscription « %s », table « %s » a démarré" -#: replication/logical/worker.c:1632 +#: replication/logical/worker.c:1618 #, c-format msgid "logical replication apply worker for subscription \"%s\" has started" msgstr "le processus apply de réplication logique pour la souscription « %s » a démarré" -#: replication/logical/worker.c:1672 +#: replication/logical/worker.c:1658 #, c-format msgid "subscription has no replication slot set" msgstr "la souscription n'a aucun ensemble de slot de réplication" @@ -17644,81 +17647,81 @@ msgid "number of synchronous standbys (%d) must be greater than zero" msgstr "le nombre de standbys synchrones (%d) doit être supérieur à zéro" -#: replication/walreceiver.c:159 +#: replication/walreceiver.c:160 #, c-format msgid "terminating walreceiver process due to administrator command" msgstr "arrêt du processus walreceiver suite à la demande de l'administrateur" -#: replication/walreceiver.c:283 +#: replication/walreceiver.c:284 #, c-format msgid "could not connect to the primary server: %s" msgstr "n'a pas pu se connecter au serveur principal : %s" -#: replication/walreceiver.c:320 +#: replication/walreceiver.c:321 #, c-format msgid "database system identifier differs between the primary and standby" msgstr "" "l'identifiant du système de bases de données diffère entre le serveur principal\n" "et le serveur en attente" -#: replication/walreceiver.c:321 +#: replication/walreceiver.c:322 #, 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." -#: replication/walreceiver.c:331 +#: replication/walreceiver.c:332 #, c-format msgid "highest timeline %u of the primary is behind recovery timeline %u" msgstr "la plus grande timeline %u du serveur principal est derrière la timeline de restauration %u" -#: replication/walreceiver.c:367 +#: replication/walreceiver.c:368 #, c-format msgid "started streaming WAL from primary at %X/%X on timeline %u" msgstr "Commence le flux des journaux depuis le principal à %X/%X sur la timeline %u" -#: replication/walreceiver.c:372 +#: replication/walreceiver.c:373 #, c-format msgid "restarted WAL streaming at %X/%X on timeline %u" msgstr "recommence le flux WAL à %X/%X sur la timeline %u" -#: replication/walreceiver.c:401 +#: replication/walreceiver.c:402 #, c-format msgid "cannot continue WAL streaming, recovery has already ended" msgstr "ne peut pas continuer le flux de journaux de transactions, la récupération est déjà terminée" -#: replication/walreceiver.c:438 +#: replication/walreceiver.c:439 #, c-format msgid "replication terminated by primary server" msgstr "réplication terminée par le serveur primaire" -#: replication/walreceiver.c:439 +#: replication/walreceiver.c:440 #, c-format msgid "End of WAL reached on timeline %u at %X/%X." msgstr "Fin du WAL atteint sur la timeline %u à %X/%X" -#: replication/walreceiver.c:536 +#: replication/walreceiver.c:537 #, c-format msgid "terminating walreceiver due to timeout" msgstr "arrêt du processus walreceiver suite à l'expiration du délai de réplication" -#: replication/walreceiver.c:574 +#: replication/walreceiver.c:575 #, c-format msgid "primary server contains no more WAL on requested timeline %u" msgstr "le serveur principal ne contient plus de WAL sur la timeline %u demandée" -#: replication/walreceiver.c:589 replication/walreceiver.c:945 +#: replication/walreceiver.c:590 replication/walreceiver.c:1079 #, c-format msgid "could not close log segment %s: %m" msgstr "n'a pas pu fermer le journal de transactions %s : %m" -#: replication/walreceiver.c:714 +#: replication/walreceiver.c:715 #, c-format msgid "fetching timeline history file for timeline %u from primary server" msgstr "récupération du fichier historique pour la timeline %u à partir du serveur principal" -#: replication/walreceiver.c:999 +#: replication/walreceiver.c:970 #, c-format msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "n'a pas pu écrire le journal de transactions %s au décalage %u, longueur %lu : %m" @@ -17788,49 +17791,49 @@ msgid "cannot execute new commands while WAL sender is in stopping mode" msgstr "ne peut pas exécuter de nouvelles commandes alors que le walsender est en mode d'arrêt" -#: replication/walsender.c:1479 +#: replication/walsender.c:1483 +#, c-format +msgid "cannot execute SQL commands in WAL sender for physical replication" +msgstr "ne peut pas exécuter des commandes SQL dans le walsender pour la réplication physique" + +#: replication/walsender.c:1506 #, c-format msgid "received replication command: %s" msgstr "commande de réplication reçu : %s" -#: replication/walsender.c:1495 tcop/fastpath.c:287 tcop/postgres.c:1020 tcop/postgres.c:1330 tcop/postgres.c:1589 tcop/postgres.c:1994 tcop/postgres.c:2362 tcop/postgres.c:2437 +#: replication/walsender.c:1514 tcop/fastpath.c:287 tcop/postgres.c:1020 tcop/postgres.c:1330 tcop/postgres.c:1589 tcop/postgres.c:1994 tcop/postgres.c:2362 tcop/postgres.c:2437 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "" "la transaction est annulée, les commandes sont ignorées jusqu'à la fin du bloc\n" "de la transaction" -#: replication/walsender.c:1563 -#, c-format -msgid "cannot execute SQL commands in WAL sender for physical replication" -msgstr "ne peut pas exécuter des commandes SQL dans le walsender pour la réplication physique" - -#: replication/walsender.c:1616 replication/walsender.c:1632 +#: replication/walsender.c:1622 replication/walsender.c:1638 #, c-format msgid "unexpected EOF on standby connection" msgstr "fin de fichier (EOF) inattendue de la connexion du serveur en attente" -#: replication/walsender.c:1671 +#: replication/walsender.c:1677 #, c-format msgid "invalid standby message type \"%c\"" msgstr "type de message « %c » invalide pour le serveur en standby" -#: replication/walsender.c:1712 +#: replication/walsender.c:1718 #, c-format msgid "unexpected message type \"%c\"" msgstr "type de message « %c » inattendu" -#: replication/walsender.c:2084 +#: replication/walsender.c:2090 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "arrêt du processus walreceiver suite à l'expiration du délai de réplication" -#: replication/walsender.c:2168 +#: replication/walsender.c:2174 #, c-format msgid "\"%s\" has now caught up with upstream server" msgstr "« %s » a maintenant rattrapé le serveur d'envoi" -#: replication/walsender.c:2281 +#: replication/walsender.c:2287 #, c-format msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "" @@ -18053,202 +18056,212 @@ msgid "renaming an ON SELECT rule is not allowed" msgstr "le renommage d'une règle ON SELECT n'est pas autorisé" -#: rewrite/rewriteHandler.c:542 +#: rewrite/rewriteHandler.c:545 #, 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." -#: rewrite/rewriteHandler.c:602 +#: rewrite/rewriteHandler.c:572 +#, c-format +msgid "INSERT...SELECT rule actions are not supported for queries having data-modifying statements in WITH" +msgstr "les actions de règle INSERT...SELECT ne sont pas supportées par les requêtes de modification de données dans WITH" + +#: rewrite/rewriteHandler.c:625 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "ne peut pas avoir des listes RETURNING dans plusieurs règles" -#: rewrite/rewriteHandler.c:811 +#: rewrite/rewriteHandler.c:834 #, c-format msgid "cannot insert into column \"%s\"" msgstr "ne peut pas insérer dans la colonne « %s »" -#: rewrite/rewriteHandler.c:812 rewrite/rewriteHandler.c:827 +#: rewrite/rewriteHandler.c:835 rewrite/rewriteHandler.c:850 #, c-format msgid "Column \"%s\" is an identity column defined as GENERATED ALWAYS." msgstr "La colonne « %s » est une colonne d'identité définie comme GENERATED ALWAYS." -#: rewrite/rewriteHandler.c:814 +#: rewrite/rewriteHandler.c:837 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "Utilisez OVERRIDING SYSTEM VALUE pour surcharger." -#: rewrite/rewriteHandler.c:826 +#: rewrite/rewriteHandler.c:849 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "la colonne « %s » peut seulement être mise à jour en DEFAULT" -#: rewrite/rewriteHandler.c:988 rewrite/rewriteHandler.c:1006 +#: rewrite/rewriteHandler.c:1011 rewrite/rewriteHandler.c:1029 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "affectations multiples pour la même colonne « %s »" -#: rewrite/rewriteHandler.c:1937 rewrite/rewriteHandler.c:3735 +#: rewrite/rewriteHandler.c:1960 rewrite/rewriteHandler.c:3772 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "récursion infinie détectée dans les règles de la relation « %s »" -#: rewrite/rewriteHandler.c:2023 +#: rewrite/rewriteHandler.c:2046 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "récursion infinie détectée dans la politique pour la relation « %s »" -#: rewrite/rewriteHandler.c:2343 +#: rewrite/rewriteHandler.c:2366 msgid "Junk view columns are not updatable." msgstr "Les colonnes « junk » des vues ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2348 +#: rewrite/rewriteHandler.c:2371 msgid "View columns that are not columns of their base relation are not updatable." msgstr "Les colonnes des vues qui ne font pas référence à des colonnes de la relation de base ne sont pas automatiquement modifiables." -#: rewrite/rewriteHandler.c:2351 +#: rewrite/rewriteHandler.c:2374 msgid "View columns that refer to system columns are not updatable." msgstr "Les colonnes des vues qui font référence à des colonnes systèmes ne sont pas automatiquement modifiables." -#: rewrite/rewriteHandler.c:2354 +#: rewrite/rewriteHandler.c:2377 msgid "View columns that return whole-row references are not updatable." msgstr "Les colonnes de vue qui font références à des lignes complètes ne sont pas automatiquement modifiables." -#: rewrite/rewriteHandler.c:2415 +#: rewrite/rewriteHandler.c:2438 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Les vues contenant DISTINCT ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2418 +#: rewrite/rewriteHandler.c:2441 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Les vues contenant GROUP BY ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2421 +#: rewrite/rewriteHandler.c:2444 msgid "Views containing HAVING are not automatically updatable." msgstr "Les vues contenant HAVING ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2424 +#: rewrite/rewriteHandler.c:2447 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "Les vues contenant UNION, INTERSECT ou EXCEPT ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2427 +#: rewrite/rewriteHandler.c:2450 msgid "Views containing WITH are not automatically updatable." msgstr "Les vues contenant WITH ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2430 +#: rewrite/rewriteHandler.c:2453 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Les vues contenant LIMIT ou OFFSET ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2442 +#: rewrite/rewriteHandler.c:2465 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Les vues qui renvoient des fonctions d'agrégat ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2445 +#: rewrite/rewriteHandler.c:2468 msgid "Views that return window functions are not automatically updatable." msgstr "Les vues qui renvoient des fonctions de fenêtrage ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2448 +#: rewrite/rewriteHandler.c:2471 msgid "Views that return set-returning functions are not automatically updatable." msgstr "Les vues qui renvoient des fonctions à plusieurs lignes ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2455 rewrite/rewriteHandler.c:2459 rewrite/rewriteHandler.c:2467 +#: rewrite/rewriteHandler.c:2478 rewrite/rewriteHandler.c:2482 rewrite/rewriteHandler.c:2490 msgid "Views that do not select from a single table or view are not automatically updatable." msgstr "Les vues qui lisent plusieurs tables ou vues ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2470 +#: rewrite/rewriteHandler.c:2493 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Les vues contenant TABLESAMPLE ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2494 +#: rewrite/rewriteHandler.c:2517 msgid "Views that have no updatable columns are not automatically updatable." msgstr "Les vues qui possèdent des colonnes non modifiables ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2971 +#: rewrite/rewriteHandler.c:2994 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "ne peut pas insérer dans la colonne « %s » de la vue « %s »" -#: rewrite/rewriteHandler.c:2979 +#: rewrite/rewriteHandler.c:3002 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "ne peut pas mettre à jour la colonne « %s » de la vue « %s »" -#: rewrite/rewriteHandler.c:3449 +#: rewrite/rewriteHandler.c:3475 +#, c-format +msgid "DO INSTEAD NOTIFY 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 de modification de données dans WITH" + +#: rewrite/rewriteHandler.c:3486 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "" "les règles DO INSTEAD NOTHING ne sont pas supportées par les instructions\n" "de modification de données dans WITH" -#: rewrite/rewriteHandler.c:3463 +#: rewrite/rewriteHandler.c:3500 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "" "les règles DO INSTEAD conditionnelles ne sont pas supportées par les\n" "instructions de modification de données dans WITH" -#: rewrite/rewriteHandler.c:3467 +#: rewrite/rewriteHandler.c:3504 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "" "les règles DO ALSO ne sont pas supportées par les instructions de modification\n" "de données dans WITH" -#: rewrite/rewriteHandler.c:3472 +#: rewrite/rewriteHandler.c:3509 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "" "les règles DO INSTEAD multi-instructions ne sont pas supportées pour les\n" "instructions de modification de données dans WITH" -#: rewrite/rewriteHandler.c:3663 rewrite/rewriteHandler.c:3671 rewrite/rewriteHandler.c:3679 +#: rewrite/rewriteHandler.c:3700 rewrite/rewriteHandler.c:3708 rewrite/rewriteHandler.c:3716 #, c-format msgid "Views with conditional DO INSTEAD rules are not automatically updatable." msgstr "Les vues contenant des règles conditionnelles DO INSTEAD ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:3772 +#: rewrite/rewriteHandler.c:3809 #, 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:3774 +#: rewrite/rewriteHandler.c:3811 #, c-format msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "" "Vous avez besoin d'une règle ON INSERT DO INSTEAD sans condition avec une\n" "clause RETURNING." -#: rewrite/rewriteHandler.c:3779 +#: rewrite/rewriteHandler.c:3816 #, 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:3781 +#: rewrite/rewriteHandler.c:3818 #, c-format msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "" "Vous avez besoin d'une règle ON UPDATE DO INSTEAD sans condition avec une\n" "clause RETURNING." -#: rewrite/rewriteHandler.c:3786 +#: rewrite/rewriteHandler.c:3823 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "ne peut pas exécuter DELETE RETURNING sur la relation « %s »" -#: rewrite/rewriteHandler.c:3788 +#: rewrite/rewriteHandler.c:3825 #, c-format msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "" "Vous avez besoin d'une règle ON DELETE DO INSTEAD sans condition avec une\n" "clause RETURNING." -#: rewrite/rewriteHandler.c:3806 +#: rewrite/rewriteHandler.c:3843 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" msgstr "INSERT avec une clause ON CONFLICT ne peut pas être utilisée avec une table qui a des règles pour INSERT ou UPDATE" -#: rewrite/rewriteHandler.c:3863 +#: rewrite/rewriteHandler.c:3900 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" msgstr "WITH ne peut pas être utilisé dans une requête réécrite par des règles en plusieurs requêtes" @@ -18420,12 +18433,12 @@ msgid "missing Language parameter" msgstr "paramètre Language manquant" -#: statistics/dependencies.c:670 statistics/dependencies.c:723 statistics/mvdistinct.c:333 statistics/mvdistinct.c:386 utils/adt/pseudotypes.c:94 utils/adt/pseudotypes.c:122 utils/adt/pseudotypes.c:147 utils/adt/pseudotypes.c:171 utils/adt/pseudotypes.c:282 utils/adt/pseudotypes.c:307 utils/adt/pseudotypes.c:335 utils/adt/pseudotypes.c:363 utils/adt/pseudotypes.c:393 +#: statistics/dependencies.c:682 statistics/dependencies.c:735 statistics/mvdistinct.c:333 statistics/mvdistinct.c:386 utils/adt/pseudotypes.c:94 utils/adt/pseudotypes.c:122 utils/adt/pseudotypes.c:147 utils/adt/pseudotypes.c:171 utils/adt/pseudotypes.c:282 utils/adt/pseudotypes.c:307 utils/adt/pseudotypes.c:335 utils/adt/pseudotypes.c:363 utils/adt/pseudotypes.c:393 #, c-format msgid "cannot accept a value of type %s" msgstr "ne peut pas accepter une valeur de type %s" -#: statistics/extended_stats.c:103 +#: statistics/extended_stats.c:105 #, c-format msgid "statistics object \"%s.%s\" could not be computed for relation \"%s.%s\"" msgstr "l'objet de statistiques « %s.%s » n'a pas pu être calculé pour la relation « %s.%s »" @@ -18435,41 +18448,46 @@ msgid "cannot access temporary tables of other sessions" msgstr "ne peut pas accéder aux tables temporaires d'autres sessions" -#: storage/buffer/bufmgr.c:807 +#: storage/buffer/bufmgr.c:735 +#, c-format +msgid "cannot extend relation %s beyond %u blocks" +msgstr "ne peut pas étendre le fichier %s de plus de %u blocs" + +#: storage/buffer/bufmgr.c:816 #, c-format msgid "unexpected data beyond EOF in block %u of relation %s" msgstr "" "données inattendues après la fin de fichier dans le bloc %u de la relation\n" "%s" -#: storage/buffer/bufmgr.c:809 +#: storage/buffer/bufmgr.c:818 #, c-format msgid "This has been seen to occur with buggy kernels; consider updating your system." msgstr "" "Ceci s'est déjà vu avec des noyaux buggés ; pensez à mettre à jour votre\n" "système." -#: storage/buffer/bufmgr.c:907 +#: storage/buffer/bufmgr.c:916 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "page invalide dans le bloc %u de la relation %s ; remplacement de la page par des zéros" -#: storage/buffer/bufmgr.c:4013 +#: storage/buffer/bufmgr.c:4022 #, c-format msgid "could not write block %u of %s" msgstr "n'a pas pu écrire le bloc %u de %s" -#: storage/buffer/bufmgr.c:4015 +#: storage/buffer/bufmgr.c:4024 #, c-format msgid "Multiple failures --- write error might be permanent." -msgstr "Échecs multiples --- l'erreur d'écriture pourrait être permanent." +msgstr "Échecs multiples --- l'erreur d'écriture pourrait être permanente." -#: storage/buffer/bufmgr.c:4036 storage/buffer/bufmgr.c:4055 +#: storage/buffer/bufmgr.c:4045 storage/buffer/bufmgr.c:4064 #, c-format msgid "writing block %u of relation %s" msgstr "écriture du bloc %u de la relation %s" -#: storage/buffer/bufmgr.c:4358 +#: storage/buffer/bufmgr.c:4367 #, c-format msgid "snapshot too old" msgstr "snapshot trop ancien" @@ -18517,7 +18535,7 @@ #: storage/file/fd.c:930 #, c-format msgid "insufficient file descriptors available to start server process" -msgstr "nombre de descripteurs de fichier insuffisants pour lancer le processus serveur" +msgstr "nombre de descripteurs de fichier insuffisant pour lancer le processus serveur" #: storage/file/fd.c:931 #, c-format @@ -18647,14 +18665,14 @@ #: storage/ipc/shm_mq.c:372 #, c-format msgid "cannot send a message of size %zu via shared memory queue" -msgstr "ne peut pas pu envoyer un message de taille %zu via la queue en mémoire partagée" +msgstr "ne peut pas envoyer un message de taille %zu via la queue en mémoire partagée" #: storage/ipc/shm_mq.c:676 #, c-format msgid "invalid message size %zu in shared memory queue" msgstr "taille %zu invalide pour le message dans la queue de mémoire partagée" -#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:190 storage/lmgr/lock.c:905 storage/lmgr/lock.c:943 storage/lmgr/lock.c:2730 storage/lmgr/lock.c:4047 storage/lmgr/lock.c:4112 storage/lmgr/lock.c:4419 storage/lmgr/predicate.c:2476 storage/lmgr/predicate.c:2491 storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:5037 utils/hash/dynahash.c:1061 +#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:190 storage/lmgr/lock.c:905 storage/lmgr/lock.c:943 storage/lmgr/lock.c:2730 storage/lmgr/lock.c:4128 storage/lmgr/lock.c:4193 storage/lmgr/lock.c:4500 storage/lmgr/predicate.c:2476 storage/lmgr/predicate.c:2491 storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:5037 utils/hash/dynahash.c:1061 #, c-format msgid "out of shared memory" msgstr "mémoire partagée épuisée" @@ -18684,7 +18702,7 @@ msgid "requested shared memory size overflows size_t" msgstr "la taille de la mémoire partagée demandée dépasse size_t" -#: storage/ipc/standby.c:673 tcop/postgres.c:3024 +#: storage/ipc/standby.c:673 tcop/postgres.c:3034 #, c-format msgid "canceling statement due to conflict with recovery" msgstr "annulation de la requête à cause d'un conflit avec la restauration" @@ -18707,7 +18725,7 @@ #: storage/large_object/inv_api.c:436 #, c-format msgid "invalid whence setting: %d" -msgstr "paramètrage de « whence » invalide : %d" +msgstr "paramétrage de « whence » invalide : %d" #: storage/large_object/inv_api.c:593 #, c-format @@ -18848,12 +18866,12 @@ "Seuls RowExclusiveLock et les verrous inférieurs peuvent être acquis sur les\n" "objets d'une base pendant une restauration." -#: storage/lmgr/lock.c:906 storage/lmgr/lock.c:944 storage/lmgr/lock.c:2731 storage/lmgr/lock.c:4048 storage/lmgr/lock.c:4113 storage/lmgr/lock.c:4420 +#: storage/lmgr/lock.c:906 storage/lmgr/lock.c:944 storage/lmgr/lock.c:2731 storage/lmgr/lock.c:4129 storage/lmgr/lock.c:4194 storage/lmgr/lock.c:4501 #, c-format msgid "You might need to increase max_locks_per_transaction." msgstr "Vous pourriez avoir besoin d'augmenter max_locks_per_transaction." -#: storage/lmgr/lock.c:3164 storage/lmgr/lock.c:3280 +#: storage/lmgr/lock.c:3177 storage/lmgr/lock.c:3245 storage/lmgr/lock.c:3361 #, c-format msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object" msgstr "ne peut pas utiliser PREPARE lorsque des verrous de niveau session et deniveau transaction sont détenus sur le même objet" @@ -18998,7 +19016,7 @@ #: storage/page/bufpage.c:560 storage/page/bufpage.c:932 #, c-format msgid "corrupted item lengths: total %u, available space %u" -msgstr "longueurs d'élément corrompus : total %u, espace disponible %u" +msgstr "longueurs d'élément corrompues : total %u, espace disponible %u" #: storage/page/bufpage.c:767 storage/page/bufpage.c:993 storage/page/bufpage.c:1103 #, c-format @@ -19010,90 +19028,90 @@ msgid "corrupted item pointer: offset = %u, length = %u" msgstr "pointeur d'élément corrompu : décalage = %u, longueur = %u" -#: storage/smgr/md.c:438 storage/smgr/md.c:1008 +#: storage/smgr/md.c:438 storage/smgr/md.c:1009 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "n'a pas pu tronquer le fichier « %s » : %m" -#: storage/smgr/md.c:557 +#: storage/smgr/md.c:558 #, c-format msgid "cannot extend file \"%s\" beyond %u blocks" msgstr "ne peut pas étendre le fichier « %s » de plus de %u blocs" -#: storage/smgr/md.c:579 storage/smgr/md.c:788 storage/smgr/md.c:864 +#: storage/smgr/md.c:580 storage/smgr/md.c:789 storage/smgr/md.c:865 #, c-format msgid "could not seek to block %u in file \"%s\": %m" msgstr "n'a pas pu trouver le bloc %u dans le fichier « %s » : %m" -#: storage/smgr/md.c:587 +#: storage/smgr/md.c:588 #, c-format msgid "could not extend file \"%s\": %m" msgstr "n'a pas pu étendre le fichier « %s » : %m" -#: storage/smgr/md.c:589 storage/smgr/md.c:596 storage/smgr/md.c:891 +#: storage/smgr/md.c:590 storage/smgr/md.c:597 storage/smgr/md.c:892 #, c-format msgid "Check free disk space." msgstr "Vérifiez l'espace disque disponible." -#: storage/smgr/md.c:593 +#: storage/smgr/md.c:594 #, c-format msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" msgstr "" "n'a pas pu étendre le fichier « %s » : a écrit seulement %d octets sur %d\n" "au bloc %u" -#: storage/smgr/md.c:806 +#: storage/smgr/md.c:807 #, c-format msgid "could not read block %u in file \"%s\": %m" msgstr "n'a pas pu lire le bloc %u dans le fichier « %s » : %m" -#: storage/smgr/md.c:822 +#: storage/smgr/md.c:823 #, c-format msgid "could not read block %u in file \"%s\": read only %d of %d bytes" msgstr "" "n'a pas pu lire le bloc %u du fichier « %s » : a lu seulement %d octets\n" "sur %d" -#: storage/smgr/md.c:882 +#: storage/smgr/md.c:883 #, 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:887 +#: storage/smgr/md.c:888 #, c-format msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "" "n'a pas pu écrire le bloc %u du fichier « %s » : a seulement écrit %d\n" "octets sur %d" -#: storage/smgr/md.c:979 +#: storage/smgr/md.c:980 #, 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" -#: storage/smgr/md.c:1034 +#: storage/smgr/md.c:1035 #, c-format msgid "could not truncate file \"%s\" to %u blocks: %m" msgstr "n'a pas pu tronquer le fichier « %s » en %u blocs : %m" -#: storage/smgr/md.c:1329 +#: storage/smgr/md.c:1330 #, c-format msgid "could not fsync file \"%s\" but retrying: %m" msgstr "" "n'a pas pu synchroniser sur disque (fsync) le fichier « %s », nouvelle\n" "tentative : %m" -#: storage/smgr/md.c:1492 +#: storage/smgr/md.c:1493 #, c-format msgid "could not forward fsync request because request queue is full" msgstr "n'a pas pu envoyer la requête fsync car la queue des requêtes est pleine" -#: storage/smgr/md.c:1992 +#: storage/smgr/md.c:1993 #, c-format msgid "could not open file \"%s\" (target block %u): previous segment is only %u blocks" msgstr "n'a pas pu ouvrir le fichier « %s » (bloc cible %u) : le segment précédent ne fait que %u blocs" -#: storage/smgr/md.c:2006 +#: storage/smgr/md.c:2007 #, 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" @@ -19147,7 +19165,7 @@ msgid "unexpected EOF on client connection" msgstr "fin de fichier (EOF) inattendue de la connexion du client" -#: tcop/postgres.c:432 tcop/postgres.c:444 tcop/postgres.c:455 tcop/postgres.c:467 tcop/postgres.c:4368 +#: tcop/postgres.c:432 tcop/postgres.c:444 tcop/postgres.c:455 tcop/postgres.c:467 tcop/postgres.c:4378 #, c-format msgid "invalid frontend message type %d" msgstr "type %d du message de l'interface invalide" @@ -19272,7 +19290,7 @@ #: tcop/postgres.c:2297 #, c-format msgid "User was connected to a database that must be dropped." -msgstr "L'utilisateur était connecté à une base de donnée qui doit être supprimé." +msgstr "L'utilisateur était connecté à une base de donnée qui doit être supprimée." #: tcop/postgres.c:2616 #, c-format @@ -19287,7 +19305,7 @@ "courante et de quitter car un autre processus serveur a quitté anormalement\n" "et qu'il existe probablement de la mémoire partagée corrompue." -#: tcop/postgres.c:2621 tcop/postgres.c:2954 +#: tcop/postgres.c:2621 tcop/postgres.c:2960 #, c-format msgid "In a moment you should be able to reconnect to the database and repeat your command." msgstr "" @@ -19297,7 +19315,7 @@ #: tcop/postgres.c:2703 #, c-format msgid "floating-point exception" -msgstr "exception dû à une virgule flottante" +msgstr "exception due à une virgule flottante" #: tcop/postgres.c:2704 #, c-format @@ -19307,72 +19325,72 @@ "Ceci signifie probablement un résultat en dehors de l'échelle ou une\n" "opération invalide telle qu'une division par zéro." -#: tcop/postgres.c:2884 +#: tcop/postgres.c:2890 #, c-format msgid "canceling authentication due to timeout" msgstr "annulation de l'authentification à cause du délai écoulé" -#: tcop/postgres.c:2888 +#: tcop/postgres.c:2894 #, c-format msgid "terminating autovacuum process due to administrator command" msgstr "arrêt du processus autovacuum suite à la demande de l'administrateur" -#: tcop/postgres.c:2892 +#: tcop/postgres.c:2898 #, c-format msgid "terminating logical replication worker due to administrator command" msgstr "arrêt des processus workers de réplication logique suite à la demande de l'administrateur" -#: tcop/postgres.c:2896 +#: tcop/postgres.c:2902 #, c-format msgid "logical replication launcher shutting down" msgstr "arrêt du processus de lancement de la réplication logique" -#: tcop/postgres.c:2909 tcop/postgres.c:2919 tcop/postgres.c:2952 +#: tcop/postgres.c:2915 tcop/postgres.c:2925 tcop/postgres.c:2958 #, c-format msgid "terminating connection due to conflict with recovery" msgstr "arrêt de la connexion à cause d'un conflit avec la restauration" -#: tcop/postgres.c:2925 +#: tcop/postgres.c:2931 #, c-format msgid "terminating connection due to administrator command" msgstr "arrêt des connexions suite à la demande de l'administrateur" -#: tcop/postgres.c:2935 +#: tcop/postgres.c:2941 #, c-format msgid "connection to client lost" msgstr "connexion au client perdue" -#: tcop/postgres.c:3001 +#: tcop/postgres.c:3011 #, c-format msgid "canceling statement due to lock timeout" msgstr "annulation de la requête à cause du délai écoulé pour l'obtention des verrous" -#: tcop/postgres.c:3008 +#: tcop/postgres.c:3018 #, c-format msgid "canceling statement due to statement timeout" msgstr "annulation de la requête à cause du délai écoulé pour l'exécution de l'instruction" -#: tcop/postgres.c:3015 +#: tcop/postgres.c:3025 #, c-format msgid "canceling autovacuum task" msgstr "annulation de la tâche d'autovacuum" -#: tcop/postgres.c:3038 +#: tcop/postgres.c:3048 #, c-format msgid "canceling statement due to user request" msgstr "annulation de la requête à la demande de l'utilisateur" -#: tcop/postgres.c:3048 +#: tcop/postgres.c:3058 #, c-format msgid "terminating connection due to idle-in-transaction timeout" msgstr "arrêt des connexions suite à l'expiration du délai d'inactivité en transaction" -#: tcop/postgres.c:3162 +#: tcop/postgres.c:3172 #, c-format msgid "stack depth limit exceeded" msgstr "dépassement de limite (en profondeur) de la pile" -#: tcop/postgres.c:3163 +#: tcop/postgres.c:3173 #, c-format msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate." msgstr "" @@ -19380,59 +19398,59 @@ "être assuré que la limite de profondeur de la pile de la plateforme est\n" "adéquate." -#: tcop/postgres.c:3226 +#: tcop/postgres.c:3236 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." msgstr "« max_stack_depth » ne doit pas dépasser %ld Ko." -#: tcop/postgres.c:3228 +#: tcop/postgres.c:3238 #, c-format msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." msgstr "" "Augmenter la limite de profondeur de la pile sur votre plateforme via\n" "« ulimit -s » ou l'équivalent local." -#: tcop/postgres.c:3588 +#: tcop/postgres.c:3598 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "argument invalide en ligne de commande pour le processus serveur : %s" -#: tcop/postgres.c:3589 tcop/postgres.c:3595 +#: tcop/postgres.c:3599 tcop/postgres.c:3605 #, c-format msgid "Try \"%s --help\" for more information." msgstr "Essayez « %s --help » pour plus d'informations." -#: tcop/postgres.c:3593 +#: tcop/postgres.c:3603 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s : argument invalide en ligne de commande : %s" -#: tcop/postgres.c:3655 +#: tcop/postgres.c:3665 #, c-format msgid "%s: no database nor user name specified" msgstr "%s : aucune base de données et aucun utilisateur spécifiés" -#: tcop/postgres.c:4276 +#: tcop/postgres.c:4286 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "sous-type %d du message CLOSE invalide" -#: tcop/postgres.c:4311 +#: tcop/postgres.c:4321 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "sous-type %d du message DESCRIBE invalide" -#: tcop/postgres.c:4389 +#: tcop/postgres.c:4399 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "appels à la fonction fastpath non supportés dans une connexion de réplication" -#: tcop/postgres.c:4393 +#: tcop/postgres.c:4403 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "protocole étendu de requêtes non supporté dans une connexion de réplication" -#: tcop/postgres.c:4563 +#: tcop/postgres.c:4573 #, c-format msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" msgstr "" @@ -19558,7 +19576,7 @@ #: tsearch/dict_thesaurus.c:297 #, c-format msgid "too many lexemes in thesaurus entry" -msgstr "trop de lexèmes dans l'entre du thésaurus" +msgstr "trop de lexèmes dans l'entrée du thésaurus" #: tsearch/dict_thesaurus.c:421 #, c-format @@ -19652,7 +19670,7 @@ #: tsearch/spell.c:1296 #, c-format msgid "Ispell dictionary supports only \"default\", \"long\", and \"num\" flag values" -msgstr "le dictionnaire Ispell supporte seulement les valeurs de drapeau « default », « long »et « num »" +msgstr "le dictionnaire Ispell supporte seulement les valeurs de drapeau « default », « long » et « num »" #: tsearch/spell.c:1340 #, c-format @@ -19839,12 +19857,12 @@ msgid "must be member of role \"%s\"" msgstr "doit être un membre du rôle « %s »" -#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 utils/adt/arrayfuncs.c:1531 utils/adt/arrayfuncs.c:3263 utils/adt/arrayfuncs.c:3401 utils/adt/arrayfuncs.c:5858 utils/adt/arrayfuncs.c:6169 utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 +#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:933 utils/adt/arrayfuncs.c:1520 utils/adt/arrayfuncs.c:3263 utils/adt/arrayfuncs.c:3403 utils/adt/arrayfuncs.c:5866 utils/adt/arrayfuncs.c:6177 utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "la taille du tableau dépasse le maximum permis (%d)" -#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:471 utils/adt/array_userfuncs.c:551 utils/adt/json.c:1765 utils/adt/json.c:1860 utils/adt/json.c:1898 utils/adt/jsonb.c:1128 utils/adt/jsonb.c:1157 utils/adt/jsonb.c:1549 utils/adt/jsonb.c:1713 utils/adt/jsonb.c:1723 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:472 utils/adt/array_userfuncs.c:552 utils/adt/json.c:1765 utils/adt/json.c:1860 utils/adt/json.c:1898 utils/adt/jsonb.c:1128 utils/adt/jsonb.c:1157 utils/adt/jsonb.c:1549 utils/adt/jsonb.c:1713 utils/adt/jsonb.c:1723 #, c-format msgid "could not determine input data type" msgstr "n'a pas pu déterminer le type de données date en entrée" @@ -19854,8 +19872,8 @@ msgid "input data type is not an array" msgstr "le type de données en entrée n'est pas un tableau" -#: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 utils/adt/arrayfuncs.c:1334 utils/adt/float.c:1234 utils/adt/float.c:1308 utils/adt/float.c:3585 utils/adt/float.c:3601 utils/adt/int.c:608 utils/adt/int.c:637 utils/adt/int.c:658 utils/adt/int.c:689 utils/adt/int.c:722 utils/adt/int.c:744 utils/adt/int.c:892 utils/adt/int.c:913 utils/adt/int.c:940 utils/adt/int.c:980 utils/adt/int.c:1001 utils/adt/int.c:1028 -#: utils/adt/int.c:1061 utils/adt/int.c:1144 utils/adt/int8.c:1298 utils/adt/numeric.c:2953 utils/adt/numeric.c:2962 utils/adt/varbit.c:1178 utils/adt/varbit.c:1566 utils/adt/varlena.c:1054 utils/adt/varlena.c:2957 +#: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 utils/adt/float.c:1234 utils/adt/float.c:1308 utils/adt/float.c:3585 utils/adt/float.c:3601 utils/adt/int.c:608 utils/adt/int.c:637 utils/adt/int.c:658 utils/adt/int.c:689 utils/adt/int.c:722 utils/adt/int.c:744 utils/adt/int.c:892 utils/adt/int.c:913 utils/adt/int.c:940 utils/adt/int.c:980 utils/adt/int.c:1001 utils/adt/int.c:1028 utils/adt/int.c:1061 utils/adt/int.c:1144 +#: utils/adt/int8.c:1298 utils/adt/numeric.c:2947 utils/adt/numeric.c:2952 utils/adt/varbit.c:1178 utils/adt/varbit.c:1566 utils/adt/varlena.c:1054 utils/adt/varlena.c:2957 #, c-format msgid "integer out of range" msgstr "entier en dehors des limites" @@ -19898,18 +19916,18 @@ "Les tableaux de dimensions différentes ne sont pas compatibles pour\n" "une concaténation." -#: utils/adt/array_userfuncs.c:667 utils/adt/array_userfuncs.c:819 +#: utils/adt/array_userfuncs.c:668 utils/adt/array_userfuncs.c:820 #, c-format msgid "searching for elements in multidimensional arrays is not supported" msgstr "la recherche d'éléments dans des tableaux multidimensionnels n'est pas supportée" -#: utils/adt/array_userfuncs.c:691 +#: utils/adt/array_userfuncs.c:692 #, c-format msgid "initial position must not be null" msgstr "la position initiale ne doit pas être NULL" -#: utils/adt/arrayfuncs.c:268 utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:293 utils/adt/arrayfuncs.c:315 utils/adt/arrayfuncs.c:330 utils/adt/arrayfuncs.c:344 utils/adt/arrayfuncs.c:350 utils/adt/arrayfuncs.c:357 utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:504 utils/adt/arrayfuncs.c:515 utils/adt/arrayfuncs.c:530 utils/adt/arrayfuncs.c:551 utils/adt/arrayfuncs.c:581 utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:596 -#: utils/adt/arrayfuncs.c:630 utils/adt/arrayfuncs.c:653 utils/adt/arrayfuncs.c:673 utils/adt/arrayfuncs.c:785 utils/adt/arrayfuncs.c:794 utils/adt/arrayfuncs.c:824 utils/adt/arrayfuncs.c:839 utils/adt/arrayfuncs.c:892 +#: utils/adt/arrayfuncs.c:268 utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:293 utils/adt/arrayfuncs.c:315 utils/adt/arrayfuncs.c:330 utils/adt/arrayfuncs.c:344 utils/adt/arrayfuncs.c:350 utils/adt/arrayfuncs.c:357 utils/adt/arrayfuncs.c:490 utils/adt/arrayfuncs.c:506 utils/adt/arrayfuncs.c:517 utils/adt/arrayfuncs.c:532 utils/adt/arrayfuncs.c:553 utils/adt/arrayfuncs.c:583 utils/adt/arrayfuncs.c:590 utils/adt/arrayfuncs.c:598 +#: utils/adt/arrayfuncs.c:632 utils/adt/arrayfuncs.c:655 utils/adt/arrayfuncs.c:675 utils/adt/arrayfuncs.c:787 utils/adt/arrayfuncs.c:796 utils/adt/arrayfuncs.c:826 utils/adt/arrayfuncs.c:841 utils/adt/arrayfuncs.c:894 #, c-format msgid "malformed array literal: \"%s\"" msgstr "tableau litéral mal formé : « %s »" @@ -19922,14 +19940,14 @@ #: utils/adt/arrayfuncs.c:283 #, c-format msgid "Missing array dimension value." -msgstr "Valeur manquante de la dimension du tableau." +msgstr "Valeur manquante de la dimension du tableau." #: utils/adt/arrayfuncs.c:294 utils/adt/arrayfuncs.c:331 #, c-format msgid "Missing \"%s\" after array dimensions." msgstr "« %s » manquant après les dimensions du tableau." -#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2882 utils/adt/arrayfuncs.c:2914 utils/adt/arrayfuncs.c:2929 +#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2881 utils/adt/arrayfuncs.c:2913 utils/adt/arrayfuncs.c:2928 #, c-format msgid "upper bound cannot be less than lower bound" msgstr "la limite supérieure ne peut pas être plus petite que la limite inférieure" @@ -19951,191 +19969,196 @@ msgid "Specified array dimensions do not match array contents." msgstr "Les dimensions spécifiées du tableau ne correspondent pas au contenu du tableau." -#: utils/adt/arrayfuncs.c:489 utils/adt/arrayfuncs.c:516 utils/adt/rangetypes.c:2116 utils/adt/rangetypes.c:2124 utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216 +#: utils/adt/arrayfuncs.c:491 utils/adt/arrayfuncs.c:518 utils/adt/rangetypes.c:2116 utils/adt/rangetypes.c:2124 utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216 #, c-format msgid "Unexpected end of input." msgstr "Fin de l'entrée inattendue." -#: utils/adt/arrayfuncs.c:505 utils/adt/arrayfuncs.c:552 utils/adt/arrayfuncs.c:582 utils/adt/arrayfuncs.c:631 +#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:554 utils/adt/arrayfuncs.c:584 utils/adt/arrayfuncs.c:633 #, c-format msgid "Unexpected \"%c\" character." msgstr "Caractère « %c » inattendu." -#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:654 +#: utils/adt/arrayfuncs.c:533 utils/adt/arrayfuncs.c:656 #, c-format msgid "Unexpected array element." msgstr "Élément de tableau inattendu." -#: utils/adt/arrayfuncs.c:589 +#: utils/adt/arrayfuncs.c:591 #, c-format msgid "Unmatched \"%c\" character." msgstr "Caractère « %c » sans correspondance." -#: utils/adt/arrayfuncs.c:597 utils/adt/jsonfuncs.c:2381 +#: utils/adt/arrayfuncs.c:599 utils/adt/jsonfuncs.c:2381 #, c-format msgid "Multidimensional arrays must have sub-arrays with matching dimensions." msgstr "" "Les tableaux multidimensionnels doivent avoir des sous-tableaux\n" "avec les dimensions correspondantes" -#: utils/adt/arrayfuncs.c:674 +#: utils/adt/arrayfuncs.c:676 #, c-format msgid "Junk after closing right brace." msgstr "Problème après la parenthèse droite fermante." -#: utils/adt/arrayfuncs.c:1296 utils/adt/arrayfuncs.c:3369 utils/adt/arrayfuncs.c:5764 +#: utils/adt/arrayfuncs.c:1298 utils/adt/arrayfuncs.c:3369 utils/adt/arrayfuncs.c:5770 #, c-format msgid "invalid number of dimensions: %d" -msgstr "nombre de dimensions invalides : %d" +msgstr "nombre de dimensions invalide : %d" -#: utils/adt/arrayfuncs.c:1307 +#: utils/adt/arrayfuncs.c:1309 #, c-format msgid "invalid array flags" msgstr "drapeaux de tableau invalides" -#: utils/adt/arrayfuncs.c:1315 +#: utils/adt/arrayfuncs.c:1317 #, c-format msgid "wrong element type" msgstr "mauvais type d'élément" -#: utils/adt/arrayfuncs.c:1365 utils/adt/rangetypes.c:334 utils/cache/lsyscache.c:2707 +#: utils/adt/arrayfuncs.c:1354 utils/adt/rangetypes.c:334 utils/cache/lsyscache.c:2707 #, c-format msgid "no binary input function available for type %s" msgstr "aucune fonction d'entrée binaire disponible pour le type %s" -#: utils/adt/arrayfuncs.c:1505 +#: utils/adt/arrayfuncs.c:1494 #, 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:1586 utils/adt/rangetypes.c:339 utils/cache/lsyscache.c:2740 +#: utils/adt/arrayfuncs.c:1575 utils/adt/rangetypes.c:339 utils/cache/lsyscache.c:2740 #, c-format msgid "no binary output function available for type %s" msgstr "aucune fonction de sortie binaire disponible pour le type %s" -#: utils/adt/arrayfuncs.c:2064 +#: utils/adt/arrayfuncs.c:2053 #, c-format msgid "slices of fixed-length arrays not implemented" msgstr "les morceaux des tableaux à longueur fixe ne sont pas implémentés" -#: utils/adt/arrayfuncs.c:2242 utils/adt/arrayfuncs.c:2264 utils/adt/arrayfuncs.c:2313 utils/adt/arrayfuncs.c:2549 utils/adt/arrayfuncs.c:2860 utils/adt/arrayfuncs.c:5750 utils/adt/arrayfuncs.c:5776 utils/adt/arrayfuncs.c:5787 utils/adt/json.c:2259 utils/adt/json.c:2334 utils/adt/jsonb.c:1327 utils/adt/jsonb.c:1413 utils/adt/jsonfuncs.c:4153 utils/adt/jsonfuncs.c:4304 utils/adt/jsonfuncs.c:4349 utils/adt/jsonfuncs.c:4396 +#: utils/adt/arrayfuncs.c:2231 utils/adt/arrayfuncs.c:2253 utils/adt/arrayfuncs.c:2302 utils/adt/arrayfuncs.c:2541 utils/adt/arrayfuncs.c:2859 utils/adt/arrayfuncs.c:5756 utils/adt/arrayfuncs.c:5782 utils/adt/arrayfuncs.c:5793 utils/adt/json.c:2259 utils/adt/json.c:2334 utils/adt/jsonb.c:1327 utils/adt/jsonb.c:1413 utils/adt/jsonfuncs.c:4153 utils/adt/jsonfuncs.c:4304 utils/adt/jsonfuncs.c:4349 utils/adt/jsonfuncs.c:4396 #, c-format msgid "wrong number of array subscripts" msgstr "mauvais nombre d'indices du tableau" -#: utils/adt/arrayfuncs.c:2247 utils/adt/arrayfuncs.c:2355 utils/adt/arrayfuncs.c:2613 utils/adt/arrayfuncs.c:2919 +#: utils/adt/arrayfuncs.c:2236 utils/adt/arrayfuncs.c:2344 utils/adt/arrayfuncs.c:2605 utils/adt/arrayfuncs.c:2918 #, c-format msgid "array subscript out of range" msgstr "indice du tableau en dehors de l'échelle" -#: utils/adt/arrayfuncs.c:2252 +#: utils/adt/arrayfuncs.c:2241 #, c-format msgid "cannot assign null value to an element of a fixed-length array" msgstr "ne peut pas affecter une valeur NULL à un élément d'un tableau à longueur fixe" -#: utils/adt/arrayfuncs.c:2807 +#: utils/adt/arrayfuncs.c:2806 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "" "les mises à jour de morceaux des tableaux à longueur fixe ne sont pas\n" "implémentées" -#: utils/adt/arrayfuncs.c:2838 +#: utils/adt/arrayfuncs.c:2837 #, c-format msgid "array slice subscript must provide both boundaries" msgstr "la tranche d'indice de tableau doit être fournir les deux limites" -#: utils/adt/arrayfuncs.c:2839 +#: utils/adt/arrayfuncs.c:2838 #, c-format msgid "When assigning to a slice of an empty array value, slice boundaries must be fully specified." msgstr "Les limites de tranches doivent être entièrement spécifiées lors de l'assignation d'une valeur d'un tableau vide à une tranche" -#: utils/adt/arrayfuncs.c:2850 utils/adt/arrayfuncs.c:2945 +#: utils/adt/arrayfuncs.c:2849 utils/adt/arrayfuncs.c:2945 #, c-format msgid "source array too small" msgstr "tableau source trop petit" -#: utils/adt/arrayfuncs.c:3525 +#: utils/adt/arrayfuncs.c:3527 #, c-format msgid "null array element not allowed in this context" msgstr "élément NULL de tableau interdit dans ce contexte" -#: utils/adt/arrayfuncs.c:3627 utils/adt/arrayfuncs.c:3798 utils/adt/arrayfuncs.c:4072 +#: utils/adt/arrayfuncs.c:3629 utils/adt/arrayfuncs.c:3800 utils/adt/arrayfuncs.c:4074 #, c-format msgid "cannot compare arrays of different element types" msgstr "ne peut pas comparer des tableaux ayant des types d'éléments différents" -#: utils/adt/arrayfuncs.c:3974 utils/adt/rangetypes.c:1253 +#: utils/adt/arrayfuncs.c:3976 utils/adt/rangetypes.c:1253 #, c-format msgid "could not identify a hash function for type %s" msgstr "n'a pas pu identifier une fonction de hachage pour le type %s" -#: utils/adt/arrayfuncs.c:5164 +#: utils/adt/arrayfuncs.c:5166 #, c-format msgid "data type %s is not an array type" msgstr "le type de données %s n'est pas un type tableau" -#: utils/adt/arrayfuncs.c:5219 +#: utils/adt/arrayfuncs.c:5221 #, c-format msgid "cannot accumulate null arrays" msgstr "ne peut pas accumuler des tableaux NULL" -#: utils/adt/arrayfuncs.c:5247 +#: utils/adt/arrayfuncs.c:5249 #, c-format msgid "cannot accumulate empty arrays" msgstr "ne peut pas concaténer des tableaux vides" -#: utils/adt/arrayfuncs.c:5276 utils/adt/arrayfuncs.c:5282 +#: utils/adt/arrayfuncs.c:5278 utils/adt/arrayfuncs.c:5284 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "ne peut pas accumuler des tableaux de dimensions différentes" -#: utils/adt/arrayfuncs.c:5648 utils/adt/arrayfuncs.c:5688 +#: utils/adt/arrayfuncs.c:5654 utils/adt/arrayfuncs.c:5694 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "la dimension ou la limite basse du tableau ne peut pas être NULL" -#: utils/adt/arrayfuncs.c:5751 utils/adt/arrayfuncs.c:5777 +#: utils/adt/arrayfuncs.c:5757 utils/adt/arrayfuncs.c:5783 #, c-format msgid "Dimension array must be one dimensional." msgstr "le tableau doit avoir une seule dimension" -#: utils/adt/arrayfuncs.c:5756 utils/adt/arrayfuncs.c:5782 +#: utils/adt/arrayfuncs.c:5762 utils/adt/arrayfuncs.c:5788 #, c-format msgid "dimension values cannot be null" msgstr "les valeurs de dimension ne peuvent pas être NULL" -#: utils/adt/arrayfuncs.c:5788 +#: utils/adt/arrayfuncs.c:5794 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "La limite basse du tableau a une taille différentes des dimensions du tableau." -#: utils/adt/arrayfuncs.c:6034 +#: utils/adt/arrayfuncs.c:6042 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "la suppression d'éléments de tableaux multidimensionnels n'est pas supportée" -#: utils/adt/arrayfuncs.c:6311 +#: utils/adt/arrayfuncs.c:6319 #, c-format msgid "thresholds must be one-dimensional array" msgstr "les limites doivent être un tableau à une dimension" -#: utils/adt/arrayfuncs.c:6316 +#: utils/adt/arrayfuncs.c:6324 #, c-format msgid "thresholds array must not contain NULLs" msgstr "le tableau de limites ne doit pas contenir de valeurs NULL" -#: utils/adt/arrayutils.c:209 +#: utils/adt/arrayutils.c:136 +#, c-format +msgid "array lower bound is too large: %d" +msgstr "la limite basse du tableau est trop importante : %d" + +#: utils/adt/arrayutils.c:236 #, c-format msgid "typmod array must be type cstring[]" msgstr "le tableau typmod doit être de type cstring[]" -#: utils/adt/arrayutils.c:214 +#: utils/adt/arrayutils.c:241 #, c-format msgid "typmod array must be one-dimensional" msgstr "le tableau typmod doit avoir une seule dimension" -#: utils/adt/arrayutils.c:219 +#: utils/adt/arrayutils.c:246 #, c-format msgid "typmod array must not contain nulls" msgstr "le tableau typmod ne doit pas contenir de valeurs NULL" @@ -20147,8 +20170,8 @@ #. translator: first %s is inet or cidr #: utils/adt/bool.c:153 utils/adt/cash.c:278 utils/adt/datetime.c:3795 utils/adt/float.c:244 utils/adt/float.c:318 utils/adt/float.c:342 utils/adt/float.c:461 utils/adt/float.c:544 utils/adt/float.c:570 utils/adt/geo_ops.c:156 utils/adt/geo_ops.c:166 utils/adt/geo_ops.c:178 utils/adt/geo_ops.c:210 utils/adt/geo_ops.c:255 utils/adt/geo_ops.c:265 utils/adt/geo_ops.c:935 utils/adt/geo_ops.c:1321 utils/adt/geo_ops.c:1356 utils/adt/geo_ops.c:1364 -#: utils/adt/geo_ops.c:3430 utils/adt/geo_ops.c:4566 utils/adt/geo_ops.c:4582 utils/adt/geo_ops.c:4589 utils/adt/mac.c:94 utils/adt/mac8.c:93 utils/adt/mac8.c:166 utils/adt/mac8.c:184 utils/adt/mac8.c:202 utils/adt/mac8.c:221 utils/adt/nabstime.c:1542 utils/adt/network.c:58 utils/adt/numeric.c:593 utils/adt/numeric.c:620 utils/adt/numeric.c:5498 utils/adt/numeric.c:5522 utils/adt/numeric.c:5546 utils/adt/numeric.c:6348 -#: utils/adt/numeric.c:6374 utils/adt/oid.c:44 utils/adt/oid.c:58 utils/adt/oid.c:64 utils/adt/oid.c:86 utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:50 utils/adt/tid.c:72 utils/adt/tid.c:80 utils/adt/tid.c:88 utils/adt/txid.c:405 utils/adt/uuid.c:136 +#: utils/adt/geo_ops.c:3430 utils/adt/geo_ops.c:4566 utils/adt/geo_ops.c:4582 utils/adt/geo_ops.c:4589 utils/adt/mac.c:94 utils/adt/mac8.c:93 utils/adt/mac8.c:166 utils/adt/mac8.c:184 utils/adt/mac8.c:202 utils/adt/mac8.c:221 utils/adt/nabstime.c:1542 utils/adt/network.c:58 utils/adt/numeric.c:585 utils/adt/numeric.c:612 utils/adt/numeric.c:5488 utils/adt/numeric.c:5512 utils/adt/numeric.c:5536 utils/adt/numeric.c:6327 +#: utils/adt/numeric.c:6353 utils/adt/oid.c:44 utils/adt/oid.c:58 utils/adt/oid.c:64 utils/adt/oid.c:86 utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:50 utils/adt/tid.c:72 utils/adt/tid.c:80 utils/adt/tid.c:88 utils/adt/txid.c:405 utils/adt/uuid.c:136 #, c-format msgid "invalid input syntax for type %s: \"%s\"" msgstr "syntaxe en entrée invalide pour le type %s : « %s »" @@ -20159,7 +20182,7 @@ msgstr "la valeur « %s » est en dehors des limites pour le type %s" #: utils/adt/cash.c:653 utils/adt/cash.c:703 utils/adt/cash.c:754 utils/adt/cash.c:803 utils/adt/cash.c:855 utils/adt/cash.c:905 utils/adt/float.c:855 utils/adt/float.c:919 utils/adt/float.c:3344 utils/adt/float.c:3407 utils/adt/geo_ops.c:4093 utils/adt/int.c:704 utils/adt/int.c:846 utils/adt/int.c:954 utils/adt/int.c:1043 utils/adt/int.c:1082 utils/adt/int.c:1110 utils/adt/int8.c:597 utils/adt/int8.c:657 utils/adt/int8.c:897 -#: utils/adt/int8.c:1005 utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6912 utils/adt/numeric.c:7201 utils/adt/numeric.c:8213 utils/adt/timestamp.c:3242 +#: utils/adt/int8.c:1005 utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6891 utils/adt/numeric.c:7180 utils/adt/numeric.c:8243 utils/adt/timestamp.c:3242 #, c-format msgid "division by zero" msgstr "division par zéro" @@ -20189,7 +20212,7 @@ msgid "date/time value \"current\" is no longer supported" msgstr "la valeur « current » pour la date et heure n'est plus supportée" -#: utils/adt/date.c:173 utils/adt/date.c:181 utils/adt/formatting.c:3621 utils/adt/formatting.c:3630 +#: utils/adt/date.c:173 utils/adt/date.c:181 utils/adt/formatting.c:3625 utils/adt/formatting.c:3634 #, c-format msgid "date out of range: \"%s\"" msgstr "date en dehors des limites : « %s »" @@ -20209,7 +20232,7 @@ msgid "date out of range: %d-%02d-%02d" msgstr "date en dehors des limites : %d-%02d-%02d" -#: utils/adt/date.c:328 utils/adt/date.c:351 utils/adt/date.c:377 utils/adt/date.c:1093 utils/adt/date.c:1139 utils/adt/date.c:1728 utils/adt/date.c:1759 utils/adt/date.c:1788 utils/adt/date.c:2525 utils/adt/datetime.c:1688 utils/adt/formatting.c:3496 utils/adt/formatting.c:3528 utils/adt/formatting.c:3596 utils/adt/json.c:1540 utils/adt/json.c:1562 utils/adt/jsonb.c:825 utils/adt/jsonb.c:849 utils/adt/nabstime.c:459 utils/adt/nabstime.c:502 +#: utils/adt/date.c:328 utils/adt/date.c:351 utils/adt/date.c:377 utils/adt/date.c:1093 utils/adt/date.c:1139 utils/adt/date.c:1728 utils/adt/date.c:1759 utils/adt/date.c:1788 utils/adt/date.c:2525 utils/adt/datetime.c:1688 utils/adt/formatting.c:3500 utils/adt/formatting.c:3532 utils/adt/formatting.c:3600 utils/adt/json.c:1540 utils/adt/json.c:1562 utils/adt/jsonb.c:825 utils/adt/jsonb.c:849 utils/adt/nabstime.c:459 utils/adt/nabstime.c:502 #: utils/adt/nabstime.c:532 utils/adt/nabstime.c:575 utils/adt/timestamp.c:231 utils/adt/timestamp.c:263 utils/adt/timestamp.c:683 utils/adt/timestamp.c:692 utils/adt/timestamp.c:770 utils/adt/timestamp.c:803 utils/adt/timestamp.c:2821 utils/adt/timestamp.c:2842 utils/adt/timestamp.c:2855 utils/adt/timestamp.c:2864 utils/adt/timestamp.c:2872 utils/adt/timestamp.c:2927 utils/adt/timestamp.c:2950 utils/adt/timestamp.c:2963 #: utils/adt/timestamp.c:2974 utils/adt/timestamp.c:2982 utils/adt/timestamp.c:3538 utils/adt/timestamp.c:3663 utils/adt/timestamp.c:3704 utils/adt/timestamp.c:3785 utils/adt/timestamp.c:3831 utils/adt/timestamp.c:3934 utils/adt/timestamp.c:4334 utils/adt/timestamp.c:4530 utils/adt/timestamp.c:4869 utils/adt/timestamp.c:4883 utils/adt/timestamp.c:4888 utils/adt/timestamp.c:4902 utils/adt/timestamp.c:4947 utils/adt/timestamp.c:4979 #: utils/adt/timestamp.c:4986 utils/adt/timestamp.c:5019 utils/adt/timestamp.c:5023 utils/adt/timestamp.c:5092 utils/adt/timestamp.c:5096 utils/adt/timestamp.c:5110 utils/adt/timestamp.c:5144 utils/adt/xml.c:2212 utils/adt/xml.c:2219 utils/adt/xml.c:2239 utils/adt/xml.c:2246 @@ -20262,12 +20285,12 @@ msgid "\"time with time zone\" units \"%s\" not recognized" msgstr "L'unité « %s » n'est pas reconnu pour le type « time with time zone »" -#: utils/adt/date.c:2743 utils/adt/datetime.c:931 utils/adt/datetime.c:1846 utils/adt/datetime.c:4632 utils/adt/timestamp.c:504 utils/adt/timestamp.c:531 utils/adt/timestamp.c:4894 utils/adt/timestamp.c:5102 +#: utils/adt/date.c:2745 utils/adt/datetime.c:931 utils/adt/datetime.c:1846 utils/adt/datetime.c:4632 utils/adt/timestamp.c:504 utils/adt/timestamp.c:531 utils/adt/timestamp.c:4894 utils/adt/timestamp.c:5102 #, c-format msgid "time zone \"%s\" not recognized" msgstr "le fuseau horaire « %s » n'est pas reconnu" -#: utils/adt/date.c:2775 utils/adt/timestamp.c:4936 utils/adt/timestamp.c:5133 +#: utils/adt/date.c:2777 utils/adt/timestamp.c:4936 utils/adt/timestamp.c:5133 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "l'intervalle de fuseau horaire « %s » ne doit pas spécifier de mois ou de jours" @@ -20280,7 +20303,7 @@ #: utils/adt/datetime.c:3777 #, c-format msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "Peut-être avez-vous besoin d'un paramètrage « datestyle » différent." +msgstr "Peut-être avez-vous besoin d'un paramétrage « datestyle » différent." #: utils/adt/datetime.c:3782 #, c-format @@ -20307,17 +20330,17 @@ msgid "could not open tablespace directory \"%s\": %m" msgstr "n'a pas pu ouvrir le répertoire du tablespace « %s » : %m" -#: utils/adt/dbsize.c:764 utils/adt/dbsize.c:832 +#: utils/adt/dbsize.c:768 utils/adt/dbsize.c:836 #, c-format msgid "invalid size: \"%s\"" msgstr "taille invalide : « %s »" -#: utils/adt/dbsize.c:833 +#: utils/adt/dbsize.c:837 #, c-format msgid "Invalid size unit: \"%s\"." msgstr "Unité invalide pour une taille : « %s »." -#: utils/adt/dbsize.c:834 +#: utils/adt/dbsize.c:838 #, c-format msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." msgstr "Les unités valides pour ce paramètre sont « bytes », « kB », « MB », « GB » et « TB »." @@ -20408,32 +20431,32 @@ 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:1259 utils/adt/float.c:1333 utils/adt/int.c:334 utils/adt/int.c:760 utils/adt/int.c:789 utils/adt/int.c:810 utils/adt/int.c:830 utils/adt/int.c:864 utils/adt/int.c:1159 utils/adt/int8.c:1323 utils/adt/numeric.c:3050 utils/adt/numeric.c:3059 +#: utils/adt/float.c:1259 utils/adt/float.c:1333 utils/adt/int.c:334 utils/adt/int.c:760 utils/adt/int.c:789 utils/adt/int.c:810 utils/adt/int.c:830 utils/adt/int.c:864 utils/adt/int.c:1159 utils/adt/int8.c:1323 utils/adt/numeric.c:3041 utils/adt/numeric.c:3046 #, c-format msgid "smallint out of range" msgstr "smallint en dehors des limites" -#: utils/adt/float.c:1459 utils/adt/numeric.c:7634 +#: utils/adt/float.c:1459 utils/adt/numeric.c:7613 #, c-format msgid "cannot take square root of a negative number" msgstr "ne peut pas calculer la racine carré d'un nombre négatif" -#: utils/adt/float.c:1501 utils/adt/numeric.c:2853 +#: utils/adt/float.c:1501 utils/adt/numeric.c:2854 #, c-format msgid "zero raised to a negative power is undefined" msgstr "zéro à une puissance négative est indéfini" -#: utils/adt/float.c:1505 utils/adt/numeric.c:2859 +#: utils/adt/float.c:1505 utils/adt/numeric.c:8100 #, c-format msgid "a negative number raised to a non-integer power yields a complex result" msgstr "un nombre négatif élevé à une puissance non entière donne un résultat complexe" -#: utils/adt/float.c:1571 utils/adt/float.c:1601 utils/adt/numeric.c:7900 +#: utils/adt/float.c:1571 utils/adt/float.c:1601 utils/adt/numeric.c:7885 #, c-format msgid "cannot take logarithm of zero" msgstr "ne peut pas calculer le logarithme de zéro" -#: utils/adt/float.c:1575 utils/adt/float.c:1605 utils/adt/numeric.c:7904 +#: utils/adt/float.c:1575 utils/adt/float.c:1605 utils/adt/numeric.c:7889 #, c-format msgid "cannot take logarithm of a negative number" msgstr "ne peut pas calculer le logarithme sur un nombre négatif" @@ -20443,12 +20466,12 @@ msgid "input is out of range" msgstr "l'entrée est en dehors des limites" -#: utils/adt/float.c:3561 utils/adt/numeric.c:1493 +#: utils/adt/float.c:3561 utils/adt/numeric.c:1485 #, c-format msgid "count must be greater than zero" msgstr "le total doit être supérieur à zéro" -#: utils/adt/float.c:3566 utils/adt/numeric.c:1500 +#: utils/adt/float.c:3566 utils/adt/numeric.c:1492 #, c-format msgid "operand, lower bound, and upper bound cannot be NaN" msgstr "la limite inférieure et supérieure de l'opérande ne peuvent pas être NaN" @@ -20458,221 +20481,221 @@ msgid "lower and upper bounds must be finite" msgstr "les limites basse et haute doivent être finies" -#: utils/adt/float.c:3610 utils/adt/numeric.c:1513 +#: utils/adt/float.c:3610 utils/adt/numeric.c:1505 #, c-format msgid "lower bound cannot equal upper bound" msgstr "la limite inférieure ne peut pas être plus égale à la limite supérieure" -#: utils/adt/formatting.c:482 +#: utils/adt/formatting.c:486 #, c-format msgid "invalid format specification for an interval value" msgstr "format de spécification invalide pour une valeur intervalle" -#: utils/adt/formatting.c:483 +#: utils/adt/formatting.c:487 #, c-format msgid "Intervals are not tied to specific calendar dates." msgstr "Les intervalles ne sont pas liés aux dates de calendriers spécifiques." -#: utils/adt/formatting.c:1051 +#: utils/adt/formatting.c:1055 #, c-format msgid "\"EEEE\" must be the last pattern used" msgstr "« EEEE » doit être le dernier motif utilisé" -#: utils/adt/formatting.c:1059 +#: utils/adt/formatting.c:1063 #, c-format msgid "\"9\" must be ahead of \"PR\"" msgstr "« 9 » doit être avant « PR »" -#: utils/adt/formatting.c:1075 +#: utils/adt/formatting.c:1079 #, c-format msgid "\"0\" must be ahead of \"PR\"" msgstr "« 0 » doit être avant « PR »" -#: utils/adt/formatting.c:1102 +#: utils/adt/formatting.c:1106 #, c-format msgid "multiple decimal points" msgstr "multiples points décimaux" -#: utils/adt/formatting.c:1106 utils/adt/formatting.c:1189 +#: utils/adt/formatting.c:1110 utils/adt/formatting.c:1193 #, c-format msgid "cannot use \"V\" and decimal point together" msgstr "ne peut pas utiliser « V » et le point décimal ensemble" -#: utils/adt/formatting.c:1118 +#: utils/adt/formatting.c:1122 #, c-format msgid "cannot use \"S\" twice" msgstr "ne peut pas utiliser « S » deux fois" -#: utils/adt/formatting.c:1122 +#: utils/adt/formatting.c:1126 #, c-format msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" msgstr "ne peut pas utiliser « S » et « PL »/« MI »/« SG »/« PR » ensemble" -#: utils/adt/formatting.c:1142 +#: utils/adt/formatting.c:1146 #, c-format msgid "cannot use \"S\" and \"MI\" together" msgstr "ne peut pas utiliser « S » et « MI » ensemble" -#: utils/adt/formatting.c:1152 +#: utils/adt/formatting.c:1156 #, c-format msgid "cannot use \"S\" and \"PL\" together" msgstr "ne peut pas utiliser « S » et « PL » ensemble" -#: utils/adt/formatting.c:1162 +#: utils/adt/formatting.c:1166 #, c-format msgid "cannot use \"S\" and \"SG\" together" msgstr "ne peut pas utiliser « S » et « SG » ensemble" -#: utils/adt/formatting.c:1171 +#: utils/adt/formatting.c:1175 #, c-format msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" msgstr "ne peut pas utiliser « PR » et « S »/« PL »/« MI »/« SG » ensemble" -#: utils/adt/formatting.c:1197 +#: utils/adt/formatting.c:1201 #, c-format msgid "cannot use \"EEEE\" twice" msgstr "ne peut pas utiliser « EEEE » deux fois" -#: utils/adt/formatting.c:1203 +#: utils/adt/formatting.c:1207 #, c-format msgid "\"EEEE\" is incompatible with other formats" msgstr "« EEEE » est incompatible avec les autres formats" -#: utils/adt/formatting.c:1204 +#: utils/adt/formatting.c:1208 #, c-format msgid "\"EEEE\" may only be used together with digit and decimal point patterns." msgstr "« EEEE » peut seulement être utilisé avec les motifs de chiffres et de points décimaux." -#: utils/adt/formatting.c:1393 +#: utils/adt/formatting.c:1397 #, c-format msgid "\"%s\" is not a number" msgstr "« %s » n'est pas un nombre" -#: utils/adt/formatting.c:1471 +#: utils/adt/formatting.c:1475 #, c-format msgid "case conversion failed: %s" msgstr "échec de la conversion de casse : %s" -#: utils/adt/formatting.c:1536 +#: utils/adt/formatting.c:1540 #, c-format msgid "could not determine which collation to use for lower() function" msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction lower()" -#: utils/adt/formatting.c:1661 +#: utils/adt/formatting.c:1665 #, c-format msgid "could not determine which collation to use for upper() function" msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction upper()" -#: utils/adt/formatting.c:1787 +#: utils/adt/formatting.c:1791 #, c-format msgid "could not determine which collation to use for initcap() function" msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction initcap()" -#: utils/adt/formatting.c:2157 +#: utils/adt/formatting.c:2161 #, c-format msgid "invalid combination of date conventions" msgstr "combinaison invalide des conventions de date" -#: utils/adt/formatting.c:2158 +#: utils/adt/formatting.c:2162 #, c-format msgid "Do not mix Gregorian and ISO week date conventions in a formatting template." msgstr "" "Ne pas mixer les conventions de jour de semaine grégorien et ISO dans un\n" "modèle de formatage." -#: utils/adt/formatting.c:2175 +#: utils/adt/formatting.c:2179 #, c-format msgid "conflicting values for \"%s\" field in formatting string" msgstr "valeur conflictuelle pour le champ « %s » dans la chaîne de formatage" -#: utils/adt/formatting.c:2177 +#: utils/adt/formatting.c:2181 #, c-format msgid "This value contradicts a previous setting for the same field type." msgstr "Cette valeur contredit une configuration précédente pour le même type de champ." -#: utils/adt/formatting.c:2241 +#: utils/adt/formatting.c:2245 #, c-format msgid "source string too short for \"%s\" formatting field" msgstr "chaîne source trop petite pour le champ de formatage « %s »" -#: utils/adt/formatting.c:2243 +#: utils/adt/formatting.c:2247 #, c-format msgid "Field requires %d characters, but only %d remain." msgstr "Le champ requiert %d caractères, mais seuls %d restent." -#: utils/adt/formatting.c:2246 utils/adt/formatting.c:2260 +#: utils/adt/formatting.c:2250 utils/adt/formatting.c:2264 #, c-format msgid "If your source string is not fixed-width, try using the \"FM\" modifier." msgstr "" "Si votre chaîne source n'a pas une taille fixe, essayez d'utiliser le\n" "modifieur « FM »." -#: utils/adt/formatting.c:2256 utils/adt/formatting.c:2269 utils/adt/formatting.c:2399 +#: utils/adt/formatting.c:2260 utils/adt/formatting.c:2273 utils/adt/formatting.c:2403 #, c-format msgid "invalid value \"%s\" for \"%s\"" msgstr "valeur « %s » invalide pour « %s »" -#: utils/adt/formatting.c:2258 +#: utils/adt/formatting.c:2262 #, 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." -#: utils/adt/formatting.c:2271 +#: utils/adt/formatting.c:2275 #, c-format msgid "Value must be an integer." msgstr "La valeur doit être un entier" -#: utils/adt/formatting.c:2276 +#: utils/adt/formatting.c:2280 #, c-format msgid "value for \"%s\" in source string is out of range" msgstr "la valeur pour « %s » dans la chaîne source est en dehors des limites" -#: utils/adt/formatting.c:2278 +#: utils/adt/formatting.c:2282 #, c-format msgid "Value must be in the range %d to %d." msgstr "La valeur doit être compris entre %d et %d" -#: utils/adt/formatting.c:2401 +#: utils/adt/formatting.c:2405 #, c-format msgid "The given value did not match any of the allowed values for this field." msgstr "La valeur donnée ne correspond pas aux valeurs autorisées pour ce champ." -#: utils/adt/formatting.c:2586 utils/adt/formatting.c:2606 utils/adt/formatting.c:2626 utils/adt/formatting.c:2646 utils/adt/formatting.c:2665 utils/adt/formatting.c:2684 utils/adt/formatting.c:2708 utils/adt/formatting.c:2726 utils/adt/formatting.c:2744 utils/adt/formatting.c:2762 utils/adt/formatting.c:2779 utils/adt/formatting.c:2796 +#: utils/adt/formatting.c:2590 utils/adt/formatting.c:2610 utils/adt/formatting.c:2630 utils/adt/formatting.c:2650 utils/adt/formatting.c:2669 utils/adt/formatting.c:2688 utils/adt/formatting.c:2712 utils/adt/formatting.c:2730 utils/adt/formatting.c:2748 utils/adt/formatting.c:2766 utils/adt/formatting.c:2783 utils/adt/formatting.c:2800 #, c-format msgid "localized string format value too long" msgstr "chaîne localisée trop longue" -#: utils/adt/formatting.c:3126 +#: utils/adt/formatting.c:3130 #, c-format msgid "formatting field \"%s\" is only supported in to_char" msgstr "le formatage du champ « %s » est seulement supporté dans to_char" -#: utils/adt/formatting.c:3237 +#: utils/adt/formatting.c:3241 #, c-format msgid "invalid input string for \"Y,YYY\"" msgstr "chaîne invalide en entrée pour « Y,YYY »" -#: utils/adt/formatting.c:3739 +#: utils/adt/formatting.c:3743 #, c-format msgid "hour \"%d\" is invalid for the 12-hour clock" msgstr "l'heure « %d » est invalide pour une horloge sur 12 heures" -#: utils/adt/formatting.c:3741 +#: utils/adt/formatting.c:3745 #, c-format msgid "Use the 24-hour clock, or give an hour between 1 and 12." msgstr "Utilisez une horloge sur 24 heures ou donnez une heure entre 1 et 12." -#: utils/adt/formatting.c:3850 +#: utils/adt/formatting.c:3854 #, c-format msgid "cannot calculate day of year without year information" msgstr "ne peut pas calculer le jour de l'année sans information sur l'année" -#: utils/adt/formatting.c:4717 +#: utils/adt/formatting.c:4721 #, c-format msgid "\"EEEE\" not supported for input" msgstr "« EEEE » non supporté en entrée" -#: utils/adt/formatting.c:4729 +#: utils/adt/formatting.c:4733 #, c-format msgid "\"RN\" not supported for input" msgstr "« RN » non supporté en entrée" @@ -20807,7 +20830,7 @@ msgid "oidvector has too many elements" msgstr "oidvector a trop d'éléments" -#: utils/adt/int.c:1347 utils/adt/int8.c:1453 utils/adt/numeric.c:1401 utils/adt/timestamp.c:5195 utils/adt/timestamp.c:5276 +#: utils/adt/int.c:1347 utils/adt/int8.c:1453 utils/adt/numeric.c:1393 utils/adt/timestamp.c:5195 utils/adt/timestamp.c:5276 #, c-format msgid "step size cannot equal zero" msgstr "la taille du pas ne peut pas valoir zéro" @@ -20818,7 +20841,7 @@ msgstr "syntaxe en entrée invalide pour l'entier : « %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:741 utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855 utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943 utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031 utils/adt/int8.c:1052 utils/adt/int8.c:1079 -#: utils/adt/int8.c:1112 utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 utils/adt/int8.c:1358 utils/adt/int8.c:1393 utils/adt/numeric.c:3005 utils/adt/varbit.c:1646 +#: utils/adt/int8.c:1112 utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 utils/adt/int8.c:1358 utils/adt/int8.c:1393 utils/adt/numeric.c:2996 utils/adt/varbit.c:1646 #, c-format msgid "bigint out of range" msgstr "bigint en dehors des limites" @@ -21167,7 +21190,7 @@ msgid "levenshtein argument exceeds maximum length of %d characters" msgstr "l'argument levenshtein dépasse la longueur maximale de %d caractères" -#: utils/adt/like.c:183 utils/adt/selfuncs.c:5651 +#: utils/adt/like.c:183 utils/adt/selfuncs.c:5678 #, c-format msgid "could not determine which collation to use for ILIKE" msgstr "n'a pas pu déterminer le collationnement à utiliser pour ILIKE" @@ -21400,82 +21423,82 @@ msgid "cannot subtract inet values of different sizes" msgstr "ne peut pas soustraire des valeurs inet de tailles différentes" -#: utils/adt/numeric.c:819 +#: utils/adt/numeric.c:811 #, c-format msgid "invalid sign in external \"numeric\" value" msgstr "signe invalide dans la valeur externe « numeric »" -#: utils/adt/numeric.c:825 +#: utils/adt/numeric.c:817 #, c-format msgid "invalid scale in external \"numeric\" value" msgstr "échelle invalide dans la valeur externe « numeric »" -#: utils/adt/numeric.c:834 +#: utils/adt/numeric.c:826 #, c-format msgid "invalid digit in external \"numeric\" value" msgstr "chiffre invalide dans la valeur externe « numeric »" -#: utils/adt/numeric.c:1024 utils/adt/numeric.c:1038 +#: utils/adt/numeric.c:1016 utils/adt/numeric.c:1030 #, c-format msgid "NUMERIC precision %d must be between 1 and %d" msgstr "la précision NUMERIC %d doit être comprise entre 1 et %d" -#: utils/adt/numeric.c:1029 +#: utils/adt/numeric.c:1021 #, c-format msgid "NUMERIC scale %d must be between 0 and precision %d" msgstr "l'échelle NUMERIC %d doit être comprise entre 0 et %d" -#: utils/adt/numeric.c:1047 +#: utils/adt/numeric.c:1039 #, c-format msgid "invalid NUMERIC type modifier" msgstr "modificateur de type NUMERIC invalide" -#: utils/adt/numeric.c:1379 +#: utils/adt/numeric.c:1371 #, c-format msgid "start value cannot be NaN" msgstr "la valeur de démarrage ne peut pas être NaN" -#: utils/adt/numeric.c:1384 +#: utils/adt/numeric.c:1376 #, c-format msgid "stop value cannot be NaN" msgstr "la valeur d'arrêt ne peut pas être NaN" -#: utils/adt/numeric.c:1394 +#: utils/adt/numeric.c:1386 #, c-format msgid "step size cannot be NaN" msgstr "la taille du pas ne peut pas être NaN" -#: utils/adt/numeric.c:2589 utils/adt/numeric.c:5561 utils/adt/numeric.c:6006 utils/adt/numeric.c:7710 utils/adt/numeric.c:8135 utils/adt/numeric.c:8249 utils/adt/numeric.c:8322 +#: utils/adt/numeric.c:2588 utils/adt/numeric.c:5551 utils/adt/numeric.c:5985 utils/adt/numeric.c:7691 utils/adt/numeric.c:8153 utils/adt/numeric.c:8279 utils/adt/numeric.c:8352 #, c-format msgid "value overflows numeric format" msgstr "la valeur dépasse le format numeric" -#: utils/adt/numeric.c:2931 +#: utils/adt/numeric.c:2926 #, c-format msgid "cannot convert NaN to integer" msgstr "ne peut pas convertir NaN en un entier" -#: utils/adt/numeric.c:2997 +#: utils/adt/numeric.c:2988 #, c-format msgid "cannot convert NaN to bigint" msgstr "ne peut pas convertir NaN en un entier de type bigint" -#: utils/adt/numeric.c:3042 +#: utils/adt/numeric.c:3033 #, c-format msgid "cannot convert NaN to smallint" msgstr "ne peut pas convertir NaN en un entier de type smallint" -#: utils/adt/numeric.c:3079 utils/adt/numeric.c:3150 +#: utils/adt/numeric.c:3069 utils/adt/numeric.c:3140 #, c-format msgid "cannot convert infinity to numeric" msgstr "ne peut pas convertir infinity en un type numeric" -#: utils/adt/numeric.c:6076 +#: utils/adt/numeric.c:6055 #, c-format msgid "numeric field overflow" msgstr "champ numérique en dehors des limites" -#: utils/adt/numeric.c:6077 +#: utils/adt/numeric.c:6056 #, c-format msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d." msgstr "" @@ -21517,94 +21540,94 @@ msgid "percentile value %g is not between 0 and 1" msgstr "la valeur centile %g n'est pas entre 0 et 1" -#: utils/adt/pg_locale.c:1260 +#: utils/adt/pg_locale.c:1264 #, c-format msgid "Apply system library package updates." msgstr "Applique les mises à jour du paquet de bibliothèque système." -#: utils/adt/pg_locale.c:1475 +#: utils/adt/pg_locale.c:1479 #, c-format msgid "could not create locale \"%s\": %m" msgstr "n'a pas pu créer la locale « %s » : %m" -#: utils/adt/pg_locale.c:1478 +#: utils/adt/pg_locale.c:1482 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." msgstr "Le système d'exploitation n'a pas pu trouver des données de locale pour la locale « %s »." -#: utils/adt/pg_locale.c:1579 +#: utils/adt/pg_locale.c:1583 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "" "les collationnements avec des valeurs différents pour le tri et le jeu de\n" "caractères ne sont pas supportés sur cette plateforme" -#: utils/adt/pg_locale.c:1588 +#: utils/adt/pg_locale.c:1592 #, c-format msgid "collation provider LIBC is not supported on this platform" msgstr "le fournisseur du collationnement, LIBC, n'est pas supporté sur cette plateforme" -#: utils/adt/pg_locale.c:1600 +#: utils/adt/pg_locale.c:1604 #, c-format msgid "collations with different collate and ctype values are not supported by ICU" msgstr "les collationnements avec des valeurs différentes pour le tri (collate) et le jeu de caractères (ctype) ne sont pas supportés par ICU" -#: utils/adt/pg_locale.c:1606 utils/adt/pg_locale.c:1694 +#: utils/adt/pg_locale.c:1610 utils/adt/pg_locale.c:1698 #, c-format msgid "could not open collator for locale \"%s\": %s" msgstr "n'a pas pu ouvrir le collationneur pour la locale « %s » : %s" -#: utils/adt/pg_locale.c:1617 +#: utils/adt/pg_locale.c:1621 #, c-format msgid "ICU is not supported in this build" msgstr "ICU n'est pas supporté dans cette installation" -#: utils/adt/pg_locale.c:1618 +#: utils/adt/pg_locale.c:1622 #, c-format msgid "You need to rebuild PostgreSQL using --with-icu." msgstr "Vous devez recompiler PostgreSQL en utilisant --with-icu." -#: utils/adt/pg_locale.c:1638 +#: utils/adt/pg_locale.c:1642 #, c-format msgid "collation \"%s\" has no actual version, but a version was specified" msgstr "le collationnement « %s » n'a pas de version réelle mais une version était indiquée" -#: utils/adt/pg_locale.c:1645 +#: utils/adt/pg_locale.c:1649 #, c-format msgid "collation \"%s\" has version mismatch" msgstr "le collationnement « %s » a des versions différentes" -#: utils/adt/pg_locale.c:1647 +#: utils/adt/pg_locale.c:1651 #, c-format msgid "The collation in the database was created using version %s, but the operating system provides version %s." msgstr "Le collationnement dans la base de données a été créé en utilisant la version %s mais le système d'exploitation fournit la version %s." -#: utils/adt/pg_locale.c:1650 +#: utils/adt/pg_locale.c:1654 #, c-format msgid "Rebuild all objects affected by this collation and run ALTER COLLATION %s REFRESH VERSION, or build PostgreSQL with the right library version." msgstr "Reconstruisez tous les objets affectés par ce collationnement, et lancez ALTER COLLATION %s REFRESH VERSION, ou construisez PostgreSQL avec la bonne version de bibliothèque." -#: utils/adt/pg_locale.c:1734 +#: utils/adt/pg_locale.c:1738 #, c-format msgid "could not open ICU converter for encoding \"%s\": %s" msgstr "n'a pas pu ouvrir le convertisseur ICU pour l'encodage « %s » : %s" -#: utils/adt/pg_locale.c:1765 utils/adt/pg_locale.c:1774 +#: utils/adt/pg_locale.c:1769 utils/adt/pg_locale.c:1778 #, c-format msgid "ucnv_toUChars failed: %s" msgstr "échec de ucnv_toUChars : %s" -#: utils/adt/pg_locale.c:1803 utils/adt/pg_locale.c:1812 +#: utils/adt/pg_locale.c:1807 utils/adt/pg_locale.c:1816 #, c-format msgid "ucnv_fromUChars failed: %s" msgstr "échec de ucnv_fromUChars : %s" -#: utils/adt/pg_locale.c:1985 +#: utils/adt/pg_locale.c:1989 #, c-format msgid "invalid multibyte character for locale" msgstr "caractère multi-octets invalide pour la locale" -#: utils/adt/pg_locale.c:1986 +#: utils/adt/pg_locale.c:1990 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "" @@ -21925,12 +21948,12 @@ msgid "rule \"%s\" has unsupported event type %d" msgstr "la règle « %s » a un type d'événement %d non supporté" -#: utils/adt/selfuncs.c:5636 +#: utils/adt/selfuncs.c:5663 #, c-format msgid "case insensitive matching not supported on type bytea" msgstr "la recherche insensible à la casse n'est pas supportée avec le type bytea" -#: utils/adt/selfuncs.c:5738 +#: utils/adt/selfuncs.c:5765 #, c-format msgid "regular-expression matching not supported on type bytea" msgstr "la recherche par expression rationnelle n'est pas supportée sur le type bytea" @@ -22048,7 +22071,7 @@ #: utils/adt/timestamp.c:4013 #, c-format msgid "interval units \"%s\" not supported because months usually have fractional weeks" -msgstr "unités d'intervalle « %s » non supporté car les mois ont généralement des semaines fractionnaires" +msgstr "unités d'intervalle « %s » non supportées car les mois ont généralement des semaines fractionnaires" #: utils/adt/timestamp.c:4019 utils/adt/timestamp.c:4770 #, c-format @@ -22085,10 +22108,10 @@ msgid "gtsvector_in not implemented" msgstr "gtsvector_in n'est pas encore implémenté" -#: utils/adt/tsquery.c:166 +#: utils/adt/tsquery.c:166 utils/adt/tsquery_op.c:123 #, c-format -msgid "distance in phrase operator should not be greater than %d" -msgstr "la distance dans l'opérateur de phrase ne devrait pas être plus que %d" +msgid "distance in phrase operator must be an integer value between zero and %d inclusive" +msgstr "la distance dans l'opérateur de phrase doit être un entier compris entre zéro et %d inclus" #: utils/adt/tsquery.c:254 utils/adt/tsquery.c:513 utils/adt/tsvector_parser.c:141 #, c-format @@ -22132,11 +22155,6 @@ "la requête de recherche plein texte ne contient que des termes courants\n" "ou ne contient pas de lexemes, ignoré" -#: utils/adt/tsquery_op.c:123 -#, c-format -msgid "distance in phrase operator should be non-negative and less than %d" -msgstr "la distance dans l'opérateur de phrase devrait pas positif et inférieur à %d" - #: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" @@ -22610,17 +22628,17 @@ msgid "cached plan must not change result type" msgstr "le plan en cache ne doit pas modifier le type en résultat" -#: utils/cache/relcache.c:5939 +#: utils/cache/relcache.c:5942 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "n'a pas pu créer le fichier d'initialisation relation-cache « %s » : %m" -#: utils/cache/relcache.c:5941 +#: utils/cache/relcache.c:5944 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Continue malgré tout, mais quelque chose s'est mal passé." -#: utils/cache/relcache.c:6261 +#: utils/cache/relcache.c:6264 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "n'a pas pu supprimer le fichier cache « %s » : %m" @@ -22632,39 +22650,39 @@ "ne peut pas préparer (PREPARE) une transaction qui a modifié la correspondance\n" "de relation" -#: utils/cache/relmapper.c:652 utils/cache/relmapper.c:754 +#: utils/cache/relmapper.c:652 utils/cache/relmapper.c:760 #, 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" -#: utils/cache/relmapper.c:666 +#: utils/cache/relmapper.c:669 #, c-format msgid "could not read relation mapping file \"%s\": %m" msgstr "n'a pas pu lire le fichier de correspondance des relations « %s » : %m" -#: utils/cache/relmapper.c:677 +#: utils/cache/relmapper.c:683 #, c-format msgid "relation mapping file \"%s\" contains invalid data" msgstr "le fichier de correspondance des relations « %s » contient des données invalides" -#: utils/cache/relmapper.c:687 +#: utils/cache/relmapper.c:693 #, c-format msgid "relation mapping file \"%s\" contains incorrect checksum" msgstr "" "le fichier de correspondance des relations « %s » contient une somme de\n" "contrôle incorrecte" -#: utils/cache/relmapper.c:788 +#: utils/cache/relmapper.c:794 #, 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" -#: utils/cache/relmapper.c:803 +#: utils/cache/relmapper.c:809 #, 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" -#: utils/cache/relmapper.c:810 +#: utils/cache/relmapper.c:816 #, 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" @@ -23323,7 +23341,7 @@ #: utils/misc/guc.c:577 msgid "Connections and Authentication / Connection Settings" -msgstr "Connexions et authentification / Paramètrages de connexion" +msgstr "Connexions et authentification / Paramétrages de connexion" #: utils/misc/guc.c:579 msgid "Connections and Authentication / Security and Authentication" @@ -23363,7 +23381,7 @@ #: utils/misc/guc.c:597 msgid "Write-Ahead Log / Settings" -msgstr "Write-Ahead Log / Paramètrages" +msgstr "Write-Ahead Log / Paramétrages" #: utils/misc/guc.c:599 msgid "Write-Ahead Log / Checkpoints" @@ -23537,7 +23555,7 @@ #: utils/misc/guc.c:862 msgid "Enables the planner's use of hashed aggregation plans." -msgstr "Active l'utilisation de plans d'agrégats hâchés par le planificateur." +msgstr "Active l'utilisation de plans d'agrégats hachés par le planificateur." #: utils/misc/guc.c:871 msgid "Enables the planner's use of materialization." @@ -23553,7 +23571,7 @@ #: utils/misc/guc.c:898 msgid "Enables the planner's use of hash join plans." -msgstr "Active l'utilisation de plans de jointures hâchées par le planificateur." +msgstr "Active l'utilisation de plans de jointures hachées par le planificateur." #: utils/misc/guc.c:907 msgid "Enables the planner's use of gather merge plans." @@ -24980,7 +24998,7 @@ #: utils/misc/guc.c:3778 msgid "Sets the syslog \"facility\" to be used when syslog enabled." msgstr "" -"Initialise le niveau (« facility ») de syslog à utilisé lors de l'activation\n" +"Initialise le niveau (« facility ») de syslog à utiliser lors de l'activation\n" "de syslog." #: utils/misc/guc.c:3793 @@ -25494,6 +25512,9 @@ msgid "cannot import a snapshot from a different database" msgstr "ne peut pas importer un snapshot à partir d'une base de données différente" +#~ msgid "distance in phrase operator should be non-negative and less than %d" +#~ msgstr "la distance dans l'opérateur de phrase devrait être non négative et inférieure à %d" + #~ msgid "unexpected standby message type \"%c\", after receiving CopyDone" #~ msgstr "type de message standby « %c » inattendu, après avoir reçu CopyDone" @@ -27493,9 +27514,6 @@ #~ msgid "%s \"%s\": return code %d" #~ msgstr "%s « %s » : code de retour %d" -#~ msgid "assertion checking is not supported by this build" -#~ msgstr "la vérification de l'assertion n'a pas été intégrée lors de la compilation" - #~ msgid "Set 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" @@ -27822,3 +27840,6 @@ #~ msgid "child process was terminated by signal %s" #~ msgstr "le processus fils a été terminé par le signal %s" + +#~ msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" +#~ msgstr "le rôle « %s » n'a pas pu être supprimé de la politique « %s » sur « %s »" diff -Nru postgresql-10-10.17/src/backend/po/ru.po postgresql-10-10.19/src/backend/po/ru.po --- postgresql-10-10.17/src/backend/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -5,12 +5,13 @@ # Oleg Bartunov , 2004-2005. # Dmitriy Olshevskiy , 2014. # Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. +# Maxim Yablokov , 2021. msgid "" msgstr "" "Project-Id-Version: postgres (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2021-02-08 07:31+0300\n" -"PO-Revision-Date: 2021-02-08 08:35+0300\n" +"POT-Creation-Date: 2021-11-08 05:26+0300\n" +"PO-Revision-Date: 2021-11-08 05:46+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -29,7 +30,7 @@ msgstr "не записано" #: ../common/controldata_utils.c:58 commands/copy.c:3198 -#: commands/extension.c:3350 utils/adt/genfile.c:128 +#: commands/extension.c:3358 utils/adt/genfile.c:128 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "не удалось открыть файл \"%s\" для чтения: %m" @@ -40,13 +41,13 @@ msgstr "%s: не удалось открыть файл \"%s\" для чтения: %s\n" #: ../common/controldata_utils.c:75 access/transam/timeline.c:142 -#: access/transam/timeline.c:362 access/transam/xlog.c:3418 -#: access/transam/xlog.c:10973 access/transam/xlog.c:10986 -#: access/transam/xlog.c:11403 access/transam/xlog.c:11446 -#: access/transam/xlog.c:11485 access/transam/xlog.c:11528 +#: access/transam/timeline.c:362 access/transam/xlog.c:3442 +#: access/transam/xlog.c:11135 access/transam/xlog.c:11148 +#: access/transam/xlog.c:11565 access/transam/xlog.c:11608 +#: access/transam/xlog.c:11647 access/transam/xlog.c:11690 #: access/transam/xlogfuncs.c:668 access/transam/xlogfuncs.c:687 -#: commands/extension.c:3360 libpq/hba.c:499 replication/logical/origin.c:726 -#: replication/logical/origin.c:756 replication/logical/reorderbuffer.c:3251 +#: commands/extension.c:3368 libpq/hba.c:499 replication/logical/origin.c:726 +#: replication/logical/origin.c:756 replication/logical/reorderbuffer.c:3275 #: replication/walsender.c:514 storage/file/buffile.c:269 #: storage/file/copydir.c:204 utils/adt/genfile.c:145 utils/adt/misc.c:935 #, c-format @@ -182,22 +183,22 @@ msgstr "не удалось закрыть каталог \"%s\": %s\n" #: ../common/psprintf.c:180 ../port/path.c:630 ../port/path.c:668 -#: ../port/path.c:685 access/transam/twophase.c:1316 access/transam/xlog.c:6431 -#: lib/stringinfo.c:258 libpq/auth.c:1131 libpq/auth.c:1502 libpq/auth.c:1570 -#: libpq/auth.c:2088 postmaster/bgworker.c:348 postmaster/bgworker.c:967 +#: ../port/path.c:685 access/transam/twophase.c:1377 access/transam/xlog.c:6478 +#: lib/stringinfo.c:258 libpq/auth.c:1155 libpq/auth.c:1534 libpq/auth.c:1602 +#: libpq/auth.c:2120 postmaster/bgworker.c:350 postmaster/bgworker.c:978 #: postmaster/postmaster.c:2472 postmaster/postmaster.c:2494 #: postmaster/postmaster.c:4063 postmaster/postmaster.c:4779 #: postmaster/postmaster.c:4854 postmaster/postmaster.c:5586 #: postmaster/postmaster.c:5946 -#: replication/libpqwalreceiver/libpqwalreceiver.c:274 +#: replication/libpqwalreceiver/libpqwalreceiver.c:280 #: replication/logical/logical.c:175 storage/buffer/localbuf.c:436 #: storage/file/fd.c:793 storage/file/fd.c:1222 storage/file/fd.c:1340 #: storage/file/fd.c:2078 storage/ipc/procarray.c:1069 #: storage/ipc/procarray.c:1557 storage/ipc/procarray.c:1564 #: storage/ipc/procarray.c:1987 storage/ipc/procarray.c:2598 -#: utils/adt/formatting.c:1571 utils/adt/formatting.c:1696 -#: utils/adt/formatting.c:1822 utils/adt/pg_locale.c:470 -#: utils/adt/pg_locale.c:634 utils/adt/regexp.c:223 utils/adt/varlena.c:4703 +#: utils/adt/formatting.c:1575 utils/adt/formatting.c:1700 +#: utils/adt/formatting.c:1826 utils/adt/pg_locale.c:474 +#: utils/adt/pg_locale.c:638 utils/adt/regexp.c:223 utils/adt/varlena.c:4703 #: utils/adt/varlena.c:4724 utils/fmgr/dfmgr.c:221 utils/hash/dynahash.c:444 #: utils/hash/dynahash.c:553 utils/hash/dynahash.c:1065 utils/mb/mbutils.c:382 #: utils/mb/mbutils.c:409 utils/mb/mbutils.c:738 utils/mb/mbutils.c:764 @@ -279,7 +280,7 @@ msgid "could not look up effective user ID %ld: %s" msgstr "выяснить эффективный идентификатор пользователя (%ld) не удалось: %s" -#: ../common/username.c:45 libpq/auth.c:2035 +#: ../common/username.c:45 libpq/auth.c:2067 msgid "user does not exist" msgstr "пользователь не существует" @@ -413,7 +414,7 @@ "записан" #: access/brin/brin.c:874 access/brin/brin.c:951 access/gin/ginfast.c:990 -#: access/transam/xlog.c:10387 access/transam/xlog.c:10912 +#: access/transam/xlog.c:10549 access/transam/xlog.c:11074 #: access/transam/xlogfuncs.c:296 access/transam/xlogfuncs.c:323 #: access/transam/xlogfuncs.c:362 access/transam/xlogfuncs.c:383 #: access/transam/xlogfuncs.c:404 access/transam/xlogfuncs.c:474 @@ -440,12 +441,13 @@ #: access/brin/brin.c:922 access/brin/brin.c:999 #, c-format msgid "could not open parent table of index %s" -msgstr "не удалось родительскую таблицу индекса %s" +msgstr "не удалось открыть родительскую таблицу индекса %s" #: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:364 #: access/brin/brin_pageops.c:830 access/gin/ginentrypage.c:110 #: access/gist/gist.c:1369 access/nbtree/nbtinsert.c:577 -#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1933 +#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1938 +#: access/spgist/spgdoinsert.c:2206 #, c-format msgid "index row size %zu exceeds maximum %zu for index \"%s\"" msgstr "" @@ -563,7 +565,7 @@ msgid "index row requires %zu bytes, maximum size is %zu" msgstr "строка индекса требует байт: %zu, при максимуме: %zu" -#: access/common/printtup.c:290 tcop/fastpath.c:182 tcop/fastpath.c:532 +#: access/common/printtup.c:290 tcop/fastpath.c:182 tcop/fastpath.c:538 #: tcop/postgres.c:1749 #, c-format msgid "unsupported format code: %d" @@ -696,8 +698,8 @@ msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Для исправления выполните REINDEX INDEX \"%s\"." -#: access/gin/ginutil.c:134 executor/execExpr.c:1780 -#: utils/adt/arrayfuncs.c:3815 utils/adt/arrayfuncs.c:6335 +#: access/gin/ginutil.c:134 executor/execExpr.c:1811 +#: utils/adt/arrayfuncs.c:3817 utils/adt/arrayfuncs.c:6343 #: utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" @@ -804,8 +806,8 @@ msgid "index row size %zu exceeds hash maximum %zu" msgstr "размер строки индекса (%zu) больше предельного размера хеша (%zu)" -#: access/hash/hashinsert.c:84 access/spgist/spgdoinsert.c:1937 -#: access/spgist/spgutils.c:708 +#: access/hash/hashinsert.c:84 access/spgist/spgdoinsert.c:1942 +#: access/spgist/spgdoinsert.c:2210 access/spgist/spgutils.c:708 #, c-format msgid "Values larger than a buffer page cannot be indexed." msgstr "Значения, не умещающиеся в страницу буфера, нельзя проиндексировать." @@ -864,33 +866,33 @@ msgid "\"%s\" is a composite type" msgstr "\"%s\" - это составной тип" -#: access/heap/heapam.c:2605 +#: access/heap/heapam.c:2609 #, c-format msgid "cannot insert tuples during a parallel operation" msgstr "вставлять кортежи во время параллельных операций нельзя" -#: access/heap/heapam.c:3050 +#: access/heap/heapam.c:3054 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "удалять кортежи во время параллельных операций нельзя" -#: access/heap/heapam.c:3096 +#: access/heap/heapam.c:3100 #, c-format msgid "attempted to delete invisible tuple" msgstr "попытка удаления невидимого кортежа" -#: access/heap/heapam.c:3526 access/heap/heapam.c:6301 +#: access/heap/heapam.c:3534 access/heap/heapam.c:6309 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "изменять кортежи во время параллельных операций нельзя" -#: access/heap/heapam.c:3674 +#: access/heap/heapam.c:3682 #, c-format msgid "attempted to update invisible tuple" msgstr "попытка изменения невидимого кортежа" -#: access/heap/heapam.c:4974 access/heap/heapam.c:5012 -#: access/heap/heapam.c:5264 executor/execMain.c:2648 +#: access/heap/heapam.c:4982 access/heap/heapam.c:5020 +#: access/heap/heapam.c:5272 executor/execMain.c:2654 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "не удалось получить блокировку строки в таблице \"%s\"" @@ -907,25 +909,25 @@ #: access/heap/rewriteheap.c:981 access/heap/rewriteheap.c:1204 #: access/heap/rewriteheap.c:1304 access/transam/timeline.c:428 -#: access/transam/timeline.c:508 access/transam/xlog.c:3283 -#: access/transam/xlog.c:3451 replication/logical/snapbuild.c:1653 +#: access/transam/timeline.c:508 access/transam/xlog.c:3307 +#: access/transam/xlog.c:3475 replication/logical/snapbuild.c:1669 #: replication/slot.c:1319 replication/slot.c:1415 storage/file/fd.c:651 -#: storage/file/fd.c:3244 storage/smgr/md.c:1078 storage/smgr/md.c:1323 -#: storage/smgr/md.c:1497 utils/misc/guc.c:7061 +#: storage/file/fd.c:3244 storage/smgr/md.c:1079 storage/smgr/md.c:1324 +#: storage/smgr/md.c:1498 utils/misc/guc.c:7061 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "не удалось синхронизировать с ФС файл \"%s\": %m" #: access/heap/rewriteheap.c:1036 access/heap/rewriteheap.c:1156 #: access/transam/timeline.c:329 access/transam/timeline.c:483 -#: access/transam/xlog.c:3237 access/transam/xlog.c:3389 -#: access/transam/xlog.c:10722 access/transam/xlog.c:10760 -#: access/transam/xlog.c:11164 postmaster/postmaster.c:4546 +#: access/transam/xlog.c:3261 access/transam/xlog.c:3413 +#: access/transam/xlog.c:10884 access/transam/xlog.c:10922 +#: access/transam/xlog.c:11326 postmaster/postmaster.c:4546 #: replication/logical/origin.c:582 replication/slot.c:1266 #: storage/file/copydir.c:176 storage/smgr/md.c:328 utils/time/snapmgr.c:1297 #, c-format msgid "could not create file \"%s\": %m" -msgstr "создать файл \"%s\" не удалось: %m" +msgstr "не удалось создать файл \"%s\": %m" #: access/heap/rewriteheap.c:1166 #, c-format @@ -933,17 +935,17 @@ msgstr "не удалось обрезать файл \"%s\" до нужного размера (%u): %m" #: access/heap/rewriteheap.c:1174 replication/walsender.c:494 -#: storage/smgr/md.c:2027 +#: storage/smgr/md.c:2028 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "не удалось перейти к концу файла \"%s\": %m" #: access/heap/rewriteheap.c:1191 access/transam/timeline.c:384 #: access/transam/timeline.c:420 access/transam/timeline.c:500 -#: access/transam/xlog.c:3269 access/transam/xlog.c:3442 +#: access/transam/xlog.c:3293 access/transam/xlog.c:3466 #: postmaster/postmaster.c:4556 postmaster/postmaster.c:4566 #: replication/logical/origin.c:597 replication/logical/origin.c:642 -#: replication/logical/origin.c:664 replication/logical/snapbuild.c:1629 +#: replication/logical/origin.c:664 replication/logical/snapbuild.c:1645 #: replication/slot.c:1301 storage/file/buffile.c:343 #: storage/file/copydir.c:217 utils/init/miscinit.c:1253 #: utils/init/miscinit.c:1264 utils/init/miscinit.c:1272 utils/misc/guc.c:7022 @@ -951,34 +953,34 @@ #: utils/time/snapmgr.c:1302 utils/time/snapmgr.c:1309 #, c-format msgid "could not write to file \"%s\": %m" -msgstr "записать в файл \"%s\" не удалось: %m" +msgstr "не удалось записать в файл \"%s\": %m" #: access/heap/rewriteheap.c:1278 access/transam/xlogarchive.c:112 #: access/transam/xlogarchive.c:457 postmaster/postmaster.c:1281 #: postmaster/syslogger.c:1455 replication/logical/origin.c:569 -#: replication/logical/reorderbuffer.c:2753 -#: replication/logical/snapbuild.c:1570 replication/logical/snapbuild.c:1976 +#: replication/logical/reorderbuffer.c:2777 +#: replication/logical/snapbuild.c:1586 replication/logical/snapbuild.c:1992 #: replication/slot.c:1385 storage/file/fd.c:702 storage/ipc/dsm.c:322 -#: storage/smgr/md.c:473 storage/smgr/md.c:517 storage/smgr/md.c:1444 +#: storage/smgr/md.c:473 storage/smgr/md.c:517 storage/smgr/md.c:1445 #, c-format msgid "could not remove file \"%s\": %m" msgstr "не удалось стереть файл \"%s\": %m" #: access/heap/rewriteheap.c:1293 access/transam/timeline.c:110 #: access/transam/timeline.c:250 access/transam/timeline.c:348 -#: access/transam/xlog.c:3213 access/transam/xlog.c:3333 -#: access/transam/xlog.c:3374 access/transam/xlog.c:3653 -#: access/transam/xlog.c:3756 access/transam/xlogutils.c:706 +#: access/transam/xlog.c:3237 access/transam/xlog.c:3357 +#: access/transam/xlog.c:3398 access/transam/xlog.c:3677 +#: access/transam/xlog.c:3780 access/transam/xlogutils.c:706 #: postmaster/syslogger.c:1464 replication/basebackup.c:490 #: replication/basebackup.c:1236 replication/logical/origin.c:719 -#: replication/logical/reorderbuffer.c:2269 -#: replication/logical/reorderbuffer.c:2525 -#: replication/logical/reorderbuffer.c:3231 -#: replication/logical/snapbuild.c:1615 replication/logical/snapbuild.c:1718 +#: replication/logical/reorderbuffer.c:2291 +#: replication/logical/reorderbuffer.c:2548 +#: replication/logical/reorderbuffer.c:3255 +#: replication/logical/snapbuild.c:1631 replication/logical/snapbuild.c:1734 #: replication/slot.c:1400 replication/walsender.c:487 -#: replication/walsender.c:2403 storage/file/copydir.c:169 +#: replication/walsender.c:2409 storage/file/copydir.c:169 #: storage/file/fd.c:634 storage/file/fd.c:3156 storage/file/fd.c:3223 -#: storage/smgr/md.c:650 utils/error/elog.c:1872 utils/init/miscinit.c:1177 +#: storage/smgr/md.c:651 utils/error/elog.c:1872 utils/init/miscinit.c:1177 #: utils/init/miscinit.c:1312 utils/init/miscinit.c:1389 utils/misc/guc.c:7278 #: utils/misc/guc.c:7311 #, c-format @@ -1030,7 +1032,7 @@ "полнотекстовую индексацию." #: access/nbtree/nbtpage.c:169 access/nbtree/nbtpage.c:372 -#: access/nbtree/nbtpage.c:459 parser/parse_utilcmd.c:2136 +#: access/nbtree/nbtpage.c:459 parser/parse_utilcmd.c:2146 #, c-format msgid "index \"%s\" is not a btree" msgstr "индекс \"%s\" не является b-деревом" @@ -1135,7 +1137,7 @@ "база данных не принимает команды, создающие новые MultiXactId, во избежание " "потери данных из-за зацикливания в базе данных с OID %u" -#: access/transam/multixact.c:1028 access/transam/multixact.c:2320 +#: access/transam/multixact.c:1028 access/transam/multixact.c:2323 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "" @@ -1150,7 +1152,7 @@ "база данных \"%s\" должна быть очищена, прежде чем будут использованы " "оставшиеся MultiXactId (%u)" -#: access/transam/multixact.c:1037 access/transam/multixact.c:2329 +#: access/transam/multixact.c:1037 access/transam/multixact.c:2332 #, c-format msgid "" "database with OID %u must be vacuumed before %u more MultiXactId is used" @@ -1226,7 +1228,7 @@ "Выполните очистку (VACUUM) всей этой базы данных, уменьшив значения " "vacuum_multixact_freeze_min_age и vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1277 +#: access/transam/multixact.c:1279 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "MultiXactId %u прекратил существование: видимо, произошло зацикливание" @@ -1236,14 +1238,14 @@ msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "MultiXactId %u ещё не был создан: видимо, произошло зацикливание" -#: access/transam/multixact.c:2270 +#: access/transam/multixact.c:2273 #, c-format msgid "MultiXactId wrap limit is %u, limited by database with OID %u" msgstr "" "предел зацикливания MultiXactId равен %u, источник ограничения - база данных " "с OID %u" -#: access/transam/multixact.c:2325 access/transam/multixact.c:2334 +#: access/transam/multixact.c:2328 access/transam/multixact.c:2337 #: access/transam/varsup.c:146 access/transam/varsup.c:153 #: access/transam/varsup.c:405 access/transam/varsup.c:412 #, c-format @@ -1256,12 +1258,12 @@ "Возможно, вам также придётся зафиксировать или откатить старые\n" "подготовленные транзакции." -#: access/transam/multixact.c:2604 +#: access/transam/multixact.c:2607 #, c-format msgid "oldest MultiXactId member is at offset %u" msgstr "смещение членов старейшей мультитранзакции: %u" -#: access/transam/multixact.c:2608 +#: access/transam/multixact.c:2611 #, c-format msgid "" "MultiXact member wraparound protections are disabled because oldest " @@ -1270,19 +1272,19 @@ "Защита от зацикливания членов мультитранзакций отключена, так как старейшая " "отмеченная мультитранзакция %u не найдена на диске" -#: access/transam/multixact.c:2630 +#: access/transam/multixact.c:2633 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "Защита от зацикливания мультитранзакций сейчас включена" -#: access/transam/multixact.c:2633 +#: access/transam/multixact.c:2636 #, c-format msgid "MultiXact member stop limit is now %u based on MultiXact %u" msgstr "" "Граница членов мультитранзакции сейчас: %u (при старейшей мультитранзакции " "%u)" -#: access/transam/multixact.c:3021 +#: access/transam/multixact.c:3024 #, c-format msgid "" "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" @@ -1290,7 +1292,7 @@ "старейшая мультитранзакция %u не найдена, новейшая мультитранзакция: %u, " "усечение пропускается" -#: access/transam/multixact.c:3039 +#: access/transam/multixact.c:3042 #, c-format msgid "" "cannot truncate up to MultiXact %u because it does not exist on disk, " @@ -1299,41 +1301,41 @@ "выполнить усечение до мультитранзакции %u нельзя ввиду её отсутствия на " "диске, усечение пропускается" -#: access/transam/multixact.c:3365 +#: access/transam/multixact.c:3368 #, c-format msgid "invalid MultiXactId: %u" msgstr "неверный MultiXactId: %u" -#: access/transam/parallel.c:608 +#: access/transam/parallel.c:619 #, c-format msgid "parallel worker failed to initialize" msgstr "не удалось инициализировать параллельный исполнитель" -#: access/transam/parallel.c:609 +#: access/transam/parallel.c:620 #, c-format msgid "More details may be available in the server log." msgstr "Дополнительная информация может быть в журнале сервера." -#: access/transam/parallel.c:670 +#: access/transam/parallel.c:681 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "postmaster завершился в процессе параллельной транзакции" -#: access/transam/parallel.c:857 +#: access/transam/parallel.c:868 #, c-format msgid "lost connection to parallel worker" msgstr "потеряно подключение к параллельному исполнителю" -#: access/transam/parallel.c:919 access/transam/parallel.c:921 +#: access/transam/parallel.c:930 access/transam/parallel.c:932 msgid "parallel worker" msgstr "параллельный исполнитель" -#: access/transam/parallel.c:1064 +#: access/transam/parallel.c:1077 #, c-format msgid "could not map dynamic shared memory segment" msgstr "не удалось отобразить динамический сегмент разделяемой памяти" -#: access/transam/parallel.c:1069 +#: access/transam/parallel.c:1082 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "неверное магическое число в динамическом сегменте разделяемой памяти" @@ -1427,7 +1429,7 @@ "Идентификаторы линий времени должны быть меньше идентификатора линии-потомка." #: access/transam/timeline.c:434 access/transam/timeline.c:514 -#: access/transam/xlog.c:3290 access/transam/xlog.c:3457 +#: access/transam/xlog.c:3314 access/transam/xlog.c:3481 #: access/transam/xlogfuncs.c:693 commands/copy.c:1741 #: storage/file/copydir.c:228 #, c-format @@ -1459,39 +1461,39 @@ msgid "transaction identifier \"%s\" is already in use" msgstr "идентификатор транзакции \"%s\" уже используется" -#: access/transam/twophase.c:419 access/transam/twophase.c:2364 +#: access/transam/twophase.c:419 access/transam/twophase.c:2433 #, c-format msgid "maximum number of prepared transactions reached" msgstr "достигнут предел числа подготовленных транзакций" -#: access/transam/twophase.c:420 access/transam/twophase.c:2365 +#: access/transam/twophase.c:420 access/transam/twophase.c:2434 #, c-format msgid "Increase max_prepared_transactions (currently %d)." msgstr "Увеличьте параметр max_prepared_transactions (текущее значение %d)." -#: access/transam/twophase.c:587 +#: access/transam/twophase.c:597 #, c-format msgid "prepared transaction with identifier \"%s\" is busy" msgstr "подготовленная транзакция с идентификатором \"%s\" занята" -#: access/transam/twophase.c:593 +#: access/transam/twophase.c:603 #, c-format msgid "permission denied to finish prepared transaction" msgstr "нет доступа для завершения подготовленной транзакции" -#: access/transam/twophase.c:594 +#: access/transam/twophase.c:604 #, c-format msgid "Must be superuser or the user that prepared the transaction." msgstr "" "Это разрешено только суперпользователю и пользователю, подготовившему " "транзакцию." -#: access/transam/twophase.c:605 +#: access/transam/twophase.c:615 #, c-format msgid "prepared transaction belongs to another database" msgstr "подготовленная транзакция относится к другой базе данных" -#: access/transam/twophase.c:606 +#: access/transam/twophase.c:616 #, c-format msgid "" "Connect to the database where the transaction was prepared to finish it." @@ -1500,74 +1502,74 @@ "подготовлена." # [SM]: TO REVIEW -#: access/transam/twophase.c:621 +#: access/transam/twophase.c:631 #, c-format msgid "prepared transaction with identifier \"%s\" does not exist" msgstr "подготовленной транзакции с идентификатором \"%s\" нет" -#: access/transam/twophase.c:1086 +#: access/transam/twophase.c:1143 #, c-format msgid "two-phase state file maximum length exceeded" msgstr "превышен предельный размер файла состояния 2PC" -#: access/transam/twophase.c:1204 +#: access/transam/twophase.c:1261 #, c-format msgid "could not open two-phase state file \"%s\": %m" msgstr "не удалось открыть файл состояния 2PC \"%s\": %m" -#: access/transam/twophase.c:1225 +#: access/transam/twophase.c:1282 #, c-format msgid "could not stat two-phase state file \"%s\": %m" msgstr "не удалось получить информацию о файле состояния 2PC \"%s\": %m" -#: access/transam/twophase.c:1264 +#: access/transam/twophase.c:1321 #, c-format msgid "could not read two-phase state file \"%s\": %m" msgstr "не удалось прочитать файл состояния 2PC \"%s\": %m" -#: access/transam/twophase.c:1317 access/transam/xlog.c:6432 +#: access/transam/twophase.c:1378 access/transam/xlog.c:6479 #, c-format msgid "Failed while allocating a WAL reading processor." msgstr "Не удалось разместить обработчик журнала транзакций." -#: access/transam/twophase.c:1323 +#: access/transam/twophase.c:1392 #, c-format msgid "could not read two-phase state from WAL at %X/%X" msgstr "не удалось прочитать состояние 2PC из WAL в позиции %X/%X" -#: access/transam/twophase.c:1331 +#: access/transam/twophase.c:1400 #, c-format msgid "expected two-phase state data is not present in WAL at %X/%X" msgstr "" "ожидаемые данные состояния двухфазной фиксации отсутствуют в WAL в позиции " "%X/%X" -#: access/transam/twophase.c:1568 +#: access/transam/twophase.c:1637 #, c-format msgid "could not remove two-phase state file \"%s\": %m" msgstr "не удалось стереть файл состояния 2PC \"%s\": %m" -#: access/transam/twophase.c:1598 +#: access/transam/twophase.c:1667 #, c-format msgid "could not recreate two-phase state file \"%s\": %m" msgstr "не удалось пересоздать файл состояния 2PC \"%s\": %m" -#: access/transam/twophase.c:1615 access/transam/twophase.c:1628 +#: access/transam/twophase.c:1684 access/transam/twophase.c:1697 #, c-format msgid "could not write two-phase state file: %m" msgstr "не удалось записать в файл состояния 2PC: %m" -#: access/transam/twophase.c:1645 +#: access/transam/twophase.c:1714 #, c-format msgid "could not fsync two-phase state file: %m" msgstr "не удалось синхронизировать с ФС файл состояния 2PC: %m" -#: access/transam/twophase.c:1652 +#: access/transam/twophase.c:1721 #, c-format msgid "could not close two-phase state file: %m" msgstr "не удалось закрыть файл состояния 2PC: %m" -#: access/transam/twophase.c:1740 +#: access/transam/twophase.c:1809 #, c-format msgid "" "%u two-phase state file was written for a long-running prepared transaction" @@ -1580,37 +1582,37 @@ msgstr[2] "" "для длительных подготовленных транзакций записано файлов состояния 2PC: %u" -#: access/transam/twophase.c:1968 +#: access/transam/twophase.c:2037 #, c-format msgid "recovering prepared transaction %u from shared memory" msgstr "восстановление подготовленной транзакции %u из разделяемой памяти" -#: access/transam/twophase.c:2058 +#: access/transam/twophase.c:2127 #, c-format msgid "removing stale two-phase state file for transaction %u" msgstr "удаление устаревшего файла состояния 2PC для транзакции %u" -#: access/transam/twophase.c:2065 +#: access/transam/twophase.c:2134 #, c-format msgid "removing stale two-phase state from memory for transaction %u" msgstr "удаление из памяти устаревшего состояния 2PC для транзакции %u" -#: access/transam/twophase.c:2078 +#: access/transam/twophase.c:2147 #, c-format msgid "removing future two-phase state file for transaction %u" msgstr "удаление файла будущего состояния 2PC для транзакции %u" -#: access/transam/twophase.c:2085 +#: access/transam/twophase.c:2154 #, c-format msgid "removing future two-phase state from memory for transaction %u" msgstr "удаление из памяти будущего состояния 2PC для транзакции %u" -#: access/transam/twophase.c:2099 access/transam/twophase.c:2118 +#: access/transam/twophase.c:2168 access/transam/twophase.c:2187 #, c-format msgid "removing corrupt two-phase state file for transaction %u" msgstr "удаление испорченного файла состояния 2PC для транзакции %u" -#: access/transam/twophase.c:2125 +#: access/transam/twophase.c:2194 #, c-format msgid "removing corrupt two-phase state from memory for transaction %u" msgstr "удаление из памяти испорченного состояния 2PC для транзакции %u" @@ -1663,34 +1665,34 @@ "предел зацикливания ID транзакций равен %u, источник ограничения - база " "данных с OID %u" -#: access/transam/xact.c:969 +#: access/transam/xact.c:970 #, c-format msgid "cannot have more than 2^32-2 commands in a transaction" msgstr "в одной транзакции не может быть больше 2^32-2 команд" -#: access/transam/xact.c:1494 +#: access/transam/xact.c:1495 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "превышен предел числа зафиксированных подтранзакций (%d)" -#: access/transam/xact.c:2300 +#: access/transam/xact.c:2301 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "" "нельзя выполнить PREPARE для транзакции, оперирующей с временными таблицами" -#: access/transam/xact.c:2312 +#: access/transam/xact.c:2313 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary objects" msgstr "" "нельзя выполнить PREPARE для транзакции, оперирующей с временными объектами" -#: access/transam/xact.c:2322 +#: access/transam/xact.c:2323 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "нельзя выполнить PREPARE для транзакции, снимки которой экспортированы" -#: access/transam/xact.c:2331 +#: access/transam/xact.c:2332 #, c-format msgid "" "cannot PREPARE a transaction that has manipulated logical replication workers" @@ -1699,19 +1701,19 @@ "репликации" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3216 +#: access/transam/xact.c:3226 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s не может выполняться внутри блока транзакции" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3226 +#: access/transam/xact.c:3236 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s не может выполняться внутри подтранзакции" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3236 +#: access/transam/xact.c:3246 #, c-format msgid "%s cannot be executed from a function or multi-command string" msgstr "" @@ -1719,152 +1721,152 @@ "команд" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3307 +#: access/transam/xact.c:3317 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s может выполняться только внутри блоков транзакций" -#: access/transam/xact.c:3491 +#: access/transam/xact.c:3501 #, c-format msgid "there is already a transaction in progress" msgstr "транзакция уже выполняется" -#: access/transam/xact.c:3659 access/transam/xact.c:3762 +#: access/transam/xact.c:3669 access/transam/xact.c:3772 #, c-format msgid "there is no transaction in progress" msgstr "нет незавершённой транзакции" -#: access/transam/xact.c:3670 +#: access/transam/xact.c:3680 #, c-format msgid "cannot commit during a parallel operation" msgstr "фиксировать транзакции во время параллельных операций нельзя" -#: access/transam/xact.c:3773 +#: access/transam/xact.c:3783 #, c-format msgid "cannot abort during a parallel operation" msgstr "прерывание во время параллельных операций невозможно" -#: access/transam/xact.c:3815 +#: access/transam/xact.c:3825 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "определять точки сохранения во время параллельных операций нельзя" -#: access/transam/xact.c:3882 +#: access/transam/xact.c:3892 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "высвобождать точки сохранения во время параллельных операций нельзя" -#: access/transam/xact.c:3893 access/transam/xact.c:3945 -#: access/transam/xact.c:3951 access/transam/xact.c:4007 -#: access/transam/xact.c:4057 access/transam/xact.c:4063 +#: access/transam/xact.c:3903 access/transam/xact.c:3955 +#: access/transam/xact.c:3961 access/transam/xact.c:4017 +#: access/transam/xact.c:4067 access/transam/xact.c:4073 #, c-format msgid "no such savepoint" msgstr "нет такой точки сохранения" -#: access/transam/xact.c:3995 +#: access/transam/xact.c:4005 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "откатиться к точке сохранения во время параллельных операций нельзя" -#: access/transam/xact.c:4123 +#: access/transam/xact.c:4133 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "запускать подтранзакции во время параллельных операций нельзя" -#: access/transam/xact.c:4190 +#: access/transam/xact.c:4200 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "фиксировать подтранзакции во время параллельных операций нельзя" -#: access/transam/xact.c:4827 +#: access/transam/xact.c:4842 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "в одной транзакции не может быть больше 2^32-1 подтранзакций" -#: access/transam/xlog.c:2469 +#: access/transam/xlog.c:2493 #, c-format msgid "could not seek in log file %s to offset %u: %m" msgstr "не удалось переместиться в файле журнала %s к смещению %u: %m" -#: access/transam/xlog.c:2491 +#: access/transam/xlog.c:2515 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "не удалось записать в файл журнала %s (смещение: %u, длина: %zu): %m" -#: access/transam/xlog.c:2767 +#: access/transam/xlog.c:2791 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" msgstr "минимальная точка восстановления изменена на %X/%X на линии времени %u" -#: access/transam/xlog.c:3422 +#: access/transam/xlog.c:3446 #, c-format msgid "not enough data in file \"%s\"" -msgstr "недостаточно данных в файле\"%s\"" +msgstr "недостаточно данных в файле \"%s\"" -#: access/transam/xlog.c:3568 +#: access/transam/xlog.c:3592 #, c-format msgid "could not open write-ahead log file \"%s\": %m" msgstr "не удалось открыть файл журнала предзаписи \"%s\": %m" -#: access/transam/xlog.c:3782 access/transam/xlog.c:5631 +#: access/transam/xlog.c:3806 access/transam/xlog.c:5668 #, c-format msgid "could not close log file %s: %m" msgstr "не удалось закрыть файл журнала \"%s\": %m" -#: access/transam/xlog.c:3846 access/transam/xlogutils.c:701 -#: replication/walsender.c:2398 +#: access/transam/xlog.c:3870 access/transam/xlogutils.c:701 +#: replication/walsender.c:2404 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "запрошенный сегмент WAL %s уже удалён" -#: access/transam/xlog.c:3907 access/transam/xlog.c:3982 -#: access/transam/xlog.c:4177 +#: access/transam/xlog.c:3931 access/transam/xlog.c:4006 +#: access/transam/xlog.c:4201 #, c-format msgid "could not open write-ahead log directory \"%s\": %m" msgstr "не удалось открыть каталог журнала предзаписи \"%s\": %m" -#: access/transam/xlog.c:4063 +#: access/transam/xlog.c:4087 #, c-format msgid "recycled write-ahead log file \"%s\"" msgstr "файл журнала предзаписи \"%s\" используется повторно" -#: access/transam/xlog.c:4075 +#: access/transam/xlog.c:4099 #, c-format msgid "removing write-ahead log file \"%s\"" msgstr "файл журнала предзаписи \"%s\" удаляется" -#: access/transam/xlog.c:4095 +#: access/transam/xlog.c:4119 #, c-format msgid "could not rename old write-ahead log file \"%s\": %m" msgstr "не удалось переименовать старый файл журнала предзаписи \"%s\": %m" -#: access/transam/xlog.c:4137 access/transam/xlog.c:4147 +#: access/transam/xlog.c:4161 access/transam/xlog.c:4171 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "требуемый каталог WAL \"%s\" не существует" -#: access/transam/xlog.c:4153 +#: access/transam/xlog.c:4177 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "создаётся отсутствующий каталог WAL \"%s\"" -#: access/transam/xlog.c:4156 +#: access/transam/xlog.c:4180 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "не удалось создать отсутствующий каталог \"%s\": %m" -#: access/transam/xlog.c:4267 +#: access/transam/xlog.c:4304 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "неожиданный ID линии времени %u в сегменте журнала %s, смещение %u" -#: access/transam/xlog.c:4405 +#: access/transam/xlog.c:4442 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "" "новая линия времени %u не является ответвлением линии времени системы БД %u" -#: access/transam/xlog.c:4419 +#: access/transam/xlog.c:4456 #, c-format msgid "" "new timeline %u forked off current database system timeline %u before " @@ -1873,61 +1875,61 @@ "новая линия времени %u ответвилась от текущей линии времени базы данных %u " "до текущей точки восстановления %X/%X" -#: access/transam/xlog.c:4438 +#: access/transam/xlog.c:4475 #, c-format msgid "new target timeline is %u" msgstr "новая целевая линия времени %u" -#: access/transam/xlog.c:4519 +#: access/transam/xlog.c:4556 #, c-format msgid "could not create control file \"%s\": %m" msgstr "не удалось создать файл \"%s\": %m" -#: access/transam/xlog.c:4531 access/transam/xlog.c:4765 +#: access/transam/xlog.c:4568 access/transam/xlog.c:4802 #, c-format msgid "could not write to control file: %m" msgstr "не удалось записать в файл pg_control: %m" -#: access/transam/xlog.c:4539 access/transam/xlog.c:4773 +#: access/transam/xlog.c:4576 access/transam/xlog.c:4810 #, c-format msgid "could not fsync control file: %m" msgstr "не удалось синхронизировать с ФС файл pg_control: %m" -#: access/transam/xlog.c:4545 access/transam/xlog.c:4779 +#: access/transam/xlog.c:4582 access/transam/xlog.c:4816 #, c-format msgid "could not close control file: %m" msgstr "не удалось закрыть файл pg_control: %m" -#: access/transam/xlog.c:4564 access/transam/xlog.c:4753 +#: access/transam/xlog.c:4601 access/transam/xlog.c:4790 #, c-format msgid "could not open control file \"%s\": %m" msgstr "не удалось открыть файл \"%s\": %m" -#: access/transam/xlog.c:4574 +#: access/transam/xlog.c:4611 #, c-format msgid "could not read from control file: %m" msgstr "не удалось прочитать файл pg_control: %m" -#: access/transam/xlog.c:4577 +#: access/transam/xlog.c:4614 #, c-format msgid "could not read from control file: read %d bytes, expected %d" msgstr "" "не удалось прочитать файл pg_control (прочитано байт: %d, ожидалось: %d)" -#: access/transam/xlog.c:4592 access/transam/xlog.c:4601 -#: access/transam/xlog.c:4625 access/transam/xlog.c:4632 -#: access/transam/xlog.c:4639 access/transam/xlog.c:4644 -#: access/transam/xlog.c:4651 access/transam/xlog.c:4658 -#: access/transam/xlog.c:4665 access/transam/xlog.c:4672 -#: access/transam/xlog.c:4679 access/transam/xlog.c:4686 -#: access/transam/xlog.c:4693 access/transam/xlog.c:4702 -#: access/transam/xlog.c:4709 access/transam/xlog.c:4718 -#: access/transam/xlog.c:4725 utils/init/miscinit.c:1410 +#: access/transam/xlog.c:4629 access/transam/xlog.c:4638 +#: access/transam/xlog.c:4662 access/transam/xlog.c:4669 +#: access/transam/xlog.c:4676 access/transam/xlog.c:4681 +#: access/transam/xlog.c:4688 access/transam/xlog.c:4695 +#: access/transam/xlog.c:4702 access/transam/xlog.c:4709 +#: access/transam/xlog.c:4716 access/transam/xlog.c:4723 +#: access/transam/xlog.c:4730 access/transam/xlog.c:4739 +#: access/transam/xlog.c:4746 access/transam/xlog.c:4755 +#: access/transam/xlog.c:4762 utils/init/miscinit.c:1410 #, c-format msgid "database files are incompatible with server" -msgstr "файлы базы данных не совместимы с сервером" +msgstr "файлы базы данных несовместимы с сервером" -#: access/transam/xlog.c:4593 +#: access/transam/xlog.c:4630 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), " @@ -1936,7 +1938,7 @@ "Кластер баз данных был инициализирован с PG_CONTROL_VERSION %d (0x%08x), но " "сервер скомпилирован с PG_CONTROL_VERSION %d (0x%08x)." -#: access/transam/xlog.c:4597 +#: access/transam/xlog.c:4634 #, c-format msgid "" "This could be a problem of mismatched byte ordering. It looks like you need " @@ -1945,7 +1947,7 @@ "Возможно, проблема вызвана разным порядком байт. Кажется, вам надо выполнить " "initdb." -#: access/transam/xlog.c:4602 +#: access/transam/xlog.c:4639 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d, but the " @@ -1954,18 +1956,18 @@ "Кластер баз данных был инициализирован с PG_CONTROL_VERSION %d, но сервер " "скомпилирован с PG_CONTROL_VERSION %d." -#: access/transam/xlog.c:4605 access/transam/xlog.c:4629 -#: access/transam/xlog.c:4636 access/transam/xlog.c:4641 +#: access/transam/xlog.c:4642 access/transam/xlog.c:4666 +#: access/transam/xlog.c:4673 access/transam/xlog.c:4678 #, c-format msgid "It looks like you need to initdb." msgstr "Кажется, вам надо выполнить initdb." -#: access/transam/xlog.c:4616 +#: access/transam/xlog.c:4653 #, c-format msgid "incorrect checksum in control file" msgstr "ошибка контрольной суммы в файле pg_control" -#: access/transam/xlog.c:4626 +#: access/transam/xlog.c:4663 #, c-format msgid "" "The database cluster was initialized with CATALOG_VERSION_NO %d, but the " @@ -1974,7 +1976,7 @@ "Кластер баз данных был инициализирован с CATALOG_VERSION_NO %d, но сервер " "скомпилирован с CATALOG_VERSION_NO %d." -#: access/transam/xlog.c:4633 +#: access/transam/xlog.c:4670 #, c-format msgid "" "The database cluster was initialized with MAXALIGN %d, but the server was " @@ -1983,7 +1985,7 @@ "Кластер баз данных был инициализирован с MAXALIGN %d, но сервер " "скомпилирован с MAXALIGN %d." -#: access/transam/xlog.c:4640 +#: access/transam/xlog.c:4677 #, c-format msgid "" "The database cluster appears to use a different floating-point number format " @@ -1992,7 +1994,7 @@ "Кажется, в кластере баз данных и в программе сервера используются разные " "форматы чисел с плавающей точкой." -#: access/transam/xlog.c:4645 +#: access/transam/xlog.c:4682 #, c-format msgid "" "The database cluster was initialized with BLCKSZ %d, but the server was " @@ -2001,17 +2003,17 @@ "Кластер баз данных был инициализирован с BLCKSZ %d, но сервер скомпилирован " "с BLCKSZ %d." -#: access/transam/xlog.c:4648 access/transam/xlog.c:4655 -#: access/transam/xlog.c:4662 access/transam/xlog.c:4669 -#: access/transam/xlog.c:4676 access/transam/xlog.c:4683 -#: access/transam/xlog.c:4690 access/transam/xlog.c:4697 -#: access/transam/xlog.c:4705 access/transam/xlog.c:4712 -#: access/transam/xlog.c:4721 access/transam/xlog.c:4728 +#: access/transam/xlog.c:4685 access/transam/xlog.c:4692 +#: access/transam/xlog.c:4699 access/transam/xlog.c:4706 +#: access/transam/xlog.c:4713 access/transam/xlog.c:4720 +#: access/transam/xlog.c:4727 access/transam/xlog.c:4734 +#: access/transam/xlog.c:4742 access/transam/xlog.c:4749 +#: access/transam/xlog.c:4758 access/transam/xlog.c:4765 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Кажется, вам надо перекомпилировать сервер или выполнить initdb." -#: access/transam/xlog.c:4652 +#: access/transam/xlog.c:4689 #, c-format msgid "" "The database cluster was initialized with RELSEG_SIZE %d, but the server was " @@ -2020,7 +2022,7 @@ "Кластер баз данных был инициализирован с RELSEG_SIZE %d, но сервер " "скомпилирован с RELSEG_SIZE %d." -#: access/transam/xlog.c:4659 +#: access/transam/xlog.c:4696 #, c-format msgid "" "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was " @@ -2029,7 +2031,7 @@ "Кластер баз данных был инициализирован с XLOG_BLCKSZ %d, но сервер " "скомпилирован с XLOG_BLCKSZ %d." -#: access/transam/xlog.c:4666 +#: access/transam/xlog.c:4703 #, c-format msgid "" "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " @@ -2038,7 +2040,7 @@ "Кластер баз данных был инициализирован с XLOG_SEG_SIZE %d, но сервер " "скомпилирован с XLOG_SEG_SIZE %d." -#: access/transam/xlog.c:4673 +#: access/transam/xlog.c:4710 #, c-format msgid "" "The database cluster was initialized with NAMEDATALEN %d, but the server was " @@ -2047,7 +2049,7 @@ "Кластер баз данных был инициализирован с NAMEDATALEN %d, но сервер " "скомпилирован с NAMEDATALEN %d." -#: access/transam/xlog.c:4680 +#: access/transam/xlog.c:4717 #, c-format msgid "" "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server " @@ -2056,7 +2058,7 @@ "Кластер баз данных был инициализирован с INDEX_MAX_KEYS %d, но сервер " "скомпилирован с INDEX_MAX_KEYS %d." -#: access/transam/xlog.c:4687 +#: access/transam/xlog.c:4724 #, c-format msgid "" "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the " @@ -2065,7 +2067,7 @@ "Кластер баз данных был инициализирован с TOAST_MAX_CHUNK_SIZE %d, но сервер " "скомпилирован с TOAST_MAX_CHUNK_SIZE %d." -#: access/transam/xlog.c:4694 +#: access/transam/xlog.c:4731 #, c-format msgid "" "The database cluster was initialized with LOBLKSIZE %d, but the server was " @@ -2074,7 +2076,7 @@ "Кластер баз данных был инициализирован с LOBLKSIZE %d, но сервер " "скомпилирован с LOBLKSIZE %d." -#: access/transam/xlog.c:4703 +#: access/transam/xlog.c:4740 #, c-format msgid "" "The database cluster was initialized without USE_FLOAT4_BYVAL but the server " @@ -2083,7 +2085,7 @@ "Кластер баз данных был инициализирован без USE_FLOAT4_BYVAL, но сервер " "скомпилирован с USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4710 +#: access/transam/xlog.c:4747 #, c-format msgid "" "The database cluster was initialized with USE_FLOAT4_BYVAL but the server " @@ -2092,7 +2094,7 @@ "Кластер баз данных был инициализирован с USE_FLOAT4_BYVAL, но сервер " "скомпилирован без USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4719 +#: access/transam/xlog.c:4756 #, c-format msgid "" "The database cluster was initialized without USE_FLOAT8_BYVAL but the server " @@ -2101,7 +2103,7 @@ "Кластер баз данных был инициализирован без USE_FLOAT8_BYVAL, но сервер " "скомпилирован с USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4726 +#: access/transam/xlog.c:4763 #, c-format msgid "" "The database cluster was initialized with USE_FLOAT8_BYVAL but the server " @@ -2110,90 +2112,90 @@ "Кластер баз данных был инициализирован с USE_FLOAT8_BYVAL, но сервер был " "скомпилирован без USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:5082 +#: access/transam/xlog.c:5119 #, c-format msgid "could not generate secret authorization token" msgstr "не удалось сгенерировать случайное число для аутентификации" -#: access/transam/xlog.c:5172 +#: access/transam/xlog.c:5209 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "не удалось записать начальный файл журнала предзаписи: %m" -#: access/transam/xlog.c:5180 +#: access/transam/xlog.c:5217 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "не удалось сбросить на диск начальный файл журнала предзаписи: %m" -#: access/transam/xlog.c:5186 +#: access/transam/xlog.c:5223 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "не удалось закрыть начальный файл журнала предзаписи: %m" -#: access/transam/xlog.c:5262 +#: access/transam/xlog.c:5299 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "не удалось открыть файл команд восстановления \"%s\": %m" -#: access/transam/xlog.c:5308 access/transam/xlog.c:5410 +#: access/transam/xlog.c:5345 access/transam/xlog.c:5447 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" msgstr "неверное значение для параметра восстановления \"%s\": \"%s\"" -#: access/transam/xlog.c:5311 +#: access/transam/xlog.c:5348 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "Допустимые значения: \"pause\", \"promote\" и \"shutdown\"." -#: access/transam/xlog.c:5331 +#: access/transam/xlog.c:5368 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" msgstr "recovery_target_timeline не является допустимым числом: \"%s\"" -#: access/transam/xlog.c:5348 +#: access/transam/xlog.c:5385 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" msgstr "recovery_target_xid не является допустимым числом: \"%s\"" -#: access/transam/xlog.c:5379 +#: access/transam/xlog.c:5416 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" msgstr "длина recovery_target_name превышает предел (%d)" -#: access/transam/xlog.c:5413 +#: access/transam/xlog.c:5450 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "Единственное допустимое значение: \"immediate\"." -#: access/transam/xlog.c:5426 access/transam/xlog.c:5437 +#: access/transam/xlog.c:5463 access/transam/xlog.c:5474 #: commands/extension.c:547 commands/extension.c:555 utils/misc/guc.c:5761 #, c-format msgid "parameter \"%s\" requires a Boolean value" msgstr "параметр \"%s\" требует логическое значение" -#: access/transam/xlog.c:5472 +#: access/transam/xlog.c:5509 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "параметр \"%s\" требует временное значение" -#: access/transam/xlog.c:5474 catalog/dependency.c:985 catalog/dependency.c:986 -#: catalog/dependency.c:992 catalog/dependency.c:993 catalog/dependency.c:1004 -#: catalog/dependency.c:1005 commands/tablecmds.c:951 +#: access/transam/xlog.c:5511 catalog/dependency.c:994 catalog/dependency.c:995 +#: catalog/dependency.c:1001 catalog/dependency.c:1002 +#: catalog/dependency.c:1013 catalog/dependency.c:1014 commands/tablecmds.c:951 #: commands/tablecmds.c:10536 commands/user.c:1078 commands/view.c:504 #: libpq/auth.c:329 replication/syncrep.c:1309 storage/lmgr/deadlock.c:1145 #: storage/lmgr/proc.c:1318 utils/adt/acl.c:5331 utils/misc/guc.c:5783 -#: utils/misc/guc.c:5876 utils/misc/guc.c:9906 utils/misc/guc.c:9940 -#: utils/misc/guc.c:9974 utils/misc/guc.c:10008 utils/misc/guc.c:10043 +#: utils/misc/guc.c:5876 utils/misc/guc.c:9915 utils/misc/guc.c:9949 +#: utils/misc/guc.c:9983 utils/misc/guc.c:10026 utils/misc/guc.c:10068 #, c-format msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5481 +#: access/transam/xlog.c:5518 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "нераспознанный параметр восстановления \"%s\"" -#: access/transam/xlog.c:5492 +#: access/transam/xlog.c:5529 #, c-format msgid "" "recovery command file \"%s\" specified neither primary_conninfo nor " @@ -2202,7 +2204,7 @@ "в файле команд восстановления \"%s\" не указан параметр primary_conninfo или " "restore_command" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5531 #, c-format msgid "" "The database server will regularly poll the pg_wal subdirectory to check for " @@ -2211,7 +2213,7 @@ "Сервер БД будет регулярно опрашивать подкаталог pg_wal и проверять " "содержащиеся в нём файлы." -#: access/transam/xlog.c:5501 +#: access/transam/xlog.c:5538 #, c-format msgid "" "recovery command file \"%s\" must specify restore_command when standby mode " @@ -2220,78 +2222,78 @@ "в файле команд восстановления \"%s\" может отсутствовать restore_command, " "только если это резервный сервер" -#: access/transam/xlog.c:5522 +#: access/transam/xlog.c:5559 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "" "режим резервного сервера не поддерживается однопользовательским сервером" -#: access/transam/xlog.c:5541 +#: access/transam/xlog.c:5578 #, c-format msgid "recovery target timeline %u does not exist" msgstr "целевая линия времени для восстановления %u не существует" -#: access/transam/xlog.c:5650 +#: access/transam/xlog.c:5687 #, c-format msgid "archive recovery complete" msgstr "восстановление архива завершено" -#: access/transam/xlog.c:5709 access/transam/xlog.c:5975 +#: access/transam/xlog.c:5746 access/transam/xlog.c:6012 #, c-format msgid "recovery stopping after reaching consistency" msgstr "" "восстановление останавливается после достижения согласованного состояния" -#: access/transam/xlog.c:5730 +#: access/transam/xlog.c:5767 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "восстановление останавливается перед позицией в WAL (LSN) \"%X/%X\"" -#: access/transam/xlog.c:5816 +#: access/transam/xlog.c:5853 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "" "восстановление останавливается перед фиксированием транзакции %u, время %s" -#: access/transam/xlog.c:5823 +#: access/transam/xlog.c:5860 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "" "восстановление останавливается перед прерыванием транзакции %u, время %s" -#: access/transam/xlog.c:5869 +#: access/transam/xlog.c:5906 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "восстановление останавливается в точке восстановления \"%s\", время %s" -#: access/transam/xlog.c:5887 +#: access/transam/xlog.c:5924 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "восстановление останавливается после позиции в WAL (LSN) \"%X/%X\"" -#: access/transam/xlog.c:5955 +#: access/transam/xlog.c:5992 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "" "восстановление останавливается после фиксирования транзакции %u, время %s" -#: access/transam/xlog.c:5963 +#: access/transam/xlog.c:6000 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "" "восстановление останавливается после прерывания транзакции %u, время %s" -#: access/transam/xlog.c:6003 +#: access/transam/xlog.c:6040 #, c-format msgid "recovery has paused" msgstr "восстановление приостановлено" -#: access/transam/xlog.c:6004 +#: access/transam/xlog.c:6041 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "Выполните pg_wal_replay_resume() для продолжения." -#: access/transam/xlog.c:6209 +#: access/transam/xlog.c:6256 #, c-format msgid "" "hot standby is not possible because %s = %d is a lower setting than on the " @@ -2300,12 +2302,12 @@ "режим горячего резерва невозможен, так как параметр %s = %d, меньше чем на " "главном сервере (на нём было значение %d)" -#: access/transam/xlog.c:6235 +#: access/transam/xlog.c:6282 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "WAL был создан с параметром wal_level=minimal, возможна потеря данных" -#: access/transam/xlog.c:6236 +#: access/transam/xlog.c:6283 #, c-format msgid "" "This happens if you temporarily set wal_level=minimal without taking a new " @@ -2314,7 +2316,7 @@ "Это происходит, если вы на время установили wal_level=minimal и не сделали " "резервную копию базу данных." -#: access/transam/xlog.c:6247 +#: access/transam/xlog.c:6294 #, c-format msgid "" "hot standby is not possible because wal_level was not set to \"replica\" or " @@ -2323,7 +2325,7 @@ "режим горячего резерва невозможен, так как на главном сервере установлен " "неподходящий wal_level (должен быть \"replica\" или выше)" -#: access/transam/xlog.c:6248 +#: access/transam/xlog.c:6295 #, c-format msgid "" "Either set wal_level to \"replica\" on the master, or turn off hot_standby " @@ -2332,32 +2334,32 @@ "Либо установите для wal_level значение \"replica\" на главном сервере, либо " "выключите hot_standby здесь." -#: access/transam/xlog.c:6305 +#: access/transam/xlog.c:6352 #, c-format msgid "control file contains invalid data" msgstr "файл pg_control содержит неверные данные" -#: access/transam/xlog.c:6311 +#: access/transam/xlog.c:6358 #, c-format msgid "database system was shut down at %s" msgstr "система БД была выключена: %s" -#: access/transam/xlog.c:6316 +#: access/transam/xlog.c:6363 #, c-format msgid "database system was shut down in recovery at %s" msgstr "система БД была выключена в процессе восстановления: %s" -#: access/transam/xlog.c:6320 +#: access/transam/xlog.c:6367 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "выключение системы БД было прервано; последний момент работы: %s" -#: access/transam/xlog.c:6324 +#: access/transam/xlog.c:6371 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "работа системы БД была прервана во время восстановления: %s" -#: access/transam/xlog.c:6326 +#: access/transam/xlog.c:6373 #, c-format msgid "" "This probably means that some data is corrupted and you will have to use the " @@ -2366,14 +2368,14 @@ "Это скорее всего означает, что некоторые данные повреждены и вам придётся " "восстановить БД из последней резервной копии." -#: access/transam/xlog.c:6330 +#: access/transam/xlog.c:6377 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "" "работа системы БД была прервана в процессе восстановления, время в журнале: " "%s" -#: access/transam/xlog.c:6332 +#: access/transam/xlog.c:6379 #, c-format msgid "" "If this has occurred more than once some data might be corrupted and you " @@ -2382,59 +2384,59 @@ "Если это происходит постоянно, возможно, какие-то данные были испорчены и " "для восстановления стоит выбрать более раннюю точку." -#: access/transam/xlog.c:6336 +#: access/transam/xlog.c:6383 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "работа системы БД была прервана; последний момент работы: %s" -#: access/transam/xlog.c:6392 +#: access/transam/xlog.c:6439 #, c-format msgid "entering standby mode" msgstr "переход в режим резервного сервера" -#: access/transam/xlog.c:6395 +#: access/transam/xlog.c:6442 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "начинается восстановление точки во времени до XID %u" -#: access/transam/xlog.c:6399 +#: access/transam/xlog.c:6446 #, c-format msgid "starting point-in-time recovery to %s" msgstr "начинается восстановление точки во времени до %s" -#: access/transam/xlog.c:6403 +#: access/transam/xlog.c:6450 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "начинается восстановление точки во времени до \"%s\"" -#: access/transam/xlog.c:6407 +#: access/transam/xlog.c:6454 #, c-format msgid "starting point-in-time recovery to WAL location (LSN) \"%X/%X\"" msgstr "" "начинается восстановление точки во времени до позиции в WAL (LSN) \"%X/%X\"" -#: access/transam/xlog.c:6412 +#: access/transam/xlog.c:6459 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "" "начинается восстановление точки во времени до первой точки согласованности" -#: access/transam/xlog.c:6415 +#: access/transam/xlog.c:6462 #, c-format msgid "starting archive recovery" msgstr "начинается восстановление архива" -#: access/transam/xlog.c:6469 access/transam/xlog.c:6597 +#: access/transam/xlog.c:6516 access/transam/xlog.c:6644 #, c-format msgid "checkpoint record is at %X/%X" msgstr "запись о контрольной точке по смещению %X/%X" -#: access/transam/xlog.c:6483 +#: access/transam/xlog.c:6530 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "не удалось найти положение REDO, указанное записью контрольной точки" -#: access/transam/xlog.c:6484 access/transam/xlog.c:6491 +#: access/transam/xlog.c:6531 access/transam/xlog.c:6538 #, c-format msgid "" "If you are not restoring from a backup, try removing the file \"%s/" @@ -2443,47 +2445,47 @@ "Если вы не восстанавливаете БД из резервной копии, попробуйте удалить файл " "\"%s/backup_label\"." -#: access/transam/xlog.c:6490 +#: access/transam/xlog.c:6537 #, c-format msgid "could not locate required checkpoint record" msgstr "не удалось считать нужную запись контрольной точки" -#: access/transam/xlog.c:6516 commands/tablespace.c:639 +#: access/transam/xlog.c:6563 commands/tablespace.c:635 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "не удалось создать символическую ссылку \"%s\": %m" -#: access/transam/xlog.c:6548 access/transam/xlog.c:6554 +#: access/transam/xlog.c:6595 access/transam/xlog.c:6601 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "файл \"%s\" игнорируется ввиду отсутствия файла \"%s\"" -#: access/transam/xlog.c:6550 access/transam/xlog.c:11607 +#: access/transam/xlog.c:6597 access/transam/xlog.c:11769 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Файл \"%s\" был переименован в \"%s\"." -#: access/transam/xlog.c:6556 +#: access/transam/xlog.c:6603 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Не удалось переименовать файл \"%s\" в \"%s\" (%m)." -#: access/transam/xlog.c:6607 access/transam/xlog.c:6622 +#: access/transam/xlog.c:6654 access/transam/xlog.c:6669 #, c-format msgid "could not locate a valid checkpoint record" msgstr "не удалось считать правильную запись контрольной точки" -#: access/transam/xlog.c:6616 +#: access/transam/xlog.c:6663 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "используется предыдущая запись контрольной точки по смещению %X/%X" -#: access/transam/xlog.c:6660 +#: access/transam/xlog.c:6707 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "в истории сервера нет ответвления запрошенной линии времени %u" -#: access/transam/xlog.c:6662 +#: access/transam/xlog.c:6709 #, c-format msgid "" "Latest checkpoint is at %X/%X on timeline %u, but in the history of the " @@ -2492,7 +2494,7 @@ "Последняя контрольная точка: %X/%X на линии времени %u, но в истории " "запрошенной линии времени сервер ответвился с этой линии в %X/%X." -#: access/transam/xlog.c:6678 +#: access/transam/xlog.c:6725 #, c-format msgid "" "requested timeline %u does not contain minimum recovery point %X/%X on " @@ -2501,22 +2503,22 @@ "запрошенная линия времени %u не содержит минимальную точку восстановления %X/" "%X на линии времени %u" -#: access/transam/xlog.c:6709 +#: access/transam/xlog.c:6756 #, c-format msgid "invalid next transaction ID" msgstr "неверный ID следующей транзакции" -#: access/transam/xlog.c:6804 +#: access/transam/xlog.c:6851 #, c-format msgid "invalid redo in checkpoint record" msgstr "неверная запись REDO в контрольной точке" -#: access/transam/xlog.c:6815 +#: access/transam/xlog.c:6862 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "неверная запись REDO в контрольной точке выключения" -#: access/transam/xlog.c:6849 +#: access/transam/xlog.c:6902 #, c-format msgid "" "database system was not properly shut down; automatic recovery in progress" @@ -2524,19 +2526,19 @@ "система БД была остановлена нештатно; производится автоматическое " "восстановление" -#: access/transam/xlog.c:6853 +#: access/transam/xlog.c:6906 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "" "восстановление после сбоя начинается на линии времени %u, целевая линия " "времени: %u" -#: access/transam/xlog.c:6901 +#: access/transam/xlog.c:6954 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label содержит данные, не согласованные с файлом pg_control" -#: access/transam/xlog.c:6902 +#: access/transam/xlog.c:6955 #, c-format msgid "" "This means that the backup is corrupted and you will have to use another " @@ -2545,44 +2547,44 @@ "Это означает, что резервная копия повреждена и для восстановления БД " "придётся использовать другую копию." -#: access/transam/xlog.c:6993 +#: access/transam/xlog.c:7046 #, c-format msgid "initializing for hot standby" msgstr "инициализация для горячего резерва" -#: access/transam/xlog.c:7125 +#: access/transam/xlog.c:7178 #, c-format msgid "redo starts at %X/%X" msgstr "запись REDO начинается со смещения %X/%X" -#: access/transam/xlog.c:7359 +#: access/transam/xlog.c:7412 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "" "запрошенная точка остановки восстановления предшествует согласованной точке " "восстановления" -#: access/transam/xlog.c:7397 +#: access/transam/xlog.c:7450 #, c-format msgid "redo done at %X/%X" msgstr "записи REDO обработаны до смещения %X/%X" -#: access/transam/xlog.c:7402 access/transam/xlog.c:9451 +#: access/transam/xlog.c:7455 access/transam/xlog.c:9583 #, c-format msgid "last completed transaction was at log time %s" msgstr "последняя завершённая транзакция была выполнена в %s" -#: access/transam/xlog.c:7411 +#: access/transam/xlog.c:7464 #, c-format msgid "redo is not required" msgstr "данные REDO не требуются" -#: access/transam/xlog.c:7490 access/transam/xlog.c:7494 +#: access/transam/xlog.c:7548 access/transam/xlog.c:7552 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL закончился без признака окончания копирования" -#: access/transam/xlog.c:7491 +#: access/transam/xlog.c:7549 #, c-format msgid "" "All WAL generated while online backup was taken must be available at " @@ -2591,7 +2593,7 @@ "Все журналы WAL, созданные во время резервного копирования \"на ходу\", " "должны быть в наличии для восстановления." -#: access/transam/xlog.c:7495 +#: access/transam/xlog.c:7553 #, c-format msgid "" "Online backup started with pg_start_backup() must be ended with " @@ -2601,107 +2603,107 @@ "должно закончиться pg_stop_backup(), и для восстановления должны быть " "доступны все журналы WAL." -#: access/transam/xlog.c:7498 +#: access/transam/xlog.c:7556 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL закончился до согласованной точки восстановления" -#: access/transam/xlog.c:7533 +#: access/transam/xlog.c:7591 #, c-format msgid "selected new timeline ID: %u" msgstr "выбранный ID новой линии времени: %u" -#: access/transam/xlog.c:7981 +#: access/transam/xlog.c:8066 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "согласованное состояние восстановления достигнуто по смещению %X/%X" -#: access/transam/xlog.c:8191 +#: access/transam/xlog.c:8276 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "неверная ссылка на первичную контрольную точку в файле pg_control" -#: access/transam/xlog.c:8195 +#: access/transam/xlog.c:8280 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "неверная ссылка на вторичную контрольную точку в файле pg_control" -#: access/transam/xlog.c:8199 +#: access/transam/xlog.c:8284 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "неверная ссылка на контрольную точку в файле backup_label" -#: access/transam/xlog.c:8216 +#: access/transam/xlog.c:8301 #, c-format msgid "invalid primary checkpoint record" msgstr "неверная запись первичной контрольной точки" -#: access/transam/xlog.c:8220 +#: access/transam/xlog.c:8305 #, c-format msgid "invalid secondary checkpoint record" msgstr "неверная запись вторичной контрольной точки" -#: access/transam/xlog.c:8224 +#: access/transam/xlog.c:8309 #, c-format msgid "invalid checkpoint record" msgstr "неверная запись контрольной точки" -#: access/transam/xlog.c:8235 +#: access/transam/xlog.c:8320 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "неверный ID менеджера ресурсов в записи первичной контрольной точки" -#: access/transam/xlog.c:8239 +#: access/transam/xlog.c:8324 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "неверный ID менеджера ресурсов в записи вторичной контрольной точки" -#: access/transam/xlog.c:8243 +#: access/transam/xlog.c:8328 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "неверный ID менеджера ресурсов в записи контрольной точки" -#: access/transam/xlog.c:8256 +#: access/transam/xlog.c:8341 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "неверные флаги xl_info в записи первичной контрольной точки" -#: access/transam/xlog.c:8260 +#: access/transam/xlog.c:8345 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "неверные флаги xl_info в записи вторичной контрольной точки" -#: access/transam/xlog.c:8264 +#: access/transam/xlog.c:8349 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "неверные флаги xl_info в записи контрольной точки" -#: access/transam/xlog.c:8275 +#: access/transam/xlog.c:8360 #, c-format msgid "invalid length of primary checkpoint record" msgstr "неверная длина записи первичной контрольной точки" -#: access/transam/xlog.c:8279 +#: access/transam/xlog.c:8364 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "неверная длина записи вторичной контрольной точки" -#: access/transam/xlog.c:8283 +#: access/transam/xlog.c:8368 #, c-format msgid "invalid length of checkpoint record" msgstr "неверная длина записи контрольной точки" -#: access/transam/xlog.c:8486 +#: access/transam/xlog.c:8571 #, c-format msgid "shutting down" msgstr "выключение" -#: access/transam/xlog.c:8791 +#: access/transam/xlog.c:8876 #, c-format msgid "checkpoint skipped because system is idle" msgstr "контрольная точка пропущена ввиду простоя системы" -#: access/transam/xlog.c:8996 +#: access/transam/xlog.c:9081 #, c-format msgid "" "concurrent write-ahead log activity while database system is shutting down" @@ -2709,29 +2711,29 @@ "во время выключения системы баз данных отмечена активность в журнале " "предзаписи" -#: access/transam/xlog.c:9250 +#: access/transam/xlog.c:9382 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "" "создание точки перезапуска пропускается, восстановление уже закончилось" -#: access/transam/xlog.c:9273 +#: access/transam/xlog.c:9405 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "" "создание точки перезапуска пропускается, она уже создана по смещению %X/%X" -#: access/transam/xlog.c:9449 +#: access/transam/xlog.c:9581 #, c-format msgid "recovery restart point at %X/%X" msgstr "точка перезапуска восстановления по смещению %X/%X" -#: access/transam/xlog.c:9585 +#: access/transam/xlog.c:9717 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "точка восстановления \"%s\" создана по смещению %X/%X" -#: access/transam/xlog.c:9727 +#: access/transam/xlog.c:9859 #, c-format msgid "" "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint " @@ -2740,13 +2742,13 @@ "неожиданный ID предыдущей линии времени %u (ID текущей линии времени %u) в " "записи контрольной точки" -#: access/transam/xlog.c:9736 +#: access/transam/xlog.c:9868 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "неожиданный ID линии времени %u (после %u) в записи контрольной точки" # skip-rule: capital-letter-first -#: access/transam/xlog.c:9752 +#: access/transam/xlog.c:9884 #, c-format msgid "" "unexpected timeline ID %u in checkpoint record, before reaching minimum " @@ -2755,43 +2757,50 @@ "неожиданный ID линии времени %u в записи контрольной точки, до достижения " "минимальной к. т. %X/%X на линии времени %u" -#: access/transam/xlog.c:9828 +#: access/transam/xlog.c:9960 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "" "резервное копирование \"на ходу\" было отменено, продолжить восстановление " "нельзя" -#: access/transam/xlog.c:9886 access/transam/xlog.c:9944 -#: access/transam/xlog.c:9967 +#: access/transam/xlog.c:10018 access/transam/xlog.c:10076 +#: access/transam/xlog.c:10106 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "" "неожиданный ID линии времени %u (должен быть %u) в записи точки " "восстановления" -#: access/transam/xlog.c:10255 +#: access/transam/xlog.c:10264 +#, c-format +msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" +msgstr "" +"успешно пропущена отсутствующая запись contrecord в %X/%X, перезаписанная в " +"%s" + +#: access/transam/xlog.c:10417 #, c-format msgid "could not fsync log segment %s: %m" msgstr "не удалось синхронизировать с ФС сегмент журнала %s: %m" -#: access/transam/xlog.c:10280 +#: access/transam/xlog.c:10442 #, c-format msgid "could not fsync log file %s: %m" msgstr "не удалось синхронизировать с ФС файл журнала %s: %m" -#: access/transam/xlog.c:10288 +#: access/transam/xlog.c:10450 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "не удалось синхронизировать с ФС файл журнала сквозной записи %s: %m" -#: access/transam/xlog.c:10297 +#: access/transam/xlog.c:10459 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "" "не удалось синхронизировать с ФС данные (fdatasync) файла журнала %s: %m" -#: access/transam/xlog.c:10388 access/transam/xlog.c:10913 +#: access/transam/xlog.c:10550 access/transam/xlog.c:11075 #: access/transam/xlogfuncs.c:297 access/transam/xlogfuncs.c:324 #: access/transam/xlogfuncs.c:363 access/transam/xlogfuncs.c:384 #: access/transam/xlogfuncs.c:405 @@ -2799,35 +2808,35 @@ msgid "WAL control functions cannot be executed during recovery." msgstr "Функции управления WAL нельзя использовать в процессе восстановления." -#: access/transam/xlog.c:10397 access/transam/xlog.c:10922 +#: access/transam/xlog.c:10559 access/transam/xlog.c:11084 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "" "Выбранный уровень WAL недостаточен для резервного копирования \"на ходу\"" -#: access/transam/xlog.c:10398 access/transam/xlog.c:10923 +#: access/transam/xlog.c:10560 access/transam/xlog.c:11085 #: access/transam/xlogfuncs.c:330 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "Установите wal_level \"replica\" или \"logical\" при запуске сервера." -#: access/transam/xlog.c:10403 +#: access/transam/xlog.c:10565 #, c-format msgid "backup label too long (max %d bytes)" msgstr "длина метки резервной копии превышает предел (%d байт)" -#: access/transam/xlog.c:10440 access/transam/xlog.c:10713 -#: access/transam/xlog.c:10751 +#: access/transam/xlog.c:10602 access/transam/xlog.c:10875 +#: access/transam/xlog.c:10913 #, c-format msgid "a backup is already in progress" msgstr "резервное копирование уже выполняется" -#: access/transam/xlog.c:10441 +#: access/transam/xlog.c:10603 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Выполните pg_stop_backup() и повторите операцию." -#: access/transam/xlog.c:10536 +#: access/transam/xlog.c:10698 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed since last restartpoint" @@ -2835,7 +2844,7 @@ "После последней точки перезапуска был воспроизведён WAL, созданный в режиме " "full_page_writes=off." -#: access/transam/xlog.c:10538 access/transam/xlog.c:11118 +#: access/transam/xlog.c:10700 access/transam/xlog.c:11280 #, c-format msgid "" "This means that the backup being taken on the standby is corrupt and should " @@ -2847,39 +2856,39 @@ "CHECKPOINT на главном сервере, а затем попробуйте резервное копирование \"на " "ходу\" ещё раз." -#: access/transam/xlog.c:10605 replication/basebackup.c:1114 +#: access/transam/xlog.c:10767 replication/basebackup.c:1114 #: utils/adt/misc.c:511 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "не удалось прочитать символическую ссылку \"%s\": %m" -#: access/transam/xlog.c:10612 replication/basebackup.c:1119 +#: access/transam/xlog.c:10774 replication/basebackup.c:1119 #: utils/adt/misc.c:516 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "целевой путь символической ссылки \"%s\" слишком длинный" -#: access/transam/xlog.c:10665 commands/tablespace.c:389 +#: access/transam/xlog.c:10827 commands/tablespace.c:389 #: commands/tablespace.c:551 replication/basebackup.c:1134 utils/adt/misc.c:524 #, c-format msgid "tablespaces are not supported on this platform" msgstr "табличные пространства не поддерживаются на этой платформе" -#: access/transam/xlog.c:10707 access/transam/xlog.c:10745 -#: access/transam/xlog.c:10961 access/transam/xlogarchive.c:104 +#: access/transam/xlog.c:10869 access/transam/xlog.c:10907 +#: access/transam/xlog.c:11123 access/transam/xlogarchive.c:104 #: access/transam/xlogarchive.c:263 commands/copy.c:1871 commands/copy.c:3208 -#: commands/extension.c:3339 commands/tablespace.c:780 -#: commands/tablespace.c:871 replication/basebackup.c:496 -#: replication/basebackup.c:566 replication/logical/snapbuild.c:1528 +#: commands/extension.c:3347 commands/tablespace.c:776 +#: commands/tablespace.c:867 replication/basebackup.c:496 +#: replication/basebackup.c:566 replication/logical/snapbuild.c:1544 #: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:3018 #: storage/file/fd.c:3110 utils/adt/dbsize.c:70 utils/adt/dbsize.c:227 #: utils/adt/dbsize.c:307 utils/adt/genfile.c:108 utils/adt/genfile.c:327 -#: utils/adt/genfile.c:547 guc-file.l:1059 +#: utils/adt/genfile.c:547 guc-file.l:1061 #, c-format msgid "could not stat file \"%s\": %m" msgstr "не удалось получить информацию о файле \"%s\": %m" -#: access/transam/xlog.c:10714 access/transam/xlog.c:10752 +#: access/transam/xlog.c:10876 access/transam/xlog.c:10914 #, c-format msgid "" "If you're sure there is no backup in progress, remove file \"%s\" and try " @@ -2888,37 +2897,37 @@ "Если вы считаете, что информация о резервном копировании неверна, удалите " "файл \"%s\" и попробуйте снова." -#: access/transam/xlog.c:10731 access/transam/xlog.c:10769 -#: access/transam/xlog.c:11176 postmaster/syslogger.c:1475 +#: access/transam/xlog.c:10893 access/transam/xlog.c:10931 +#: access/transam/xlog.c:11338 postmaster/syslogger.c:1475 #: postmaster/syslogger.c:1488 #, c-format msgid "could not write file \"%s\": %m" msgstr "не удалось записать файл \"%s\": %m" -#: access/transam/xlog.c:10938 +#: access/transam/xlog.c:11100 #, c-format msgid "exclusive backup not in progress" msgstr "монопольное резервное копирование не выполняется" -#: access/transam/xlog.c:10965 +#: access/transam/xlog.c:11127 #, c-format msgid "a backup is not in progress" msgstr "резервное копирование не выполняется" -#: access/transam/xlog.c:11051 access/transam/xlog.c:11064 -#: access/transam/xlog.c:11417 access/transam/xlog.c:11423 -#: access/transam/xlog.c:11507 access/transam/xlogfuncs.c:698 +#: access/transam/xlog.c:11213 access/transam/xlog.c:11226 +#: access/transam/xlog.c:11579 access/transam/xlog.c:11585 +#: access/transam/xlog.c:11669 access/transam/xlogfuncs.c:698 #, c-format msgid "invalid data in file \"%s\"" msgstr "неверные данные в файле \"%s\"" -#: access/transam/xlog.c:11068 replication/basebackup.c:1012 +#: access/transam/xlog.c:11230 replication/basebackup.c:1012 #, c-format msgid "the standby was promoted during online backup" msgstr "" "дежурный сервер был повышен в процессе резервного копирования \"на ходу\"" -#: access/transam/xlog.c:11069 replication/basebackup.c:1013 +#: access/transam/xlog.c:11231 replication/basebackup.c:1013 #, c-format msgid "" "This means that the backup being taken is corrupt and should not be used. " @@ -2927,7 +2936,7 @@ "Это означает, что создаваемая резервная копия испорчена и использовать её не " "следует. Попробуйте резервное копирование \"на ходу\" ещё раз." -#: access/transam/xlog.c:11116 +#: access/transam/xlog.c:11278 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed during online backup" @@ -2935,14 +2944,14 @@ "В процессе резервного копирования \"на ходу\" был воспроизведён WAL, " "созданный в режиме full_page_writes=off" -#: access/transam/xlog.c:11231 +#: access/transam/xlog.c:11393 #, c-format msgid "" "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "" "очистка в pg_stop_backup выполнена, ожидается архивация нужных сегментов WAL" -#: access/transam/xlog.c:11241 +#: access/transam/xlog.c:11403 #, c-format msgid "" "pg_stop_backup still waiting for all required WAL segments to be archived " @@ -2951,7 +2960,7 @@ "pg_stop_backup всё ещё ждёт архивации всех нужных сегментов WAL (прошло %d " "сек.)" -#: access/transam/xlog.c:11243 +#: access/transam/xlog.c:11405 #, c-format msgid "" "Check that your archive_command is executing properly. pg_stop_backup can " @@ -2962,13 +2971,13 @@ "можно отменить безопасно, но резервная копия базы данных будет непригодна " "без всех сегментов WAL." -#: access/transam/xlog.c:11250 +#: access/transam/xlog.c:11412 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "" "команда pg_stop_backup завершена, все требуемые сегменты WAL заархивированы" -#: access/transam/xlog.c:11254 +#: access/transam/xlog.c:11416 #, c-format msgid "" "WAL archiving is not enabled; you must ensure that all required WAL segments " @@ -2978,35 +2987,35 @@ "сегментов WAL другими средствами для получения резервной копии" #. translator: %s is a WAL record description -#: access/transam/xlog.c:11547 +#: access/transam/xlog.c:11709 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "запись REDO в WAL в позиции %X/%X для %s" -#: access/transam/xlog.c:11596 +#: access/transam/xlog.c:11758 #, c-format msgid "online backup mode was not canceled" msgstr "режим копирования \"на ходу\" не был отменён" -#: access/transam/xlog.c:11597 +#: access/transam/xlog.c:11759 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Не удалось переименовать файл \"%s\" в \"%s\": %m." -#: access/transam/xlog.c:11606 access/transam/xlog.c:11618 -#: access/transam/xlog.c:11628 +#: access/transam/xlog.c:11768 access/transam/xlog.c:11780 +#: access/transam/xlog.c:11790 #, c-format msgid "online backup mode canceled" msgstr "режим копирования \"на ходу\" отменён" -#: access/transam/xlog.c:11619 +#: access/transam/xlog.c:11781 #, c-format msgid "" "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "" "Файлы \"%s\" и \"%s\" были переименованы в \"%s\" и \"%s\", соответственно." -#: access/transam/xlog.c:11629 +#: access/transam/xlog.c:11791 #, c-format msgid "" "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to " @@ -3015,28 +3024,28 @@ "Файл \"%s\" был переименован в \"%s\", но переименовать \"%s\" в \"%s\" не " "удалось: %m." -#: access/transam/xlog.c:11753 access/transam/xlogutils.c:726 -#: replication/walreceiver.c:982 replication/walsender.c:2415 +#: access/transam/xlog.c:11915 access/transam/xlogutils.c:726 +#: replication/walreceiver.c:953 replication/walsender.c:2421 #, c-format msgid "could not seek in log segment %s to offset %u: %m" msgstr "не удалось переместиться в сегменте журнала %s к смещению %u: %m" -#: access/transam/xlog.c:11769 +#: access/transam/xlog.c:11931 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "не удалось прочитать сегмент журнала %s, смещение %u: %m" -#: access/transam/xlog.c:12324 +#: access/transam/xlog.c:12497 #, c-format msgid "received promote request" msgstr "получен запрос повышения статуса" -#: access/transam/xlog.c:12337 +#: access/transam/xlog.c:12510 #, c-format msgid "trigger file found: %s" msgstr "найден файл триггера: %s" -#: access/transam/xlog.c:12346 +#: access/transam/xlog.c:12519 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "не удалось получить информацию о файле триггера \"%s\": %m" @@ -3065,7 +3074,7 @@ msgstr "%s \"%s\": %s" #: access/transam/xlogarchive.c:447 postmaster/syslogger.c:1499 -#: replication/logical/snapbuild.c:1668 replication/slot.c:598 +#: replication/logical/snapbuild.c:1684 replication/slot.c:598 #: replication/slot.c:1203 replication/slot.c:1336 storage/file/fd.c:662 #: storage/file/fd.c:757 utils/time/snapmgr.c:1318 #, c-format @@ -3094,8 +3103,8 @@ msgid "a backup is already in progress in this session" msgstr "резервное копирование уже выполняется в этом сеансе" -#: access/transam/xlogfuncs.c:92 commands/tablespace.c:703 -#: commands/tablespace.c:713 postmaster/postmaster.c:1482 +#: access/transam/xlogfuncs.c:92 commands/tablespace.c:699 +#: commands/tablespace.c:709 postmaster/postmaster.c:1482 #: replication/basebackup.c:381 replication/basebackup.c:726 #: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2470 #: storage/file/fd.c:3083 storage/ipc/dsm.c:296 utils/adt/misc.c:427 @@ -3116,11 +3125,11 @@ #: access/transam/xlogfuncs.c:205 commands/event_trigger.c:1493 #: commands/event_trigger.c:2051 commands/extension.c:1915 -#: commands/extension.c:2024 commands/extension.c:2248 commands/prepare.c:721 -#: executor/execExpr.c:2121 executor/execSRF.c:690 executor/functions.c:1029 +#: commands/extension.c:2024 commands/extension.c:2248 commands/prepare.c:725 +#: executor/execExpr.c:2152 executor/execSRF.c:690 executor/functions.c:1029 #: foreign/foreign.c:488 libpq/hba.c:2579 replication/logical/launcher.c:1126 #: replication/logical/logicalfuncs.c:176 replication/logical/origin.c:1467 -#: replication/slotfuncs.c:197 replication/walsender.c:3182 +#: replication/slotfuncs.c:197 replication/walsender.c:3188 #: utils/adt/datetime.c:4796 utils/adt/genfile.c:421 utils/adt/genfile.c:501 #: utils/adt/jsonfuncs.c:1689 utils/adt/jsonfuncs.c:1819 #: utils/adt/jsonfuncs.c:2007 utils/adt/jsonfuncs.c:2134 @@ -3134,10 +3143,10 @@ #: access/transam/xlogfuncs.c:209 commands/event_trigger.c:1497 #: commands/event_trigger.c:2055 commands/extension.c:1919 -#: commands/extension.c:2028 commands/extension.c:2252 commands/prepare.c:725 +#: commands/extension.c:2028 commands/extension.c:2252 commands/prepare.c:729 #: foreign/foreign.c:493 libpq/hba.c:2583 replication/logical/launcher.c:1130 #: replication/logical/logicalfuncs.c:180 replication/logical/origin.c:1471 -#: replication/slotfuncs.c:201 replication/walsender.c:3186 +#: replication/slotfuncs.c:201 replication/walsender.c:3192 #: utils/adt/datetime.c:4800 utils/adt/genfile.c:425 utils/adt/genfile.c:505 #: utils/adt/misc.c:387 utils/adt/pgstatfuncs.c:462 utils/adt/pgstatfuncs.c:563 #: utils/misc/guc.c:8614 utils/misc/pg_config.c:44 utils/mmgr/portalmem.c:1071 @@ -3191,64 +3200,64 @@ "Функции управления восстановлением можно использовать только в процессе " "восстановления." -#: access/transam/xlogreader.c:297 +#: access/transam/xlogreader.c:302 #, c-format msgid "invalid record offset at %X/%X" msgstr "неверное смещение записи: %X/%X" -#: access/transam/xlogreader.c:305 +#: access/transam/xlogreader.c:310 #, c-format msgid "contrecord is requested by %X/%X" msgstr "по смещению %X/%X запрошено продолжение записи" -#: access/transam/xlogreader.c:346 access/transam/xlogreader.c:644 +#: access/transam/xlogreader.c:351 access/transam/xlogreader.c:681 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "неверная длина записи по смещению %X/%X: ожидалось %u, получено %u" -#: access/transam/xlogreader.c:361 +#: access/transam/xlogreader.c:366 #, c-format msgid "record length %u at %X/%X too long" msgstr "длина записи %u по смещению %X/%X слишком велика" -#: access/transam/xlogreader.c:402 +#: access/transam/xlogreader.c:425 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "нет флага contrecord в позиции %X/%X" -#: access/transam/xlogreader.c:415 +#: access/transam/xlogreader.c:438 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "неверная длина contrecord (%u) в позиции %X/%X" -#: access/transam/xlogreader.c:652 +#: access/transam/xlogreader.c:689 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "неверный ID менеджера ресурсов %u по смещению %X/%X" -#: access/transam/xlogreader.c:666 access/transam/xlogreader.c:683 +#: access/transam/xlogreader.c:703 access/transam/xlogreader.c:720 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "запись с неверной ссылкой назад %X/%X по смещению %X/%X" -#: access/transam/xlogreader.c:720 +#: access/transam/xlogreader.c:757 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "" "некорректная контрольная сумма данных менеджера ресурсов в записи по " "смещению %X/%X" -#: access/transam/xlogreader.c:757 +#: access/transam/xlogreader.c:794 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "неверное магическое число %04X в сегменте журнала %s, смещение %u" -#: access/transam/xlogreader.c:771 access/transam/xlogreader.c:822 +#: access/transam/xlogreader.c:808 access/transam/xlogreader.c:859 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "неверные информационные биты %04X в сегменте журнала %s, смещение %u" -#: access/transam/xlogreader.c:797 +#: access/transam/xlogreader.c:834 #, c-format msgid "" "WAL file is from different database system: WAL file database system " @@ -3257,7 +3266,7 @@ "файл WAL принадлежит другой СУБД: в нём указан идентификатор системы БД %s, " "а идентификатор системы pg_control: %s" -#: access/transam/xlogreader.c:804 +#: access/transam/xlogreader.c:841 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page " @@ -3266,7 +3275,7 @@ "файл WAL принадлежит другой СУБД: некорректный XLOG_SEG_SIZE в заголовке " "страницы" -#: access/transam/xlogreader.c:810 +#: access/transam/xlogreader.c:847 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_BLCKSZ in page " @@ -3275,35 +3284,35 @@ "файл WAL принадлежит другой СУБД: некорректный XLOG_BLCKSZ в заголовке " "страницы" -#: access/transam/xlogreader.c:841 +#: access/transam/xlogreader.c:878 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "неожиданный pageaddr %X/%X в сегменте журнала %s, смещение %u" -#: access/transam/xlogreader.c:866 +#: access/transam/xlogreader.c:903 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "" "нарушение последовательности ID линии времени %u (после %u) в сегменте " "журнала %s, смещение %u" -#: access/transam/xlogreader.c:1111 +#: access/transam/xlogreader.c:1148 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "идентификатор блока %u идёт не по порядку в позиции %X/%X" -#: access/transam/xlogreader.c:1134 +#: access/transam/xlogreader.c:1171 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA установлен, но данных в позиции %X/%X нет" -#: access/transam/xlogreader.c:1141 +#: access/transam/xlogreader.c:1178 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "" "BKPBLOCK_HAS_DATA не установлен, но длина данных равна %u в позиции %X/%X" -#: access/transam/xlogreader.c:1177 +#: access/transam/xlogreader.c:1214 #, c-format msgid "" "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at " @@ -3312,21 +3321,21 @@ "BKPIMAGE_HAS_HOLE установлен, но для пропуска заданы смещение %u и длина %u " "при длине образа блока %u в позиции %X/%X" -#: access/transam/xlogreader.c:1193 +#: access/transam/xlogreader.c:1230 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "" "BKPIMAGE_HAS_HOLE не установлен, но для пропуска заданы смещение %u и длина " "%u в позиции %X/%X" -#: access/transam/xlogreader.c:1208 +#: access/transam/xlogreader.c:1245 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "" "BKPIMAGE_IS_COMPRESSED установлен, но длина образа блока равна %u в позиции " "%X/%X" -#: access/transam/xlogreader.c:1223 +#: access/transam/xlogreader.c:1260 #, c-format msgid "" "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image " @@ -3335,39 +3344,39 @@ "ни BKPIMAGE_HAS_HOLE, ни BKPIMAGE_IS_COMPRESSED не установлены, но длина " "образа блока равна %u в позиции %X/%X" -#: access/transam/xlogreader.c:1239 +#: access/transam/xlogreader.c:1276 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "" "BKPBLOCK_SAME_REL установлен, но предыдущее значение не задано в позиции %X/" "%X" -#: access/transam/xlogreader.c:1251 +#: access/transam/xlogreader.c:1288 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "неверный идентификатор блока %u в позиции %X/%X" -#: access/transam/xlogreader.c:1334 +#: access/transam/xlogreader.c:1371 #, c-format msgid "record with invalid length at %X/%X" msgstr "запись с неверной длиной в позиции %X/%X" -#: access/transam/xlogreader.c:1423 +#: access/transam/xlogreader.c:1460 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "неверный сжатый образ в позиции %X/%X, блок %d" -#: access/transam/xlogutils.c:751 replication/walsender.c:2434 +#: access/transam/xlogutils.c:751 replication/walsender.c:2440 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "не удалось прочитать сегмент журнала %s (смещение %u, длина %lu): %m" -#: bootstrap/bootstrap.c:272 postmaster/postmaster.c:843 tcop/postgres.c:3549 +#: bootstrap/bootstrap.c:272 postmaster/postmaster.c:843 tcop/postgres.c:3559 #, c-format msgid "--%s requires a value" msgstr "для --%s требуется значение" -#: bootstrap/bootstrap.c:277 postmaster/postmaster.c:848 tcop/postgres.c:3554 +#: bootstrap/bootstrap.c:277 postmaster/postmaster.c:848 tcop/postgres.c:3564 #, c-format msgid "-c %s requires a value" msgstr "для -c %s требуется значение" @@ -3497,7 +3506,7 @@ #: catalog/aclchk.c:696 catalog/aclchk.c:3929 catalog/aclchk.c:4711 #: catalog/objectaddress.c:928 catalog/pg_largeobject.c:111 -#: storage/large_object/inv_api.c:291 +#: storage/large_object/inv_api.c:293 #, c-format msgid "large object %u does not exist" msgstr "большой объект %u не существует" @@ -3524,12 +3533,12 @@ #: commands/sequence.c:1264 commands/sequence.c:1274 commands/sequence.c:1284 #: commands/sequence.c:1294 commands/sequence.c:1304 commands/sequence.c:1314 #: commands/sequence.c:1324 commands/sequence.c:1334 commands/sequence.c:1344 -#: commands/subscriptioncmds.c:110 commands/subscriptioncmds.c:120 -#: commands/subscriptioncmds.c:130 commands/subscriptioncmds.c:140 -#: commands/subscriptioncmds.c:154 commands/subscriptioncmds.c:165 -#: commands/subscriptioncmds.c:179 commands/tablecmds.c:6043 -#: commands/typecmds.c:298 commands/typecmds.c:1396 commands/typecmds.c:1405 -#: commands/typecmds.c:1413 commands/typecmds.c:1421 commands/typecmds.c:1429 +#: commands/subscriptioncmds.c:111 commands/subscriptioncmds.c:121 +#: commands/subscriptioncmds.c:131 commands/subscriptioncmds.c:141 +#: commands/subscriptioncmds.c:157 commands/subscriptioncmds.c:168 +#: commands/subscriptioncmds.c:182 commands/tablecmds.c:6043 +#: commands/typecmds.c:298 commands/typecmds.c:1398 commands/typecmds.c:1407 +#: commands/typecmds.c:1415 commands/typecmds.c:1423 commands/typecmds.c:1431 #: commands/user.c:134 commands/user.c:148 commands/user.c:157 #: commands/user.c:166 commands/user.c:175 commands/user.c:184 #: commands/user.c:193 commands/user.c:202 commands/user.c:211 @@ -3565,7 +3574,7 @@ #: commands/tablecmds.c:8898 commands/tablecmds.c:9022 #: commands/tablecmds.c:9557 commands/trigger.c:817 parser/analyze.c:2342 #: parser/parse_relation.c:2733 parser/parse_relation.c:2795 -#: parser/parse_target.c:1002 parser/parse_type.c:145 utils/adt/acl.c:2870 +#: parser/parse_target.c:1001 parser/parse_type.c:145 utils/adt/acl.c:2870 #: utils/adt/ruleutils.c:2373 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" @@ -3892,7 +3901,7 @@ msgid "database with OID %u does not exist" msgstr "база данных с OID %u не существует" -#: catalog/aclchk.c:3796 catalog/aclchk.c:4640 tcop/fastpath.c:223 +#: catalog/aclchk.c:3796 catalog/aclchk.c:4640 tcop/fastpath.c:220 #: utils/fmgr/fmgr.c:2117 #, c-format msgid "function with OID %u does not exist" @@ -3903,7 +3912,7 @@ msgid "language with OID %u does not exist" msgstr "язык с OID %u не существует" -#: catalog/aclchk.c:4014 catalog/aclchk.c:4738 +#: catalog/aclchk.c:4014 catalog/aclchk.c:4738 commands/collationcmds.c:533 #, c-format msgid "schema with OID %u does not exist" msgstr "схема с OID %u не существует" @@ -3958,7 +3967,7 @@ msgid "event trigger with OID %u does not exist" msgstr "событийный триггер с OID %u не существует" -#: catalog/aclchk.c:5006 commands/collationcmds.c:348 +#: catalog/aclchk.c:5006 commands/collationcmds.c:367 #, c-format msgid "collation with OID %u does not exist" msgstr "правило сортировки с OID %u не существует" @@ -3973,12 +3982,12 @@ msgid "extension with OID %u does not exist" msgstr "расширение с OID %u не существует" -#: catalog/aclchk.c:5100 commands/publicationcmds.c:733 +#: catalog/aclchk.c:5100 commands/publicationcmds.c:745 #, c-format msgid "publication with OID %u does not exist" msgstr "публикация с OID %u не существует" -#: catalog/aclchk.c:5126 commands/subscriptioncmds.c:1097 +#: catalog/aclchk.c:5126 commands/subscriptioncmds.c:1101 #, c-format msgid "subscription with OID %u does not exist" msgstr "подписка с OID %u не существует" @@ -4003,22 +4012,22 @@ msgid "cannot drop %s because it is required by the database system" msgstr "удалить объект %s нельзя, так как он нужен системе баз данных" -#: catalog/dependency.c:921 +#: catalog/dependency.c:925 #, c-format msgid "drop auto-cascades to %s" msgstr "удаление автоматически распространяется на объект %s" -#: catalog/dependency.c:933 catalog/dependency.c:942 +#: catalog/dependency.c:939 catalog/dependency.c:948 #, c-format msgid "%s depends on %s" msgstr "%s зависит от объекта %s" -#: catalog/dependency.c:954 catalog/dependency.c:963 +#: catalog/dependency.c:963 catalog/dependency.c:972 #, c-format msgid "drop cascades to %s" msgstr "удаление распространяется на объект %s" -#: catalog/dependency.c:971 catalog/pg_shdepend.c:685 +#: catalog/dependency.c:980 catalog/pg_shdepend.c:685 #, c-format msgid "" "\n" @@ -4036,24 +4045,24 @@ "\n" "и ещё %d объектов (см. список в протоколе сервера)" -#: catalog/dependency.c:983 +#: catalog/dependency.c:992 #, c-format msgid "cannot drop %s because other objects depend on it" msgstr "удалить объект %s нельзя, так как от него зависят другие объекты" -#: catalog/dependency.c:987 catalog/dependency.c:994 +#: catalog/dependency.c:996 catalog/dependency.c:1003 #, c-format msgid "Use DROP ... CASCADE to drop the dependent objects too." msgstr "Для удаления зависимых объектов используйте DROP ... CASCADE." -#: catalog/dependency.c:991 +#: catalog/dependency.c:1000 #, c-format msgid "cannot drop desired object(s) because other objects depend on them" msgstr "" "удалить запрошенные объекты нельзя, так как от них зависят другие объекты" #. translator: %d always has a value larger than 1 -#: catalog/dependency.c:1000 +#: catalog/dependency.c:1009 #, c-format msgid "drop cascades to %d other object" msgid_plural "drop cascades to %d other objects" @@ -4061,7 +4070,7 @@ msgstr[1] "удаление распространяется на ещё %d объекта" msgstr[2] "удаление распространяется на ещё %d объектов" -#: catalog/dependency.c:1679 +#: catalog/dependency.c:1688 #, c-format msgid "constant of the type %s cannot be used here" msgstr "константу типа %s здесь использовать нельзя" @@ -4111,9 +4120,9 @@ #: catalog/heap.c:591 commands/createas.c:204 commands/createas.c:501 #: commands/indexcmds.c:1177 commands/tablecmds.c:13584 commands/view.c:105 -#: regex/regc_pg_locale.c:263 utils/adt/formatting.c:1537 -#: utils/adt/formatting.c:1662 utils/adt/formatting.c:1788 utils/adt/like.c:184 -#: utils/adt/selfuncs.c:5652 utils/adt/varlena.c:1417 utils/adt/varlena.c:1854 +#: regex/regc_pg_locale.c:263 utils/adt/formatting.c:1541 +#: utils/adt/formatting.c:1666 utils/adt/formatting.c:1792 utils/adt/like.c:184 +#: utils/adt/selfuncs.c:5679 utils/adt/varlena.c:1417 utils/adt/varlena.c:1854 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." msgstr "Задайте правило сортировки явно в предложении COLLATE." @@ -4124,8 +4133,8 @@ msgstr "отношение \"%s\" уже существует" #: catalog/heap.c:1093 catalog/pg_type.c:418 catalog/pg_type.c:733 -#: commands/typecmds.c:239 commands/typecmds.c:788 commands/typecmds.c:1139 -#: commands/typecmds.c:1371 commands/typecmds.c:2152 +#: commands/typecmds.c:239 commands/typecmds.c:788 commands/typecmds.c:1141 +#: commands/typecmds.c:1373 commands/typecmds.c:2154 #, c-format msgid "type \"%s\" already exists" msgstr "тип \"%s\" уже существует" @@ -4192,14 +4201,14 @@ msgid "cannot use column references in default expression" msgstr "в выражении по умолчанию нельзя ссылаться на столбцы" -#: catalog/heap.c:2681 rewrite/rewriteHandler.c:1164 +#: catalog/heap.c:2681 rewrite/rewriteHandler.c:1187 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "столбец \"%s\" имеет тип %s, но тип выражения по умолчанию %s" -#: catalog/heap.c:2686 commands/prepare.c:384 parser/parse_node.c:430 -#: parser/parse_target.c:590 parser/parse_target.c:840 -#: parser/parse_target.c:850 rewrite/rewriteHandler.c:1169 +#: catalog/heap.c:2686 commands/prepare.c:388 parser/parse_node.c:430 +#: parser/parse_target.c:589 parser/parse_target.c:839 +#: parser/parse_target.c:849 rewrite/rewriteHandler.c:1192 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Перепишите выражение или преобразуйте его тип." @@ -4238,7 +4247,7 @@ msgstr "" "Опустошите таблицу \"%s\" параллельно или используйте TRUNCATE ... CASCADE." -#: catalog/index.c:214 parser/parse_utilcmd.c:1993 +#: catalog/index.c:214 parser/parse_utilcmd.c:2003 #, c-format msgid "multiple primary keys for table \"%s\" are not allowed" msgstr "таблица \"%s\" не может иметь несколько первичных ключей" @@ -4288,12 +4297,12 @@ msgid "building index \"%s\" on table \"%s\"" msgstr "создание индекса \"%s\" для таблицы \"%s\"" -#: catalog/index.c:3451 +#: catalog/index.c:3440 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "переиндексировать временные таблицы других сеансов нельзя" -#: catalog/index.c:3574 +#: catalog/index.c:3563 #, c-format msgid "index \"%s\" was reindexed" msgstr "индекс \"%s\" был перестроен" @@ -4377,12 +4386,12 @@ msgid "text search configuration \"%s\" does not exist" msgstr "конфигурация текстового поиска \"%s\" не существует" -#: catalog/namespace.c:2809 parser/parse_expr.c:789 parser/parse_target.c:1192 +#: catalog/namespace.c:2809 parser/parse_expr.c:789 parser/parse_target.c:1191 #, c-format msgid "cross-database references are not implemented: %s" msgstr "ссылки между базами не реализованы: %s" -#: catalog/namespace.c:2815 parser/parse_expr.c:796 parser/parse_target.c:1199 +#: catalog/namespace.c:2815 parser/parse_expr.c:796 parser/parse_target.c:1198 #: gram.y:14337 gram.y:15758 #, c-format msgid "improper qualified name (too many dotted names): %s" @@ -4434,17 +4443,16 @@ msgid "cannot create temporary tables during a parallel operation" msgstr "создавать временные таблицы во время параллельных операций нельзя" -#: catalog/namespace.c:4133 commands/tablespace.c:1171 commands/variable.c:64 -#: utils/misc/guc.c:10075 utils/misc/guc.c:10153 +#: catalog/namespace.c:4133 commands/tablespace.c:1167 commands/variable.c:64 +#: utils/misc/guc.c:10100 utils/misc/guc.c:10178 #, c-format msgid "List syntax is invalid." msgstr "Ошибка синтаксиса в списке." #: catalog/objectaddress.c:1237 catalog/pg_publication.c:66 -#: commands/lockcmds.c:95 commands/policy.c:94 commands/policy.c:372 -#: commands/policy.c:462 commands/tablecmds.c:225 commands/tablecmds.c:267 -#: commands/tablecmds.c:1548 commands/tablecmds.c:4778 -#: commands/tablecmds.c:8833 +#: commands/lockcmds.c:95 commands/policy.c:95 commands/policy.c:373 +#: commands/tablecmds.c:225 commands/tablecmds.c:267 commands/tablecmds.c:1548 +#: commands/tablecmds.c:4778 commands/tablecmds.c:8833 #, c-format msgid "\"%s\" is not a table" msgstr "\"%s\" - это не таблица" @@ -4484,7 +4492,7 @@ "значение по умолчанию для столбца \"%s\" отношения \"%s\" не существует" #: catalog/objectaddress.c:1508 commands/functioncmds.c:128 -#: commands/tablecmds.c:253 commands/typecmds.c:3295 parser/parse_type.c:244 +#: commands/tablecmds.c:253 commands/typecmds.c:3302 parser/parse_type.c:244 #: parser/parse_type.c:273 parser/parse_type.c:812 utils/adt/acl.c:4436 #, c-format msgid "type \"%s\" does not exist" @@ -4573,7 +4581,7 @@ msgid "argument list length must be exactly %d" msgstr "длина списка аргументов должна быть равна %d" -#: catalog/objectaddress.c:2342 libpq/be-fsstubs.c:350 +#: catalog/objectaddress.c:2342 libpq/be-fsstubs.c:346 #, c-format msgid "must be owner of large object %u" msgstr "нужно быть владельцем большого объекта %u" @@ -4593,77 +4601,77 @@ msgid "must have CREATEROLE privilege" msgstr "требуется право CREATEROLE" -#: catalog/objectaddress.c:2493 +#: catalog/objectaddress.c:2494 #, c-format msgid "unrecognized object type \"%s\"" msgstr "нераспознанный тип объекта \"%s\"" -#: catalog/objectaddress.c:2688 +#: catalog/objectaddress.c:2689 #, c-format msgid " column %s" msgstr " столбец %s" -#: catalog/objectaddress.c:2694 +#: catalog/objectaddress.c:2695 #, c-format msgid "function %s" msgstr "функция %s" -#: catalog/objectaddress.c:2699 +#: catalog/objectaddress.c:2700 #, c-format msgid "type %s" msgstr "тип %s" -#: catalog/objectaddress.c:2729 +#: catalog/objectaddress.c:2730 #, c-format msgid "cast from %s to %s" msgstr "приведение %s к %s" -#: catalog/objectaddress.c:2757 +#: catalog/objectaddress.c:2758 #, c-format msgid "collation %s" msgstr "правило сортировки %s" -#: catalog/objectaddress.c:2782 +#: catalog/objectaddress.c:2783 #, c-format msgid "constraint %s on %s" msgstr "ограничение %s в отношении %s" -#: catalog/objectaddress.c:2788 +#: catalog/objectaddress.c:2789 #, c-format msgid "constraint %s" msgstr "ограничение %s" -#: catalog/objectaddress.c:2815 +#: catalog/objectaddress.c:2816 #, c-format msgid "conversion %s" msgstr "преобразование %s" -#: catalog/objectaddress.c:2853 +#: catalog/objectaddress.c:2854 #, c-format msgid "default for %s" msgstr "значение по умолчанию, %s" -#: catalog/objectaddress.c:2862 +#: catalog/objectaddress.c:2863 #, c-format msgid "language %s" msgstr "язык %s" -#: catalog/objectaddress.c:2867 +#: catalog/objectaddress.c:2868 #, c-format msgid "large object %u" msgstr "большой объект %u" -#: catalog/objectaddress.c:2872 +#: catalog/objectaddress.c:2873 #, c-format msgid "operator %s" msgstr "оператор %s" -#: catalog/objectaddress.c:2904 +#: catalog/objectaddress.c:2905 #, c-format msgid "operator class %s for access method %s" msgstr "класс операторов %s для метода доступа %s" -#: catalog/objectaddress.c:2927 +#: catalog/objectaddress.c:2928 #, c-format msgid "access method %s" msgstr "метод доступа %s" @@ -4672,7 +4680,7 @@ #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2970 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "оператор %d (%s, %s) из семейства \"%s\": %s" @@ -4681,199 +4689,199 @@ #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:3019 +#: catalog/objectaddress.c:3020 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "функция %d (%s, %s) из семейства \"%s\": %s" -#: catalog/objectaddress.c:3059 +#: catalog/objectaddress.c:3060 #, c-format msgid "rule %s on " msgstr "правило %s для отношения: " -#: catalog/objectaddress.c:3094 +#: catalog/objectaddress.c:3095 #, c-format msgid "trigger %s on " msgstr "триггер %s в отношении: " -#: catalog/objectaddress.c:3111 +#: catalog/objectaddress.c:3112 #, c-format msgid "schema %s" msgstr "схема %s" -#: catalog/objectaddress.c:3134 +#: catalog/objectaddress.c:3135 #, c-format msgid "statistics object %s" msgstr "объект статистики %s" -#: catalog/objectaddress.c:3161 +#: catalog/objectaddress.c:3162 #, c-format msgid "text search parser %s" msgstr "анализатор текстового поиска %s" -#: catalog/objectaddress.c:3187 +#: catalog/objectaddress.c:3188 #, c-format msgid "text search dictionary %s" msgstr "словарь текстового поиска %s" -#: catalog/objectaddress.c:3213 +#: catalog/objectaddress.c:3214 #, c-format msgid "text search template %s" msgstr "шаблон текстового поиска %s" -#: catalog/objectaddress.c:3239 +#: catalog/objectaddress.c:3240 #, c-format msgid "text search configuration %s" msgstr "конфигурация текстового поиска %s" -#: catalog/objectaddress.c:3248 +#: catalog/objectaddress.c:3249 #, c-format msgid "role %s" msgstr "роль %s" -#: catalog/objectaddress.c:3261 +#: catalog/objectaddress.c:3262 #, c-format msgid "database %s" msgstr "база данных %s" -#: catalog/objectaddress.c:3273 +#: catalog/objectaddress.c:3274 #, c-format msgid "tablespace %s" msgstr "табличное пространство %s" -#: catalog/objectaddress.c:3282 +#: catalog/objectaddress.c:3283 #, c-format msgid "foreign-data wrapper %s" msgstr "обёртка сторонних данных %s" -#: catalog/objectaddress.c:3291 +#: catalog/objectaddress.c:3292 #, c-format msgid "server %s" msgstr "сервер %s" -#: catalog/objectaddress.c:3319 +#: catalog/objectaddress.c:3320 #, c-format msgid "user mapping for %s on server %s" msgstr "сопоставление для пользователя %s на сервере %s" -#: catalog/objectaddress.c:3354 +#: catalog/objectaddress.c:3355 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "права по умолчанию для новых отношений, принадлежащих роли %s" -#: catalog/objectaddress.c:3359 +#: catalog/objectaddress.c:3360 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "" "права по умолчанию для новых последовательностей, принадлежащих роли %s" -#: catalog/objectaddress.c:3364 +#: catalog/objectaddress.c:3365 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "права по умолчанию для новых функций, принадлежащих роли %s" -#: catalog/objectaddress.c:3369 +#: catalog/objectaddress.c:3370 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "права по умолчанию для новых типов, принадлежащих роли %s" -#: catalog/objectaddress.c:3374 +#: catalog/objectaddress.c:3375 #, c-format msgid "default privileges on new schemas belonging to role %s" msgstr "права по умолчанию для новых схем, принадлежащих роли %s" -#: catalog/objectaddress.c:3380 +#: catalog/objectaddress.c:3381 #, c-format msgid "default privileges belonging to role %s" msgstr "права по умолчанию для новых объектов, принадлежащих роли %s" -#: catalog/objectaddress.c:3388 +#: catalog/objectaddress.c:3389 #, c-format msgid " in schema %s" msgstr " в схеме %s" -#: catalog/objectaddress.c:3405 +#: catalog/objectaddress.c:3406 #, c-format msgid "extension %s" msgstr "расширение %s" -#: catalog/objectaddress.c:3418 +#: catalog/objectaddress.c:3419 #, c-format msgid "event trigger %s" msgstr "событийный триггер %s" -#: catalog/objectaddress.c:3450 +#: catalog/objectaddress.c:3451 #, c-format msgid "policy %s on " msgstr "политика %s отношения " -#: catalog/objectaddress.c:3461 +#: catalog/objectaddress.c:3462 #, c-format msgid "publication %s" msgstr "публикация %s" #. translator: first %s is, e.g., "table %s" -#: catalog/objectaddress.c:3486 +#: catalog/objectaddress.c:3487 #, c-format msgid "publication of %s in publication %s" msgstr "публикуемое отношение %s в публикации %s" -#: catalog/objectaddress.c:3495 +#: catalog/objectaddress.c:3496 #, c-format msgid "subscription %s" msgstr "подписка %s" -#: catalog/objectaddress.c:3513 +#: catalog/objectaddress.c:3514 #, c-format msgid "transform for %s language %s" msgstr "преобразование для %s, языка %s" -#: catalog/objectaddress.c:3576 +#: catalog/objectaddress.c:3577 #, c-format msgid "table %s" msgstr "таблица %s" -#: catalog/objectaddress.c:3580 +#: catalog/objectaddress.c:3581 #, c-format msgid "index %s" msgstr "индекс %s" -#: catalog/objectaddress.c:3584 +#: catalog/objectaddress.c:3585 #, c-format msgid "sequence %s" msgstr "последовательность %s" -#: catalog/objectaddress.c:3588 +#: catalog/objectaddress.c:3589 #, c-format msgid "toast table %s" msgstr "TOAST-таблица %s" -#: catalog/objectaddress.c:3592 +#: catalog/objectaddress.c:3593 #, c-format msgid "view %s" msgstr "представление %s" -#: catalog/objectaddress.c:3596 +#: catalog/objectaddress.c:3597 #, c-format msgid "materialized view %s" msgstr "материализованное представление %s" -#: catalog/objectaddress.c:3600 +#: catalog/objectaddress.c:3601 #, c-format msgid "composite type %s" msgstr "составной тип %s" -#: catalog/objectaddress.c:3604 +#: catalog/objectaddress.c:3605 #, c-format msgid "foreign table %s" msgstr "сторонняя таблица %s" -#: catalog/objectaddress.c:3609 +#: catalog/objectaddress.c:3610 #, c-format msgid "relation %s" msgstr "отношение %s" -#: catalog/objectaddress.c:3646 +#: catalog/objectaddress.c:3647 #, c-format msgid "operator family %s for access method %s" msgstr "семейство операторов %s для метода доступа %s" @@ -4895,10 +4903,10 @@ #: catalog/partition.c:942 catalog/partition.c:1135 commands/analyze.c:1486 #: commands/copy.c:2562 commands/tablecmds.c:8924 -#: executor/execExprInterp.c:2853 executor/execMain.c:1916 +#: executor/execExprInterp.c:2866 executor/execMain.c:1916 #: executor/execMain.c:1996 executor/execMain.c:2046 executor/execMain.c:2158 -#: executor/execMain.c:3386 executor/nodeModifyTable.c:1437 -#: parser/parse_utilcmd.c:1236 +#: executor/execMain.c:3392 executor/nodeModifyTable.c:1437 +#: parser/parse_utilcmd.c:1246 msgid "could not convert row type" msgstr "не удалось преобразовать тип строки" @@ -5039,10 +5047,10 @@ "оператор сортировки можно указать только для агрегатных функций с одним " "аргументом" -#: catalog/pg_aggregate.c:817 commands/typecmds.c:1736 commands/typecmds.c:1787 -#: commands/typecmds.c:1826 commands/typecmds.c:1849 commands/typecmds.c:1870 -#: commands/typecmds.c:1897 commands/typecmds.c:1924 commands/typecmds.c:2001 -#: commands/typecmds.c:2043 parser/parse_func.c:369 parser/parse_func.c:398 +#: catalog/pg_aggregate.c:817 commands/typecmds.c:1738 commands/typecmds.c:1789 +#: commands/typecmds.c:1828 commands/typecmds.c:1851 commands/typecmds.c:1872 +#: commands/typecmds.c:1899 commands/typecmds.c:1926 commands/typecmds.c:2003 +#: commands/typecmds.c:2045 parser/parse_func.c:369 parser/parse_func.c:398 #: parser/parse_func.c:423 parser/parse_func.c:437 parser/parse_func.c:512 #: parser/parse_func.c:523 parser/parse_func.c:1988 #, c-format @@ -5122,7 +5130,7 @@ msgid "default conversion for %s to %s already exists" msgstr "преобразование по умолчанию из %s в %s уже существует" -#: catalog/pg_depend.c:163 commands/extension.c:3238 +#: catalog/pg_depend.c:163 commands/extension.c:3246 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "%s уже относится к расширению \"%s\"" @@ -5397,7 +5405,7 @@ msgstr "отношение \"%s\" уже включено в публикацию \"%s\"" #: catalog/pg_publication.c:402 catalog/pg_publication.c:423 -#: commands/publicationcmds.c:401 commands/publicationcmds.c:702 +#: commands/publicationcmds.c:406 commands/publicationcmds.c:714 #, c-format msgid "publication \"%s\" does not exist" msgstr "публикация \"%s\" не существует" @@ -5435,23 +5443,23 @@ msgid "database %u was concurrently dropped" msgstr "база данных %u удалена другим процессом" -#: catalog/pg_shdepend.c:1077 +#: catalog/pg_shdepend.c:1083 #, c-format msgid "owner of %s" msgstr "владелец объекта %s" -#: catalog/pg_shdepend.c:1079 +#: catalog/pg_shdepend.c:1085 #, c-format msgid "privileges for %s" msgstr "права доступа к объекту %s" -#: catalog/pg_shdepend.c:1081 +#: catalog/pg_shdepend.c:1087 #, c-format msgid "target of %s" msgstr "субъект политики %s" #. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1089 +#: catalog/pg_shdepend.c:1095 #, c-format msgid "%d object in %s" msgid_plural "%d objects in %s" @@ -5459,7 +5467,7 @@ msgstr[1] "%d объекта (%s)" msgstr[2] "%d объектов (%s)" -#: catalog/pg_shdepend.c:1200 +#: catalog/pg_shdepend.c:1206 #, c-format msgid "" "cannot drop objects owned by %s because they are required by the database " @@ -5468,7 +5476,7 @@ "удалить объекты, принадлежащие роли %s, нельзя, так как они нужны системе " "баз данных" -#: catalog/pg_shdepend.c:1337 +#: catalog/pg_shdepend.c:1343 #, c-format msgid "" "cannot reassign ownership of objects owned by %s because they are required " @@ -5477,8 +5485,8 @@ "изменить владельца объектов, принадлежащих роли %s, нельзя, так как они " "нужны системе баз данных" -#: catalog/pg_subscription.c:176 commands/subscriptioncmds.c:633 -#: commands/subscriptioncmds.c:843 commands/subscriptioncmds.c:1066 +#: catalog/pg_subscription.c:176 commands/subscriptioncmds.c:637 +#: commands/subscriptioncmds.c:847 commands/subscriptioncmds.c:1070 #, c-format msgid "subscription \"%s\" does not exist" msgstr "подписка \"%s\" не существует" @@ -5648,7 +5656,7 @@ msgid "publication \"%s\" already exists" msgstr "публикация \"%s\" уже существует" -#: commands/alter.c:99 commands/subscriptioncmds.c:358 +#: commands/alter.c:99 commands/subscriptioncmds.c:361 #, c-format msgid "subscription \"%s\" already exists" msgstr "подписка \"%s\" уже существует" @@ -5961,7 +5969,7 @@ #: commands/collationcmds.c:173 #, c-format msgid "unrecognized collation provider: %s" -msgstr "нераспознанный поставщик правил сортировки: %s" +msgstr "нераспознанный провайдер правил сортировки: %s" #: commands/collationcmds.c:182 #, c-format @@ -5973,44 +5981,49 @@ msgid "parameter \"lc_ctype\" must be specified" msgstr "необходимо указать параметр \"lc_ctype\"" -#: commands/collationcmds.c:246 +#: commands/collationcmds.c:208 +#, c-format +msgid "current database's encoding is not supported with this provider" +msgstr "кодировка текущей БД не поддерживается данным провайдером" + +#: commands/collationcmds.c:265 #, c-format msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" msgstr "" "правило сортировки \"%s\" для кодировки \"%s\" уже существует в схеме \"%s\"" -#: commands/collationcmds.c:257 +#: commands/collationcmds.c:276 #, c-format msgid "collation \"%s\" already exists in schema \"%s\"" msgstr "правило сортировки \"%s\" уже существует в схеме \"%s\"" -#: commands/collationcmds.c:305 +#: commands/collationcmds.c:324 #, c-format msgid "changing version from %s to %s" msgstr "изменение версии с %s на %s" -#: commands/collationcmds.c:320 +#: commands/collationcmds.c:339 #, c-format msgid "version has not changed" msgstr "версия не была изменена" -#: commands/collationcmds.c:451 +#: commands/collationcmds.c:470 #, c-format msgid "could not convert locale name \"%s\" to language tag: %s" msgstr "не удалось получить из названия локали \"%s\" метку языка: %s" -#: commands/collationcmds.c:512 +#: commands/collationcmds.c:528 #, c-format msgid "must be superuser to import system collations" msgstr "" "импортировать системные правила сортировки может только суперпользователь" -#: commands/collationcmds.c:535 commands/copy.c:1825 commands/copy.c:3183 +#: commands/collationcmds.c:556 commands/copy.c:1825 commands/copy.c:3183 #, c-format msgid "could not execute command \"%s\": %m" msgstr "не удалось выполнить команду \"%s\": %m" -#: commands/collationcmds.c:666 +#: commands/collationcmds.c:687 #, c-format msgid "no usable system locales were found" msgstr "пригодные системные локали не найдены" @@ -6024,7 +6037,7 @@ msgid "database \"%s\" does not exist" msgstr "база данных \"%s\" не существует" -#: commands/comment.c:101 commands/seclabel.c:117 parser/parse_utilcmd.c:983 +#: commands/comment.c:101 commands/seclabel.c:117 parser/parse_utilcmd.c:993 #, c-format msgid "" "\"%s\" is not a table, view, materialized view, composite type, or foreign " @@ -6620,7 +6633,7 @@ msgstr "столбец \"%s\" не существует" #: commands/copy.c:4847 commands/tablecmds.c:1743 commands/trigger.c:826 -#: parser/parse_target.c:1018 parser/parse_target.c:1029 +#: parser/parse_target.c:1017 parser/parse_target.c:1028 #, c-format msgid "column \"%s\" specified more than once" msgstr "столбец \"%s\" указан неоднократно" @@ -6865,7 +6878,6 @@ #: commands/dbcommands.c:1355 commands/dbcommands.c:1900 #: commands/dbcommands.c:2104 commands/dbcommands.c:2159 -#: commands/tablespace.c:604 #, c-format msgid "some useless files may be left behind in old database directory \"%s\"" msgstr "в старом каталоге базы данных \"%s\" могли остаться ненужные файлы" @@ -7258,7 +7270,7 @@ #: commands/extension.c:564 #, c-format msgid "\"%s\" is not a valid encoding name" -msgstr "неверное имя кодировки %s" +msgstr "\"%s\" не является верным названием кодировки" #: commands/extension.c:578 #, c-format @@ -7424,7 +7436,7 @@ msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "версия \"%s\" расширения \"%s\" уже установлена" -#: commands/extension.c:3250 +#: commands/extension.c:3258 #, c-format msgid "" "cannot add schema \"%s\" to extension \"%s\" because the schema contains the " @@ -7433,12 +7445,12 @@ "добавить схему \"%s\" к расширению \"%s\" нельзя, так как схема содержит " "расширение" -#: commands/extension.c:3278 +#: commands/extension.c:3286 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "%s не относится к расширению \"%s\"" -#: commands/extension.c:3344 +#: commands/extension.c:3352 #, c-format msgid "file \"%s\" is too large" msgstr "файл \"%s\" слишком большой" @@ -7794,22 +7806,22 @@ #: commands/functioncmds.c:1569 #, c-format msgid "source and target data types are not physically compatible" -msgstr "исходный и целевой типы данных не совместимы физически" +msgstr "исходный и целевой типы данных несовместимы физически" #: commands/functioncmds.c:1584 #, c-format msgid "composite data types are not binary-compatible" -msgstr "составные типы данных не совместимы на двоичном уровне" +msgstr "составные типы данных несовместимы на двоичном уровне" #: commands/functioncmds.c:1590 #, c-format msgid "enum data types are not binary-compatible" -msgstr "типы-перечисления не совместимы на двоичном уровне" +msgstr "типы-перечисления несовместимы на двоичном уровне" #: commands/functioncmds.c:1596 #, c-format msgid "array data types are not binary-compatible" -msgstr "типы-массивы не совместимы на двоичном уровне" +msgstr "типы-массивы несовместимы на двоичном уровне" #: commands/functioncmds.c:1613 #, c-format @@ -7972,7 +7984,7 @@ msgid "functions in index predicate must be marked IMMUTABLE" msgstr "функции в предикате индекса должны быть помечены как IMMUTABLE" -#: commands/indexcmds.c:1093 parser/parse_utilcmd.c:2312 +#: commands/indexcmds.c:1093 parser/parse_utilcmd.c:2322 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "указанный в ключе столбец \"%s\" не существует" @@ -7988,7 +8000,7 @@ msgstr "не удалось определить правило сортировки для индексного выражения" #: commands/indexcmds.c:1184 commands/tablecmds.c:13591 commands/typecmds.c:831 -#: parser/parse_expr.c:2763 parser/parse_type.c:567 parser/parse_utilcmd.c:3366 +#: parser/parse_expr.c:2763 parser/parse_type.c:567 parser/parse_utilcmd.c:3376 #: utils/adt/misc.c:675 #, c-format msgid "collations are not supported by type %s" @@ -8030,7 +8042,7 @@ msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "метод доступа \"%s\" не поддерживает параметр NULLS FIRST/LAST" -#: commands/indexcmds.c:1352 commands/typecmds.c:1974 +#: commands/indexcmds.c:1352 commands/typecmds.c:1976 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "" @@ -8052,7 +8064,7 @@ msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "класс операторов \"%s\" для метода доступа \"%s\" не существует" -#: commands/indexcmds.c:1404 commands/typecmds.c:1962 +#: commands/indexcmds.c:1404 commands/typecmds.c:1964 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "класс операторов \"%s\" не принимает тип данных %s" @@ -8104,7 +8116,7 @@ "Создайте уникальный индекс без предложения WHERE для одного или нескольких " "столбцов материализованного представления." -#: commands/matview.c:645 +#: commands/matview.c:652 #, c-format msgid "" "new data for materialized view \"%s\" contains duplicate rows without any " @@ -8113,7 +8125,7 @@ "новые данные для материализованного представления \"%s\" содержат " "дублирующиеся строки (без учёта столбцов с NULL)" -#: commands/matview.c:647 +#: commands/matview.c:654 #, c-format msgid "Row: %s" msgstr "Строка: %s" @@ -8337,8 +8349,8 @@ msgid "operator attribute \"%s\" cannot be changed" msgstr "атрибут оператора \"%s\" нельзя изменить" -#: commands/policy.c:87 commands/policy.c:378 commands/policy.c:468 -#: commands/statscmds.c:132 commands/tablecmds.c:1171 commands/tablecmds.c:1561 +#: commands/policy.c:88 commands/policy.c:379 commands/statscmds.c:132 +#: commands/tablecmds.c:1171 commands/tablecmds.c:1561 #: commands/tablecmds.c:2562 commands/tablecmds.c:4760 #: commands/tablecmds.c:7125 commands/tablecmds.c:13219 #: commands/tablecmds.c:13254 commands/trigger.c:259 commands/trigger.c:1320 @@ -8348,42 +8360,37 @@ msgid "permission denied: \"%s\" is a system catalog" msgstr "доступ запрещён: \"%s\" - это системный каталог" -#: commands/policy.c:170 +#: commands/policy.c:171 #, c-format msgid "ignoring specified roles other than PUBLIC" msgstr "все указанные роли, кроме PUBLIC, игнорируются" -#: commands/policy.c:171 +#: commands/policy.c:172 #, c-format msgid "All roles are members of the PUBLIC role." msgstr "Роль PUBLIC включает в себя все остальные роли." -#: commands/policy.c:492 -#, c-format -msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" -msgstr "роль \"%s\" нельзя удалить из политики \"%s\" отношения \"%s\"" - -#: commands/policy.c:698 +#: commands/policy.c:604 #, c-format msgid "WITH CHECK cannot be applied to SELECT or DELETE" msgstr "WITH CHECK нельзя применить к SELECT или DELETE" -#: commands/policy.c:707 commands/policy.c:1005 +#: commands/policy.c:613 commands/policy.c:911 #, c-format msgid "only WITH CHECK expression allowed for INSERT" msgstr "для INSERT допускается только выражение WITH CHECK" -#: commands/policy.c:780 commands/policy.c:1225 +#: commands/policy.c:686 commands/policy.c:1131 #, c-format msgid "policy \"%s\" for table \"%s\" already exists" msgstr "политика \"%s\" для таблицы \"%s\" уже существует" -#: commands/policy.c:977 commands/policy.c:1253 commands/policy.c:1325 +#: commands/policy.c:883 commands/policy.c:1159 commands/policy.c:1231 #, c-format msgid "policy \"%s\" for table \"%s\" does not exist" msgstr "политика \"%s\" для таблицы \"%s\" не существует" -#: commands/policy.c:995 +#: commands/policy.c:901 #, c-format msgid "only USING expression allowed for SELECT, DELETE" msgstr "для SELECT, DELETE допускается только выражение USING" @@ -8422,34 +8429,34 @@ msgstr "служебные SQL-операторы нельзя подготовить" # [SM]: TO REVIEW -#: commands/prepare.c:269 commands/prepare.c:274 +#: commands/prepare.c:280 commands/prepare.c:285 #, c-format msgid "prepared statement is not a SELECT" msgstr "подготовленный оператор - не SELECT" -#: commands/prepare.c:342 +#: commands/prepare.c:346 #, c-format msgid "wrong number of parameters for prepared statement \"%s\"" msgstr "неверное число параметров для подготовленного оператора \"%s\"" -#: commands/prepare.c:344 +#: commands/prepare.c:348 #, c-format msgid "Expected %d parameters but got %d." msgstr "Ожидалось параметров: %d, получено: %d." -#: commands/prepare.c:380 +#: commands/prepare.c:384 #, c-format msgid "parameter $%d of type %s cannot be coerced to the expected type %s" msgstr "параметр $%d типа %s нельзя привести к ожидаемому типу %s" # [SM]: TO REVIEW -#: commands/prepare.c:474 +#: commands/prepare.c:478 #, c-format msgid "prepared statement \"%s\" already exists" msgstr "подготовленный оператор \"%s\" уже существует" # [SM]: TO REVIEW -#: commands/prepare.c:513 +#: commands/prepare.c:517 #, c-format msgid "prepared statement \"%s\" does not exist" msgstr "подготовленный оператор \"%s\" не существует" @@ -8508,27 +8515,27 @@ msgid "must be superuser to create FOR ALL TABLES publication" msgstr "для создания публикации всех таблиц нужно быть суперпользователем" -#: commands/publicationcmds.c:321 +#: commands/publicationcmds.c:326 #, c-format msgid "publication \"%s\" is defined as FOR ALL TABLES" msgstr "публикация \"%s\" определена для всех таблиц (FOR ALL TABLES)" -#: commands/publicationcmds.c:323 +#: commands/publicationcmds.c:328 #, c-format msgid "Tables cannot be added to or dropped from FOR ALL TABLES publications." msgstr "В публикации всех таблиц нельзя добавлять или удалять таблицы." -#: commands/publicationcmds.c:624 +#: commands/publicationcmds.c:636 #, c-format msgid "relation \"%s\" is not part of the publication" msgstr "отношение \"%s\" не включено в публикацию" -#: commands/publicationcmds.c:667 +#: commands/publicationcmds.c:679 #, c-format msgid "permission denied to change owner of publication \"%s\"" msgstr "нет прав на изменение владельца публикации \"%s\"" -#: commands/publicationcmds.c:669 +#: commands/publicationcmds.c:681 #, c-format msgid "The owner of a FOR ALL TABLES publication must be a superuser." msgstr "" @@ -8765,75 +8772,75 @@ msgid "unrecognized statistics kind \"%s\"" msgstr "нераспознанный вид статистики \"%s\"" -#: commands/subscriptioncmds.c:187 +#: commands/subscriptioncmds.c:190 #, c-format msgid "unrecognized subscription parameter: %s" msgstr "нераспознанный параметр подписки: \"%s\"" -#: commands/subscriptioncmds.c:200 +#: commands/subscriptioncmds.c:203 #, c-format msgid "connect = false and enabled = true are mutually exclusive options" msgstr "указания connect = false и enabled = true являются взаимоисключающими" -#: commands/subscriptioncmds.c:205 +#: commands/subscriptioncmds.c:208 #, c-format msgid "connect = false and create_slot = true are mutually exclusive options" msgstr "" "указания connect = false и create_slot = true являются взаимоисключающими" -#: commands/subscriptioncmds.c:210 +#: commands/subscriptioncmds.c:213 #, c-format msgid "connect = false and copy_data = true are mutually exclusive options" msgstr "" "указания connect = false и copy_data = true являются взаимоисключающими" -#: commands/subscriptioncmds.c:227 +#: commands/subscriptioncmds.c:230 #, c-format msgid "slot_name = NONE and enabled = true are mutually exclusive options" msgstr "указания slot_name = NONE и enabled = true являются взаимоисключающими" -#: commands/subscriptioncmds.c:232 +#: commands/subscriptioncmds.c:235 #, c-format msgid "slot_name = NONE and create_slot = true are mutually exclusive options" msgstr "" "указания slot_name = NONE и create_slot = true являются взаимоисключающими" -#: commands/subscriptioncmds.c:237 +#: commands/subscriptioncmds.c:240 #, c-format msgid "subscription with slot_name = NONE must also set enabled = false" msgstr "" "для подписки с параметром slot_name = NONE необходимо также задать enabled = " "false" -#: commands/subscriptioncmds.c:242 +#: commands/subscriptioncmds.c:245 #, c-format msgid "subscription with slot_name = NONE must also set create_slot = false" msgstr "" "для подписки с параметром slot_name = NONE необходимо также задать " "create_slot = false" -#: commands/subscriptioncmds.c:284 +#: commands/subscriptioncmds.c:287 #, c-format msgid "publication name \"%s\" used more than once" msgstr "имя публикации \"%s\" используется неоднократно" -#: commands/subscriptioncmds.c:347 +#: commands/subscriptioncmds.c:350 #, c-format msgid "must be superuser to create subscriptions" msgstr "для создания подписок нужно быть суперпользователем" -#: commands/subscriptioncmds.c:427 commands/subscriptioncmds.c:520 -#: replication/logical/tablesync.c:856 replication/logical/worker.c:1689 +#: commands/subscriptioncmds.c:430 commands/subscriptioncmds.c:524 +#: replication/logical/tablesync.c:859 replication/logical/worker.c:1675 #, c-format msgid "could not connect to the publisher: %s" msgstr "не удалось подключиться к серверу публикации: %s" -#: commands/subscriptioncmds.c:469 +#: commands/subscriptioncmds.c:472 #, c-format msgid "created replication slot \"%s\" on publisher" msgstr "на сервере публикации создан слот репликации \"%s\"" -#: commands/subscriptioncmds.c:486 +#: commands/subscriptioncmds.c:489 #, c-format msgid "" "tables were not subscribed, you will have to run ALTER SUBSCRIPTION ... " @@ -8842,51 +8849,51 @@ "в подписке отсутствуют таблицы, потребуется выполнить ALTER SUBSCRIPTION ... " "REFRESH PUBLICATION, чтобы подписаться на таблицы" -#: commands/subscriptioncmds.c:576 +#: commands/subscriptioncmds.c:580 #, c-format msgid "table \"%s.%s\" added to subscription \"%s\"" msgstr "таблица \"%s.%s\" добавлена в подписку \"%s\"" -#: commands/subscriptioncmds.c:600 +#: commands/subscriptioncmds.c:604 #, c-format msgid "table \"%s.%s\" removed from subscription \"%s\"" msgstr "таблица \"%s.%s\" удалена из подписки \"%s\"" -#: commands/subscriptioncmds.c:669 +#: commands/subscriptioncmds.c:673 #, c-format msgid "cannot set slot_name = NONE for enabled subscription" msgstr "для включённой подписки нельзя задать slot_name = NONE" -#: commands/subscriptioncmds.c:703 +#: commands/subscriptioncmds.c:707 #, c-format msgid "cannot enable subscription that does not have a slot name" msgstr "включить подписку, для которой не задано имя слота, нельзя" -#: commands/subscriptioncmds.c:749 +#: commands/subscriptioncmds.c:753 #, c-format msgid "" "ALTER SUBSCRIPTION with refresh is not allowed for disabled subscriptions" msgstr "" "ALTER SUBSCRIPTION с обновлением для отключённых подписок не допускается" -#: commands/subscriptioncmds.c:750 +#: commands/subscriptioncmds.c:754 #, c-format msgid "Use ALTER SUBSCRIPTION ... SET PUBLICATION ... WITH (refresh = false)." msgstr "" "Выполните ALTER SUBSCRIPTION ... SET PUBLICATION ... WITH (refresh = false)." -#: commands/subscriptioncmds.c:768 +#: commands/subscriptioncmds.c:772 #, c-format msgid "" "ALTER SUBSCRIPTION ... REFRESH is not allowed for disabled subscriptions" msgstr "ALTER SUBSCRIPTION ... REFRESH для отключённых подписок не допускается" -#: commands/subscriptioncmds.c:847 +#: commands/subscriptioncmds.c:851 #, c-format msgid "subscription \"%s\" does not exist, skipping" msgstr "подписка \"%s\" не существует, пропускается" -#: commands/subscriptioncmds.c:971 +#: commands/subscriptioncmds.c:975 #, c-format msgid "" "could not connect to publisher when attempting to drop the replication slot " @@ -8895,13 +8902,13 @@ "не удалось подключиться к серверу публикации для удаления слота репликации " "\"%s\"" -#: commands/subscriptioncmds.c:973 commands/subscriptioncmds.c:987 -#: replication/logical/tablesync.c:906 replication/logical/tablesync.c:928 +#: commands/subscriptioncmds.c:977 commands/subscriptioncmds.c:991 +#: replication/logical/tablesync.c:909 replication/logical/tablesync.c:931 #, c-format msgid "The error was: %s" msgstr "Произошла ошибка: %s" -#: commands/subscriptioncmds.c:974 +#: commands/subscriptioncmds.c:978 #, c-format msgid "" "Use ALTER SUBSCRIPTION ... SET (slot_name = NONE) to disassociate the " @@ -8910,27 +8917,27 @@ "Воспользуйтесь ALTER SUBSCRIPTION ... SET (slot_name = NONE), чтобы отвязать " "подписку от слота." -#: commands/subscriptioncmds.c:985 +#: commands/subscriptioncmds.c:989 #, c-format msgid "could not drop the replication slot \"%s\" on publisher" msgstr "слот репликации \"%s\" на сервере публикации не был удалён" -#: commands/subscriptioncmds.c:990 +#: commands/subscriptioncmds.c:994 #, c-format msgid "dropped replication slot \"%s\" on publisher" msgstr "слот репликации \"%s\" удалён на сервере репликации" -#: commands/subscriptioncmds.c:1031 +#: commands/subscriptioncmds.c:1035 #, c-format msgid "permission denied to change owner of subscription \"%s\"" msgstr "нет прав на изменение владельца подписки \"%s\"" -#: commands/subscriptioncmds.c:1033 +#: commands/subscriptioncmds.c:1037 #, c-format msgid "The owner of a subscription must be a superuser." msgstr "Владельцем подписки должен быть суперпользователь." -#: commands/subscriptioncmds.c:1146 +#: commands/subscriptioncmds.c:1150 #, c-format msgid "could not receive list of replicated tables from the publisher: %s" msgstr "" @@ -8994,7 +9001,7 @@ "Выполните DROP MATERIALIZED VIEW для удаления материализованного " "представления." -#: commands/tablecmds.c:247 parser/parse_utilcmd.c:2064 +#: commands/tablecmds.c:247 parser/parse_utilcmd.c:2074 #, c-format msgid "index \"%s\" does not exist" msgstr "индекс \"%s\" не существует" @@ -9049,7 +9056,7 @@ msgid "cannot create table with OIDs as partition of table without OIDs" msgstr "создать таблицу с OID в виде секции таблицы без OID нельзя" -#: commands/tablecmds.c:788 parser/parse_utilcmd.c:3533 +#: commands/tablecmds.c:788 parser/parse_utilcmd.c:3543 #, c-format msgid "\"%s\" is not partitioned" msgstr "отношение \"%s\" не является секционированным" @@ -9103,7 +9110,7 @@ msgid "cannot inherit from partition \"%s\"" msgstr "наследование от секции \"%s\" не допускается" -#: commands/tablecmds.c:1825 parser/parse_utilcmd.c:2275 +#: commands/tablecmds.c:1825 parser/parse_utilcmd.c:2285 #, c-format msgid "inherited relation \"%s\" is not a table or foreign table" msgstr "" @@ -9144,9 +9151,9 @@ #: commands/tablecmds.c:1931 commands/tablecmds.c:1954 #: commands/tablecmds.c:2159 commands/tablecmds.c:2189 -#: parser/parse_coerce.c:1650 parser/parse_coerce.c:1670 -#: parser/parse_coerce.c:1690 parser/parse_coerce.c:1736 -#: parser/parse_coerce.c:1775 parser/parse_param.c:218 +#: parser/parse_coerce.c:1669 parser/parse_coerce.c:1689 +#: parser/parse_coerce.c:1709 parser/parse_coerce.c:1755 +#: parser/parse_coerce.c:1794 parser/parse_param.c:218 #, c-format msgid "%s versus %s" msgstr "%s и %s" @@ -9168,13 +9175,13 @@ msgstr "конфликт параметров хранения в наследованном столбце \"%s\"" #: commands/tablecmds.c:2065 commands/tablecmds.c:8933 -#: parser/parse_utilcmd.c:1270 parser/parse_utilcmd.c:1649 -#: parser/parse_utilcmd.c:1725 +#: parser/parse_utilcmd.c:1280 parser/parse_utilcmd.c:1659 +#: parser/parse_utilcmd.c:1735 #, c-format msgid "cannot convert whole-row table reference" msgstr "преобразовать ссылку на тип всей строки таблицы нельзя" -#: commands/tablecmds.c:2066 parser/parse_utilcmd.c:1271 +#: commands/tablecmds.c:2066 parser/parse_utilcmd.c:1281 #, c-format msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." msgstr "Ограничение \"%s\" ссылается на тип всей строки в таблице \"%s\"." @@ -9931,7 +9938,7 @@ msgid "no matching relations in tablespace \"%s\" found" msgstr "в табличном пространстве \"%s\" не найдены подходящие отношения" -#: commands/tablecmds.c:11016 storage/buffer/bufmgr.c:915 +#: commands/tablecmds.c:11016 storage/buffer/bufmgr.c:924 #, c-format msgid "invalid page in block %u of relation %s" msgstr "неверная страница в блоке %u отношения %s" @@ -10340,17 +10347,17 @@ #: commands/tablespace.c:162 commands/tablespace.c:179 #: commands/tablespace.c:190 commands/tablespace.c:198 -#: commands/tablespace.c:623 replication/slot.c:1191 storage/file/copydir.c:47 +#: commands/tablespace.c:609 replication/slot.c:1191 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" msgstr "не удалось создать каталог \"%s\": %m" -#: commands/tablespace.c:209 +#: commands/tablespace.c:209 commands/tablespace.c:604 #, c-format msgid "could not stat directory \"%s\": %m" msgstr "не удалось получить информацию о каталоге \"%s\": %m" -#: commands/tablespace.c:218 +#: commands/tablespace.c:218 commands/tablespace.c:615 #, c-format msgid "\"%s\" exists but is not a directory" msgstr "\"%s\" существует, но это не каталог" @@ -10385,24 +10392,24 @@ msgid "tablespace location should not be inside the data directory" msgstr "табличное пространство не должно располагаться внутри каталога данных" -#: commands/tablespace.c:304 commands/tablespace.c:950 +#: commands/tablespace.c:304 commands/tablespace.c:946 #, c-format msgid "unacceptable tablespace name \"%s\"" msgstr "неприемлемое имя табличного пространства: \"%s\"" -#: commands/tablespace.c:306 commands/tablespace.c:951 +#: commands/tablespace.c:306 commands/tablespace.c:947 #, c-format msgid "The prefix \"pg_\" is reserved for system tablespaces." msgstr "Префикс \"pg_\" зарезервирован для системных табличных пространств." -#: commands/tablespace.c:316 commands/tablespace.c:963 +#: commands/tablespace.c:316 commands/tablespace.c:959 #, c-format msgid "tablespace \"%s\" already exists" msgstr "табличное пространство \"%s\" уже существует" -#: commands/tablespace.c:428 commands/tablespace.c:933 -#: commands/tablespace.c:1013 commands/tablespace.c:1082 -#: commands/tablespace.c:1218 commands/tablespace.c:1421 +#: commands/tablespace.c:428 commands/tablespace.c:929 +#: commands/tablespace.c:1009 commands/tablespace.c:1078 +#: commands/tablespace.c:1214 commands/tablespace.c:1417 #, c-format msgid "tablespace \"%s\" does not exist" msgstr "табличное пространство \"%s\" не существует" @@ -10433,38 +10440,38 @@ msgid "could not set permissions on directory \"%s\": %m" msgstr "не удалось установить права для каталога \"%s\": %m" -#: commands/tablespace.c:618 +#: commands/tablespace.c:620 #, c-format msgid "directory \"%s\" already in use as a tablespace" msgstr "каталог \"%s\" уже используется как табличное пространство" -#: commands/tablespace.c:742 commands/tablespace.c:755 -#: commands/tablespace.c:791 commands/tablespace.c:883 +#: commands/tablespace.c:738 commands/tablespace.c:751 +#: commands/tablespace.c:787 commands/tablespace.c:879 #, c-format msgid "could not remove directory \"%s\": %m" msgstr "ошибка при удалении каталога \"%s\": %m" -#: commands/tablespace.c:804 commands/tablespace.c:892 +#: commands/tablespace.c:800 commands/tablespace.c:888 #, c-format msgid "could not remove symbolic link \"%s\": %m" msgstr "ошибка при удалении символической ссылки \"%s\": %m" -#: commands/tablespace.c:814 commands/tablespace.c:901 +#: commands/tablespace.c:810 commands/tablespace.c:897 #, c-format msgid "\"%s\" is not a directory or symbolic link" msgstr "\"%s\" - это не каталог или символическая ссылка" -#: commands/tablespace.c:1087 +#: commands/tablespace.c:1083 #, c-format msgid "Tablespace \"%s\" does not exist." msgstr "Табличное пространство \"%s\" не существует." -#: commands/tablespace.c:1520 +#: commands/tablespace.c:1516 #, c-format msgid "directories for tablespace %u could not be removed" msgstr "удалить каталоги табличного пространства %u не удалось" -#: commands/tablespace.c:1522 +#: commands/tablespace.c:1518 #, c-format msgid "You can remove the directories manually if necessary." msgstr "При необходимости вы можете удалить их вручную." @@ -10708,7 +10715,7 @@ "Возможно, для распространения изменений в другие строки следует использовать " "триггер AFTER вместо BEFORE." -#: commands/trigger.c:3070 executor/execMain.c:2713 executor/nodeLockRows.c:220 +#: commands/trigger.c:3070 executor/execMain.c:2719 executor/nodeLockRows.c:220 #: executor/nodeModifyTable.c:218 executor/nodeModifyTable.c:717 #: executor/nodeModifyTable.c:1012 executor/nodeModifyTable.c:1181 #, c-format @@ -10833,7 +10840,7 @@ msgid "must be superuser to create a base type" msgstr "для создания базового типа нужно быть суперпользователем" -#: commands/typecmds.c:290 commands/typecmds.c:1435 +#: commands/typecmds.c:290 commands/typecmds.c:1437 #, c-format msgid "type attribute \"%s\" not recognized" msgstr "атрибут типа \"%s\" не распознан" @@ -10937,101 +10944,101 @@ msgid "multiple default expressions" msgstr "неоднократное определение значения типа по умолчанию" -#: commands/typecmds.c:959 commands/typecmds.c:968 +#: commands/typecmds.c:961 commands/typecmds.c:970 #, c-format msgid "conflicting NULL/NOT NULL constraints" msgstr "конфликтующие ограничения NULL/NOT NULL" -#: commands/typecmds.c:984 +#: commands/typecmds.c:986 #, c-format msgid "check constraints for domains cannot be marked NO INHERIT" msgstr "" "ограничения-проверки для доменов не могут иметь характеристики NO INHERIT" -#: commands/typecmds.c:993 commands/typecmds.c:2559 +#: commands/typecmds.c:995 commands/typecmds.c:2561 #, c-format msgid "unique constraints not possible for domains" msgstr "ограничения уникальности невозможны для доменов" -#: commands/typecmds.c:999 commands/typecmds.c:2565 +#: commands/typecmds.c:1001 commands/typecmds.c:2567 #, c-format msgid "primary key constraints not possible for domains" msgstr "ограничения первичного ключа невозможны для доменов" -#: commands/typecmds.c:1005 commands/typecmds.c:2571 +#: commands/typecmds.c:1007 commands/typecmds.c:2573 #, c-format msgid "exclusion constraints not possible for domains" msgstr "ограничения-исключения невозможны для доменов" -#: commands/typecmds.c:1011 commands/typecmds.c:2577 +#: commands/typecmds.c:1013 commands/typecmds.c:2579 #, c-format msgid "foreign key constraints not possible for domains" msgstr "ограничения внешних ключей невозможны для доменов" -#: commands/typecmds.c:1020 commands/typecmds.c:2586 +#: commands/typecmds.c:1022 commands/typecmds.c:2588 #, c-format msgid "specifying constraint deferrability not supported for domains" msgstr "" "возможность определения отложенных ограничений для доменов не поддерживается" -#: commands/typecmds.c:1305 utils/cache/typcache.c:1698 +#: commands/typecmds.c:1307 utils/cache/typcache.c:1698 #, c-format msgid "%s is not an enum" msgstr "\"%s\" не является перечислением" -#: commands/typecmds.c:1443 +#: commands/typecmds.c:1445 #, c-format msgid "type attribute \"subtype\" is required" msgstr "требуется атрибут типа \"subtype\"" -#: commands/typecmds.c:1448 +#: commands/typecmds.c:1450 #, c-format msgid "range subtype cannot be %s" msgstr "%s не может быть подтипом диапазона" -#: commands/typecmds.c:1467 +#: commands/typecmds.c:1469 #, c-format msgid "range collation specified but subtype does not support collation" msgstr "" "указано правило сортировки для диапазона, но подтип не поддерживает " "сортировку" -#: commands/typecmds.c:1700 +#: commands/typecmds.c:1702 #, c-format msgid "type input function %s has multiple matches" msgstr "функция ввода типа %s присутствует в нескольких экземплярах" -#: commands/typecmds.c:1718 +#: commands/typecmds.c:1720 #, c-format msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" msgstr "изменение типа аргумента функции %s с \"opaque\" на \"cstring\"" -#: commands/typecmds.c:1769 +#: commands/typecmds.c:1771 #, c-format msgid "changing argument type of function %s from \"opaque\" to %s" msgstr "изменение типа аргумента функции %s с \"opaque\" на %s" -#: commands/typecmds.c:1816 +#: commands/typecmds.c:1818 #, c-format msgid "type receive function %s has multiple matches" msgstr "функция получения типа %s присутствует в нескольких экземплярах" -#: commands/typecmds.c:1876 +#: commands/typecmds.c:1878 #, c-format msgid "typmod_in function %s must return type %s" msgstr "функция TYPMOD_IN %s должна возвращать тип %s" -#: commands/typecmds.c:1903 +#: commands/typecmds.c:1905 #, c-format msgid "typmod_out function %s must return type %s" msgstr "функция TYPMOD_OUT %s должна возвращать тип %s" -#: commands/typecmds.c:1930 +#: commands/typecmds.c:1932 #, c-format msgid "type analyze function %s must return type %s" msgstr "функция анализа типа %s должна возвращать тип %s" -#: commands/typecmds.c:1976 +#: commands/typecmds.c:1978 #, c-format msgid "" "You must specify an operator class for the range type or define a default " @@ -11040,101 +11047,101 @@ "Вы должны указать класс операторов для типа диапазона или определить класс " "операторов по умолчанию для этого подтипа." -#: commands/typecmds.c:2007 +#: commands/typecmds.c:2009 #, c-format msgid "range canonical function %s must return range type" msgstr "" "функция получения канонического диапазона %s должна возвращать диапазон" -#: commands/typecmds.c:2013 +#: commands/typecmds.c:2015 #, c-format msgid "range canonical function %s must be immutable" msgstr "" "функция получения канонического диапазона %s должна быть постоянной " "(IMMUTABLE)" -#: commands/typecmds.c:2049 +#: commands/typecmds.c:2051 #, c-format msgid "range subtype diff function %s must return type %s" msgstr "функция различий для подтипа диапазона (%s) должна возвращать тип %s" -#: commands/typecmds.c:2056 +#: commands/typecmds.c:2058 #, c-format msgid "range subtype diff function %s must be immutable" msgstr "" "функция различий для подтипа диапазона (%s) должна быть постоянной " "(IMMUTABLE)" -#: commands/typecmds.c:2083 +#: commands/typecmds.c:2085 #, c-format msgid "pg_type array OID value not set when in binary upgrade mode" msgstr "значение OID массива в pg_type не задано в режиме двоичного обновления" -#: commands/typecmds.c:2387 +#: commands/typecmds.c:2389 #, c-format msgid "column \"%s\" of table \"%s\" contains null values" msgstr "столбец \"%s\" таблицы \"%s\" содержит значения NULL" -#: commands/typecmds.c:2500 commands/typecmds.c:2683 +#: commands/typecmds.c:2502 commands/typecmds.c:2685 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist" msgstr "ограничение \"%s\" для домена \"%s\" не существует" -#: commands/typecmds.c:2504 +#: commands/typecmds.c:2506 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping" msgstr "ограничение \"%s\" для домена \"%s\" не существует, пропускается" -#: commands/typecmds.c:2689 +#: commands/typecmds.c:2691 #, c-format msgid "constraint \"%s\" of domain \"%s\" is not a check constraint" msgstr "" "ограничение \"%s\" для домена \"%s\" не является ограничением-проверкой" -#: commands/typecmds.c:2794 +#: commands/typecmds.c:2796 #, c-format msgid "" "column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "" "столбец \"%s\" таблицы \"%s\" содержит значения, нарушающие новое ограничение" -#: commands/typecmds.c:3022 commands/typecmds.c:3227 commands/typecmds.c:3309 -#: commands/typecmds.c:3496 +#: commands/typecmds.c:3024 commands/typecmds.c:3234 commands/typecmds.c:3316 +#: commands/typecmds.c:3503 #, c-format msgid "%s is not a domain" msgstr "\"%s\" - это не домен" -#: commands/typecmds.c:3056 +#: commands/typecmds.c:3058 #, c-format msgid "constraint \"%s\" for domain \"%s\" already exists" msgstr "ограничение \"%s\" для домена \"%s\" уже существует" -#: commands/typecmds.c:3107 +#: commands/typecmds.c:3114 #, c-format msgid "cannot use table references in domain check constraint" msgstr "в ограничении-проверке для домена нельзя ссылаться на таблицы" -#: commands/typecmds.c:3239 commands/typecmds.c:3321 commands/typecmds.c:3613 +#: commands/typecmds.c:3246 commands/typecmds.c:3328 commands/typecmds.c:3620 #, c-format msgid "%s is a table's row type" msgstr "%s - это тип строк таблицы" -#: commands/typecmds.c:3241 commands/typecmds.c:3323 commands/typecmds.c:3615 +#: commands/typecmds.c:3248 commands/typecmds.c:3330 commands/typecmds.c:3622 #, c-format msgid "Use ALTER TABLE instead." msgstr "Изменить его можно с помощью ALTER TABLE." -#: commands/typecmds.c:3248 commands/typecmds.c:3330 commands/typecmds.c:3528 +#: commands/typecmds.c:3255 commands/typecmds.c:3337 commands/typecmds.c:3535 #, c-format msgid "cannot alter array type %s" msgstr "изменить тип массива \"%s\" нельзя" -#: commands/typecmds.c:3250 commands/typecmds.c:3332 commands/typecmds.c:3530 +#: commands/typecmds.c:3257 commands/typecmds.c:3339 commands/typecmds.c:3537 #, c-format msgid "You can alter type %s, which will alter the array type as well." msgstr "Однако можно изменить тип %s, что повлечёт изменение типа массива." -#: commands/typecmds.c:3598 +#: commands/typecmds.c:3605 #, c-format msgid "type \"%s\" already exists in schema \"%s\"" msgstr "тип \"%s\" уже существует в схеме \"%s\"" @@ -11222,9 +11229,10 @@ msgid "cannot use special role specifier in DROP ROLE" msgstr "использовать специальную роль в DROP ROLE нельзя" -#: commands/user.c:1023 commands/user.c:1180 commands/variable.c:822 -#: commands/variable.c:894 utils/adt/acl.c:5187 utils/adt/acl.c:5234 -#: utils/adt/acl.c:5262 utils/adt/acl.c:5280 utils/init/miscinit.c:512 +#: commands/user.c:1023 commands/user.c:1180 commands/variable.c:830 +#: commands/variable.c:833 commands/variable.c:915 commands/variable.c:918 +#: utils/adt/acl.c:5187 utils/adt/acl.c:5234 utils/adt/acl.c:5262 +#: utils/adt/acl.c:5280 utils/init/miscinit.c:512 #, c-format msgid "role \"%s\" does not exist" msgstr "роль \"%s\" не существует" @@ -11539,7 +11547,7 @@ msgid "\"%s\": suspending truncate due to conflicting lock request" msgstr "\"%s\": приостановка усечения из-за конфликтующего запроса блокировки" -#: commands/variable.c:165 utils/misc/guc.c:10115 utils/misc/guc.c:10177 +#: commands/variable.c:165 utils/misc/guc.c:10140 utils/misc/guc.c:10202 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "нераспознанное ключевое слово: \"%s\"." @@ -11644,7 +11652,12 @@ msgid "cannot change client_encoding during a parallel operation" msgstr "изменить клиентскую кодировку во время параллельной операции нельзя" -#: commands/variable.c:912 +#: commands/variable.c:939 +#, c-format +msgid "permission will be denied to set role \"%s\"" +msgstr "нет прав установить роль \"%s\"" + +#: commands/variable.c:944 #, c-format msgid "permission denied to set role \"%s\"" msgstr "нет прав установить роль \"%s\"" @@ -11739,7 +11752,7 @@ msgstr "" "для курсора \"%s\" не выполняется обновляемое сканирование таблицы \"%s\"" -#: executor/execCurrent.c:277 executor/execExprInterp.c:1889 +#: executor/execCurrent.c:277 executor/execExprInterp.c:1898 #, c-format msgid "" "type of parameter %d (%s) does not match that when preparing the plan (%s)" @@ -11747,27 +11760,27 @@ "тип параметра %d (%s) не соответствует тому, с которым подготавливался план " "(%s)" -#: executor/execCurrent.c:289 executor/execExprInterp.c:1901 +#: executor/execCurrent.c:289 executor/execExprInterp.c:1910 #, c-format msgid "no value found for parameter %d" msgstr "не найдено значение параметра %d" -#: executor/execExpr.c:780 parser/parse_agg.c:779 +#: executor/execExpr.c:811 parser/parse_agg.c:772 #, c-format msgid "window function calls cannot be nested" msgstr "вложенные вызовы оконных функций недопустимы" -#: executor/execExpr.c:1236 +#: executor/execExpr.c:1267 #, c-format msgid "target type is not an array" msgstr "целевой тип не является массивом" -#: executor/execExpr.c:1559 +#: executor/execExpr.c:1590 #, c-format msgid "ROW() column has type %s instead of type %s" msgstr "столбец ROW() имеет тип %s, а должен - %s" -#: executor/execExpr.c:2094 executor/execSRF.c:672 parser/parse_func.c:120 +#: executor/execExpr.c:2125 executor/execSRF.c:672 parser/parse_func.c:120 #: parser/parse_func.c:547 parser/parse_func.c:921 #, c-format msgid "cannot pass more than %d argument to a function" @@ -11776,41 +11789,41 @@ msgstr[1] "функции нельзя передать больше %d аргументов" msgstr[2] "функции нельзя передать больше %d аргументов" -#: executor/execExpr.c:2371 executor/execExpr.c:2377 -#: executor/execExprInterp.c:2226 utils/adt/arrayfuncs.c:260 -#: utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1300 -#: utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5251 -#: utils/adt/arrayfuncs.c:5768 +#: executor/execExpr.c:2402 executor/execExpr.c:2408 +#: executor/execExprInterp.c:2235 utils/adt/arrayfuncs.c:260 +#: utils/adt/arrayfuncs.c:560 utils/adt/arrayfuncs.c:1302 +#: utils/adt/arrayfuncs.c:3373 utils/adt/arrayfuncs.c:5253 +#: utils/adt/arrayfuncs.c:5774 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "число размерностей массива (%d) превышает предел (%d)" -#: executor/execExprInterp.c:1561 +#: executor/execExprInterp.c:1566 #, c-format msgid "attribute %d of type %s has been dropped" msgstr "атрибут %d типа %s был удалён" -#: executor/execExprInterp.c:1567 +#: executor/execExprInterp.c:1572 #, c-format msgid "attribute %d of type %s has wrong type" msgstr "атрибут %d типа %s имеет неправильный тип" -#: executor/execExprInterp.c:1569 executor/execExprInterp.c:2512 +#: executor/execExprInterp.c:1574 executor/execExprInterp.c:2525 #, c-format msgid "Table has type %s, but query expects %s." msgstr "В таблице задан тип %s, а в запросе ожидается %s." -#: executor/execExprInterp.c:1979 +#: executor/execExprInterp.c:1988 #, c-format msgid "WHERE CURRENT OF is not supported for this table type" msgstr "WHERE CURRENT OF для таблиц такого типа не поддерживается" -#: executor/execExprInterp.c:2204 +#: executor/execExprInterp.c:2213 #, c-format msgid "cannot merge incompatible arrays" msgstr "не удалось объединить несовместимые массивы" -#: executor/execExprInterp.c:2205 +#: executor/execExprInterp.c:2214 #, c-format msgid "" "Array with element type %s cannot be included in ARRAY construct with " @@ -11819,7 +11832,7 @@ "Массив с типом элементов %s нельзя включить в конструкцию ARRAY с типом " "элементов %s." -#: executor/execExprInterp.c:2246 executor/execExprInterp.c:2276 +#: executor/execExprInterp.c:2255 executor/execExprInterp.c:2285 #, c-format msgid "" "multidimensional arrays must have array expressions with matching dimensions" @@ -11827,35 +11840,35 @@ "для многомерных массивов должны задаваться выражения с соответствующими " "размерностями" -#: executor/execExprInterp.c:2511 +#: executor/execExprInterp.c:2524 #, c-format msgid "attribute %d has wrong type" msgstr "атрибут %d имеет неверный тип" -#: executor/execExprInterp.c:2620 +#: executor/execExprInterp.c:2633 #, c-format msgid "array subscript in assignment must not be null" msgstr "индекс элемента массива в присваивании не может быть NULL" -#: executor/execExprInterp.c:3053 utils/adt/domains.c:148 +#: executor/execExprInterp.c:3066 utils/adt/domains.c:148 #, c-format msgid "domain %s does not allow null values" msgstr "домен %s не допускает значения null" -#: executor/execExprInterp.c:3068 utils/adt/domains.c:183 +#: executor/execExprInterp.c:3081 utils/adt/domains.c:183 #, c-format msgid "value for domain %s violates check constraint \"%s\"" msgstr "значение домена %s нарушает ограничение-проверку \"%s\"" -#: executor/execExprInterp.c:3435 executor/execExprInterp.c:3452 -#: executor/execExprInterp.c:3554 executor/nodeModifyTable.c:100 +#: executor/execExprInterp.c:3448 executor/execExprInterp.c:3465 +#: executor/execExprInterp.c:3567 executor/nodeModifyTable.c:100 #: executor/nodeModifyTable.c:110 executor/nodeModifyTable.c:127 #: executor/nodeModifyTable.c:135 #, c-format msgid "table row type and query-specified row type do not match" msgstr "тип строки таблицы отличается от типа строки-результата запроса" -#: executor/execExprInterp.c:3436 +#: executor/execExprInterp.c:3449 #, c-format msgid "Table row contains %d attribute, but query expects %d." msgid_plural "Table row contains %d attributes, but query expects %d." @@ -11863,14 +11876,14 @@ msgstr[1] "Строка таблицы содержит %d атрибута, а в запросе ожидается %d." msgstr[2] "Строка таблицы содержит %d атрибутов, а в запросе ожидается %d." -#: executor/execExprInterp.c:3453 executor/nodeModifyTable.c:111 +#: executor/execExprInterp.c:3466 executor/nodeModifyTable.c:111 #, c-format msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "" "В таблице определён тип %s (номер столбца: %d), а в запросе предполагается " "%s." -#: executor/execExprInterp.c:3555 executor/execSRF.c:927 +#: executor/execExprInterp.c:3568 executor/execSRF.c:927 #, c-format msgid "Physical storage mismatch on dropped attribute at ordinal position %d." msgstr "" @@ -11926,14 +11939,14 @@ msgid "cannot change TOAST relation \"%s\"" msgstr "TOAST-отношение \"%s\" изменить нельзя" -#: executor/execMain.c:1140 rewrite/rewriteHandler.c:2895 -#: rewrite/rewriteHandler.c:3661 +#: executor/execMain.c:1140 rewrite/rewriteHandler.c:2918 +#: rewrite/rewriteHandler.c:3698 #, c-format msgid "cannot insert into view \"%s\"" msgstr "вставить данные в представление \"%s\" нельзя" -#: executor/execMain.c:1142 rewrite/rewriteHandler.c:2898 -#: rewrite/rewriteHandler.c:3664 +#: executor/execMain.c:1142 rewrite/rewriteHandler.c:2921 +#: rewrite/rewriteHandler.c:3701 #, c-format msgid "" "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or " @@ -11942,14 +11955,14 @@ "Чтобы представление допускало добавление данных, установите триггер INSTEAD " "OF INSERT или безусловное правило ON INSERT DO INSTEAD." -#: executor/execMain.c:1148 rewrite/rewriteHandler.c:2903 -#: rewrite/rewriteHandler.c:3669 +#: executor/execMain.c:1148 rewrite/rewriteHandler.c:2926 +#: rewrite/rewriteHandler.c:3706 #, c-format msgid "cannot update view \"%s\"" msgstr "изменить данные в представлении \"%s\" нельзя" -#: executor/execMain.c:1150 rewrite/rewriteHandler.c:2906 -#: rewrite/rewriteHandler.c:3672 +#: executor/execMain.c:1150 rewrite/rewriteHandler.c:2929 +#: rewrite/rewriteHandler.c:3709 #, c-format msgid "" "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an " @@ -11958,14 +11971,14 @@ "Чтобы представление допускало изменение данных, установите триггер INSTEAD " "OF UPDATE или безусловное правило ON UPDATE DO INSTEAD." -#: executor/execMain.c:1156 rewrite/rewriteHandler.c:2911 -#: rewrite/rewriteHandler.c:3677 +#: executor/execMain.c:1156 rewrite/rewriteHandler.c:2934 +#: rewrite/rewriteHandler.c:3714 #, c-format msgid "cannot delete from view \"%s\"" msgstr "удалить данные из представления \"%s\" нельзя" -#: executor/execMain.c:1158 rewrite/rewriteHandler.c:2914 -#: rewrite/rewriteHandler.c:3680 +#: executor/execMain.c:1158 rewrite/rewriteHandler.c:2937 +#: rewrite/rewriteHandler.c:3717 #, c-format msgid "" "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an " @@ -12034,7 +12047,7 @@ msgid "cannot lock rows in materialized view \"%s\"" msgstr "блокировать строки в материализованном представлении \"%s\" нельзя" -#: executor/execMain.c:1289 executor/execMain.c:2947 +#: executor/execMain.c:1289 executor/execMain.c:2953 #: executor/nodeLockRows.c:136 #, c-format msgid "cannot lock rows in foreign table \"%s\"" @@ -12102,12 +12115,12 @@ "новая строка нарушает политику защиты на уровне строк (выражение USING) для " "таблицы \"%s\"" -#: executor/execMain.c:3463 +#: executor/execMain.c:3469 #, c-format msgid "no partition of relation \"%s\" found for row" msgstr "для строки не найдена секция в отношении \"%s\"" -#: executor/execMain.c:3465 +#: executor/execMain.c:3471 #, c-format msgid "Partition key of the failing row contains %s." msgstr "Ключ секционирования для неподходящей строки содержит %s." @@ -12118,9 +12131,9 @@ msgstr "параллельное изменение; следует повторная попытка" #: executor/execReplication.c:252 parser/parse_oper.c:228 -#: utils/adt/array_userfuncs.c:724 utils/adt/array_userfuncs.c:863 -#: utils/adt/arrayfuncs.c:3651 utils/adt/arrayfuncs.c:4089 -#: utils/adt/arrayfuncs.c:6049 utils/adt/rowtypes.c:1167 +#: utils/adt/array_userfuncs.c:725 utils/adt/array_userfuncs.c:864 +#: utils/adt/arrayfuncs.c:3653 utils/adt/arrayfuncs.c:4091 +#: utils/adt/arrayfuncs.c:6057 utils/adt/rowtypes.c:1167 #, c-format msgid "could not identify an equality operator for type %s" msgstr "не удалось найти оператор равенства для типа %s" @@ -12303,7 +12316,7 @@ msgid "return type %s is not supported for SQL functions" msgstr "для SQL-функций тип возврата %s не поддерживается" -#: executor/nodeAgg.c:3509 parser/parse_agg.c:618 parser/parse_agg.c:648 +#: executor/nodeAgg.c:3509 parser/parse_agg.c:613 parser/parse_agg.c:641 #, c-format msgid "aggregate function calls cannot be nested" msgstr "вложенные вызовы агрегатных функций недопустимы" @@ -12336,7 +12349,8 @@ #, c-format msgid "lossy distance functions are not supported in index-only scans" msgstr "" -"функции неточной дистанции не поддерживаются в сканировании только по индексу" +"функции неточного расстояния не поддерживаются в сканировании только по " +"индексу" #: executor/nodeLimit.c:262 #, c-format @@ -12868,195 +12882,195 @@ msgid "client selected an invalid SASL authentication mechanism" msgstr "клиент выбрал неверный механизм аутентификации SASL" -#: libpq/auth.c:1109 +#: libpq/auth.c:1133 #, c-format msgid "GSSAPI is not supported in protocol version 2" msgstr "GSSAPI не поддерживается в протоколе версии 2" -#: libpq/auth.c:1169 +#: libpq/auth.c:1193 #, c-format msgid "expected GSS response, got message type %d" msgstr "ожидался ответ GSS, но получено сообщение %d" -#: libpq/auth.c:1231 +#: libpq/auth.c:1255 msgid "accepting GSS security context failed" msgstr "принять контекст безопасности GSS не удалось" -#: libpq/auth.c:1257 +#: libpq/auth.c:1281 msgid "retrieving GSS user name failed" msgstr "получить имя пользователя GSS не удалось" -#: libpq/auth.c:1382 +#: libpq/auth.c:1414 #, c-format msgid "SSPI is not supported in protocol version 2" msgstr "SSPI не поддерживается в протоколе версии 2" -#: libpq/auth.c:1397 +#: libpq/auth.c:1429 msgid "could not acquire SSPI credentials" msgstr "не удалось получить удостоверение SSPI" -#: libpq/auth.c:1415 +#: libpq/auth.c:1447 #, c-format msgid "expected SSPI response, got message type %d" msgstr "ожидался ответ SSPI, но получено сообщение %d" -#: libpq/auth.c:1488 +#: libpq/auth.c:1520 msgid "could not accept SSPI security context" msgstr "принять контекст безопасности SSPI не удалось" -#: libpq/auth.c:1550 +#: libpq/auth.c:1582 msgid "could not get token from SSPI security context" msgstr "не удалось получить маркер из контекста безопасности SSPI" -#: libpq/auth.c:1669 libpq/auth.c:1688 +#: libpq/auth.c:1701 libpq/auth.c:1720 #, c-format msgid "could not translate name" msgstr "не удалось преобразовать имя" -#: libpq/auth.c:1701 +#: libpq/auth.c:1733 #, c-format msgid "realm name too long" msgstr "имя области слишком длинное" -#: libpq/auth.c:1716 +#: libpq/auth.c:1748 #, c-format msgid "translated account name too long" msgstr "преобразованное имя учётной записи слишком длинное" -#: libpq/auth.c:1902 +#: libpq/auth.c:1934 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "не удалось создать сокет для подключения к серверу Ident: %m" -#: libpq/auth.c:1917 +#: libpq/auth.c:1949 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "не удалось привязаться к локальному адресу \"%s\": %m" -#: libpq/auth.c:1929 +#: libpq/auth.c:1961 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "не удалось подключиться к серверу Ident по адресу \"%s\", порт %s: %m" -#: libpq/auth.c:1951 +#: libpq/auth.c:1983 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "" "не удалось отправить запрос серверу Ident по адресу \"%s\", порт %s: %m" -#: libpq/auth.c:1968 +#: libpq/auth.c:2000 #, c-format msgid "" "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "" "не удалось получить ответ от сервера Ident по адресу \"%s\", порт %s: %m" -#: libpq/auth.c:1978 +#: libpq/auth.c:2010 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "неверно форматированный ответ от сервера Ident: \"%s\"" -#: libpq/auth.c:2018 +#: libpq/auth.c:2050 #, c-format msgid "peer authentication is not supported on this platform" msgstr "проверка подлинности peer в этой ОС не поддерживается" -#: libpq/auth.c:2022 +#: libpq/auth.c:2054 #, c-format msgid "could not get peer credentials: %m" msgstr "не удалось получить данные пользователя через механизм peer: %m" -#: libpq/auth.c:2033 +#: libpq/auth.c:2065 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "найти локального пользователя по идентификатору (%ld) не удалось: %s" -#: libpq/auth.c:2123 +#: libpq/auth.c:2155 #, c-format msgid "error from underlying PAM layer: %s" msgstr "ошибка в нижележащем слое PAM: %s" -#: libpq/auth.c:2193 +#: libpq/auth.c:2225 #, c-format msgid "could not create PAM authenticator: %s" msgstr "не удалось создать аутентификатор PAM: %s" -#: libpq/auth.c:2204 +#: libpq/auth.c:2236 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "ошибка в pam_set_item(PAM_USER): %s" -#: libpq/auth.c:2236 +#: libpq/auth.c:2268 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "ошибка в pam_set_item(PAM_RHOST): %s" -#: libpq/auth.c:2248 +#: libpq/auth.c:2280 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "ошибка в pam_set_item(PAM_CONV): %s" -#: libpq/auth.c:2261 +#: libpq/auth.c:2293 #, c-format msgid "pam_authenticate failed: %s" msgstr "ошибка в pam_authenticate: %s" -#: libpq/auth.c:2274 +#: libpq/auth.c:2306 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "ошибка в pam_acct_mgmt: %s" -#: libpq/auth.c:2285 +#: libpq/auth.c:2317 #, c-format msgid "could not release PAM authenticator: %s" msgstr "не удалось освободить аутентификатор PAM: %s" -#: libpq/auth.c:2352 +#: libpq/auth.c:2384 #, c-format msgid "could not initialize LDAP: %m" msgstr "не удалось инициализировать LDAP: %m" -#: libpq/auth.c:2355 +#: libpq/auth.c:2387 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "не удалось инициализировать LDAP (код ошибки: %d)" -#: libpq/auth.c:2365 +#: libpq/auth.c:2397 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "не удалось задать версию протокола LDAP: %s" -#: libpq/auth.c:2394 +#: libpq/auth.c:2426 #, c-format msgid "could not load wldap32.dll" msgstr "не удалось загрузить wldap32.dll" -#: libpq/auth.c:2402 +#: libpq/auth.c:2434 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "не удалось найти функцию _ldap_start_tls_sA в wldap32.dll" -#: libpq/auth.c:2403 +#: libpq/auth.c:2435 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP через SSL не поддерживается в этой ОС." -#: libpq/auth.c:2418 +#: libpq/auth.c:2450 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "не удалось начать сеанс LDAP TLS: %s" -#: libpq/auth.c:2440 +#: libpq/auth.c:2472 #, c-format msgid "LDAP server not specified" msgstr "LDAP-сервер не определён" -#: libpq/auth.c:2489 +#: libpq/auth.c:2521 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "недопустимый символ в имени пользователя для проверки подлинности LDAP" -#: libpq/auth.c:2505 +#: libpq/auth.c:2537 #, c-format msgid "" "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " @@ -13065,28 +13079,28 @@ "не удалось выполнить начальную привязку LDAP для ldapbinddn \"%s\" на " "сервере \"%s\": %s" -#: libpq/auth.c:2531 +#: libpq/auth.c:2563 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "" "не удалось выполнить LDAP-поиск по фильтру \"%s\" на сервере \"%s\": %s" -#: libpq/auth.c:2543 +#: libpq/auth.c:2575 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "в LDAP нет пользователя \"%s\"" -#: libpq/auth.c:2544 +#: libpq/auth.c:2576 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "LDAP-поиск по фильтру \"%s\" на сервере \"%s\" не вернул результатов" -#: libpq/auth.c:2548 +#: libpq/auth.c:2580 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "пользователь LDAP \"%s\" не уникален" -#: libpq/auth.c:2549 +#: libpq/auth.c:2581 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "" @@ -13095,7 +13109,7 @@ msgstr[1] "LDAP-поиск по фильтру \"%s\" на сервере \"%s\" вернул %d записи." msgstr[2] "LDAP-поиск по фильтру \"%s\" на сервере \"%s\" вернул %d записей." -#: libpq/auth.c:2568 +#: libpq/auth.c:2600 #, c-format msgid "" "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" @@ -13103,19 +13117,19 @@ "не удалось получить dn для первого результата, соответствующего \"%s\" на " "сервере \"%s\": %s" -#: libpq/auth.c:2589 +#: libpq/auth.c:2621 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "" "не удалось отвязаться после поиска пользователя \"%s\" на сервере \"%s\": %s" -#: libpq/auth.c:2621 +#: libpq/auth.c:2653 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "" "ошибка при регистрации в LDAP пользователя \"%s\" на сервере \"%s\": %s" -#: libpq/auth.c:2651 +#: libpq/auth.c:2683 #, c-format msgid "" "certificate authentication failed for user \"%s\": client certificate " @@ -13124,218 +13138,218 @@ "ошибка проверки подлинности пользователя \"%s\" по сертификату: сертификат " "клиента не содержит имя пользователя" -#: libpq/auth.c:2754 +#: libpq/auth.c:2786 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-сервер не определён" -#: libpq/auth.c:2761 +#: libpq/auth.c:2793 #, c-format msgid "RADIUS secret not specified" msgstr "секрет RADIUS не определён" # well-spelled: симв -#: libpq/auth.c:2775 +#: libpq/auth.c:2807 #, c-format msgid "" "RADIUS authentication does not support passwords longer than %d characters" msgstr "проверка подлинности RADIUS не поддерживает пароли длиннее %d симв." -#: libpq/auth.c:2880 libpq/hba.c:1883 +#: libpq/auth.c:2912 libpq/hba.c:1883 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "не удалось преобразовать имя сервера RADIUS \"%s\" в адрес: %s" -#: libpq/auth.c:2894 +#: libpq/auth.c:2926 #, c-format msgid "could not generate random encryption vector" msgstr "не удалось сгенерировать случайный вектор шифрования" -#: libpq/auth.c:2928 +#: libpq/auth.c:2960 #, c-format msgid "could not perform MD5 encryption of password" msgstr "не удалось вычислить MD5-хеш пароля" -#: libpq/auth.c:2954 +#: libpq/auth.c:2986 #, c-format msgid "could not create RADIUS socket: %m" msgstr "не удалось создать сокет RADIUS: %m" -#: libpq/auth.c:2976 +#: libpq/auth.c:3008 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "не удалось привязаться к локальному сокету RADIUS: %m" -#: libpq/auth.c:2986 +#: libpq/auth.c:3018 #, c-format msgid "could not send RADIUS packet: %m" msgstr "не удалось отправить пакет RADIUS: %m" -#: libpq/auth.c:3019 libpq/auth.c:3045 +#: libpq/auth.c:3051 libpq/auth.c:3077 #, c-format msgid "timeout waiting for RADIUS response from %s" msgstr "превышено время ожидания ответа RADIUS от %s" -#: libpq/auth.c:3038 +#: libpq/auth.c:3070 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "не удалось проверить состояние сокета RADIUS: %m" -#: libpq/auth.c:3068 +#: libpq/auth.c:3100 #, c-format msgid "could not read RADIUS response: %m" msgstr "не удалось прочитать ответ RADIUS: %m" -#: libpq/auth.c:3081 libpq/auth.c:3085 +#: libpq/auth.c:3113 libpq/auth.c:3117 #, c-format msgid "RADIUS response from %s was sent from incorrect port: %d" msgstr "ответ RADIUS от %s был отправлен с неверного порта: %d" -#: libpq/auth.c:3094 +#: libpq/auth.c:3126 #, c-format msgid "RADIUS response from %s too short: %d" msgstr "слишком короткий ответ RADIUS от %s: %d" -#: libpq/auth.c:3101 +#: libpq/auth.c:3133 #, c-format msgid "RADIUS response from %s has corrupt length: %d (actual length %d)" msgstr "в ответе RADIUS от %s испорчена длина: %d (фактическая длина %d)" -#: libpq/auth.c:3109 +#: libpq/auth.c:3141 #, c-format msgid "RADIUS response from %s is to a different request: %d (should be %d)" msgstr "пришёл ответ RADIUS от %s на другой запрос: %d (ожидался %d)" -#: libpq/auth.c:3134 +#: libpq/auth.c:3166 #, c-format msgid "could not perform MD5 encryption of received packet" msgstr "не удалось вычислить MD5 для принятого пакета" -#: libpq/auth.c:3143 +#: libpq/auth.c:3175 #, c-format msgid "RADIUS response from %s has incorrect MD5 signature" msgstr "ответ RADIUS от %s содержит неверную подпись MD5" -#: libpq/auth.c:3161 +#: libpq/auth.c:3193 #, c-format msgid "RADIUS response from %s has invalid code (%d) for user \"%s\"" msgstr "ответ RADIUS от %s содержит неверный код (%d) для пользователя \"%s\"" -#: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:163 libpq/be-fsstubs.c:197 -#: libpq/be-fsstubs.c:237 libpq/be-fsstubs.c:262 libpq/be-fsstubs.c:310 -#: libpq/be-fsstubs.c:333 libpq/be-fsstubs.c:590 +#: libpq/be-fsstubs.c:140 libpq/be-fsstubs.c:169 libpq/be-fsstubs.c:203 +#: libpq/be-fsstubs.c:243 libpq/be-fsstubs.c:268 libpq/be-fsstubs.c:306 +#: libpq/be-fsstubs.c:329 libpq/be-fsstubs.c:581 #, c-format msgid "invalid large-object descriptor: %d" msgstr "неверный дескриптор большого объекта: %d" -#: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:609 -#: libpq/be-fsstubs.c:797 libpq/be-fsstubs.c:917 +#: libpq/be-fsstubs.c:184 libpq/be-fsstubs.c:222 libpq/be-fsstubs.c:600 +#: libpq/be-fsstubs.c:794 libpq/be-fsstubs.c:912 #, c-format msgid "permission denied for large object %u" msgstr "нет доступа к большому объекту %u" -#: libpq/be-fsstubs.c:203 libpq/be-fsstubs.c:596 +#: libpq/be-fsstubs.c:209 libpq/be-fsstubs.c:587 #, c-format msgid "large object descriptor %d was not opened for writing" msgstr "дескриптор большого объекта %d не был открыт для записи" -#: libpq/be-fsstubs.c:245 +#: libpq/be-fsstubs.c:251 #, c-format msgid "lo_lseek result out of range for large-object descriptor %d" msgstr "" "результат lo_lseek для дескриптора большого объекта %d вне допустимого " "диапазона" -#: libpq/be-fsstubs.c:318 +#: libpq/be-fsstubs.c:314 #, c-format msgid "lo_tell result out of range for large-object descriptor %d" msgstr "" "результат lo_tell для дескриптора большого объекта %d вне допустимого " "диапазона" -#: libpq/be-fsstubs.c:455 +#: libpq/be-fsstubs.c:448 #, c-format msgid "must be superuser to use server-side lo_import()" msgstr "для использования lo_import() на сервере нужно быть суперпользователем" -#: libpq/be-fsstubs.c:456 +#: libpq/be-fsstubs.c:449 #, c-format msgid "Anyone can use the client-side lo_import() provided by libpq." msgstr "Использовать lo_import() на стороне клиента через libpq могут все." -#: libpq/be-fsstubs.c:469 +#: libpq/be-fsstubs.c:460 #, c-format msgid "could not open server file \"%s\": %m" msgstr "не удалось открыть файл сервера \"%s\": %m" -#: libpq/be-fsstubs.c:491 +#: libpq/be-fsstubs.c:483 #, c-format msgid "could not read server file \"%s\": %m" msgstr "не удалось прочитать файл сервера \"%s\": %m" -#: libpq/be-fsstubs.c:521 +#: libpq/be-fsstubs.c:513 #, c-format msgid "must be superuser to use server-side lo_export()" msgstr "для использования lo_export() на сервере нужно быть суперпользователем" -#: libpq/be-fsstubs.c:522 +#: libpq/be-fsstubs.c:514 #, c-format msgid "Anyone can use the client-side lo_export() provided by libpq." msgstr "Использовать lo_export() на стороне клиента через libpq могут все." -#: libpq/be-fsstubs.c:556 +#: libpq/be-fsstubs.c:547 #, c-format msgid "could not create server file \"%s\": %m" msgstr "не удалось создать файл сервера \"%s\": %m" -#: libpq/be-fsstubs.c:568 +#: libpq/be-fsstubs.c:559 #, c-format msgid "could not write server file \"%s\": %m" msgstr "не удалось записать файл сервера \"%s\": %m" -#: libpq/be-fsstubs.c:822 +#: libpq/be-fsstubs.c:819 #, c-format msgid "large object read request is too large" msgstr "при чтении большого объекта запрошен чрезмерный размер" -#: libpq/be-fsstubs.c:864 utils/adt/genfile.c:205 utils/adt/genfile.c:246 +#: libpq/be-fsstubs.c:861 utils/adt/genfile.c:205 utils/adt/genfile.c:246 #, c-format msgid "requested length cannot be negative" msgstr "запрошенная длина не может быть отрицательной" -#: libpq/be-secure-openssl.c:166 +#: libpq/be-secure-openssl.c:169 #, c-format msgid "could not create SSL context: %s" msgstr "не удалось создать контекст SSL: %s" -#: libpq/be-secure-openssl.c:194 +#: libpq/be-secure-openssl.c:197 #, c-format msgid "could not load server certificate file \"%s\": %s" msgstr "не удалось загрузить сертификат сервера \"%s\": %s" -#: libpq/be-secure-openssl.c:203 +#: libpq/be-secure-openssl.c:206 #, c-format msgid "could not access private key file \"%s\": %m" msgstr "не удалось обратиться к файлу закрытого ключа \"%s\": %m" -#: libpq/be-secure-openssl.c:212 +#: libpq/be-secure-openssl.c:215 #, c-format msgid "private key file \"%s\" is not a regular file" msgstr "файл закрытого ключа \"%s\" не является обычным" -#: libpq/be-secure-openssl.c:227 +#: libpq/be-secure-openssl.c:230 #, c-format msgid "private key file \"%s\" must be owned by the database user or root" msgstr "" "файл закрытого ключа \"%s\" должен принадлежать пользователю, запускающему " "сервер, или root" -#: libpq/be-secure-openssl.c:250 +#: libpq/be-secure-openssl.c:253 #, c-format msgid "private key file \"%s\" has group or world access" msgstr "к файлу закрытого ключа \"%s\" имеют доступ все или группа" -#: libpq/be-secure-openssl.c:252 +#: libpq/be-secure-openssl.c:255 #, c-format msgid "" "File must have permissions u=rw (0600) or less if owned by the database " @@ -13345,153 +13359,153 @@ "он принадлежит пользователю сервера, либо u=rw,g=r (0640) или более строгие, " "если он принадлежит root." -#: libpq/be-secure-openssl.c:269 +#: libpq/be-secure-openssl.c:272 #, c-format msgid "" "private key file \"%s\" cannot be reloaded because it requires a passphrase" msgstr "" "файл закрытого ключа \"%s\" нельзя перезагрузить, так как он защищён паролем" -#: libpq/be-secure-openssl.c:274 +#: libpq/be-secure-openssl.c:277 #, c-format msgid "could not load private key file \"%s\": %s" msgstr "не удалось загрузить файл закрытого ключа \"%s\": %s" -#: libpq/be-secure-openssl.c:283 +#: libpq/be-secure-openssl.c:286 #, c-format msgid "check of private key failed: %s" msgstr "ошибка при проверке закрытого ключа: %s" -#: libpq/be-secure-openssl.c:310 +#: libpq/be-secure-openssl.c:323 #, c-format msgid "could not set the cipher list (no valid ciphers available)" msgstr "не удалось установить список шифров (подходящие шифры отсутствуют)" -#: libpq/be-secure-openssl.c:328 +#: libpq/be-secure-openssl.c:343 #, c-format msgid "could not load root certificate file \"%s\": %s" msgstr "не удалось загрузить файл корневых сертификатов \"%s\": %s" -#: libpq/be-secure-openssl.c:355 +#: libpq/be-secure-openssl.c:389 #, c-format msgid "SSL certificate revocation list file \"%s\" ignored" msgstr "файл со списком отзыва сертификатов SSL \"%s\" игнорируется" -#: libpq/be-secure-openssl.c:357 +#: libpq/be-secure-openssl.c:391 #, c-format msgid "SSL library does not support certificate revocation lists." msgstr "Библиотека SSL не поддерживает списки отзыва сертификатов." -#: libpq/be-secure-openssl.c:364 +#: libpq/be-secure-openssl.c:398 #, c-format msgid "could not load SSL certificate revocation list file \"%s\": %s" msgstr "" -"не удалось загрузить файл со списком отзыва сертификатов SSL \"%s\": %s" +"не удалось загрузить список отзыва сертификатов SSL из файла \"%s\": %s" -#: libpq/be-secure-openssl.c:445 +#: libpq/be-secure-openssl.c:460 #, c-format msgid "could not initialize SSL connection: SSL context not set up" msgstr "" "инициализировать SSL-подключение не удалось: контекст SSL не установлен" -#: libpq/be-secure-openssl.c:453 +#: libpq/be-secure-openssl.c:468 #, c-format msgid "could not initialize SSL connection: %s" msgstr "инициализировать SSL-подключение не удалось: %s" -#: libpq/be-secure-openssl.c:461 +#: libpq/be-secure-openssl.c:476 #, c-format msgid "could not set SSL socket: %s" msgstr "не удалось создать SSL-сокет: %s" -#: libpq/be-secure-openssl.c:516 +#: libpq/be-secure-openssl.c:531 #, c-format msgid "could not accept SSL connection: %m" msgstr "не удалось принять SSL-подключение: %m" -#: libpq/be-secure-openssl.c:520 libpq/be-secure-openssl.c:531 +#: libpq/be-secure-openssl.c:535 libpq/be-secure-openssl.c:546 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "не удалось принять SSL-подключение: обрыв данных" -#: libpq/be-secure-openssl.c:525 +#: libpq/be-secure-openssl.c:540 #, c-format msgid "could not accept SSL connection: %s" msgstr "не удалось принять SSL-подключение: %s" -#: libpq/be-secure-openssl.c:536 libpq/be-secure-openssl.c:677 -#: libpq/be-secure-openssl.c:744 +#: libpq/be-secure-openssl.c:551 libpq/be-secure-openssl.c:692 +#: libpq/be-secure-openssl.c:759 #, c-format msgid "unrecognized SSL error code: %d" msgstr "нераспознанный код ошибки SSL: %d" -#: libpq/be-secure-openssl.c:578 +#: libpq/be-secure-openssl.c:593 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "Имя SSL-сертификата включает нулевой байт" -#: libpq/be-secure-openssl.c:589 +#: libpq/be-secure-openssl.c:604 #, c-format msgid "SSL connection from \"%s\"" msgstr "SSL-подключение от \"%s\"" -#: libpq/be-secure-openssl.c:666 libpq/be-secure-openssl.c:728 +#: libpq/be-secure-openssl.c:681 libpq/be-secure-openssl.c:743 #, c-format msgid "SSL error: %s" msgstr "ошибка SSL: %s" -#: libpq/be-secure-openssl.c:909 +#: libpq/be-secure-openssl.c:925 #, c-format msgid "could not open DH parameters file \"%s\": %m" msgstr "не удалось открыть файл параметров DH \"%s\": %m" -#: libpq/be-secure-openssl.c:921 +#: libpq/be-secure-openssl.c:937 #, c-format msgid "could not load DH parameters file: %s" msgstr "не удалось загрузить файл параметров DH: %s" -#: libpq/be-secure-openssl.c:931 +#: libpq/be-secure-openssl.c:947 #, c-format msgid "invalid DH parameters: %s" msgstr "неверные параметры DH: %s" -#: libpq/be-secure-openssl.c:939 +#: libpq/be-secure-openssl.c:956 #, c-format msgid "invalid DH parameters: p is not prime" msgstr "неверные параметры DH: p - не простое число" -#: libpq/be-secure-openssl.c:947 +#: libpq/be-secure-openssl.c:965 #, c-format msgid "invalid DH parameters: neither suitable generator or safe prime" msgstr "" "неверные параметры DH: нет подходящего генератора или небезопасное простое " "число" -#: libpq/be-secure-openssl.c:1088 +#: libpq/be-secure-openssl.c:1107 #, c-format msgid "DH: could not load DH parameters" msgstr "DH: не удалось загрузить параметры DH" -#: libpq/be-secure-openssl.c:1096 +#: libpq/be-secure-openssl.c:1115 #, c-format msgid "DH: could not set DH parameters: %s" msgstr "DH: не удалось задать параметры DH: %s" -#: libpq/be-secure-openssl.c:1120 +#: libpq/be-secure-openssl.c:1142 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: нераспознанное имя кривой: %s" -#: libpq/be-secure-openssl.c:1129 +#: libpq/be-secure-openssl.c:1151 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: не удалось создать ключ" -#: libpq/be-secure-openssl.c:1157 +#: libpq/be-secure-openssl.c:1179 msgid "no SSL error reported" msgstr "нет сообщения об ошибке SSL" -#: libpq/be-secure-openssl.c:1161 +#: libpq/be-secure-openssl.c:1183 #, c-format msgid "SSL error code %lu" msgstr "код ошибки SSL: %lu" @@ -13514,7 +13528,7 @@ #: libpq/crypt.c:80 #, c-format msgid "User \"%s\" has an expired password." -msgstr "Срок пароля пользователя \"%s\" истёк." +msgstr "Срок действия пароля пользователя \"%s\" истёк." #: libpq/crypt.c:182 #, c-format @@ -13859,7 +13873,7 @@ msgid "unrecognized authentication option name: \"%s\"" msgstr "нераспознанное имя атрибута проверки подлинности: \"%s\"" -#: libpq/hba.c:2117 libpq/hba.c:2526 guc-file.l:629 +#: libpq/hba.c:2117 libpq/hba.c:2526 guc-file.l:631 #, c-format msgid "could not open configuration file \"%s\": %m" msgstr "открыть файл конфигурации \"%s\" не удалось: %m" @@ -13981,7 +13995,7 @@ "Is another postmaster already running on port %d? If not, remove socket file " "\"%s\" and retry." msgstr "" -"Возможно порт %d занят другим процессом postmaster? Если нет, удалите файл " +"Возможно, порт %d занят другим процессом postmaster? Если нет, удалите файл " "\"%s\" и повторите попытку." #: libpq/pqcomm.c:544 @@ -13990,7 +14004,7 @@ "Is another postmaster already running on port %d? If not, wait a few seconds " "and retry." msgstr "" -"Возможно порт %d занят другим процессом postmaster? Если нет, повторите " +"Возможно, порт %d занят другим процессом postmaster? Если нет, повторите " "попытку через несколько секунд." #. translator: first %s is IPv4, IPv6, or Unix @@ -14040,7 +14054,7 @@ msgid "could not receive data from client: %m" msgstr "не удалось получить данные от клиента: %m" -#: libpq/pqcomm.c:1219 tcop/postgres.c:3967 +#: libpq/pqcomm.c:1219 tcop/postgres.c:3977 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "закрытие подключения из-за потери синхронизации протокола" @@ -14071,7 +14085,7 @@ msgstr "в сообщении не осталось данных" #: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 -#: utils/adt/arrayfuncs.c:1469 utils/adt/rowtypes.c:563 +#: utils/adt/arrayfuncs.c:1458 utils/adt/rowtypes.c:563 #, c-format msgid "insufficient data left in message" msgstr "недостаточно данных осталось в сообщении" @@ -14406,8 +14420,8 @@ msgid "ExtensibleNodeMethods \"%s\" was not registered" msgstr "методы расширенного узла \"%s\" не зарегистрированы" -#: nodes/nodeFuncs.c:123 nodes/nodeFuncs.c:154 parser/parse_coerce.c:1844 -#: parser/parse_coerce.c:1872 parser/parse_coerce.c:1948 +#: nodes/nodeFuncs.c:123 nodes/nodeFuncs.c:154 parser/parse_coerce.c:1863 +#: parser/parse_coerce.c:1891 parser/parse_coerce.c:1967 #: parser/parse_expr.c:2110 parser/parse_func.c:602 parser/parse_oper.c:964 #: utils/fmgr/funcapi.c:466 #, c-format @@ -14571,7 +14585,7 @@ msgstr "SELECT ... INTO здесь не допускается" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1559 parser/analyze.c:2826 +#: parser/analyze.c:1559 parser/analyze.c:2841 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s нельзя применять к VALUES" @@ -14722,43 +14736,43 @@ "%s не допускается с функциями, возвращающие множества, в списке результатов" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2768 +#: parser/analyze.c:2781 #, c-format msgid "%s must specify unqualified relation names" msgstr "для %s нужно указывать неполные имена отношений" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2799 +#: parser/analyze.c:2814 #, c-format msgid "%s cannot be applied to a join" msgstr "%s нельзя применить к соединению" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2808 +#: parser/analyze.c:2823 #, c-format msgid "%s cannot be applied to a function" msgstr "%s нельзя применить к функции" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2817 +#: parser/analyze.c:2832 #, c-format msgid "%s cannot be applied to a table function" msgstr "%s нельзя применить к табличной функции" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2835 +#: parser/analyze.c:2850 #, c-format msgid "%s cannot be applied to a WITH query" msgstr "%s нельзя применить к запросу WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2844 +#: parser/analyze.c:2859 #, c-format msgid "%s cannot be applied to a named tuplestore" msgstr "%s нельзя применить к именованному хранилищу кортежей" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2861 +#: parser/analyze.c:2876 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "отношение \"%s\" в определении %s отсутствует в предложении FROM" @@ -14907,7 +14921,7 @@ msgid "grouping operations are not allowed in %s" msgstr "операции группировки нельзя применять в конструкции %s" -#: parser/parse_agg.c:641 +#: parser/parse_agg.c:634 #, c-format msgid "" "outer-level aggregate cannot contain a lower-level variable in its direct " @@ -14916,14 +14930,14 @@ "агрегатная функция внешнего уровня не может содержать в своих аргументах " "переменные нижнего уровня" -#: parser/parse_agg.c:720 +#: parser/parse_agg.c:713 #, c-format msgid "aggregate function calls cannot contain set-returning function calls" msgstr "" "вызовы агрегатных функций не могут включать вызовы функций, возвращающих " "множества" -#: parser/parse_agg.c:721 parser/parse_expr.c:1761 parser/parse_expr.c:2237 +#: parser/parse_agg.c:714 parser/parse_expr.c:1761 parser/parse_expr.c:2237 #: parser/parse_func.c:773 #, c-format msgid "" @@ -14933,83 +14947,83 @@ "Исправить ситуацию можно, переместив функцию, возвращающую множество, в " "элемент LATERAL FROM." -#: parser/parse_agg.c:726 +#: parser/parse_agg.c:719 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "вызовы агрегатных функций не могут включать вызовы оконных функции" -#: parser/parse_agg.c:805 +#: parser/parse_agg.c:798 msgid "window functions are not allowed in JOIN conditions" msgstr "оконные функции нельзя применять в условиях JOIN" -#: parser/parse_agg.c:812 +#: parser/parse_agg.c:805 msgid "window functions are not allowed in functions in FROM" msgstr "оконные функции нельзя применять в функциях во FROM" -#: parser/parse_agg.c:818 +#: parser/parse_agg.c:811 msgid "window functions are not allowed in policy expressions" msgstr "оконные функции нельзя применять в выражениях политик" -#: parser/parse_agg.c:830 +#: parser/parse_agg.c:823 msgid "window functions are not allowed in window definitions" msgstr "оконные функции нельзя применять в определении окна" -#: parser/parse_agg.c:862 +#: parser/parse_agg.c:855 msgid "window functions are not allowed in check constraints" msgstr "оконные функции нельзя применять в ограничениях-проверках" -#: parser/parse_agg.c:866 +#: parser/parse_agg.c:859 msgid "window functions are not allowed in DEFAULT expressions" msgstr "оконные функции нельзя применять в выражениях DEFAULT" -#: parser/parse_agg.c:869 +#: parser/parse_agg.c:862 msgid "window functions are not allowed in index expressions" msgstr "оконные функции нельзя применять в выражениях индексов" -#: parser/parse_agg.c:872 +#: parser/parse_agg.c:865 msgid "window functions are not allowed in index predicates" msgstr "оконные функции нельзя применять в предикатах индексов" -#: parser/parse_agg.c:875 +#: parser/parse_agg.c:868 msgid "window functions are not allowed in transform expressions" msgstr "оконные функции нельзя применять в выражениях преобразований" -#: parser/parse_agg.c:878 +#: parser/parse_agg.c:871 msgid "window functions are not allowed in EXECUTE parameters" msgstr "оконные функции нельзя применять в параметрах EXECUTE" -#: parser/parse_agg.c:881 +#: parser/parse_agg.c:874 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "оконные функции нельзя применять в условиях WHEN для триггеров" -#: parser/parse_agg.c:884 +#: parser/parse_agg.c:877 msgid "window functions are not allowed in partition key expression" msgstr "оконные функции нельзя применять в выражении ключа секционирования" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:904 parser/parse_clause.c:1820 +#: parser/parse_agg.c:897 parser/parse_clause.c:1820 #, c-format msgid "window functions are not allowed in %s" msgstr "оконные функции нельзя применять в конструкции %s" -#: parser/parse_agg.c:938 parser/parse_clause.c:2654 +#: parser/parse_agg.c:931 parser/parse_clause.c:2654 #, c-format msgid "window \"%s\" does not exist" msgstr "окно \"%s\" не существует" -#: parser/parse_agg.c:1023 +#: parser/parse_agg.c:1016 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "слишком много наборов группирования (при максимуме 4096)" -#: parser/parse_agg.c:1172 +#: parser/parse_agg.c:1165 #, c-format msgid "" "aggregate functions are not allowed in a recursive query's recursive term" msgstr "" "в рекурсивной части рекурсивного запроса агрегатные функции недопустимы" -#: parser/parse_agg.c:1365 +#: parser/parse_agg.c:1358 #, c-format msgid "" "column \"%s.%s\" must appear in the GROUP BY clause or be used in an " @@ -15018,7 +15032,7 @@ "столбец \"%s.%s\" должен фигурировать в предложении GROUP BY или " "использоваться в агрегатной функции" -#: parser/parse_agg.c:1368 +#: parser/parse_agg.c:1361 #, c-format msgid "" "Direct arguments of an ordered-set aggregate must use only grouped columns." @@ -15026,13 +15040,13 @@ "Прямые аргументы сортирующей агрегатной функции могут включать только " "группируемые столбцы." -#: parser/parse_agg.c:1373 +#: parser/parse_agg.c:1366 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "" "подзапрос использует негруппированный столбец \"%s.%s\" из внешнего запроса" -#: parser/parse_agg.c:1537 +#: parser/parse_agg.c:1530 #, c-format msgid "" "arguments to GROUPING must be grouping expressions of the associated query " @@ -15088,8 +15102,8 @@ "Use separate UNNEST() calls inside ROWS FROM(), and attach a column " "definition list to each one." msgstr "" -"Напишите отдельные вызовы UNNEST() внутри ROWS FROM() и добавьте список с " -"определениями столбцов к каждому." +"Напишите отдельные вызовы UNNEST() внутри ROWS FROM() и добавьте список " +"определений столбцов к каждому." #: parser/parse_clause.c:696 #, c-format @@ -15100,7 +15114,7 @@ #: parser/parse_clause.c:697 #, c-format msgid "Put the column definition list inside ROWS FROM()." -msgstr "Поместите список с определениями столбцов внутрь ROWS FROM()." +msgstr "Поместите список определений столбцов внутрь ROWS FROM()." #: parser/parse_clause.c:800 #, c-format @@ -15309,107 +15323,107 @@ "Операторы сортировки должны быть членами \"<\" или \">\" семейств операторов " "btree." -#: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 -#: parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 -#: parser/parse_expr.c:2144 parser/parse_expr.c:2732 parser/parse_target.c:936 +#: parser/parse_coerce.c:990 parser/parse_coerce.c:1020 +#: parser/parse_coerce.c:1038 parser/parse_coerce.c:1053 +#: parser/parse_expr.c:2144 parser/parse_expr.c:2732 parser/parse_target.c:935 #, c-format msgid "cannot cast type %s to %s" msgstr "привести тип %s к %s нельзя" -#: parser/parse_coerce.c:1004 +#: parser/parse_coerce.c:1023 #, c-format msgid "Input has too few columns." msgstr "Во входных данных недостаточно столбцов." -#: parser/parse_coerce.c:1022 +#: parser/parse_coerce.c:1041 #, c-format msgid "Cannot cast type %s to %s in column %d." msgstr "Не удалось привести тип %s к %s в столбце %d." -#: parser/parse_coerce.c:1037 +#: parser/parse_coerce.c:1056 #, c-format msgid "Input has too many columns." msgstr "Во входных данных больше столбцов." #. translator: first %s is name of a SQL construct, eg WHERE #. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:1080 parser/parse_coerce.c:1128 +#: parser/parse_coerce.c:1099 parser/parse_coerce.c:1147 #, c-format msgid "argument of %s must be type %s, not type %s" msgstr "аргумент конструкции %s должен иметь тип %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:1091 parser/parse_coerce.c:1140 +#: parser/parse_coerce.c:1110 parser/parse_coerce.c:1159 #, c-format msgid "argument of %s must not return a set" msgstr "аргумент конструкции %s не должен возвращать множество" #. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1280 +#: parser/parse_coerce.c:1299 #, 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:1347 +#: parser/parse_coerce.c:1366 #, c-format msgid "%s could not convert type %s to %s" msgstr "в конструкции %s нельзя преобразовать тип %s в %s" -#: parser/parse_coerce.c:1649 +#: parser/parse_coerce.c:1668 #, c-format msgid "arguments declared \"anyelement\" are not all alike" msgstr "аргументы, объявленные как \"anyelement\", должны быть однотипными" -#: parser/parse_coerce.c:1669 +#: parser/parse_coerce.c:1688 #, c-format msgid "arguments declared \"anyarray\" are not all alike" msgstr "аргументы, объявленные как \"anyarray\", должны быть однотипными" -#: parser/parse_coerce.c:1689 +#: parser/parse_coerce.c:1708 #, c-format msgid "arguments declared \"anyrange\" are not all alike" msgstr "аргументы, объявленные как \"anyrange\", должны быть однотипными" -#: parser/parse_coerce.c:1718 parser/parse_coerce.c:1933 -#: parser/parse_coerce.c:1967 utils/fmgr/funcapi.c:425 +#: parser/parse_coerce.c:1737 parser/parse_coerce.c:1952 +#: parser/parse_coerce.c:1986 utils/fmgr/funcapi.c:425 #, c-format msgid "argument declared %s is not an array but type %s" msgstr "аргумент, объявленный как \"%s\", оказался не массивом, а типом %s" -#: parser/parse_coerce.c:1734 parser/parse_coerce.c:1773 +#: parser/parse_coerce.c:1753 parser/parse_coerce.c:1792 #, c-format msgid "argument declared %s is not consistent with argument declared %s" msgstr "аргумент, объявленный как \"%s\", не согласуется с аргументом %s" -#: parser/parse_coerce.c:1756 parser/parse_coerce.c:1980 +#: parser/parse_coerce.c:1775 parser/parse_coerce.c:1999 #: utils/fmgr/funcapi.c:439 #, c-format msgid "argument declared %s is not a range type but type %s" msgstr "аргумент, объявленный как \"%s\", имеет не диапазонный тип, а %s" -#: parser/parse_coerce.c:1794 +#: parser/parse_coerce.c:1813 #, c-format msgid "could not determine polymorphic type because input has type %s" msgstr "" "не удалось определить полиморфный тип, так как входные аргументы имеют тип %s" -#: parser/parse_coerce.c:1805 +#: parser/parse_coerce.c:1824 #, c-format msgid "type matched to anynonarray is an array type: %s" msgstr "" "в нарушение объявления \"anynonarray\" соответствующий аргумент оказался " "массивом: %s" -#: parser/parse_coerce.c:1815 +#: parser/parse_coerce.c:1834 #, c-format msgid "type matched to anyenum is not an enum type: %s" msgstr "" "в нарушение объявления \"anyenum\" соответствующий аргумент оказался не " "перечислением: %s" -#: parser/parse_coerce.c:1855 parser/parse_coerce.c:1885 +#: parser/parse_coerce.c:1874 parser/parse_coerce.c:1904 #, c-format msgid "could not find range type for data type %s" msgstr "тип диапазона для типа данных %s не найден" @@ -15589,13 +15603,13 @@ msgstr "" "запись имени столбца .%s применена к типу %s, который не является составным" -#: parser/parse_expr.c:458 parser/parse_target.c:722 +#: parser/parse_expr.c:458 parser/parse_target.c:721 #, c-format msgid "row expansion via \"*\" is not supported here" msgstr "расширение строки через \"*\" здесь не поддерживается" #: parser/parse_expr.c:767 parser/parse_relation.c:689 -#: parser/parse_relation.c:789 parser/parse_target.c:1171 +#: parser/parse_relation.c:789 parser/parse_target.c:1170 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "неоднозначная ссылка на столбец \"%s\"" @@ -16185,14 +16199,13 @@ msgid "" "a column definition list is only allowed for functions returning \"record\"" msgstr "" -"список с определением столбцов может быть только у функций, возвращающих " -"запись" +"список определений столбцов может быть только у функций, возвращающих запись" #: parser/parse_relation.c:1495 #, c-format msgid "a column definition list is required for functions returning \"record\"" msgstr "" -"у функций, возвращающих запись, должен быть список с определением столбцов" +"у функций, возвращающих запись, должен быть список определений столбцов" #: parser/parse_relation.c:1574 #, c-format @@ -16252,27 +16265,27 @@ msgstr "" "Возможно, предполагалась ссылка на столбец \"%s.%s\" или столбец \"%s.%s\"." -#: parser/parse_target.c:483 parser/parse_target.c:775 +#: parser/parse_target.c:482 parser/parse_target.c:774 #, c-format msgid "cannot assign to system column \"%s\"" msgstr "присвоить значение системному столбцу \"%s\" нельзя" -#: parser/parse_target.c:511 +#: parser/parse_target.c:510 #, c-format msgid "cannot set an array element to DEFAULT" msgstr "элементу массива нельзя присвоить значение по умолчанию" -#: parser/parse_target.c:516 +#: parser/parse_target.c:515 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "вложенному полю нельзя присвоить значение по умолчанию" -#: parser/parse_target.c:585 +#: parser/parse_target.c:584 #, c-format msgid "column \"%s\" is of type %s but expression is of type %s" msgstr "столбец \"%s\" имеет тип %s, а выражение - %s" -#: parser/parse_target.c:759 +#: parser/parse_target.c:758 #, c-format msgid "" "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " @@ -16281,7 +16294,7 @@ "присвоить значение полю \"%s\" столбца \"%s\" нельзя, так как тип %s не " "является составным" -#: parser/parse_target.c:768 +#: parser/parse_target.c:767 #, c-format msgid "" "cannot assign to field \"%s\" of column \"%s\" because there is no such " @@ -16290,7 +16303,7 @@ "присвоить значение полю \"%s\" столбца \"%s\" нельзя, так как в типе данных " "%s нет такого столбца" -#: parser/parse_target.c:835 +#: parser/parse_target.c:834 #, c-format msgid "" "array assignment to \"%s\" requires type %s but expression is of type %s" @@ -16298,12 +16311,12 @@ "для присваивания массива полю \"%s\" требуется тип %s, однако выражение " "имеет тип %s" -#: parser/parse_target.c:845 +#: parser/parse_target.c:844 #, c-format msgid "subfield \"%s\" is of type %s but expression is of type %s" msgstr "вложенное поле \"%s\" имеет тип %s, а выражение - %s" -#: parser/parse_target.c:1261 +#: parser/parse_target.c:1260 #, c-format msgid "SELECT * with no tables specified is not valid" msgstr "SELECT * должен ссылаться на таблицы" @@ -16326,7 +16339,7 @@ #: parser/parse_type.c:279 parser/parse_type.c:822 utils/cache/typcache.c:245 #, c-format msgid "type \"%s\" is only a shell" -msgstr "тип \"%s\" - лишь пустышка" +msgstr "тип \"%s\" является пустышкой" #: parser/parse_type.c:364 #, c-format @@ -16359,6 +16372,7 @@ msgstr "массивы с типом serial не реализованы" #: parser/parse_utilcmd.c:666 parser/parse_utilcmd.c:678 +#: parser/parse_utilcmd.c:736 #, c-format msgid "" "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" @@ -16386,135 +16400,135 @@ msgstr "" "для столбца \"%s\" таблицы \"%s\" свойство identity задано неоднократно" -#: parser/parse_utilcmd.c:743 parser/parse_utilcmd.c:860 +#: parser/parse_utilcmd.c:753 parser/parse_utilcmd.c:870 #, c-format msgid "primary key constraints are not supported on foreign tables" msgstr "ограничения первичного ключа для сторонних таблиц не поддерживаются" -#: parser/parse_utilcmd.c:749 parser/parse_utilcmd.c:866 +#: parser/parse_utilcmd.c:759 parser/parse_utilcmd.c:876 #, c-format msgid "primary key constraints are not supported on partitioned tables" msgstr "" "ограничения первичного ключа для секционированных таблиц не поддерживаются" -#: parser/parse_utilcmd.c:758 parser/parse_utilcmd.c:876 +#: parser/parse_utilcmd.c:768 parser/parse_utilcmd.c:886 #, c-format msgid "unique constraints are not supported on foreign tables" msgstr "ограничения уникальности для сторонних таблиц не поддерживаются" -#: parser/parse_utilcmd.c:764 parser/parse_utilcmd.c:882 +#: parser/parse_utilcmd.c:774 parser/parse_utilcmd.c:892 #, c-format msgid "unique constraints are not supported on partitioned tables" msgstr "ограничения уникальности для секционированных таблиц не поддерживаются" -#: parser/parse_utilcmd.c:781 parser/parse_utilcmd.c:912 +#: parser/parse_utilcmd.c:791 parser/parse_utilcmd.c:922 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "ограничения внешнего ключа для сторонних таблиц не поддерживаются" -#: parser/parse_utilcmd.c:787 parser/parse_utilcmd.c:918 +#: parser/parse_utilcmd.c:797 parser/parse_utilcmd.c:928 #, c-format msgid "foreign key constraints are not supported on partitioned tables" msgstr "" "ограничения внешнего ключа для секционированных таблиц не поддерживаются" -#: parser/parse_utilcmd.c:815 +#: parser/parse_utilcmd.c:825 #, c-format msgid "both default and identity specified for column \"%s\" of table \"%s\"" msgstr "" "для столбца \"%s\" таблицы \"%s\" задано и значение по умолчанию, и свойство " "identity" -#: parser/parse_utilcmd.c:892 +#: parser/parse_utilcmd.c:902 #, c-format msgid "exclusion constraints are not supported on foreign tables" msgstr "ограничения-исключения для сторонних таблиц не поддерживаются" -#: parser/parse_utilcmd.c:898 +#: parser/parse_utilcmd.c:908 #, c-format msgid "exclusion constraints are not supported on partitioned tables" msgstr "ограничения-исключения для секционированных таблиц не поддерживаются" -#: parser/parse_utilcmd.c:970 +#: parser/parse_utilcmd.c:980 #, c-format msgid "LIKE is not supported for creating foreign tables" msgstr "LIKE при создании сторонних таблиц не поддерживается" -#: parser/parse_utilcmd.c:1650 parser/parse_utilcmd.c:1726 +#: parser/parse_utilcmd.c:1660 parser/parse_utilcmd.c:1736 #, c-format msgid "Index \"%s\" contains a whole-row table reference." msgstr "Индекс \"%s\" ссылается на тип всей строки таблицы." -#: parser/parse_utilcmd.c:2055 +#: parser/parse_utilcmd.c:2065 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "в CREATE TABLE нельзя использовать существующий индекс" -#: parser/parse_utilcmd.c:2075 +#: parser/parse_utilcmd.c:2085 #, c-format msgid "index \"%s\" is already associated with a constraint" msgstr "индекс \"%s\" уже связан с ограничением" -#: parser/parse_utilcmd.c:2083 +#: parser/parse_utilcmd.c:2093 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" msgstr "индекс \"%s\" не принадлежит таблице \"%s\"" -#: parser/parse_utilcmd.c:2090 +#: parser/parse_utilcmd.c:2100 #, c-format msgid "index \"%s\" is not valid" msgstr "индекс \"%s\" - нерабочий" -#: parser/parse_utilcmd.c:2096 +#: parser/parse_utilcmd.c:2106 #, c-format msgid "\"%s\" is not a unique index" msgstr "\"%s\" не является уникальным индексом" -#: parser/parse_utilcmd.c:2097 parser/parse_utilcmd.c:2104 -#: parser/parse_utilcmd.c:2111 parser/parse_utilcmd.c:2181 +#: parser/parse_utilcmd.c:2107 parser/parse_utilcmd.c:2114 +#: parser/parse_utilcmd.c:2121 parser/parse_utilcmd.c:2191 #, c-format msgid "Cannot create a primary key or unique constraint using such an index." msgstr "" "Создать первичный ключ или ограничение уникальности для такого индекса " "нельзя." -#: parser/parse_utilcmd.c:2103 +#: parser/parse_utilcmd.c:2113 #, c-format msgid "index \"%s\" contains expressions" msgstr "индекс \"%s\" содержит выражения" -#: parser/parse_utilcmd.c:2110 +#: parser/parse_utilcmd.c:2120 #, c-format msgid "\"%s\" is a partial index" msgstr "\"%s\" - частичный индекс" -#: parser/parse_utilcmd.c:2122 +#: parser/parse_utilcmd.c:2132 #, c-format msgid "\"%s\" is a deferrable index" msgstr "\"%s\" - откладываемый индекс" -#: parser/parse_utilcmd.c:2123 +#: parser/parse_utilcmd.c:2133 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "" "Создать не откладываемое ограничение на базе откладываемого индекса нельзя." -#: parser/parse_utilcmd.c:2180 +#: parser/parse_utilcmd.c:2190 #, c-format msgid "index \"%s\" does not have default sorting behavior" msgstr "в индексе \"%s\" не определено поведение сортировки по умолчанию" -#: parser/parse_utilcmd.c:2324 +#: parser/parse_utilcmd.c:2334 #, c-format msgid "column \"%s\" appears twice in primary key constraint" msgstr "столбец \"%s\" фигурирует в первичном ключе дважды" -#: parser/parse_utilcmd.c:2330 +#: parser/parse_utilcmd.c:2340 #, c-format msgid "column \"%s\" appears twice in unique constraint" msgstr "столбец \"%s\" фигурирует в ограничении уникальности дважды" -#: parser/parse_utilcmd.c:2552 +#: parser/parse_utilcmd.c:2562 #, c-format msgid "" "index expressions and predicates can refer only to the table being indexed" @@ -16522,17 +16536,17 @@ "индексные выражения и предикаты могут ссылаться только на индексируемую " "таблицу" -#: parser/parse_utilcmd.c:2598 +#: parser/parse_utilcmd.c:2608 #, c-format msgid "rules on materialized views are not supported" msgstr "правила для материализованных представлений не поддерживаются" -#: parser/parse_utilcmd.c:2659 +#: parser/parse_utilcmd.c:2669 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "в условиях WHERE для правил нельзя ссылаться на другие отношения" -#: parser/parse_utilcmd.c:2731 +#: parser/parse_utilcmd.c:2741 #, c-format msgid "" "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " @@ -16541,133 +16555,133 @@ "правила с условиями WHERE могут содержать только действия SELECT, INSERT, " "UPDATE или DELETE" -#: parser/parse_utilcmd.c:2749 parser/parse_utilcmd.c:2848 +#: parser/parse_utilcmd.c:2759 parser/parse_utilcmd.c:2858 #: rewrite/rewriteHandler.c:499 rewrite/rewriteManip.c:1015 #, c-format msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" msgstr "условные операторы UNION/INTERSECT/EXCEPT не реализованы" -#: parser/parse_utilcmd.c:2767 +#: parser/parse_utilcmd.c:2777 #, c-format msgid "ON SELECT rule cannot use OLD" msgstr "в правиле ON SELECT нельзя использовать OLD" -#: parser/parse_utilcmd.c:2771 +#: parser/parse_utilcmd.c:2781 #, c-format msgid "ON SELECT rule cannot use NEW" msgstr "в правиле ON SELECT нельзя использовать NEW" -#: parser/parse_utilcmd.c:2780 +#: parser/parse_utilcmd.c:2790 #, c-format msgid "ON INSERT rule cannot use OLD" msgstr "в правиле ON INSERT нельзя использовать OLD" -#: parser/parse_utilcmd.c:2786 +#: parser/parse_utilcmd.c:2796 #, c-format msgid "ON DELETE rule cannot use NEW" msgstr "в правиле ON DELETE нельзя использовать NEW" -#: parser/parse_utilcmd.c:2814 +#: parser/parse_utilcmd.c:2824 #, c-format msgid "cannot refer to OLD within WITH query" msgstr "в запросе WITH нельзя ссылаться на OLD" -#: parser/parse_utilcmd.c:2821 +#: parser/parse_utilcmd.c:2831 #, c-format msgid "cannot refer to NEW within WITH query" msgstr "в запросе WITH нельзя ссылаться на NEW" -#: parser/parse_utilcmd.c:3259 +#: parser/parse_utilcmd.c:3269 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "предложение DEFERRABLE расположено неправильно" -#: parser/parse_utilcmd.c:3264 parser/parse_utilcmd.c:3279 +#: parser/parse_utilcmd.c:3274 parser/parse_utilcmd.c:3289 #, c-format msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" msgstr "DEFERRABLE/NOT DEFERRABLE можно указать только один раз" -#: parser/parse_utilcmd.c:3274 +#: parser/parse_utilcmd.c:3284 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "предложение NOT DEFERRABLE расположено неправильно" -#: parser/parse_utilcmd.c:3287 parser/parse_utilcmd.c:3313 gram.y:5365 +#: parser/parse_utilcmd.c:3297 parser/parse_utilcmd.c:3323 gram.y:5365 #, c-format msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" msgstr "" "ограничение с характеристикой INITIALLY DEFERRED должно быть объявлено как " "DEFERRABLE" -#: parser/parse_utilcmd.c:3295 +#: parser/parse_utilcmd.c:3305 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "предложение INITIALLY DEFERRED расположено неправильно" -#: parser/parse_utilcmd.c:3300 parser/parse_utilcmd.c:3326 +#: parser/parse_utilcmd.c:3310 parser/parse_utilcmd.c:3336 #, c-format msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" msgstr "INITIALLY IMMEDIATE/DEFERRED можно указать только один раз" -#: parser/parse_utilcmd.c:3321 +#: parser/parse_utilcmd.c:3331 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "предложение INITIALLY IMMEDIATE расположено неправильно" -#: parser/parse_utilcmd.c:3512 +#: parser/parse_utilcmd.c:3522 #, c-format msgid "" "CREATE specifies a schema (%s) different from the one being created (%s)" msgstr "в CREATE указана схема (%s), отличная от создаваемой (%s)" -#: parser/parse_utilcmd.c:3571 +#: parser/parse_utilcmd.c:3581 #, c-format msgid "invalid bound specification for a list partition" msgstr "неправильное указание ограничения для секции по списку" -#: parser/parse_utilcmd.c:3627 +#: parser/parse_utilcmd.c:3637 #, c-format msgid "invalid bound specification for a range partition" msgstr "неправильное указание ограничения для секции по диапазону" -#: parser/parse_utilcmd.c:3633 +#: parser/parse_utilcmd.c:3643 #, c-format msgid "FROM must specify exactly one value per partitioning column" msgstr "" "во FROM должно указываться ровно одно значение для секционирующего столбца" -#: parser/parse_utilcmd.c:3637 +#: parser/parse_utilcmd.c:3647 #, c-format msgid "TO must specify exactly one value per partitioning column" msgstr "" "в TO должно указываться ровно одно значение для секционирующего столбца" -#: parser/parse_utilcmd.c:3684 parser/parse_utilcmd.c:3698 +#: parser/parse_utilcmd.c:3694 parser/parse_utilcmd.c:3708 #, c-format msgid "cannot specify NULL in range bound" msgstr "указать NULL в диапазонном ограничении нельзя" -#: parser/parse_utilcmd.c:3745 +#: parser/parse_utilcmd.c:3755 #, c-format msgid "every bound following MAXVALUE must also be MAXVALUE" msgstr "за границей MAXVALUE могут следовать только границы MAXVALUE" -#: parser/parse_utilcmd.c:3751 +#: parser/parse_utilcmd.c:3761 #, c-format msgid "every bound following MINVALUE must also be MINVALUE" msgstr "за границей MINVALUE могут следовать только границы MINVALUE" -#: parser/parse_utilcmd.c:3781 parser/parse_utilcmd.c:3793 +#: parser/parse_utilcmd.c:3791 parser/parse_utilcmd.c:3803 #, c-format msgid "specified value cannot be cast to type %s for column \"%s\"" msgstr "указанное значение нельзя привести к типу %s столбца \"%s\"" -#: parser/parse_utilcmd.c:3795 +#: parser/parse_utilcmd.c:3805 #, c-format msgid "The cast requires a non-immutable conversion." msgstr "Для этого приведения требуется непостоянное преобразование." -#: parser/parse_utilcmd.c:3796 +#: parser/parse_utilcmd.c:3806 #, c-format msgid "Try putting the literal value in single quotes." msgstr "Попробуйте заключить буквальное значение в апострофы." @@ -16677,17 +16691,17 @@ msgid "identifier \"%s\" will be truncated to \"%s\"" msgstr "идентификатор \"%s\" будет усечён до \"%s\"" -#: port/pg_shmem.c:217 port/sysv_shmem.c:217 +#: port/pg_shmem.c:227 port/sysv_shmem.c:227 #, c-format msgid "could not create shared memory segment: %m" msgstr "не удалось создать сегмент разделяемой памяти: %m" -#: port/pg_shmem.c:218 port/sysv_shmem.c:218 +#: port/pg_shmem.c:228 port/sysv_shmem.c:228 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." msgstr "Ошибка в системном вызове shmget(ключ=%lu, размер=%zu, 0%o)." -#: port/pg_shmem.c:222 port/sysv_shmem.c:222 +#: port/pg_shmem.c:232 port/sysv_shmem.c:232 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory " @@ -16701,7 +16715,7 @@ "Подробная информация о настройке разделяемой памяти содержится в " "документации PostgreSQL." -#: port/pg_shmem.c:229 port/sysv_shmem.c:229 +#: port/pg_shmem.c:239 port/sysv_shmem.c:239 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory " @@ -16716,7 +16730,7 @@ "Подробная информация о настройке разделяемой памяти содержится в " "документации PostgreSQL." -#: port/pg_shmem.c:235 port/sysv_shmem.c:235 +#: port/pg_shmem.c:245 port/sysv_shmem.c:245 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs " @@ -16733,12 +16747,12 @@ "Подробная информация о настройке разделяемой памяти содержится в " "документации PostgreSQL." -#: port/pg_shmem.c:580 port/sysv_shmem.c:580 +#: port/pg_shmem.c:590 port/sysv_shmem.c:590 #, c-format msgid "could not map anonymous shared memory: %m" msgstr "не удалось получить анонимную разделяемую память: %m" -#: port/pg_shmem.c:582 port/sysv_shmem.c:582 +#: port/pg_shmem.c:592 port/sysv_shmem.c:592 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory " @@ -16748,23 +16762,23 @@ msgstr "" "Эта ошибка обычно возникает, когда PostgreSQL запрашивает сегмент " "разделяемой памяти, превышая объём доступной физической либо виртуальной " -"памяти или гигантских страниц. Для уменьшения запроса (текущий размер: %zu " -"Б) можно снизить использование разделяемой памяти, возможно, уменьшив " +"памяти или огромных страниц. Для уменьшения запроса (текущий размер: %zu Б) " +"можно снизить использование разделяемой памяти, возможно, уменьшив " "shared_buffers или max_connections." -#: port/pg_shmem.c:644 port/sysv_shmem.c:644 port/win32_shmem.c:151 +#: port/pg_shmem.c:654 port/sysv_shmem.c:654 port/win32_shmem.c:151 #, c-format msgid "huge pages not supported on this platform" -msgstr "гигантские страницы на этой платформе не поддерживаются" +msgstr "огромные страницы на этой платформе не поддерживаются" -#: port/pg_shmem.c:704 port/sysv_shmem.c:704 utils/init/miscinit.c:977 +#: port/pg_shmem.c:714 port/sysv_shmem.c:714 utils/init/miscinit.c:977 #, c-format msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" msgstr "" "ранее выделенный блок разделяемой памяти (ключ %lu, ID %lu) по-прежнему " "используется" -#: port/pg_shmem.c:707 port/sysv_shmem.c:707 utils/init/miscinit.c:979 +#: port/pg_shmem.c:717 port/sysv_shmem.c:717 utils/init/miscinit.c:979 #, c-format msgid "" "Terminate any old server processes associated with data directory \"%s\"." @@ -16772,7 +16786,7 @@ "Завершите все старые серверные процессы, работающие с каталогом данных \"%s" "\"." -#: port/pg_shmem.c:758 port/sysv_shmem.c:758 +#: port/pg_shmem.c:768 port/sysv_shmem.c:768 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "не удалось получить информацию о каталоге данных \"%s\": %m" @@ -16971,17 +16985,17 @@ msgid "Enable the \"track_counts\" option." msgstr "Включите параметр \"track_counts\"." -#: postmaster/bgworker.c:404 postmaster/bgworker.c:915 +#: postmaster/bgworker.c:406 postmaster/bgworker.c:926 #, c-format msgid "registering background worker \"%s\"" msgstr "регистрация фонового процесса \"%s\"" -#: postmaster/bgworker.c:436 +#: postmaster/bgworker.c:447 #, c-format msgid "unregistering background worker \"%s\"" msgstr "разрегистрация фонового процесса \"%s\"" -#: postmaster/bgworker.c:649 +#: postmaster/bgworker.c:660 #, c-format msgid "" "background worker \"%s\": must attach to shared memory in order to request a " @@ -16990,7 +17004,7 @@ "фоновый процесс \"%s\" должен иметь доступ к общей памяти, чтобы запросить " "подключение к БД" -#: postmaster/bgworker.c:658 +#: postmaster/bgworker.c:669 #, c-format msgid "" "background worker \"%s\": cannot request database access if starting at " @@ -16999,12 +17013,12 @@ "фоновый процесс \"%s\" не может получить доступ к БД, если он запущен при " "старте главного процесса" -#: postmaster/bgworker.c:672 +#: postmaster/bgworker.c:683 #, c-format msgid "background worker \"%s\": invalid restart interval" msgstr "фоновый процесс \"%s\": неправильный интервал перезапуска" -#: postmaster/bgworker.c:687 +#: postmaster/bgworker.c:698 #, c-format msgid "" "background worker \"%s\": parallel workers may not be configured for restart" @@ -17012,19 +17026,19 @@ "фоновый процесс \"%s\": параллельные исполнители не могут быть настроены для " "перезапуска" -#: postmaster/bgworker.c:725 +#: postmaster/bgworker.c:736 #, c-format msgid "terminating background worker \"%s\" due to administrator command" msgstr "завершение фонового процесса \"%s\" по команде администратора" -#: postmaster/bgworker.c:923 +#: postmaster/bgworker.c:934 #, c-format msgid "" "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "" "фоновой процесс \"%s\" должен быть зарегистрирован в shared_preload_libraries" -#: postmaster/bgworker.c:935 +#: postmaster/bgworker.c:946 #, c-format msgid "" "background worker \"%s\": only dynamic background workers can request " @@ -17033,12 +17047,12 @@ "фоновый процесс \"%s\": только динамические фоновые процессы могут " "запрашивать уведомление" -#: postmaster/bgworker.c:950 +#: postmaster/bgworker.c:961 #, c-format msgid "too many background workers" msgstr "слишком много фоновых процессов" -#: postmaster/bgworker.c:951 +#: postmaster/bgworker.c:962 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "" @@ -17050,7 +17064,7 @@ msgstr[2] "" "Максимально возможное число фоновых процессов при текущих параметрах: %d." -#: postmaster/bgworker.c:955 +#: postmaster/bgworker.c:966 #, c-format msgid "" "Consider increasing the configuration parameter \"max_worker_processes\"." @@ -17494,7 +17508,7 @@ "%u.0 - %u.%u" #: postmaster/postmaster.c:2146 utils/misc/guc.c:5781 utils/misc/guc.c:5874 -#: utils/misc/guc.c:7224 utils/misc/guc.c:10003 utils/misc/guc.c:10037 +#: utils/misc/guc.c:7224 utils/misc/guc.c:10021 utils/misc/guc.c:10062 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "неверное значение для параметра \"%s\": \"%s\"" @@ -17750,7 +17764,7 @@ #: postmaster/postmaster.c:5155 #, c-format msgid "database system is ready to accept read only connections" -msgstr "система БД готова к подключениям в режиме \"только чтение\"" +msgstr "система БД готова принимать подключения в режиме \"только чтение\"" #: postmaster/postmaster.c:5478 #, c-format @@ -17999,17 +18013,17 @@ msgid "could not clear search path: %s" msgstr "не удалось очистить путь поиска: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:249 +#: replication/libpqwalreceiver/libpqwalreceiver.c:254 #, c-format msgid "invalid connection string syntax: %s" msgstr "ошибочный синтаксис строки подключения: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:273 +#: replication/libpqwalreceiver/libpqwalreceiver.c:279 #, c-format msgid "could not parse connection string: %s" msgstr "не удалось разобрать строку подключения: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:323 +#: replication/libpqwalreceiver/libpqwalreceiver.c:329 #, c-format msgid "" "could not receive database system identifier and timeline ID from the " @@ -18018,13 +18032,13 @@ "не удалось получить идентификатор СУБД и код линии времени с главного " "сервера: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:334 -#: replication/libpqwalreceiver/libpqwalreceiver.c:545 +#: replication/libpqwalreceiver/libpqwalreceiver.c:340 +#: replication/libpqwalreceiver/libpqwalreceiver.c:551 #, c-format msgid "invalid response from primary server" msgstr "неверный ответ главного сервера" -#: replication/libpqwalreceiver/libpqwalreceiver.c:335 +#: replication/libpqwalreceiver/libpqwalreceiver.c:341 #, c-format msgid "" "Could not identify system: got %d rows and %d fields, expected %d rows and " @@ -18033,82 +18047,82 @@ "Не удалось идентифицировать систему, получено строк: %d, полей: %d " "(ожидалось: %d и %d (или более))." -#: replication/libpqwalreceiver/libpqwalreceiver.c:401 #: replication/libpqwalreceiver/libpqwalreceiver.c:407 -#: replication/libpqwalreceiver/libpqwalreceiver.c:432 +#: replication/libpqwalreceiver/libpqwalreceiver.c:413 +#: replication/libpqwalreceiver/libpqwalreceiver.c:438 #, c-format msgid "could not start WAL streaming: %s" msgstr "не удалось начать трансляцию WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:455 +#: replication/libpqwalreceiver/libpqwalreceiver.c:461 #, c-format msgid "could not send end-of-streaming message to primary: %s" msgstr "не удалось отправить главному серверу сообщение о конце передачи: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:477 +#: replication/libpqwalreceiver/libpqwalreceiver.c:483 #, c-format msgid "unexpected result set after end-of-streaming" msgstr "неожиданный набор данных после конца передачи" -#: replication/libpqwalreceiver/libpqwalreceiver.c:491 +#: replication/libpqwalreceiver/libpqwalreceiver.c:497 #, c-format msgid "error while shutting down streaming COPY: %s" msgstr "ошибка при остановке потоковой операции COPY: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:500 +#: replication/libpqwalreceiver/libpqwalreceiver.c:506 #, c-format msgid "error reading result of streaming command: %s" msgstr "ошибка при чтении результата команды передачи: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:508 -#: replication/libpqwalreceiver/libpqwalreceiver.c:746 +#: replication/libpqwalreceiver/libpqwalreceiver.c:514 +#: replication/libpqwalreceiver/libpqwalreceiver.c:752 #, c-format msgid "unexpected result after CommandComplete: %s" msgstr "неожиданный результат после CommandComplete: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:534 +#: replication/libpqwalreceiver/libpqwalreceiver.c:540 #, c-format msgid "could not receive timeline history file from the primary server: %s" msgstr "не удалось получить файл истории линии времени с главного сервера: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:546 +#: replication/libpqwalreceiver/libpqwalreceiver.c:552 #, c-format msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "Ожидался 1 кортеж с 2 полями, однако получено кортежей: %d, полей: %d." -#: replication/libpqwalreceiver/libpqwalreceiver.c:710 -#: replication/libpqwalreceiver/libpqwalreceiver.c:761 +#: replication/libpqwalreceiver/libpqwalreceiver.c:716 #: replication/libpqwalreceiver/libpqwalreceiver.c:767 +#: replication/libpqwalreceiver/libpqwalreceiver.c:773 #, c-format msgid "could not receive data from WAL stream: %s" -msgstr "не удалось извлечь данные из потока WAL: %s" +msgstr "не удалось получить данные из потока WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:786 +#: replication/libpqwalreceiver/libpqwalreceiver.c:792 #, c-format msgid "could not send data to WAL stream: %s" msgstr "не удалось отправить данные в поток WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:835 +#: replication/libpqwalreceiver/libpqwalreceiver.c:841 #, c-format msgid "could not create replication slot \"%s\": %s" msgstr "не удалось создать слот репликации \"%s\": %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:869 +#: replication/libpqwalreceiver/libpqwalreceiver.c:875 #, c-format msgid "invalid query response" msgstr "неверный ответ на запрос" -#: replication/libpqwalreceiver/libpqwalreceiver.c:870 +#: replication/libpqwalreceiver/libpqwalreceiver.c:876 #, c-format msgid "Expected %d fields, got %d fields." msgstr "Ожидалось полей: %d, получено: %d." -#: replication/libpqwalreceiver/libpqwalreceiver.c:939 +#: replication/libpqwalreceiver/libpqwalreceiver.c:945 #, c-format msgid "the query interface requires a database connection" msgstr "для интерфейса запросов требуется подключение к БД" -#: replication/libpqwalreceiver/libpqwalreceiver.c:970 +#: replication/libpqwalreceiver/libpqwalreceiver.c:976 msgid "empty query" msgstr "пустой запрос" @@ -18360,12 +18374,12 @@ msgid "no replication origin is configured" msgstr "ни один источник репликации не настроен" -#: replication/logical/relation.c:283 +#: replication/logical/relation.c:270 #, c-format msgid "logical replication target relation \"%s.%s\" does not exist" msgstr "целевое отношение логической репликации \"%s.%s\" не существует" -#: replication/logical/relation.c:325 +#: replication/logical/relation.c:312 #, c-format msgid "" "logical replication target relation \"%s.%s\" is missing some replicated " @@ -18374,7 +18388,7 @@ "в целевом отношении логической репликации (\"%s.%s\") отсутствуют некоторые " "реплицируемые столбцы" -#: replication/logical/relation.c:365 +#: replication/logical/relation.c:352 #, c-format msgid "" "logical replication target relation \"%s.%s\" uses system columns in REPLICA " @@ -18383,19 +18397,19 @@ "в целевом отношении логической репликации (\"%s.%s\") в индексе REPLICA " "IDENTITY используются системные столбцы" -#: replication/logical/reorderbuffer.c:2446 +#: replication/logical/reorderbuffer.c:2469 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "не удалось записать в файл данных для XID %u: %m" -#: replication/logical/reorderbuffer.c:2550 -#: replication/logical/reorderbuffer.c:2572 +#: replication/logical/reorderbuffer.c:2573 +#: replication/logical/reorderbuffer.c:2595 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "не удалось прочитать из файла подкачки буфера пересортировки: %m" -#: replication/logical/reorderbuffer.c:2554 -#: replication/logical/reorderbuffer.c:2576 +#: replication/logical/reorderbuffer.c:2577 +#: replication/logical/reorderbuffer.c:2599 #, c-format msgid "" "could not read from reorderbuffer spill file: read %d instead of %u bytes" @@ -18403,12 +18417,12 @@ "не удалось прочитать из файла подкачки буфера пересортировки (прочитано " "байт: %d, требовалось: %u)" -#: replication/logical/reorderbuffer.c:2788 +#: replication/logical/reorderbuffer.c:2812 #, c-format msgid "could not remove file \"%s\" during removal of pg_replslot/%s/*.xid: %m" msgstr "файл \"%s\" при удалении pg_replslot/%s/*.xid не был удалён: %m" -#: replication/logical/reorderbuffer.c:3258 +#: replication/logical/reorderbuffer.c:3282 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "" @@ -18432,69 +18446,69 @@ msgstr[2] "" "экспортирован снимок логического декодирования: \"%s\" (ид. транзакций: %u)" -#: replication/logical/snapbuild.c:1271 replication/logical/snapbuild.c:1364 -#: replication/logical/snapbuild.c:1882 +#: replication/logical/snapbuild.c:1287 replication/logical/snapbuild.c:1380 +#: replication/logical/snapbuild.c:1898 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "процесс логического декодирования достиг точки согласованности в %X/%X" -#: replication/logical/snapbuild.c:1273 +#: replication/logical/snapbuild.c:1289 #, c-format msgid "There are no running transactions." msgstr "Больше активных транзакций нет." -#: replication/logical/snapbuild.c:1315 +#: replication/logical/snapbuild.c:1331 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "" "процесс логического декодирования нашёл начальную стартовую точку в %X/%X" -#: replication/logical/snapbuild.c:1317 replication/logical/snapbuild.c:1341 +#: replication/logical/snapbuild.c:1333 replication/logical/snapbuild.c:1357 #, c-format msgid "Waiting for transactions (approximately %d) older than %u to end." msgstr "Ожидание транзакций (примерно %d), старее %u до конца." -#: replication/logical/snapbuild.c:1339 +#: replication/logical/snapbuild.c:1355 #, c-format msgid "logical decoding found initial consistent point at %X/%X" msgstr "" "при логическом декодировании найдена начальная точка согласованности в %X/%X" -#: replication/logical/snapbuild.c:1366 +#: replication/logical/snapbuild.c:1382 #, c-format msgid "There are no old transactions anymore." msgstr "Больше старых транзакций нет." -#: replication/logical/snapbuild.c:1744 replication/logical/snapbuild.c:1777 -#: replication/logical/snapbuild.c:1797 replication/logical/snapbuild.c:1816 +#: replication/logical/snapbuild.c:1760 replication/logical/snapbuild.c:1793 +#: replication/logical/snapbuild.c:1813 replication/logical/snapbuild.c:1832 #, c-format msgid "could not read file \"%s\", read %d of %d: %m" msgstr "не удалось прочитать файл \"%s\" (прочитано байт: %d из %d): %m" -#: replication/logical/snapbuild.c:1751 +#: replication/logical/snapbuild.c:1767 #, c-format msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" msgstr "" "файл состояния snapbuild \"%s\" имеет неправильную сигнатуру (%u вместо %u)" -#: replication/logical/snapbuild.c:1757 +#: replication/logical/snapbuild.c:1773 #, c-format msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" msgstr "" "файл состояния snapbuild \"%s\" имеет неправильную версию (%u вместо %u)" -#: replication/logical/snapbuild.c:1829 +#: replication/logical/snapbuild.c:1845 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "" "в файле состояния snapbuild \"%s\" неверная контрольная сумма (%u вместо %u)" -#: replication/logical/snapbuild.c:1884 +#: replication/logical/snapbuild.c:1900 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "Логическое декодирование начнётся с сохранённого снимка." -#: replication/logical/snapbuild.c:1956 +#: replication/logical/snapbuild.c:1972 #, c-format msgid "could not parse file name \"%s\"" msgstr "не удалось разобрать имя файла \"%s\"" @@ -18508,55 +18522,55 @@ "процесс синхронизации таблицы при логической репликации для подписки \"%s\", " "таблицы \"%s\" закончил обработку" -#: replication/logical/tablesync.c:685 +#: replication/logical/tablesync.c:686 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "" "не удалось получить информацию о таблице \"%s.%s\" с сервера публикации: %s" -#: replication/logical/tablesync.c:691 +#: replication/logical/tablesync.c:692 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "таблица \"%s.%s\" не найдена на сервере публикации" -#: replication/logical/tablesync.c:721 +#: replication/logical/tablesync.c:723 #, c-format msgid "could not fetch table info for table \"%s.%s\": %s" msgstr "не удалось получить информацию о таблице \"%s.%s\": %s" -#: replication/logical/tablesync.c:791 +#: replication/logical/tablesync.c:793 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "" "не удалось начать копирование начального содержимого таблицы \"%s.%s\": %s" -#: replication/logical/tablesync.c:905 +#: replication/logical/tablesync.c:908 #, c-format msgid "table copy could not start transaction on publisher" msgstr "" "при копировании таблицы не удалось начать транзакцию на сервере публикации" -#: replication/logical/tablesync.c:927 +#: replication/logical/tablesync.c:930 #, c-format msgid "table copy could not finish transaction on publisher" msgstr "" "при копировании таблицы не удалось завершить транзакцию на сервере публикации" -#: replication/logical/worker.c:305 +#: replication/logical/worker.c:294 #, c-format msgid "" "processing remote data for replication target relation \"%s.%s\" column \"%s" -"\", remote type %s, local type %s" +"\"" msgstr "" "обработка внешних данных для целевого отношения репликации \"%s.%s\" столбца " -"\"%s\", удалённый тип %s, локальный тип %s" +"\"%s\"" -#: replication/logical/worker.c:542 +#: replication/logical/worker.c:529 #, c-format msgid "ORIGIN message sent out of order" msgstr "сообщение ORIGIN отправлено неуместно" -#: replication/logical/worker.c:675 +#: replication/logical/worker.c:660 #, c-format msgid "" "publisher did not send replica identity column expected by the logical " @@ -18565,7 +18579,7 @@ "сервер публикации не передал столбец идентификации реплики, ожидаемый для " "целевого отношения логической репликации \"%s.%s\"" -#: replication/logical/worker.c:682 +#: replication/logical/worker.c:667 #, c-format msgid "" "logical replication target relation \"%s.%s\" has neither REPLICA IDENTITY " @@ -18576,7 +18590,7 @@ "IDENTITY, ни ключа PRIMARY KEY, и публикуемое отношение не имеет " "характеристики REPLICA IDENTITY FULL" -#: replication/logical/worker.c:913 +#: replication/logical/worker.c:898 #, c-format msgid "" "logical replication could not find row for delete in replication target " @@ -18585,22 +18599,22 @@ "при логической репликации не удалось найти строку для удаления в целевом " "отношении репликации \"%s\"" -#: replication/logical/worker.c:980 +#: replication/logical/worker.c:965 #, c-format msgid "invalid logical replication message type \"%c\"" msgstr "неверный тип сообщения логической репликации \"%c\"" -#: replication/logical/worker.c:1123 +#: replication/logical/worker.c:1108 #, c-format msgid "data stream from publisher has ended" msgstr "поток данных с сервера публикации закончился" -#: replication/logical/worker.c:1282 +#: replication/logical/worker.c:1267 #, c-format msgid "terminating logical replication worker due to timeout" msgstr "завершение обработчика логической репликации из-за тайм-аута" -#: replication/logical/worker.c:1427 +#: replication/logical/worker.c:1413 #, c-format msgid "" "logical replication apply worker for subscription \"%s\" will stop because " @@ -18609,7 +18623,7 @@ "применяющий процесс логической репликации для подписки \"%s\" будет " "остановлен, так как подписка была удалена" -#: replication/logical/worker.c:1441 +#: replication/logical/worker.c:1427 #, c-format msgid "" "logical replication apply worker for subscription \"%s\" will stop because " @@ -18618,7 +18632,7 @@ "применяющий процесс логической репликации для подписки \"%s\" будет " "остановлен, так как подписка была отключена" -#: replication/logical/worker.c:1455 +#: replication/logical/worker.c:1441 #, c-format msgid "" "logical replication apply worker for subscription \"%s\" will restart " @@ -18627,7 +18641,7 @@ "применяющий процесс логической репликации для подписки \"%s\" будет " "перезапущен из-за изменения информации о подключении" -#: replication/logical/worker.c:1469 +#: replication/logical/worker.c:1455 #, c-format msgid "" "logical replication apply worker for subscription \"%s\" will restart " @@ -18636,7 +18650,7 @@ "применяющий процесс логической репликации для подписки \"%s\" будет " "перезапущен, так как подписка была переименована" -#: replication/logical/worker.c:1486 +#: replication/logical/worker.c:1472 #, c-format msgid "" "logical replication apply worker for subscription \"%s\" will restart " @@ -18645,7 +18659,7 @@ "применяющий процесс логической репликации для подписки \"%s\" будет " "перезапущен, так как было изменено имя слота репликации" -#: replication/logical/worker.c:1500 +#: replication/logical/worker.c:1486 #, c-format msgid "" "logical replication apply worker for subscription \"%s\" will restart " @@ -18654,7 +18668,7 @@ "применяющий процесс логической репликации для подписки \"%s\" будет " "перезапущен из-за изменения публикаций подписки" -#: replication/logical/worker.c:1614 +#: replication/logical/worker.c:1600 #, c-format msgid "" "logical replication apply worker for subscription \"%s\" will not start " @@ -18663,7 +18677,7 @@ "применяющий процесс логической репликации для подписки \"%s\" не будет " "запущен, так как подписка была отключена при старте" -#: replication/logical/worker.c:1628 +#: replication/logical/worker.c:1614 #, c-format msgid "" "logical replication table synchronization worker for subscription \"%s\", " @@ -18672,13 +18686,13 @@ "процесс синхронизации таблицы при логической репликации для подписки \"%s\", " "таблицы \"%s\" запущен" -#: replication/logical/worker.c:1632 +#: replication/logical/worker.c:1618 #, c-format msgid "logical replication apply worker for subscription \"%s\" has started" msgstr "" "запускается применяющий процесс логической репликации для подписки \"%s\"" -#: replication/logical/worker.c:1672 +#: replication/logical/worker.c:1658 #, c-format msgid "subscription has no replication slot set" msgstr "для подписки не задан слот репликации" @@ -18847,7 +18861,7 @@ "The transaction has already committed locally, but might not have been " "replicated to the standby." msgstr "" -"Транзакция уже была зафиксирована локально, но возможно не была " +"Транзакция уже была зафиксирована локально, но, возможно, не была " "реплицирована на резервный сервер." #: replication/syncrep.c:269 @@ -18883,82 +18897,82 @@ msgid "number of synchronous standbys (%d) must be greater than zero" msgstr "число синхронных резервных серверов (%d) должно быть больше нуля" -#: replication/walreceiver.c:159 +#: replication/walreceiver.c:160 #, c-format msgid "terminating walreceiver process due to administrator command" msgstr "завершение процесса считывания журнала по команде администратора" -#: replication/walreceiver.c:283 +#: replication/walreceiver.c:284 #, c-format msgid "could not connect to the primary server: %s" msgstr "не удалось подключиться к главному серверу: %s" -#: replication/walreceiver.c:320 +#: replication/walreceiver.c:321 #, c-format msgid "database system identifier differs between the primary and standby" msgstr "идентификаторы СУБД на главном и резервном серверах различаются" -#: replication/walreceiver.c:321 +#: replication/walreceiver.c:322 #, c-format msgid "The primary's identifier is %s, the standby's identifier is %s." msgstr "Идентификатор на главном сервере: %s, на резервном: %s." -#: replication/walreceiver.c:331 +#: replication/walreceiver.c:332 #, c-format msgid "highest timeline %u of the primary is behind recovery timeline %u" msgstr "" "последняя линия времени %u на главном сервере отстаёт от восстанавливаемой " "линии времени %u" -#: replication/walreceiver.c:367 +#: replication/walreceiver.c:368 #, c-format msgid "started streaming WAL from primary at %X/%X on timeline %u" msgstr "" "начало передачи журнала с главного сервера, с позиции %X/%X на линии времени " "%u" -#: replication/walreceiver.c:372 +#: replication/walreceiver.c:373 #, c-format msgid "restarted WAL streaming at %X/%X on timeline %u" msgstr "перезапуск передачи журнала с позиции %X/%X на линии времени %u" -#: replication/walreceiver.c:401 +#: replication/walreceiver.c:402 #, c-format msgid "cannot continue WAL streaming, recovery has already ended" msgstr "продолжить передачу WAL нельзя, восстановление уже окончено" -#: replication/walreceiver.c:438 +#: replication/walreceiver.c:439 #, c-format msgid "replication terminated by primary server" msgstr "репликация прекращена главным сервером" -#: replication/walreceiver.c:439 +#: replication/walreceiver.c:440 #, c-format msgid "End of WAL reached on timeline %u at %X/%X." msgstr "На линии времени %u в %X/%X достигнут конец журнала." -#: replication/walreceiver.c:536 +#: replication/walreceiver.c:537 #, c-format msgid "terminating walreceiver due to timeout" msgstr "завершение приёма журнала из-за тайм-аута" -#: replication/walreceiver.c:574 +#: replication/walreceiver.c:575 #, c-format msgid "primary server contains no more WAL on requested timeline %u" msgstr "" "на главном сервере больше нет журналов для запрошенной линии времени %u" -#: replication/walreceiver.c:589 replication/walreceiver.c:945 +#: replication/walreceiver.c:590 replication/walreceiver.c:1079 #, c-format msgid "could not close log segment %s: %m" msgstr "не удалось закрыть сегмент журнала %s: %m" -#: replication/walreceiver.c:714 +#: replication/walreceiver.c:715 #, c-format msgid "fetching timeline history file for timeline %u from primary server" msgstr "загрузка файла истории для линии времени %u с главного сервера" -#: replication/walreceiver.c:999 +#: replication/walreceiver.c:970 #, c-format msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "не удалось записать в сегмент журнала %s (смещение %u, длина %lu): %m" @@ -19055,12 +19069,19 @@ "нельзя выполнять новые команды, пока процесс передачи WAL находится в режиме " "остановки" -#: replication/walsender.c:1479 +#: replication/walsender.c:1483 +#, c-format +msgid "cannot execute SQL commands in WAL sender for physical replication" +msgstr "" +"нельзя выполнять команды SQL в процессе, передающем WAL для физической " +"репликации" + +#: replication/walsender.c:1506 #, c-format msgid "received replication command: %s" msgstr "получена команда репликации: %s" -#: replication/walsender.c:1495 tcop/fastpath.c:281 tcop/postgres.c:1020 +#: replication/walsender.c:1514 tcop/fastpath.c:287 tcop/postgres.c:1020 #: tcop/postgres.c:1330 tcop/postgres.c:1589 tcop/postgres.c:1994 #: tcop/postgres.c:2362 tcop/postgres.c:2437 #, c-format @@ -19070,39 +19091,32 @@ msgstr "" "текущая транзакция прервана, команды до конца блока транзакции игнорируются" -#: replication/walsender.c:1563 -#, c-format -msgid "cannot execute SQL commands in WAL sender for physical replication" -msgstr "" -"нельзя выполнять команды SQL в процессе, передающем WAL для физической " -"репликации" - -#: replication/walsender.c:1616 replication/walsender.c:1632 +#: replication/walsender.c:1622 replication/walsender.c:1638 #, c-format msgid "unexpected EOF on standby connection" msgstr "неожиданный обрыв соединения с резервным сервером" -#: replication/walsender.c:1671 +#: replication/walsender.c:1677 #, c-format msgid "invalid standby message type \"%c\"" msgstr "неверный тип сообщения резервного сервера: \"%c\"" -#: replication/walsender.c:1712 +#: replication/walsender.c:1718 #, c-format msgid "unexpected message type \"%c\"" msgstr "неожиданный тип сообщения \"%c\"" -#: replication/walsender.c:2084 +#: replication/walsender.c:2090 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "завершение процесса передачи журнала из-за тайм-аута репликации" -#: replication/walsender.c:2168 +#: replication/walsender.c:2174 #, c-format msgid "\"%s\" has now caught up with upstream server" msgstr "ведомый сервер \"%s\" нагнал ведущий" -#: replication/walsender.c:2281 +#: replication/walsender.c:2287 #, c-format msgid "" "number of requested standby connections exceeds max_wal_senders (currently " @@ -19351,7 +19365,7 @@ msgid "renaming an ON SELECT rule is not allowed" msgstr "переименовывать правило ON SELECT нельзя" -#: rewrite/rewriteHandler.c:542 +#: rewrite/rewriteHandler.c:545 #, c-format msgid "" "WITH query name \"%s\" appears in both a rule action and the query being " @@ -19360,113 +19374,122 @@ "имя запроса WITH \"%s\" оказалось и в действии правила, и в переписываемом " "запросе" -#: rewrite/rewriteHandler.c:602 +#: rewrite/rewriteHandler.c:572 +#, c-format +msgid "" +"INSERT...SELECT rule actions are not supported for queries having data-" +"modifying statements in WITH" +msgstr "" +"правила INSERT...SELECT не поддерживаются для запросов с операторами, " +"изменяющими данные, в WITH" + +#: rewrite/rewriteHandler.c:625 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "RETURNING можно определить только для одного правила" -#: rewrite/rewriteHandler.c:811 +#: rewrite/rewriteHandler.c:834 #, c-format msgid "cannot insert into column \"%s\"" msgstr "вставить данные в столбец \"%s\" нельзя" -#: rewrite/rewriteHandler.c:812 rewrite/rewriteHandler.c:827 +#: rewrite/rewriteHandler.c:835 rewrite/rewriteHandler.c:850 #, c-format msgid "Column \"%s\" is an identity column defined as GENERATED ALWAYS." msgstr "" "Столбец \"%s\" является столбцом идентификации со свойством GENERATED ALWAYS." -#: rewrite/rewriteHandler.c:814 +#: rewrite/rewriteHandler.c:837 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "Для переопределения укажите OVERRIDING SYSTEM VALUE." -#: rewrite/rewriteHandler.c:826 +#: rewrite/rewriteHandler.c:849 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "столбцу \"%s\" можно присвоить только значение DEFAULT" -#: rewrite/rewriteHandler.c:988 rewrite/rewriteHandler.c:1006 +#: rewrite/rewriteHandler.c:1011 rewrite/rewriteHandler.c:1029 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "многочисленные присвоения одному столбцу \"%s\"" -#: rewrite/rewriteHandler.c:1937 rewrite/rewriteHandler.c:3735 +#: rewrite/rewriteHandler.c:1960 rewrite/rewriteHandler.c:3772 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "обнаружена бесконечная рекурсия в правилах для отношения \"%s\"" -#: rewrite/rewriteHandler.c:2023 +#: rewrite/rewriteHandler.c:2046 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "обнаружена бесконечная рекурсия в политике для отношения \"%s\"" -#: rewrite/rewriteHandler.c:2343 +#: rewrite/rewriteHandler.c:2366 msgid "Junk view columns are not updatable." msgstr "Утилизируемые столбцы представлений не обновляются." -#: rewrite/rewriteHandler.c:2348 +#: rewrite/rewriteHandler.c:2371 msgid "" "View columns that are not columns of their base relation are not updatable." msgstr "" "Столбцы представлений, не являющиеся столбцами базовых отношений, не " "обновляются." -#: rewrite/rewriteHandler.c:2351 +#: rewrite/rewriteHandler.c:2374 msgid "View columns that refer to system columns are not updatable." msgstr "" "Столбцы представлений, ссылающиеся на системные столбцы, не обновляются." -#: rewrite/rewriteHandler.c:2354 +#: rewrite/rewriteHandler.c:2377 msgid "View columns that return whole-row references are not updatable." msgstr "" "Столбцы представлений, возвращающие ссылки на всю строку, не обновляются." -#: rewrite/rewriteHandler.c:2415 +#: rewrite/rewriteHandler.c:2438 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Представления с DISTINCT не обновляются автоматически." -#: rewrite/rewriteHandler.c:2418 +#: rewrite/rewriteHandler.c:2441 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Представления с GROUP BY не обновляются автоматически." -#: rewrite/rewriteHandler.c:2421 +#: rewrite/rewriteHandler.c:2444 msgid "Views containing HAVING are not automatically updatable." msgstr "Представления с HAVING не обновляются автоматически." -#: rewrite/rewriteHandler.c:2424 +#: rewrite/rewriteHandler.c:2447 msgid "" "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "" "Представления с UNION, INTERSECT или EXCEPT не обновляются автоматически." -#: rewrite/rewriteHandler.c:2427 +#: rewrite/rewriteHandler.c:2450 msgid "Views containing WITH are not automatically updatable." msgstr "Представления с WITH не обновляются автоматически." -#: rewrite/rewriteHandler.c:2430 +#: rewrite/rewriteHandler.c:2453 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Представления с LIMIT или OFFSET не обновляются автоматически." -#: rewrite/rewriteHandler.c:2442 +#: rewrite/rewriteHandler.c:2465 msgid "Views that return aggregate functions are not automatically updatable." msgstr "" "Представления, возвращающие агрегатные функции, не обновляются автоматически." -#: rewrite/rewriteHandler.c:2445 +#: rewrite/rewriteHandler.c:2468 msgid "Views that return window functions are not automatically updatable." msgstr "" "Представления, возвращающие оконные функции, не обновляются автоматически." -#: rewrite/rewriteHandler.c:2448 +#: rewrite/rewriteHandler.c:2471 msgid "" "Views that return set-returning functions are not automatically updatable." msgstr "" "Представления, возвращающие функции с результатом-множеством, не обновляются " "автоматически." -#: rewrite/rewriteHandler.c:2455 rewrite/rewriteHandler.c:2459 -#: rewrite/rewriteHandler.c:2467 +#: rewrite/rewriteHandler.c:2478 rewrite/rewriteHandler.c:2482 +#: rewrite/rewriteHandler.c:2490 msgid "" "Views that do not select from a single table or view are not automatically " "updatable." @@ -19474,27 +19497,36 @@ "Представления, выбирающие данные не из одной таблицы или представления, не " "обновляются автоматически." -#: rewrite/rewriteHandler.c:2470 +#: rewrite/rewriteHandler.c:2493 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Представления, содержащие TABLESAMPLE, не обновляются автоматически." -#: rewrite/rewriteHandler.c:2494 +#: rewrite/rewriteHandler.c:2517 msgid "Views that have no updatable columns are not automatically updatable." msgstr "" "Представления, не содержащие обновляемых столбцов, не обновляются " "автоматически." -#: rewrite/rewriteHandler.c:2971 +#: rewrite/rewriteHandler.c:2994 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "вставить данные в столбец \"%s\" представления \"%s\" нельзя" -#: rewrite/rewriteHandler.c:2979 +#: rewrite/rewriteHandler.c:3002 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "изменить данные в столбце \"%s\" представления \"%s\" нельзя" -#: rewrite/rewriteHandler.c:3449 +#: rewrite/rewriteHandler.c:3475 +#, c-format +msgid "" +"DO INSTEAD NOTIFY rules are not supported for data-modifying statements in " +"WITH" +msgstr "" +"правила DO INSTEAD NOTIFY не поддерживаются в операторах, изменяющих данные, " +"в WITH" + +#: rewrite/rewriteHandler.c:3486 #, c-format msgid "" "DO INSTEAD NOTHING rules are not supported for data-modifying statements in " @@ -19503,7 +19535,7 @@ "правила DO INSTEAD NOTHING не поддерживаются в операторах, изменяющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3463 +#: rewrite/rewriteHandler.c:3500 #, c-format msgid "" "conditional DO INSTEAD rules are not supported for data-modifying statements " @@ -19512,13 +19544,13 @@ "условные правила DO INSTEAD не поддерживаются для операторов, изменяющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3467 +#: rewrite/rewriteHandler.c:3504 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "" "правила DO ALSO не поддерживаются для операторов, изменяющих данные, в WITH" -#: rewrite/rewriteHandler.c:3472 +#: rewrite/rewriteHandler.c:3509 #, c-format msgid "" "multi-statement DO INSTEAD rules are not supported for data-modifying " @@ -19527,8 +19559,8 @@ "составные правила DO INSTEAD не поддерживаются для операторов, изменяющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3663 rewrite/rewriteHandler.c:3671 -#: rewrite/rewriteHandler.c:3679 +#: rewrite/rewriteHandler.c:3700 rewrite/rewriteHandler.c:3708 +#: rewrite/rewriteHandler.c:3716 #, c-format msgid "" "Views with conditional DO INSTEAD rules are not automatically updatable." @@ -19536,43 +19568,43 @@ "Представления в сочетании с правилами DO INSTEAD с условиями не обновляются " "автоматически." -#: rewrite/rewriteHandler.c:3772 +#: rewrite/rewriteHandler.c:3809 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "выполнить INSERT RETURNING для отношения \"%s\" нельзя" -#: rewrite/rewriteHandler.c:3774 +#: rewrite/rewriteHandler.c:3811 #, c-format msgid "" "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "" "Необходимо безусловное правило ON INSERT DO INSTEAD с предложением RETURNING." -#: rewrite/rewriteHandler.c:3779 +#: rewrite/rewriteHandler.c:3816 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "выполнить UPDATE RETURNING для отношения \"%s\" нельзя" -#: rewrite/rewriteHandler.c:3781 +#: rewrite/rewriteHandler.c:3818 #, c-format msgid "" "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "" "Необходимо безусловное правило ON UPDATE DO INSTEAD с предложением RETURNING." -#: rewrite/rewriteHandler.c:3786 +#: rewrite/rewriteHandler.c:3823 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "выполнить DELETE RETURNING для отношения \"%s\" нельзя" -#: rewrite/rewriteHandler.c:3788 +#: rewrite/rewriteHandler.c:3825 #, c-format msgid "" "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "" "Необходимо безусловное правило ON DELETE DO INSTEAD с предложением RETURNING." -#: rewrite/rewriteHandler.c:3806 +#: rewrite/rewriteHandler.c:3843 #, c-format msgid "" "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or " @@ -19581,7 +19613,7 @@ "INSERT c предложением ON CONFLICT нельзя использовать с таблицей, для " "которой заданы правила INSERT или UPDATE" -#: rewrite/rewriteHandler.c:3863 +#: rewrite/rewriteHandler.c:3900 #, c-format msgid "" "WITH cannot be used in a query that is rewritten by rules into multiple " @@ -19635,7 +19667,7 @@ msgid "missing Language parameter" msgstr "отсутствует параметр Language" -#: statistics/dependencies.c:670 statistics/dependencies.c:723 +#: statistics/dependencies.c:682 statistics/dependencies.c:735 #: statistics/mvdistinct.c:333 statistics/mvdistinct.c:386 #: utils/adt/pseudotypes.c:94 utils/adt/pseudotypes.c:122 #: utils/adt/pseudotypes.c:147 utils/adt/pseudotypes.c:171 @@ -19646,7 +19678,7 @@ msgid "cannot accept a value of type %s" msgstr "значение типа %s нельзя ввести" -#: statistics/extended_stats.c:103 +#: statistics/extended_stats.c:105 #, c-format msgid "" "statistics object \"%s.%s\" could not be computed for relation \"%s.%s\"" @@ -19658,12 +19690,17 @@ msgid "cannot access temporary tables of other sessions" msgstr "обращаться к временным таблицам других сеансов нельзя" -#: storage/buffer/bufmgr.c:807 +#: storage/buffer/bufmgr.c:735 +#, c-format +msgid "cannot extend relation %s beyond %u blocks" +msgstr "не удалось увеличить отношение \"%s\" до блока %u" + +#: storage/buffer/bufmgr.c:816 #, c-format msgid "unexpected data beyond EOF in block %u of relation %s" msgstr "неожиданные данные после EOF в блоке %u отношения %s" -#: storage/buffer/bufmgr.c:809 +#: storage/buffer/bufmgr.c:818 #, c-format msgid "" "This has been seen to occur with buggy kernels; consider updating your " @@ -19672,27 +19709,27 @@ "Эта ситуация может возникать из-за ошибок в ядре; возможно, вам следует " "обновить ОС." -#: storage/buffer/bufmgr.c:907 +#: storage/buffer/bufmgr.c:916 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "неверная страница в блоке %u отношения %s; страница обнуляется" -#: storage/buffer/bufmgr.c:4013 +#: storage/buffer/bufmgr.c:4022 #, c-format msgid "could not write block %u of %s" msgstr "не удалось запись блок %u файла %s" -#: storage/buffer/bufmgr.c:4015 +#: storage/buffer/bufmgr.c:4024 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Множественные сбои - возможно, постоянная ошибка записи." -#: storage/buffer/bufmgr.c:4036 storage/buffer/bufmgr.c:4055 +#: storage/buffer/bufmgr.c:4045 storage/buffer/bufmgr.c:4064 #, c-format msgid "writing block %u of relation %s" msgstr "запись блока %u отношения %s" -#: storage/buffer/bufmgr.c:4358 +#: storage/buffer/bufmgr.c:4367 #, c-format msgid "snapshot too old" msgstr "снимок слишком стар" @@ -19892,8 +19929,8 @@ msgstr "неверный размер сообщения %zu в очереди в разделяемой памяти" #: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:190 storage/lmgr/lock.c:905 -#: storage/lmgr/lock.c:943 storage/lmgr/lock.c:2730 storage/lmgr/lock.c:4047 -#: storage/lmgr/lock.c:4112 storage/lmgr/lock.c:4419 +#: storage/lmgr/lock.c:943 storage/lmgr/lock.c:2730 storage/lmgr/lock.c:4132 +#: storage/lmgr/lock.c:4197 storage/lmgr/lock.c:4547 #: storage/lmgr/predicate.c:2476 storage/lmgr/predicate.c:2491 #: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:5037 #: utils/hash/dynahash.c:1061 @@ -19933,13 +19970,13 @@ msgid "requested shared memory size overflows size_t" msgstr "запрошенный размер разделяемой памяти не умещается в size_t" -#: storage/ipc/standby.c:658 tcop/postgres.c:3024 +#: storage/ipc/standby.c:673 tcop/postgres.c:3034 #, c-format msgid "canceling statement due to conflict with recovery" msgstr "" "выполнение оператора отменено из-за конфликта с процессом восстановления" -#: storage/ipc/standby.c:659 tcop/postgres.c:2294 +#: storage/ipc/standby.c:674 tcop/postgres.c:2294 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "" @@ -19952,17 +19989,17 @@ msgstr "" "в записи pg_largeobject для OID %u, стр. %d неверный размер поля данных (%d)" -#: storage/large_object/inv_api.c:284 +#: storage/large_object/inv_api.c:286 #, c-format msgid "invalid flags for opening a large object: %d" msgstr "неверные флаги для открытия большого объекта: %d" -#: storage/large_object/inv_api.c:436 +#: storage/large_object/inv_api.c:432 #, c-format msgid "invalid whence setting: %d" msgstr "неверное значение ориентира: %d" -#: storage/large_object/inv_api.c:593 +#: storage/large_object/inv_api.c:589 #, c-format msgid "invalid large object write request size: %d" msgstr "неверный размер записи большого объекта: %d" @@ -20029,62 +20066,62 @@ msgstr "" "при проверке ограничения-исключения для кортежа (%u,%u) в отношении \"%s\"" -#: storage/lmgr/lmgr.c:1022 +#: storage/lmgr/lmgr.c:1023 #, c-format msgid "relation %u of database %u" msgstr "отношение %u базы данных %u" -#: storage/lmgr/lmgr.c:1028 +#: storage/lmgr/lmgr.c:1029 #, c-format msgid "extension of relation %u of database %u" msgstr "расширение отношения %u базы данных %u" -#: storage/lmgr/lmgr.c:1034 +#: storage/lmgr/lmgr.c:1035 #, c-format msgid "pg_database.datfrozenxid of database %u" msgstr "pg_database.datfrozenxid базы %u" -#: storage/lmgr/lmgr.c:1039 +#: storage/lmgr/lmgr.c:1040 #, c-format msgid "page %u of relation %u of database %u" msgstr "страница %u отношения %u базы данных %u" -#: storage/lmgr/lmgr.c:1046 +#: storage/lmgr/lmgr.c:1047 #, c-format msgid "tuple (%u,%u) of relation %u of database %u" msgstr "кортеж (%u,%u) отношения %u базы данных %u" -#: storage/lmgr/lmgr.c:1054 +#: storage/lmgr/lmgr.c:1055 #, c-format msgid "transaction %u" msgstr "транзакция %u" -#: storage/lmgr/lmgr.c:1059 +#: storage/lmgr/lmgr.c:1060 #, c-format msgid "virtual transaction %d/%u" msgstr "виртуальная транзакция %d/%u" -#: storage/lmgr/lmgr.c:1065 +#: storage/lmgr/lmgr.c:1066 #, c-format msgid "speculative token %u of transaction %u" msgstr "спекулятивный маркер %u транзакции %u" -#: storage/lmgr/lmgr.c:1071 +#: storage/lmgr/lmgr.c:1072 #, c-format msgid "object %u of class %u of database %u" msgstr "объект %u класса %u базы данных %u" -#: storage/lmgr/lmgr.c:1079 +#: storage/lmgr/lmgr.c:1080 #, c-format msgid "user lock [%u,%u,%u]" msgstr "пользовательская блокировка [%u,%u,%u]" -#: storage/lmgr/lmgr.c:1086 +#: storage/lmgr/lmgr.c:1087 #, c-format msgid "advisory lock [%u,%u,%u,%u]" msgstr "рекомендательная блокировка [%u,%u,%u,%u]" -#: storage/lmgr/lmgr.c:1094 +#: storage/lmgr/lmgr.c:1095 #, c-format msgid "unrecognized locktag type %d" msgstr "нераспознанный тип блокировки %d" @@ -20107,12 +20144,12 @@ "только блокировка RowExclusiveLock или менее сильная." #: storage/lmgr/lock.c:906 storage/lmgr/lock.c:944 storage/lmgr/lock.c:2731 -#: storage/lmgr/lock.c:4048 storage/lmgr/lock.c:4113 storage/lmgr/lock.c:4420 +#: storage/lmgr/lock.c:4133 storage/lmgr/lock.c:4198 storage/lmgr/lock.c:4548 #, c-format msgid "You might need to increase max_locks_per_transaction." msgstr "Возможно, следует увеличить параметр max_locks_per_transaction." -#: storage/lmgr/lock.c:3164 storage/lmgr/lock.c:3280 +#: storage/lmgr/lock.c:3181 storage/lmgr/lock.c:3249 storage/lmgr/lock.c:3365 #, c-format msgid "" "cannot PREPARE while holding both session-level and transaction-level locks " @@ -20307,81 +20344,81 @@ msgid "corrupted item pointer: offset = %u, length = %u" msgstr "испорченный указатель элемента: смещение = %u, длина = %u" -#: storage/smgr/md.c:438 storage/smgr/md.c:1008 +#: storage/smgr/md.c:438 storage/smgr/md.c:1009 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "не удалось обрезать файл \"%s\": %m" -#: storage/smgr/md.c:557 +#: storage/smgr/md.c:558 #, c-format msgid "cannot extend file \"%s\" beyond %u blocks" msgstr "не удалось увеличить файл \"%s\" до блока %u" -#: storage/smgr/md.c:579 storage/smgr/md.c:788 storage/smgr/md.c:864 +#: storage/smgr/md.c:580 storage/smgr/md.c:789 storage/smgr/md.c:865 #, c-format msgid "could not seek to block %u in file \"%s\": %m" msgstr "не удалось перейти к блоку %u в файле \"%s\": %m" -#: storage/smgr/md.c:587 +#: storage/smgr/md.c:588 #, c-format msgid "could not extend file \"%s\": %m" msgstr "не удалось увеличить файл \"%s\": %m" -#: storage/smgr/md.c:589 storage/smgr/md.c:596 storage/smgr/md.c:891 +#: storage/smgr/md.c:590 storage/smgr/md.c:597 storage/smgr/md.c:892 #, c-format msgid "Check free disk space." msgstr "Проверьте, есть ли место на диске." -#: storage/smgr/md.c:593 +#: storage/smgr/md.c:594 #, 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:806 +#: storage/smgr/md.c:807 #, c-format msgid "could not read block %u in file \"%s\": %m" msgstr "не удалось прочитать блок %u в файле \"%s\": %m" -#: storage/smgr/md.c:822 +#: storage/smgr/md.c:823 #, 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:882 +#: storage/smgr/md.c:883 #, c-format msgid "could not write block %u in file \"%s\": %m" msgstr "не удалось записать блок %u в файл \"%s\": %m" -#: storage/smgr/md.c:887 +#: storage/smgr/md.c:888 #, 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:979 +#: storage/smgr/md.c:980 #, 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:1034 +#: storage/smgr/md.c:1035 #, c-format msgid "could not truncate file \"%s\" to %u blocks: %m" msgstr "не удалось обрезать файл \"%s\" до нужного числа блоков (%u): %m" -#: storage/smgr/md.c:1329 +#: storage/smgr/md.c:1330 #, c-format msgid "could not fsync file \"%s\" but retrying: %m" msgstr "" "не удалось синхронизировать с ФС файл \"%s\", последует повторная попытка: %m" -#: storage/smgr/md.c:1492 +#: storage/smgr/md.c:1493 #, c-format msgid "could not forward fsync request because request queue is full" msgstr "" "не удалось отправить запрос синхронизации с ФС (очередь запросов переполнена)" -#: storage/smgr/md.c:1992 +#: storage/smgr/md.c:1993 #, c-format msgid "" "could not open file \"%s\" (target block %u): previous segment is only %u " @@ -20390,47 +20427,53 @@ "не удалось открыть файл file \"%s\" (целевой блок %u): недостаточно блоков в " "предыдущем сегменте (всего %u)" -#: storage/smgr/md.c:2006 +#: storage/smgr/md.c:2007 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "не удалось открыть файл file \"%s\" (целевой блок %u): %m" -#: tcop/fastpath.c:111 tcop/fastpath.c:463 tcop/fastpath.c:593 +#: tcop/fastpath.c:111 tcop/fastpath.c:469 tcop/fastpath.c:599 #, c-format msgid "invalid argument size %d in function call message" msgstr "неверный размер аргумента (%d) в сообщении вызова функции" -#: tcop/fastpath.c:309 +#: tcop/fastpath.c:227 +#, c-format +msgid "cannot call function %s via fastpath interface" +msgstr "вызвать функцию %s через интерфейс fastpath нельзя" + +#: tcop/fastpath.c:315 #, c-format msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "вызов функции fastpath: \"%s\" (OID %u)" +msgstr "вызов функции (через fastpath): \"%s\" (OID %u)" -#: tcop/fastpath.c:391 tcop/postgres.c:1192 tcop/postgres.c:1455 +#: tcop/fastpath.c:397 tcop/postgres.c:1192 tcop/postgres.c:1455 #: tcop/postgres.c:1835 tcop/postgres.c:2053 #, c-format msgid "duration: %s ms" msgstr "продолжительность: %s мс" -#: tcop/fastpath.c:395 +#: tcop/fastpath.c:401 #, c-format msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" -msgstr "продолжительность %s мс, вызов функции fastpath: \"%s\" (OID %u)" +msgstr "" +"продолжительность %s мс, вызов функции (через fastpath): \"%s\" (OID %u)" -#: tcop/fastpath.c:431 tcop/fastpath.c:558 +#: tcop/fastpath.c:437 tcop/fastpath.c:564 #, c-format msgid "function call message contains %d arguments but function requires %d" msgstr "" "сообщение вызова функции содержит неверное число аргументов (%d, а требуется " "%d)" -#: tcop/fastpath.c:439 +#: tcop/fastpath.c:445 #, c-format msgid "function call message contains %d argument formats but %d arguments" msgstr "" "сообщение вызова функции содержит неверное число форматов (%d, а аргументов " "%d)" -#: tcop/fastpath.c:526 tcop/fastpath.c:609 +#: tcop/fastpath.c:532 tcop/fastpath.c:615 #, c-format msgid "incorrect binary data format in function argument %d" msgstr "неправильный формат двоичных данных в аргументе функции %d" @@ -20441,7 +20484,7 @@ msgstr "неожиданный обрыв соединения с клиентом" #: tcop/postgres.c:432 tcop/postgres.c:444 tcop/postgres.c:455 -#: tcop/postgres.c:467 tcop/postgres.c:4368 +#: tcop/postgres.c:467 tcop/postgres.c:4378 #, c-format msgid "invalid frontend message type %d" msgstr "неправильный тип клиентского сообщения %d" @@ -20587,9 +20630,9 @@ msgstr "" "Управляющий процесс отдал команду этому серверному процессу откатить текущую " "транзакцию и завершиться, так как другой серверный процесс завершился " -"аварийно и возможно разрушил разделяемую память." +"аварийно и, возможно, разрушил разделяемую память." -#: tcop/postgres.c:2621 tcop/postgres.c:2954 +#: tcop/postgres.c:2621 tcop/postgres.c:2960 #, c-format msgid "" "In a moment you should be able to reconnect to the database and repeat your " @@ -20613,72 +20656,72 @@ "оказался вне допустимых рамок или произошла ошибка вычисления, например, " "деление на ноль." -#: tcop/postgres.c:2884 +#: tcop/postgres.c:2890 #, c-format msgid "canceling authentication due to timeout" msgstr "отмена проверки подлинности из-за тайм-аута" -#: tcop/postgres.c:2888 +#: tcop/postgres.c:2894 #, c-format msgid "terminating autovacuum process due to administrator command" msgstr "прекращение процесса автоочистки по команде администратора" -#: tcop/postgres.c:2892 +#: tcop/postgres.c:2898 #, c-format msgid "terminating logical replication worker due to administrator command" msgstr "завершение обработчика логической репликации по команде администратора" -#: tcop/postgres.c:2896 +#: tcop/postgres.c:2902 #, c-format msgid "logical replication launcher shutting down" msgstr "процесс запуска логической репликации остановлен" -#: tcop/postgres.c:2909 tcop/postgres.c:2919 tcop/postgres.c:2952 +#: tcop/postgres.c:2915 tcop/postgres.c:2925 tcop/postgres.c:2958 #, c-format msgid "terminating connection due to conflict with recovery" msgstr "закрытие подключения из-за конфликта с процессом восстановления" -#: tcop/postgres.c:2925 +#: tcop/postgres.c:2931 #, c-format msgid "terminating connection due to administrator command" msgstr "закрытие подключения по команде администратора" -#: tcop/postgres.c:2935 +#: tcop/postgres.c:2941 #, c-format msgid "connection to client lost" msgstr "подключение к клиенту потеряно" -#: tcop/postgres.c:3001 +#: tcop/postgres.c:3011 #, c-format msgid "canceling statement due to lock timeout" msgstr "выполнение оператора отменено из-за тайм-аута блокировки" -#: tcop/postgres.c:3008 +#: tcop/postgres.c:3018 #, c-format msgid "canceling statement due to statement timeout" msgstr "выполнение оператора отменено из-за тайм-аута" -#: tcop/postgres.c:3015 +#: tcop/postgres.c:3025 #, c-format msgid "canceling autovacuum task" msgstr "отмена задачи автоочистки" -#: tcop/postgres.c:3038 +#: tcop/postgres.c:3048 #, c-format msgid "canceling statement due to user request" msgstr "выполнение оператора отменено по запросу пользователя" -#: tcop/postgres.c:3048 +#: tcop/postgres.c:3058 #, c-format msgid "terminating connection due to idle-in-transaction timeout" msgstr "закрытие подключения из-за тайм-аута простоя в транзакции" -#: tcop/postgres.c:3162 +#: tcop/postgres.c:3172 #, c-format msgid "stack depth limit exceeded" msgstr "превышен предел глубины стека" -#: tcop/postgres.c:3163 +#: tcop/postgres.c:3173 #, c-format msgid "" "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), " @@ -20688,12 +20731,12 @@ "КБ), предварительно убедившись, что ОС предоставляет достаточный размер " "стека." -#: tcop/postgres.c:3226 +#: tcop/postgres.c:3236 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." msgstr "Значение \"max_stack_depth\" не должно превышать %ld КБ." -#: tcop/postgres.c:3228 +#: tcop/postgres.c:3238 #, c-format msgid "" "Increase the platform's stack depth limit via \"ulimit -s\" or local " @@ -20702,48 +20745,49 @@ "Увеличьте предел глубины стека в системе с помощью команды \"ulimit -s\" или " "эквивалента в вашей ОС." -#: tcop/postgres.c:3588 +#: tcop/postgres.c:3598 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "неверный аргумент командной строки для серверного процесса: %s" -#: tcop/postgres.c:3589 tcop/postgres.c:3595 +#: tcop/postgres.c:3599 tcop/postgres.c:3605 #, c-format msgid "Try \"%s --help\" for more information." msgstr "Для дополнительной информации попробуйте \"%s --help\"." -#: tcop/postgres.c:3593 +#: tcop/postgres.c:3603 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s: неверный аргумент командной строки: %s" -#: tcop/postgres.c:3655 +#: tcop/postgres.c:3665 #, c-format msgid "%s: no database nor user name specified" msgstr "%s: не указаны ни база данных, ни пользователь" -#: tcop/postgres.c:4276 +#: tcop/postgres.c:4286 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "неверный подтип сообщения CLOSE: %d" -#: tcop/postgres.c:4311 +#: tcop/postgres.c:4321 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "неверный подтип сообщения DESCRIBE: %d" -#: tcop/postgres.c:4389 +#: tcop/postgres.c:4399 #, c-format msgid "fastpath function calls not supported in a replication connection" -msgstr "вызовы функции fastpath не поддерживаются для реплицирующих соединений" +msgstr "" +"вызовы функций через fastpath не поддерживаются для реплицирующих соединений" -#: tcop/postgres.c:4393 +#: tcop/postgres.c:4403 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "" "протокол расширенных запросов не поддерживается для реплицирующих соединений" -#: tcop/postgres.c:4563 +#: tcop/postgres.c:4573 #, c-format msgid "" "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" @@ -20923,12 +20967,12 @@ msgstr "отсутствует параметр Dictionary" #: tsearch/spell.c:380 tsearch/spell.c:397 tsearch/spell.c:406 -#: tsearch/spell.c:1036 +#: tsearch/spell.c:1062 #, c-format msgid "invalid affix flag \"%s\"" msgstr "неверный флаг аффиксов \"%s\"" -#: tsearch/spell.c:384 tsearch/spell.c:1040 +#: tsearch/spell.c:384 tsearch/spell.c:1066 #, c-format msgid "affix flag \"%s\" is out of range" msgstr "флаг аффикса \"%s\" вне диапазона" @@ -20948,29 +20992,29 @@ msgid "could not open dictionary file \"%s\": %m" msgstr "не удалось открыть файл словаря \"%s\": %m" -#: tsearch/spell.c:742 utils/adt/regexp.c:208 +#: tsearch/spell.c:763 utils/adt/regexp.c:208 #, c-format msgid "invalid regular expression: %s" msgstr "неверное регулярное выражение: %s" -#: tsearch/spell.c:956 tsearch/spell.c:973 tsearch/spell.c:990 -#: tsearch/spell.c:1007 tsearch/spell.c:1072 gram.y:15328 gram.y:15345 +#: tsearch/spell.c:982 tsearch/spell.c:999 tsearch/spell.c:1016 +#: tsearch/spell.c:1033 tsearch/spell.c:1098 gram.y:15328 gram.y:15345 #, c-format msgid "syntax error" msgstr "ошибка синтаксиса" -#: tsearch/spell.c:1163 tsearch/spell.c:1175 tsearch/spell.c:1729 -#: tsearch/spell.c:1734 tsearch/spell.c:1739 +#: tsearch/spell.c:1189 tsearch/spell.c:1201 tsearch/spell.c:1755 +#: tsearch/spell.c:1760 tsearch/spell.c:1765 #, c-format msgid "invalid affix alias \"%s\"" msgstr "неверное указание аффикса \"%s\"" -#: tsearch/spell.c:1216 tsearch/spell.c:1287 tsearch/spell.c:1431 +#: tsearch/spell.c:1242 tsearch/spell.c:1313 tsearch/spell.c:1457 #, c-format msgid "could not open affix file \"%s\": %m" msgstr "не удалось открыть файл аффиксов \"%s\": %m" -#: tsearch/spell.c:1270 +#: tsearch/spell.c:1296 #, c-format msgid "" "Ispell dictionary supports only \"default\", \"long\", and \"num\" flag " @@ -20979,12 +21023,12 @@ "словарь Ispell поддерживает для флага только значения \"default\", \"long\" " "и \"num\"" -#: tsearch/spell.c:1314 +#: tsearch/spell.c:1340 #, c-format msgid "invalid number of flag vector aliases" msgstr "неверное количество векторов флагов" -#: tsearch/spell.c:1547 +#: tsearch/spell.c:1573 #, c-format msgid "affix file contains both old-style and new-style commands" msgstr "файл аффиксов содержит команды и в старом, и в новом стиле" @@ -21166,17 +21210,17 @@ msgid "must be member of role \"%s\"" msgstr "нужно быть членом роли \"%s\"" -#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 -#: utils/adt/arrayfuncs.c:1531 utils/adt/arrayfuncs.c:3263 -#: utils/adt/arrayfuncs.c:3401 utils/adt/arrayfuncs.c:5858 -#: utils/adt/arrayfuncs.c:6169 utils/adt/arrayutils.c:93 +#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:933 +#: utils/adt/arrayfuncs.c:1520 utils/adt/arrayfuncs.c:3263 +#: utils/adt/arrayfuncs.c:3403 utils/adt/arrayfuncs.c:5866 +#: utils/adt/arrayfuncs.c:6177 utils/adt/arrayutils.c:93 #: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "размер массива превышает предел (%d)" -#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:471 -#: utils/adt/array_userfuncs.c:551 utils/adt/json.c:1765 utils/adt/json.c:1860 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:472 +#: utils/adt/array_userfuncs.c:552 utils/adt/json.c:1765 utils/adt/json.c:1860 #: utils/adt/json.c:1898 utils/adt/jsonb.c:1128 utils/adt/jsonb.c:1157 #: utils/adt/jsonb.c:1549 utils/adt/jsonb.c:1713 utils/adt/jsonb.c:1723 #, c-format @@ -21189,15 +21233,15 @@ msgstr "тип входных данных не является массивом" #: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 -#: utils/adt/arrayfuncs.c:1334 utils/adt/float.c:1234 utils/adt/float.c:1308 -#: utils/adt/float.c:3585 utils/adt/float.c:3601 utils/adt/int.c:608 -#: utils/adt/int.c:637 utils/adt/int.c:658 utils/adt/int.c:689 -#: utils/adt/int.c:722 utils/adt/int.c:744 utils/adt/int.c:892 -#: utils/adt/int.c:913 utils/adt/int.c:940 utils/adt/int.c:980 -#: utils/adt/int.c:1001 utils/adt/int.c:1028 utils/adt/int.c:1061 -#: utils/adt/int.c:1144 utils/adt/int8.c:1298 utils/adt/numeric.c:2953 -#: utils/adt/numeric.c:2962 utils/adt/varbit.c:1178 utils/adt/varbit.c:1566 -#: utils/adt/varlena.c:1054 utils/adt/varlena.c:2957 +#: utils/adt/float.c:1234 utils/adt/float.c:1308 utils/adt/float.c:3585 +#: utils/adt/float.c:3601 utils/adt/int.c:608 utils/adt/int.c:637 +#: utils/adt/int.c:658 utils/adt/int.c:689 utils/adt/int.c:722 +#: utils/adt/int.c:744 utils/adt/int.c:892 utils/adt/int.c:913 +#: utils/adt/int.c:940 utils/adt/int.c:980 utils/adt/int.c:1001 +#: utils/adt/int.c:1028 utils/adt/int.c:1061 utils/adt/int.c:1144 +#: utils/adt/int8.c:1298 utils/adt/numeric.c:2947 utils/adt/numeric.c:2952 +#: utils/adt/varbit.c:1178 utils/adt/varbit.c:1566 utils/adt/varlena.c:1054 +#: utils/adt/varlena.c:2957 #, c-format msgid "integer out of range" msgstr "целое вне диапазона" @@ -21237,12 +21281,12 @@ msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "Массивы с разными размерностями несовместимы для соединения." -#: utils/adt/array_userfuncs.c:667 utils/adt/array_userfuncs.c:819 +#: utils/adt/array_userfuncs.c:668 utils/adt/array_userfuncs.c:820 #, c-format msgid "searching for elements in multidimensional arrays is not supported" msgstr "поиск элементов в многомерных массивах не поддерживается" -#: utils/adt/array_userfuncs.c:691 +#: utils/adt/array_userfuncs.c:692 #, c-format msgid "initial position must not be null" msgstr "начальная позиция не может быть NULL" @@ -21251,14 +21295,14 @@ #: utils/adt/arrayfuncs.c:293 utils/adt/arrayfuncs.c:315 #: utils/adt/arrayfuncs.c:330 utils/adt/arrayfuncs.c:344 #: utils/adt/arrayfuncs.c:350 utils/adt/arrayfuncs.c:357 -#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:504 -#: utils/adt/arrayfuncs.c:515 utils/adt/arrayfuncs.c:530 -#: utils/adt/arrayfuncs.c:551 utils/adt/arrayfuncs.c:581 -#: utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:596 -#: utils/adt/arrayfuncs.c:630 utils/adt/arrayfuncs.c:653 -#: utils/adt/arrayfuncs.c:673 utils/adt/arrayfuncs.c:785 -#: utils/adt/arrayfuncs.c:794 utils/adt/arrayfuncs.c:824 -#: utils/adt/arrayfuncs.c:839 utils/adt/arrayfuncs.c:892 +#: utils/adt/arrayfuncs.c:490 utils/adt/arrayfuncs.c:506 +#: utils/adt/arrayfuncs.c:517 utils/adt/arrayfuncs.c:532 +#: utils/adt/arrayfuncs.c:553 utils/adt/arrayfuncs.c:583 +#: utils/adt/arrayfuncs.c:590 utils/adt/arrayfuncs.c:598 +#: utils/adt/arrayfuncs.c:632 utils/adt/arrayfuncs.c:655 +#: utils/adt/arrayfuncs.c:675 utils/adt/arrayfuncs.c:787 +#: utils/adt/arrayfuncs.c:796 utils/adt/arrayfuncs.c:826 +#: utils/adt/arrayfuncs.c:841 utils/adt/arrayfuncs.c:894 #, c-format msgid "malformed array literal: \"%s\"" msgstr "ошибочный литерал массива: \"%s\"" @@ -21278,8 +21322,8 @@ msgid "Missing \"%s\" after array dimensions." msgstr "После размерностей массива отсутствует \"%s\"." -#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2882 -#: utils/adt/arrayfuncs.c:2914 utils/adt/arrayfuncs.c:2929 +#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2881 +#: utils/adt/arrayfuncs.c:2913 utils/adt/arrayfuncs.c:2928 #, c-format msgid "upper bound cannot be less than lower bound" msgstr "верхняя граница не может быть меньше нижней" @@ -21299,83 +21343,83 @@ msgid "Specified array dimensions do not match array contents." msgstr "Указанные размерности массива не соответствуют его содержимому." -#: utils/adt/arrayfuncs.c:489 utils/adt/arrayfuncs.c:516 +#: utils/adt/arrayfuncs.c:491 utils/adt/arrayfuncs.c:518 #: utils/adt/rangetypes.c:2116 utils/adt/rangetypes.c:2124 #: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216 #, c-format msgid "Unexpected end of input." msgstr "Неожиданный конец ввода." -#: utils/adt/arrayfuncs.c:505 utils/adt/arrayfuncs.c:552 -#: utils/adt/arrayfuncs.c:582 utils/adt/arrayfuncs.c:631 +#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:554 +#: utils/adt/arrayfuncs.c:584 utils/adt/arrayfuncs.c:633 #, c-format msgid "Unexpected \"%c\" character." msgstr "Неожиданный знак \"%c\"." -#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:654 +#: utils/adt/arrayfuncs.c:533 utils/adt/arrayfuncs.c:656 #, c-format msgid "Unexpected array element." msgstr "Неожиданный элемент массива." -#: utils/adt/arrayfuncs.c:589 +#: utils/adt/arrayfuncs.c:591 #, c-format msgid "Unmatched \"%c\" character." msgstr "Непарный знак \"%c\"." -#: utils/adt/arrayfuncs.c:597 utils/adt/jsonfuncs.c:2381 +#: utils/adt/arrayfuncs.c:599 utils/adt/jsonfuncs.c:2381 #, c-format msgid "Multidimensional arrays must have sub-arrays with matching dimensions." msgstr "" "Для многомерных массивов должны задаваться вложенные массивы с " "соответствующими размерностями." -#: utils/adt/arrayfuncs.c:674 +#: utils/adt/arrayfuncs.c:676 #, c-format msgid "Junk after closing right brace." msgstr "Мусор после закрывающей фигурной скобки." -#: utils/adt/arrayfuncs.c:1296 utils/adt/arrayfuncs.c:3369 -#: utils/adt/arrayfuncs.c:5764 +#: utils/adt/arrayfuncs.c:1298 utils/adt/arrayfuncs.c:3369 +#: utils/adt/arrayfuncs.c:5770 #, c-format msgid "invalid number of dimensions: %d" msgstr "неверное число размерностей: %d" -#: utils/adt/arrayfuncs.c:1307 +#: utils/adt/arrayfuncs.c:1309 #, c-format msgid "invalid array flags" msgstr "неверные флаги массива" -#: utils/adt/arrayfuncs.c:1315 +#: utils/adt/arrayfuncs.c:1317 #, c-format msgid "wrong element type" msgstr "неверный тип элемента" -#: utils/adt/arrayfuncs.c:1365 utils/adt/rangetypes.c:334 +#: utils/adt/arrayfuncs.c:1354 utils/adt/rangetypes.c:334 #: utils/cache/lsyscache.c:2707 #, c-format msgid "no binary input function available for type %s" msgstr "для типа %s нет функции ввода двоичных данных" -#: utils/adt/arrayfuncs.c:1505 +#: utils/adt/arrayfuncs.c:1494 #, c-format msgid "improper binary format in array element %d" msgstr "неподходящий двоичный формат в элементе массива %d" -#: utils/adt/arrayfuncs.c:1586 utils/adt/rangetypes.c:339 +#: utils/adt/arrayfuncs.c:1575 utils/adt/rangetypes.c:339 #: utils/cache/lsyscache.c:2740 #, c-format msgid "no binary output function available for type %s" msgstr "для типа %s нет функции вывода двоичных данных" -#: utils/adt/arrayfuncs.c:2064 +#: utils/adt/arrayfuncs.c:2053 #, c-format msgid "slices of fixed-length arrays not implemented" msgstr "разрезание массивов постоянной длины не поддерживается" -#: utils/adt/arrayfuncs.c:2242 utils/adt/arrayfuncs.c:2264 -#: utils/adt/arrayfuncs.c:2313 utils/adt/arrayfuncs.c:2549 -#: utils/adt/arrayfuncs.c:2860 utils/adt/arrayfuncs.c:5750 -#: utils/adt/arrayfuncs.c:5776 utils/adt/arrayfuncs.c:5787 +#: utils/adt/arrayfuncs.c:2231 utils/adt/arrayfuncs.c:2253 +#: utils/adt/arrayfuncs.c:2302 utils/adt/arrayfuncs.c:2541 +#: utils/adt/arrayfuncs.c:2859 utils/adt/arrayfuncs.c:5756 +#: utils/adt/arrayfuncs.c:5782 utils/adt/arrayfuncs.c:5793 #: utils/adt/json.c:2259 utils/adt/json.c:2334 utils/adt/jsonb.c:1327 #: utils/adt/jsonb.c:1413 utils/adt/jsonfuncs.c:4153 utils/adt/jsonfuncs.c:4304 #: utils/adt/jsonfuncs.c:4349 utils/adt/jsonfuncs.c:4396 @@ -21383,28 +21427,28 @@ msgid "wrong number of array subscripts" msgstr "неверное число индексов массива" -#: utils/adt/arrayfuncs.c:2247 utils/adt/arrayfuncs.c:2355 -#: utils/adt/arrayfuncs.c:2613 utils/adt/arrayfuncs.c:2919 +#: utils/adt/arrayfuncs.c:2236 utils/adt/arrayfuncs.c:2344 +#: utils/adt/arrayfuncs.c:2605 utils/adt/arrayfuncs.c:2918 #, c-format msgid "array subscript out of range" msgstr "индекс массива вне диапазона" -#: utils/adt/arrayfuncs.c:2252 +#: utils/adt/arrayfuncs.c:2241 #, c-format msgid "cannot assign null value to an element of a fixed-length array" msgstr "нельзя присвоить значение null элементу массива фиксированной длины" -#: utils/adt/arrayfuncs.c:2807 +#: utils/adt/arrayfuncs.c:2806 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "изменения в срезах массивов фиксированной длины не поддерживаются" -#: utils/adt/arrayfuncs.c:2838 +#: utils/adt/arrayfuncs.c:2837 #, c-format msgid "array slice subscript must provide both boundaries" msgstr "в указании среза массива должны быть заданы обе границы" -#: utils/adt/arrayfuncs.c:2839 +#: utils/adt/arrayfuncs.c:2838 #, c-format msgid "" "When assigning to a slice of an empty array value, slice boundaries must be " @@ -21413,93 +21457,98 @@ "При присвоении значений срезу в пустом массиве, должны полностью задаваться " "обе границы." -#: utils/adt/arrayfuncs.c:2850 utils/adt/arrayfuncs.c:2945 +#: utils/adt/arrayfuncs.c:2849 utils/adt/arrayfuncs.c:2945 #, c-format msgid "source array too small" msgstr "исходный массив слишком мал" -#: utils/adt/arrayfuncs.c:3525 +#: utils/adt/arrayfuncs.c:3527 #, c-format msgid "null array element not allowed in this context" msgstr "элемент массива null недопустим в данном контексте" -#: utils/adt/arrayfuncs.c:3627 utils/adt/arrayfuncs.c:3798 -#: utils/adt/arrayfuncs.c:4072 +#: utils/adt/arrayfuncs.c:3629 utils/adt/arrayfuncs.c:3800 +#: utils/adt/arrayfuncs.c:4074 #, c-format msgid "cannot compare arrays of different element types" msgstr "нельзя сравнивать массивы с элементами разных типов" -#: utils/adt/arrayfuncs.c:3974 utils/adt/rangetypes.c:1253 +#: utils/adt/arrayfuncs.c:3976 utils/adt/rangetypes.c:1253 #, c-format msgid "could not identify a hash function for type %s" msgstr "не удалось найти функцию хеширования для типа %s" -#: utils/adt/arrayfuncs.c:5164 +#: utils/adt/arrayfuncs.c:5166 #, c-format msgid "data type %s is not an array type" msgstr "тип данных %s не является типом массива" -#: utils/adt/arrayfuncs.c:5219 +#: utils/adt/arrayfuncs.c:5221 #, c-format msgid "cannot accumulate null arrays" msgstr "аккумулировать NULL-массивы нельзя" -#: utils/adt/arrayfuncs.c:5247 +#: utils/adt/arrayfuncs.c:5249 #, c-format msgid "cannot accumulate empty arrays" msgstr "аккумулировать пустые массивы нельзя" -#: utils/adt/arrayfuncs.c:5276 utils/adt/arrayfuncs.c:5282 +#: utils/adt/arrayfuncs.c:5278 utils/adt/arrayfuncs.c:5284 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "аккумулировать массивы различной размерности нельзя" -#: utils/adt/arrayfuncs.c:5648 utils/adt/arrayfuncs.c:5688 +#: utils/adt/arrayfuncs.c:5654 utils/adt/arrayfuncs.c:5694 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "массив размерностей или массив нижних границ не может быть null" -#: utils/adt/arrayfuncs.c:5751 utils/adt/arrayfuncs.c:5777 +#: utils/adt/arrayfuncs.c:5757 utils/adt/arrayfuncs.c:5783 #, c-format msgid "Dimension array must be one dimensional." msgstr "Массив размерностей должен быть одномерным." -#: utils/adt/arrayfuncs.c:5756 utils/adt/arrayfuncs.c:5782 +#: utils/adt/arrayfuncs.c:5762 utils/adt/arrayfuncs.c:5788 #, c-format msgid "dimension values cannot be null" msgstr "значения размерностей не могут быть null" -#: utils/adt/arrayfuncs.c:5788 +#: utils/adt/arrayfuncs.c:5794 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "Массив нижних границ и массив размерностей имеют разные размеры." -#: utils/adt/arrayfuncs.c:6034 +#: utils/adt/arrayfuncs.c:6042 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "удаление элементов из многомерных массивов не поддерживается" -#: utils/adt/arrayfuncs.c:6311 +#: utils/adt/arrayfuncs.c:6319 #, c-format msgid "thresholds must be one-dimensional array" msgstr "границы должны задаваться одномерным массивом" -#: utils/adt/arrayfuncs.c:6316 +#: utils/adt/arrayfuncs.c:6324 #, c-format msgid "thresholds array must not contain NULLs" msgstr "массив границ не должен содержать NULL" -#: utils/adt/arrayutils.c:209 +#: utils/adt/arrayutils.c:136 +#, c-format +msgid "array lower bound is too large: %d" +msgstr "нижняя граница массива слишком велика: %d" + +#: utils/adt/arrayutils.c:236 #, c-format msgid "typmod array must be type cstring[]" msgstr "массив typmod должен иметь тип cstring[]" -#: utils/adt/arrayutils.c:214 +#: utils/adt/arrayutils.c:241 #, c-format msgid "typmod array must be one-dimensional" msgstr "массив typmod должен быть одномерным" -#: utils/adt/arrayutils.c:219 +#: utils/adt/arrayutils.c:246 #, c-format msgid "typmod array must not contain nulls" msgstr "массив typmod не должен содержать элементы null" @@ -21520,9 +21569,9 @@ #: utils/adt/geo_ops.c:4582 utils/adt/geo_ops.c:4589 utils/adt/mac.c:94 #: utils/adt/mac8.c:93 utils/adt/mac8.c:166 utils/adt/mac8.c:184 #: utils/adt/mac8.c:202 utils/adt/mac8.c:221 utils/adt/nabstime.c:1542 -#: utils/adt/network.c:58 utils/adt/numeric.c:593 utils/adt/numeric.c:620 -#: utils/adt/numeric.c:5498 utils/adt/numeric.c:5522 utils/adt/numeric.c:5546 -#: utils/adt/numeric.c:6348 utils/adt/numeric.c:6374 utils/adt/oid.c:44 +#: utils/adt/network.c:58 utils/adt/numeric.c:585 utils/adt/numeric.c:612 +#: utils/adt/numeric.c:5488 utils/adt/numeric.c:5512 utils/adt/numeric.c:5536 +#: utils/adt/numeric.c:6327 utils/adt/numeric.c:6353 utils/adt/oid.c:44 #: utils/adt/oid.c:58 utils/adt/oid.c:64 utils/adt/oid.c:86 #: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:50 utils/adt/tid.c:72 #: utils/adt/tid.c:80 utils/adt/tid.c:88 utils/adt/txid.c:405 @@ -21545,8 +21594,8 @@ #: utils/adt/int.c:846 utils/adt/int.c:954 utils/adt/int.c:1043 #: utils/adt/int.c:1082 utils/adt/int.c:1110 utils/adt/int8.c:597 #: utils/adt/int8.c:657 utils/adt/int8.c:897 utils/adt/int8.c:1005 -#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6912 -#: utils/adt/numeric.c:7201 utils/adt/numeric.c:8213 utils/adt/timestamp.c:3242 +#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6891 +#: utils/adt/numeric.c:7180 utils/adt/numeric.c:8247 utils/adt/timestamp.c:3242 #, c-format msgid "division by zero" msgstr "деление на ноль" @@ -21577,8 +21626,8 @@ msgid "date/time value \"current\" is no longer supported" msgstr "значение \"current\" для даты/времени больше не поддерживается" -#: utils/adt/date.c:173 utils/adt/date.c:181 utils/adt/formatting.c:3578 -#: utils/adt/formatting.c:3587 +#: utils/adt/date.c:173 utils/adt/date.c:181 utils/adt/formatting.c:3625 +#: utils/adt/formatting.c:3634 #, c-format msgid "date out of range: \"%s\"" msgstr "дата вне диапазона: \"%s\"" @@ -21602,8 +21651,8 @@ #: utils/adt/date.c:328 utils/adt/date.c:351 utils/adt/date.c:377 #: utils/adt/date.c:1093 utils/adt/date.c:1139 utils/adt/date.c:1728 #: utils/adt/date.c:1759 utils/adt/date.c:1788 utils/adt/date.c:2525 -#: utils/adt/datetime.c:1688 utils/adt/formatting.c:3453 -#: utils/adt/formatting.c:3485 utils/adt/formatting.c:3553 +#: utils/adt/datetime.c:1688 utils/adt/formatting.c:3500 +#: utils/adt/formatting.c:3532 utils/adt/formatting.c:3600 #: utils/adt/json.c:1540 utils/adt/json.c:1562 utils/adt/jsonb.c:825 #: utils/adt/jsonb.c:849 utils/adt/nabstime.c:459 utils/adt/nabstime.c:502 #: utils/adt/nabstime.c:532 utils/adt/nabstime.c:575 utils/adt/timestamp.c:231 @@ -21676,7 +21725,7 @@ msgid "\"time with time zone\" units \"%s\" not recognized" msgstr "\"время с часовым поясом\" содержит нераспознанные единицы \"%s\"" -#: utils/adt/date.c:2743 utils/adt/datetime.c:931 utils/adt/datetime.c:1846 +#: utils/adt/date.c:2745 utils/adt/datetime.c:931 utils/adt/datetime.c:1846 #: utils/adt/datetime.c:4632 utils/adt/timestamp.c:504 #: utils/adt/timestamp.c:531 utils/adt/timestamp.c:4894 #: utils/adt/timestamp.c:5102 @@ -21684,7 +21733,7 @@ msgid "time zone \"%s\" not recognized" msgstr "часовой пояс \"%s\" не распознан" -#: utils/adt/date.c:2775 utils/adt/timestamp.c:4936 utils/adt/timestamp.c:5133 +#: utils/adt/date.c:2777 utils/adt/timestamp.c:4936 utils/adt/timestamp.c:5133 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "" @@ -21729,17 +21778,17 @@ msgid "could not open tablespace directory \"%s\": %m" msgstr "не удалось открыть каталог табличного пространства \"%s\": %m" -#: utils/adt/dbsize.c:764 utils/adt/dbsize.c:832 +#: utils/adt/dbsize.c:768 utils/adt/dbsize.c:836 #, c-format msgid "invalid size: \"%s\"" msgstr "некорректная величина: \"%s\"" -#: utils/adt/dbsize.c:833 +#: utils/adt/dbsize.c:837 #, c-format msgid "Invalid size unit: \"%s\"." msgstr "Неверная единица измерения величины: \"%s\"." -#: utils/adt/dbsize.c:834 +#: utils/adt/dbsize.c:838 #, c-format msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." msgstr "" @@ -21844,32 +21893,32 @@ #: utils/adt/float.c:1259 utils/adt/float.c:1333 utils/adt/int.c:334 #: utils/adt/int.c:760 utils/adt/int.c:789 utils/adt/int.c:810 #: utils/adt/int.c:830 utils/adt/int.c:864 utils/adt/int.c:1159 -#: utils/adt/int8.c:1323 utils/adt/numeric.c:3050 utils/adt/numeric.c:3059 +#: utils/adt/int8.c:1323 utils/adt/numeric.c:3041 utils/adt/numeric.c:3046 #, c-format msgid "smallint out of range" msgstr "smallint вне диапазона" -#: utils/adt/float.c:1459 utils/adt/numeric.c:7634 +#: utils/adt/float.c:1459 utils/adt/numeric.c:7613 #, c-format msgid "cannot take square root of a negative number" msgstr "извлечь квадратный корень отрицательного числа нельзя" -#: utils/adt/float.c:1501 utils/adt/numeric.c:2853 +#: utils/adt/float.c:1501 utils/adt/numeric.c:2854 #, c-format msgid "zero raised to a negative power is undefined" msgstr "ноль в отрицательной степени даёт неопределённость" -#: utils/adt/float.c:1505 utils/adt/numeric.c:2859 +#: utils/adt/float.c:1505 utils/adt/numeric.c:8100 #, c-format msgid "a negative number raised to a non-integer power yields a complex result" msgstr "отрицательное число в дробной степени даёт комплексный результат" -#: utils/adt/float.c:1571 utils/adt/float.c:1601 utils/adt/numeric.c:7900 +#: utils/adt/float.c:1571 utils/adt/float.c:1601 utils/adt/numeric.c:7885 #, c-format msgid "cannot take logarithm of zero" msgstr "вычислить логарифм нуля нельзя" -#: utils/adt/float.c:1575 utils/adt/float.c:1605 utils/adt/numeric.c:7904 +#: utils/adt/float.c:1575 utils/adt/float.c:1605 utils/adt/numeric.c:7889 #, c-format msgid "cannot take logarithm of a negative number" msgstr "вычислить логарифм отрицательного числа нельзя" @@ -21882,12 +21931,12 @@ msgid "input is out of range" msgstr "введённое значение вне диапазона" -#: utils/adt/float.c:3561 utils/adt/numeric.c:1493 +#: utils/adt/float.c:3561 utils/adt/numeric.c:1485 #, c-format msgid "count must be greater than zero" msgstr "счётчик должен быть больше нуля" -#: utils/adt/float.c:3566 utils/adt/numeric.c:1500 +#: utils/adt/float.c:3566 utils/adt/numeric.c:1492 #, c-format msgid "operand, lower bound, and upper bound cannot be NaN" msgstr "операнд, нижняя и верхняя границы не могут быть NaN" @@ -21897,130 +21946,130 @@ msgid "lower and upper bounds must be finite" msgstr "нижняя и верхняя границы должны быть конечными" -#: utils/adt/float.c:3610 utils/adt/numeric.c:1513 +#: utils/adt/float.c:3610 utils/adt/numeric.c:1505 #, c-format msgid "lower bound cannot equal upper bound" msgstr "нижняя граница не может равняться верхней" -#: utils/adt/formatting.c:482 +#: utils/adt/formatting.c:486 #, c-format msgid "invalid format specification for an interval value" msgstr "неправильная спецификация формата для целого числа" -#: utils/adt/formatting.c:483 +#: utils/adt/formatting.c:487 #, c-format msgid "Intervals are not tied to specific calendar dates." msgstr "Интервалы не привязываются к определённым календарным датам." -#: utils/adt/formatting.c:1051 +#: utils/adt/formatting.c:1055 #, c-format msgid "\"EEEE\" must be the last pattern used" msgstr "\"EEEE\" может быть только последним шаблоном" -#: utils/adt/formatting.c:1059 +#: utils/adt/formatting.c:1063 #, c-format msgid "\"9\" must be ahead of \"PR\"" msgstr "\"9\" должна стоять до \"PR\"" -#: utils/adt/formatting.c:1075 +#: utils/adt/formatting.c:1079 #, c-format msgid "\"0\" must be ahead of \"PR\"" msgstr "\"0\" должен стоять до \"PR\"" -#: utils/adt/formatting.c:1102 +#: utils/adt/formatting.c:1106 #, c-format msgid "multiple decimal points" msgstr "многочисленные десятичные точки" -#: utils/adt/formatting.c:1106 utils/adt/formatting.c:1189 +#: utils/adt/formatting.c:1110 utils/adt/formatting.c:1193 #, c-format msgid "cannot use \"V\" and decimal point together" msgstr "нельзя использовать \"V\" вместе с десятичной точкой" -#: utils/adt/formatting.c:1118 +#: utils/adt/formatting.c:1122 #, c-format msgid "cannot use \"S\" twice" msgstr "нельзя использовать \"S\" дважды" -#: utils/adt/formatting.c:1122 +#: utils/adt/formatting.c:1126 #, c-format msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" msgstr "нельзя использовать \"S\" вместе с \"PL\"/\"MI\"/\"SG\"/\"PR\"" -#: utils/adt/formatting.c:1142 +#: utils/adt/formatting.c:1146 #, c-format msgid "cannot use \"S\" and \"MI\" together" msgstr "нельзя использовать \"S\" вместе с \"MI\"" -#: utils/adt/formatting.c:1152 +#: utils/adt/formatting.c:1156 #, c-format msgid "cannot use \"S\" and \"PL\" together" msgstr "нельзя использовать \"S\" вместе с \"PL\"" -#: utils/adt/formatting.c:1162 +#: utils/adt/formatting.c:1166 #, c-format msgid "cannot use \"S\" and \"SG\" together" msgstr "нельзя использовать \"S\" вместе с \"SG\"" -#: utils/adt/formatting.c:1171 +#: utils/adt/formatting.c:1175 #, c-format msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" msgstr "нельзя использовать \"PR\" вместе с \"S\"/\"PL\"/\"MI\"/\"SG\"" -#: utils/adt/formatting.c:1197 +#: utils/adt/formatting.c:1201 #, c-format msgid "cannot use \"EEEE\" twice" msgstr "нельзя использовать \"EEEE\" дважды" -#: utils/adt/formatting.c:1203 +#: utils/adt/formatting.c:1207 #, c-format msgid "\"EEEE\" is incompatible with other formats" msgstr "\"EEEE\" несовместим с другими форматами" -#: utils/adt/formatting.c:1204 +#: utils/adt/formatting.c:1208 #, c-format msgid "" "\"EEEE\" may only be used together with digit and decimal point patterns." msgstr "" "\"EEEE\" может использоваться только с шаблонами цифр и десятичной точки." -#: utils/adt/formatting.c:1393 +#: utils/adt/formatting.c:1397 #, c-format msgid "\"%s\" is not a number" msgstr "\"%s\" не является числом" -#: utils/adt/formatting.c:1471 +#: utils/adt/formatting.c:1475 #, c-format msgid "case conversion failed: %s" msgstr "преобразовать регистр не удалось: %s" -#: utils/adt/formatting.c:1536 +#: utils/adt/formatting.c:1540 #, c-format msgid "could not determine which collation to use for lower() function" msgstr "" "не удалось определить, какое правило сортировки использовать для функции " "lower()" -#: utils/adt/formatting.c:1661 +#: utils/adt/formatting.c:1665 #, c-format msgid "could not determine which collation to use for upper() function" msgstr "" "не удалось определить, какое правило сортировки использовать для функции " "upper()" -#: utils/adt/formatting.c:1787 +#: utils/adt/formatting.c:1791 #, c-format msgid "could not determine which collation to use for initcap() function" msgstr "" "не удалось определить, какое правило сортировки использовать для функции " "initcap()" -#: utils/adt/formatting.c:2157 +#: utils/adt/formatting.c:2161 #, c-format msgid "invalid combination of date conventions" msgstr "неверное сочетание стилей дат" -#: utils/adt/formatting.c:2158 +#: utils/adt/formatting.c:2162 #, c-format msgid "" "Do not mix Gregorian and ISO week date conventions in a formatting template." @@ -22028,27 +22077,27 @@ "Не смешивайте Григорианский стиль дат (недель) с ISO в одном шаблоне " "форматирования." -#: utils/adt/formatting.c:2175 +#: utils/adt/formatting.c:2179 #, c-format msgid "conflicting values for \"%s\" field in formatting string" msgstr "конфликтующие значения поля \"%s\" в строке форматирования" -#: utils/adt/formatting.c:2177 +#: utils/adt/formatting.c:2181 #, c-format msgid "This value contradicts a previous setting for the same field type." msgstr "Это значение противоречит предыдущему значению поля того же типа." -#: utils/adt/formatting.c:2241 +#: utils/adt/formatting.c:2245 #, c-format msgid "source string too short for \"%s\" formatting field" msgstr "входная строка короче, чем требует поле форматирования \"%s\"" -#: utils/adt/formatting.c:2243 +#: utils/adt/formatting.c:2247 #, c-format msgid "Field requires %d characters, but only %d remain." msgstr "Требуется символов: %d, а осталось только %d." -#: utils/adt/formatting.c:2246 utils/adt/formatting.c:2260 +#: utils/adt/formatting.c:2250 utils/adt/formatting.c:2264 #, c-format msgid "" "If your source string is not fixed-width, try using the \"FM\" modifier." @@ -22056,80 +22105,80 @@ "Если входная строка имеет переменную длину, попробуйте использовать " "модификатор \"FM\"." -#: utils/adt/formatting.c:2256 utils/adt/formatting.c:2269 -#: utils/adt/formatting.c:2399 +#: utils/adt/formatting.c:2260 utils/adt/formatting.c:2273 +#: utils/adt/formatting.c:2403 #, c-format msgid "invalid value \"%s\" for \"%s\"" msgstr "неверное значение \"%s\" для \"%s\"" -#: utils/adt/formatting.c:2258 +#: utils/adt/formatting.c:2262 #, c-format msgid "Field requires %d characters, but only %d could be parsed." msgstr "Поле должно поглотить символов: %d, но удалось разобрать только %d." -#: utils/adt/formatting.c:2271 +#: utils/adt/formatting.c:2275 #, c-format msgid "Value must be an integer." msgstr "Значение должно быть целым числом." -#: utils/adt/formatting.c:2276 +#: utils/adt/formatting.c:2280 #, c-format msgid "value for \"%s\" in source string is out of range" msgstr "значение \"%s\" во входной строке вне диапазона" -#: utils/adt/formatting.c:2278 +#: utils/adt/formatting.c:2282 #, c-format msgid "Value must be in the range %d to %d." msgstr "Значение должно быть в интервале %d..%d." -#: utils/adt/formatting.c:2401 +#: utils/adt/formatting.c:2405 #, c-format msgid "The given value did not match any of the allowed values for this field." msgstr "" "Данное значение не соответствует ни одному из допустимых значений для этого " "поля." -#: utils/adt/formatting.c:2586 utils/adt/formatting.c:2606 -#: utils/adt/formatting.c:2626 utils/adt/formatting.c:2646 -#: utils/adt/formatting.c:2665 utils/adt/formatting.c:2684 -#: utils/adt/formatting.c:2708 utils/adt/formatting.c:2726 -#: utils/adt/formatting.c:2744 utils/adt/formatting.c:2762 -#: utils/adt/formatting.c:2779 utils/adt/formatting.c:2796 +#: utils/adt/formatting.c:2590 utils/adt/formatting.c:2610 +#: utils/adt/formatting.c:2630 utils/adt/formatting.c:2650 +#: utils/adt/formatting.c:2669 utils/adt/formatting.c:2688 +#: utils/adt/formatting.c:2712 utils/adt/formatting.c:2730 +#: utils/adt/formatting.c:2748 utils/adt/formatting.c:2766 +#: utils/adt/formatting.c:2783 utils/adt/formatting.c:2800 #, c-format msgid "localized string format value too long" msgstr "слишком длинное значение формата локализованной строки" -#: utils/adt/formatting.c:3083 +#: utils/adt/formatting.c:3130 #, c-format msgid "formatting field \"%s\" is only supported in to_char" msgstr "поле форматирования \"%s\" поддерживается только в функции to_char" -#: utils/adt/formatting.c:3194 +#: utils/adt/formatting.c:3241 #, c-format msgid "invalid input string for \"Y,YYY\"" msgstr "ошибка синтаксиса в значении для шаблона \"Y,YYY\"" -#: utils/adt/formatting.c:3696 +#: utils/adt/formatting.c:3743 #, c-format msgid "hour \"%d\" is invalid for the 12-hour clock" msgstr "час \"%d\" не соответствует 12-часовому формату времени" -#: utils/adt/formatting.c:3698 +#: utils/adt/formatting.c:3745 #, c-format msgid "Use the 24-hour clock, or give an hour between 1 and 12." msgstr "Используйте 24-часовой формат или передавайте часы от 1 до 12." -#: utils/adt/formatting.c:3807 +#: utils/adt/formatting.c:3854 #, c-format msgid "cannot calculate day of year without year information" msgstr "нельзя рассчитать день года без информации о годе" -#: utils/adt/formatting.c:4674 +#: utils/adt/formatting.c:4721 #, c-format msgid "\"EEEE\" not supported for input" msgstr "\"EEEE\" не поддерживается при вводе" -#: utils/adt/formatting.c:4686 +#: utils/adt/formatting.c:4733 #, c-format msgid "\"RN\" not supported for input" msgstr "\"RN\" не поддерживается при вводе" @@ -22267,7 +22316,7 @@ msgid "oidvector has too many elements" msgstr "oidvector содержит слишком много элементов" -#: utils/adt/int.c:1347 utils/adt/int8.c:1453 utils/adt/numeric.c:1401 +#: utils/adt/int.c:1347 utils/adt/int8.c:1453 utils/adt/numeric.c:1393 #: utils/adt/timestamp.c:5195 utils/adt/timestamp.c:5276 #, c-format msgid "step size cannot equal zero" @@ -22287,7 +22336,7 @@ #: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031 #: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112 #: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 -#: utils/adt/int8.c:1358 utils/adt/int8.c:1393 utils/adt/numeric.c:3005 +#: utils/adt/int8.c:1358 utils/adt/int8.c:1393 utils/adt/numeric.c:2996 #: utils/adt/varbit.c:1646 #, c-format msgid "bigint out of range" @@ -22602,8 +22651,8 @@ msgid "" "Try calling the function in the FROM clause using a column definition list." msgstr "" -"Попробуйте вызвать эту функцию в предложении FROM, используя список с " -"определениями столбцов." +"Попробуйте вызвать эту функцию в предложении FROM, используя список " +"определений столбцов." #: utils/adt/jsonfuncs.c:3595 utils/adt/jsonfuncs.c:3671 #, c-format @@ -22662,7 +22711,7 @@ msgid "levenshtein argument exceeds maximum length of %d characters" msgstr "длина аргумента levenshtein() превышает максимум (%d симв.)" -#: utils/adt/like.c:183 utils/adt/selfuncs.c:5651 +#: utils/adt/like.c:183 utils/adt/selfuncs.c:5678 #, c-format msgid "could not determine which collation to use for ILIKE" msgstr "не удалось определить, какой порядок сортировки использовать для ILIKE" @@ -22908,84 +22957,84 @@ msgid "cannot subtract inet values of different sizes" msgstr "нельзя вычитать значения inet разного размера" -#: utils/adt/numeric.c:819 +#: utils/adt/numeric.c:811 #, c-format msgid "invalid sign in external \"numeric\" value" msgstr "неверный знак во внешнем значении \"numeric\"" -#: utils/adt/numeric.c:825 +#: utils/adt/numeric.c:817 #, c-format msgid "invalid scale in external \"numeric\" value" msgstr "неверный порядок числа во внешнем значении \"numeric\"" -#: utils/adt/numeric.c:834 +#: utils/adt/numeric.c:826 #, c-format msgid "invalid digit in external \"numeric\" value" msgstr "неверная цифра во внешнем значении \"numeric\"" -#: utils/adt/numeric.c:1024 utils/adt/numeric.c:1038 +#: utils/adt/numeric.c:1016 utils/adt/numeric.c:1030 #, c-format msgid "NUMERIC precision %d must be between 1 and %d" msgstr "точность NUMERIC %d должна быть между 1 и %d" -#: utils/adt/numeric.c:1029 +#: utils/adt/numeric.c:1021 #, c-format msgid "NUMERIC scale %d must be between 0 and precision %d" msgstr "порядок NUMERIC %d должен быть между 0 и точностью (%d)" -#: utils/adt/numeric.c:1047 +#: utils/adt/numeric.c:1039 #, c-format msgid "invalid NUMERIC type modifier" msgstr "неверный модификатор типа NUMERIC" -#: utils/adt/numeric.c:1379 +#: utils/adt/numeric.c:1371 #, c-format msgid "start value cannot be NaN" msgstr "начальное значение не может быть NaN" -#: utils/adt/numeric.c:1384 +#: utils/adt/numeric.c:1376 #, c-format msgid "stop value cannot be NaN" msgstr "конечное значение не может быть NaN" -#: utils/adt/numeric.c:1394 +#: utils/adt/numeric.c:1386 #, c-format msgid "step size cannot be NaN" msgstr "размер шага не может быть NaN" -#: utils/adt/numeric.c:2589 utils/adt/numeric.c:5561 utils/adt/numeric.c:6006 -#: utils/adt/numeric.c:7710 utils/adt/numeric.c:8135 utils/adt/numeric.c:8249 -#: utils/adt/numeric.c:8322 +#: utils/adt/numeric.c:2588 utils/adt/numeric.c:5551 utils/adt/numeric.c:5985 +#: utils/adt/numeric.c:7691 utils/adt/numeric.c:8157 utils/adt/numeric.c:8283 +#: utils/adt/numeric.c:8356 #, c-format msgid "value overflows numeric format" msgstr "значение переполняет формат numeric" -#: utils/adt/numeric.c:2931 +#: utils/adt/numeric.c:2926 #, c-format msgid "cannot convert NaN to integer" msgstr "нельзя преобразовать NaN в integer" -#: utils/adt/numeric.c:2997 +#: utils/adt/numeric.c:2988 #, c-format msgid "cannot convert NaN to bigint" msgstr "нельзя преобразовать NaN в bigint" -#: utils/adt/numeric.c:3042 +#: utils/adt/numeric.c:3033 #, c-format msgid "cannot convert NaN to smallint" msgstr "нельзя преобразовать NaN в smallint" -#: utils/adt/numeric.c:3079 utils/adt/numeric.c:3150 +#: utils/adt/numeric.c:3069 utils/adt/numeric.c:3140 #, c-format msgid "cannot convert infinity to numeric" msgstr "нельзя представить бесконечность в numeric" -#: utils/adt/numeric.c:6076 +#: utils/adt/numeric.c:6055 #, c-format msgid "numeric field overflow" msgstr "переполнение поля numeric" -#: utils/adt/numeric.c:6077 +#: utils/adt/numeric.c:6056 #, c-format msgid "" "A field with precision %d, scale %d must round to an absolute value less " @@ -23030,24 +23079,24 @@ msgid "percentile value %g is not between 0 and 1" msgstr "значение перцентиля %g лежит не в диапазоне 0..1" -#: utils/adt/pg_locale.c:1260 +#: utils/adt/pg_locale.c:1264 #, c-format msgid "Apply system library package updates." msgstr "Обновите пакет с системной библиотекой." -#: utils/adt/pg_locale.c:1475 +#: utils/adt/pg_locale.c:1479 #, c-format msgid "could not create locale \"%s\": %m" msgstr "не удалось создать локаль \"%s\": %m" -#: utils/adt/pg_locale.c:1478 +#: utils/adt/pg_locale.c:1482 #, c-format msgid "" "The operating system could not find any locale data for the locale name \"%s" "\"." msgstr "Операционная система не может найти данные локали с именем \"%s\"." -#: utils/adt/pg_locale.c:1579 +#: utils/adt/pg_locale.c:1583 #, c-format msgid "" "collations with different collate and ctype values are not supported on this " @@ -23056,53 +23105,53 @@ "правила сортировки с разными значениями collate и ctype не поддерживаются на " "этой платформе" -#: utils/adt/pg_locale.c:1588 +#: utils/adt/pg_locale.c:1592 #, c-format msgid "collation provider LIBC is not supported on this platform" -msgstr "поставщик правил сортировки LIBC не поддерживается на этой платформе" +msgstr "провайдер правил сортировки LIBC не поддерживается на этой платформе" -#: utils/adt/pg_locale.c:1600 +#: utils/adt/pg_locale.c:1604 #, c-format msgid "" "collations with different collate and ctype values are not supported by ICU" msgstr "" "ICU не поддерживает правила сортировки с разными значениями collate и ctype" -#: utils/adt/pg_locale.c:1606 utils/adt/pg_locale.c:1694 +#: utils/adt/pg_locale.c:1610 utils/adt/pg_locale.c:1698 #, c-format msgid "could not open collator for locale \"%s\": %s" msgstr "не удалось открыть сортировщик для локали \"%s\": %s" -#: utils/adt/pg_locale.c:1617 +#: utils/adt/pg_locale.c:1621 #, c-format msgid "ICU is not supported in this build" msgstr "ICU не поддерживается в данной сборке" -#: utils/adt/pg_locale.c:1618 +#: utils/adt/pg_locale.c:1622 #, c-format msgid "You need to rebuild PostgreSQL using --with-icu." msgstr "Необходимо перекомпилировать PostgreSQL с ключом --with-icu." -#: utils/adt/pg_locale.c:1638 +#: utils/adt/pg_locale.c:1642 #, c-format msgid "collation \"%s\" has no actual version, but a version was specified" msgstr "для правила сортировки \"%s\", лишённого версии, была задана версия" -#: utils/adt/pg_locale.c:1645 +#: utils/adt/pg_locale.c:1649 #, c-format msgid "collation \"%s\" has version mismatch" msgstr "несовпадение версии для правила сортировки \"%s\"" -#: utils/adt/pg_locale.c:1647 +#: utils/adt/pg_locale.c:1651 #, c-format msgid "" "The collation in the database was created using version %s, but the " "operating system provides version %s." msgstr "" "Правило сортировки в базе данных было создано с версией %s, но операционная " -"версия предоставляет версию %s." +"система предоставляет версию %s." -#: utils/adt/pg_locale.c:1650 +#: utils/adt/pg_locale.c:1654 #, c-format msgid "" "Rebuild all objects affected by this collation and run ALTER COLLATION %s " @@ -23112,27 +23161,27 @@ "ALTER COLLATION %s REFRESH VERSION либо соберите PostgreSQL с правильной " "версией библиотеки." -#: utils/adt/pg_locale.c:1734 +#: utils/adt/pg_locale.c:1738 #, c-format msgid "could not open ICU converter for encoding \"%s\": %s" msgstr "не удалось открыть преобразователь ICU для кодировки \"%s\": %s" -#: utils/adt/pg_locale.c:1765 utils/adt/pg_locale.c:1774 +#: utils/adt/pg_locale.c:1769 utils/adt/pg_locale.c:1778 #, c-format msgid "ucnv_toUChars failed: %s" msgstr "ошибка ucnv_toUChars: %s" -#: utils/adt/pg_locale.c:1803 utils/adt/pg_locale.c:1812 +#: utils/adt/pg_locale.c:1807 utils/adt/pg_locale.c:1816 #, c-format msgid "ucnv_fromUChars failed: %s" msgstr "ошибка ucnv_fromUChars: %s" -#: utils/adt/pg_locale.c:1985 +#: utils/adt/pg_locale.c:1989 #, c-format msgid "invalid multibyte character for locale" msgstr "неверный многобайтный символ для локали" -#: utils/adt/pg_locale.c:1986 +#: utils/adt/pg_locale.c:1990 #, c-format msgid "" "The server's LC_CTYPE locale is probably incompatible with the database " @@ -23490,12 +23539,12 @@ msgid "rule \"%s\" has unsupported event type %d" msgstr "правило \"%s\" имеет неподдерживаемый тип событий %d" -#: utils/adt/selfuncs.c:5636 +#: utils/adt/selfuncs.c:5663 #, c-format msgid "case insensitive matching not supported on type bytea" msgstr "регистронезависимое сравнение не поддерживается для типа bytea" -#: utils/adt/selfuncs.c:5738 +#: utils/adt/selfuncs.c:5765 #, c-format msgid "regular-expression matching not supported on type bytea" msgstr "сравнение с регулярными выражениями не поддерживается для типа bytea" @@ -23670,10 +23719,14 @@ msgid "gtsvector_in not implemented" msgstr "функция gtsvector_in не реализована" -#: utils/adt/tsquery.c:166 +#: utils/adt/tsquery.c:166 utils/adt/tsquery_op.c:123 #, c-format -msgid "distance in phrase operator should not be greater than %d" -msgstr "дистанция во фразовом операторе должна быть не больше %d" +msgid "" +"distance in phrase operator must be an integer value between zero and %d " +"inclusive" +msgstr "" +"расстояние во фразовом операторе должно быть целым числом от 0 до %d " +"включительно" #: utils/adt/tsquery.c:254 utils/adt/tsquery.c:513 #: utils/adt/tsvector_parser.c:141 @@ -23720,12 +23773,6 @@ "запрос поиска текста игнорируется, так как содержит только стоп-слова или не " "содержит лексем" -#: utils/adt/tsquery_op.c:123 -#, c-format -msgid "distance in phrase operator should be non-negative and less than %d" -msgstr "" -"дистанция во фразовом операторе должна быть неотрицательной и меньше %d" - #: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" @@ -24086,7 +24133,7 @@ "This probably indicates that the version of libxml2 being used is not " "compatible with the libxml2 header files that PostgreSQL was built with." msgstr "" -"Возможно это означает, что используемая версия libxml2 не совместима с " +"Возможно, это означает, что используемая версия libxml2 несовместима с " "заголовочными файлами libxml2, с которыми был собран PostgreSQL." #: utils/adt/xml.c:1898 @@ -24192,7 +24239,7 @@ #: utils/cache/lsyscache.c:2702 utils/cache/lsyscache.c:2735 #, c-format msgid "type %s is only a shell" -msgstr "тип %s - лишь оболочка" +msgstr "тип %s является пустышкой" #: utils/cache/lsyscache.c:2641 #, c-format @@ -24209,17 +24256,17 @@ msgid "cached plan must not change result type" msgstr "в кешированном плане не должен изменяться тип результата" -#: utils/cache/relcache.c:5938 +#: utils/cache/relcache.c:6047 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "создать файл инициализации для кеша отношений \"%s\" не удалось: %m" -#: utils/cache/relcache.c:5940 +#: utils/cache/relcache.c:6049 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Продолжаем всё равно, хотя что-то не так." -#: utils/cache/relcache.c:6260 +#: utils/cache/relcache.c:6369 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "не удалось стереть файл кеша \"%s\": %m" @@ -24230,38 +24277,38 @@ msgstr "" "выполнить PREPARE для транзакции, изменившей сопоставление отношений, нельзя" -#: utils/cache/relmapper.c:652 utils/cache/relmapper.c:754 +#: utils/cache/relmapper.c:652 utils/cache/relmapper.c:760 #, c-format msgid "could not open relation mapping file \"%s\": %m" msgstr "открыть файл сопоставления отношений \"%s\" не удалось: %m" -#: utils/cache/relmapper.c:666 +#: utils/cache/relmapper.c:669 #, c-format msgid "could not read relation mapping file \"%s\": %m" msgstr "прочитать файл сопоставления отношений \"%s\" не удалось: %m" -#: utils/cache/relmapper.c:677 +#: utils/cache/relmapper.c:683 #, c-format msgid "relation mapping file \"%s\" contains invalid data" msgstr "файл сопоставления отношений \"%s\" содержит неверные данные" -#: utils/cache/relmapper.c:687 +#: utils/cache/relmapper.c:693 #, c-format msgid "relation mapping file \"%s\" contains incorrect checksum" msgstr "ошибка контрольной суммы в файле сопоставления отношений \"%s\"" -#: utils/cache/relmapper.c:788 +#: utils/cache/relmapper.c:794 #, c-format msgid "could not write to relation mapping file \"%s\": %m" msgstr "записать в файл сопоставления отношений \"%s\" не удалось: %m" -#: utils/cache/relmapper.c:803 +#: utils/cache/relmapper.c:809 #, c-format msgid "could not fsync relation mapping file \"%s\": %m" msgstr "" "синхронизировать файл сопоставления отношений \"%s\" с ФС не удалось: %m" -#: utils/cache/relmapper.c:810 +#: utils/cache/relmapper.c:816 #, c-format msgid "could not close relation mapping file \"%s\": %m" msgstr "закрыть файл сопоставления отношений \"%s\" не удалось: %m" @@ -24687,7 +24734,7 @@ "The data directory was initialized by PostgreSQL version %s, which is not " "compatible with this version %s." msgstr "" -"Каталог данных инициализирован сервером PostgreSQL версии %s, не совместимой " +"Каталог данных инициализирован сервером PostgreSQL версии %s, несовместимой " "с данной версией (%s)." #: utils/init/miscinit.c:1478 @@ -25295,10 +25342,10 @@ #: utils/misc/guc.c:1029 msgid "" "Writes full pages to WAL when first modified after a checkpoint, even for a " -"non-critical modifications." +"non-critical modification." msgstr "" "Запись полных страниц в WAL при первом изменении после контрольной точки, " -"даже при некритических изменениях." +"даже при некритическом изменении." #: utils/misc/guc.c:1039 msgid "Compresses full-page writes written in WAL file." @@ -26600,7 +26647,7 @@ #: utils/misc/guc.c:3288 msgid "Sets the server (database) character set encoding." -msgstr "Задаёт кодировку символов сервера (баз данных)." +msgstr "Задаёт кодировку символов сервера (базы данных)." #: utils/misc/guc.c:3300 msgid "Shows the server version." @@ -26882,7 +26929,7 @@ #: utils/misc/guc.c:3900 msgid "Use of huge pages on Linux." -msgstr "Включает использование гигантских страниц в Linux." +msgstr "Включает использование огромных страниц в Linux." #: utils/misc/guc.c:3910 msgid "Forces use of parallel query facilities." @@ -26983,7 +27030,7 @@ #: utils/misc/guc.c:5979 utils/misc/guc.c:6758 utils/misc/guc.c:6811 #: utils/misc/guc.c:6862 utils/misc/guc.c:7195 utils/misc/guc.c:7954 -#: utils/misc/guc.c:8122 utils/misc/guc.c:9823 +#: utils/misc/guc.c:8122 utils/misc/guc.c:9832 #, c-format msgid "unrecognized configuration parameter \"%s\"" msgstr "нераспознанный параметр конфигурации: \"%s\"" @@ -26995,7 +27042,7 @@ #: utils/misc/guc.c:6017 utils/misc/guc.c:6214 utils/misc/guc.c:6308 #: utils/misc/guc.c:6402 utils/misc/guc.c:6522 utils/misc/guc.c:6621 -#: guc-file.l:350 +#: guc-file.l:352 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" msgstr "параметр \"%s\" изменяется только при перезапуске сервера" @@ -27005,7 +27052,7 @@ msgid "parameter \"%s\" cannot be changed now" msgstr "параметр \"%s\" нельзя изменить сейчас" -#: utils/misc/guc.c:6045 utils/misc/guc.c:6091 utils/misc/guc.c:9839 +#: utils/misc/guc.c:6045 utils/misc/guc.c:6091 utils/misc/guc.c:9848 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "нет прав для изменения параметра \"%s\"" @@ -27069,27 +27116,27 @@ msgid "while setting parameter \"%s\" to \"%s\"" msgstr "при назначении параметру \"%s\" значения \"%s\"" -#: utils/misc/guc.c:9453 +#: utils/misc/guc.c:9455 #, c-format msgid "parameter \"%s\" could not be set" msgstr "параметр \"%s\" нельзя установить" -#: utils/misc/guc.c:9543 +#: utils/misc/guc.c:9547 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "не удалось разобрать значение параметра \"%s\"" -#: utils/misc/guc.c:9901 utils/misc/guc.c:9935 +#: utils/misc/guc.c:9910 utils/misc/guc.c:9944 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "неверное значение параметра \"%s\": %d" -#: utils/misc/guc.c:9969 +#: utils/misc/guc.c:9978 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "неверное значение параметра \"%s\": %g" -#: utils/misc/guc.c:10253 +#: utils/misc/guc.c:10279 #, c-format msgid "" "\"temp_buffers\" cannot be changed after any temporary tables have been " @@ -27098,23 +27145,23 @@ "параметр \"temp_buffers\" нельзя изменить после обращения к временным " "таблицам в текущем сеансе." -#: utils/misc/guc.c:10265 +#: utils/misc/guc.c:10291 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour не поддерживается в данной сборке" -#: utils/misc/guc.c:10278 +#: utils/misc/guc.c:10304 #, c-format msgid "SSL is not supported by this build" msgstr "SSL не поддерживается в данной сборке" -#: utils/misc/guc.c:10290 +#: utils/misc/guc.c:10316 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "" "Этот параметр нельзя включить, когда \"log_statement_stats\" равен true." -#: utils/misc/guc.c:10302 +#: utils/misc/guc.c:10328 #, c-format msgid "" "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", " @@ -27723,24 +27770,24 @@ msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" msgstr "нераспознанный параметр конфигурации \"%s\" в файле \"%s\", строке %u" -#: guc-file.l:386 +#: guc-file.l:388 #, c-format msgid "parameter \"%s\" removed from configuration file, reset to default" msgstr "" "параметр \"%s\" удалён из файла конфигурации, он принимает значение по " "умолчанию" -#: guc-file.l:452 +#: guc-file.l:454 #, c-format msgid "parameter \"%s\" changed to \"%s\"" msgstr "параметр \"%s\" принял значение \"%s\"" -#: guc-file.l:494 +#: guc-file.l:496 #, c-format msgid "configuration file \"%s\" contains errors" msgstr "файл конфигурации \"%s\" содержит ошибки" -#: guc-file.l:499 +#: guc-file.l:501 #, c-format msgid "" "configuration file \"%s\" contains errors; unaffected changes were applied" @@ -27748,56 +27795,56 @@ "файл конфигурации \"%s\" содержит ошибки; были применены не зависимые " "изменения" -#: guc-file.l:504 +#: guc-file.l:506 #, c-format msgid "configuration file \"%s\" contains errors; no changes were applied" msgstr "файл конфигурации \"%s\" содержит ошибки; изменения не были применены" -#: guc-file.l:576 +#: guc-file.l:578 #, c-format msgid "empty configuration file name: \"%s\"" msgstr "пустое имя файла конфигурации: \"%s\"" -#: guc-file.l:593 +#: guc-file.l:595 #, c-format msgid "" "could not open configuration file \"%s\": maximum nesting depth exceeded" msgstr "" "открыть файл конфигурации \"%s\" не удалось: превышен предел вложенности" -#: guc-file.l:613 +#: guc-file.l:615 #, c-format msgid "configuration file recursion in \"%s\"" msgstr "рекурсивная вложенность файла конфигурации в \"%s\"" -#: guc-file.l:640 +#: guc-file.l:642 #, c-format msgid "skipping missing configuration file \"%s\"" msgstr "отсутствующий файл конфигурации \"%s\" пропускается" -#: guc-file.l:894 +#: guc-file.l:896 #, c-format msgid "syntax error in file \"%s\" line %u, near end of line" msgstr "ошибка синтаксиса в файле \"%s\", в конце строки %u" -#: guc-file.l:904 +#: guc-file.l:906 #, c-format msgid "syntax error in file \"%s\" line %u, near token \"%s\"" msgstr "ошибка синтаксиса в файле \"%s\", в строке %u, рядом с \"%s\"" -#: guc-file.l:924 +#: guc-file.l:926 #, c-format msgid "too many syntax errors found, abandoning file \"%s\"" msgstr "" "обнаружено слишком много синтаксических ошибок, обработка файла \"%s\" " "прекращается" -#: guc-file.l:979 +#: guc-file.l:981 #, c-format msgid "empty configuration directory name: \"%s\"" msgstr "пустое имя каталога конфигурации: \"%s\"" -#: guc-file.l:998 +#: guc-file.l:1000 #, c-format msgid "could not open configuration directory \"%s\": %m" msgstr "открыть каталог конфигурации \"%s\" не удалось: %m" @@ -27875,7 +27922,7 @@ #: scan.l:724 msgid "unterminated dollar-quoted string" -msgstr "незавершённая спецстрока с $" +msgstr "незавершённая строка с $" #: scan.l:741 scan.l:767 scan.l:782 msgid "zero-length delimited identifier" @@ -27947,6 +27994,16 @@ msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." msgstr "Используйте для записи спецсимволов синтаксис спецстрок E'\\r\\n'." +#~ msgid "distance in phrase operator should not be greater than %d" +#~ msgstr "дистанция во фразовом операторе должна быть не больше %d" + +#~ msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" +#~ msgstr "роль \"%s\" нельзя удалить из политики \"%s\" отношения \"%s\"" + +#~ msgid "distance in phrase operator should be non-negative and less than %d" +#~ msgstr "" +#~ "дистанция во фразовом операторе должна быть неотрицательной и меньше %d" + #~ msgid "invalid concatenation of jsonb objects" #~ msgstr "неверная конкатенация объектов jsonb" @@ -29229,9 +29286,6 @@ #~ "Задаёт максимальное расстояние в сегментах журнала между автоматическими " #~ "контрольными точками WAL." -#~ msgid "assertion checking is not supported by this build" -#~ msgstr "в данной сборке не поддерживаются проверки истинности" - #~ msgid "interval precision specified twice" #~ msgstr "точность интервала указана дважды" diff -Nru postgresql-10-10.17/src/backend/po/sv.po postgresql-10-10.19/src/backend/po/sv.po --- postgresql-10-10.17/src/backend/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,28 +1,30 @@ # Swedish message translation file for postgresql -# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020. +# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # -# Många av termerna är tekniska termer som refererar till begrepp i SQL-satser och liknande. Om man -# översätter vissa av dessa så kommer det bli väldigt svårt för användaren att förstå vad vi menar. -# För många av dessa har jag valt att behålla det engelska ordet som ett begrepp. Det är en svår +# Många av termerna är tekniska termer som refererar till begrepp i SQL-satser +# och liknande. Om man översätter vissa av dessa så kommer det bli väldigt +# svårt för användaren att förstå vad vi menar. För många av dessa har jag +# valt att behålla det engelska ordet som ett begrepp. Det är en svår # balansgång. # -# T.ex. ett integritetsvillkor som deklarerats med flaggan DEFERRABLE har jag i text som -# tar upp det lämnat kvar begreppet deferrable. T.ex: +# T.ex. ett integritetsvillkor som deklarerats med flaggan DEFERRABLE har jag +# i text som tar upp det lämnat kvar begreppet deferrable. T.ex: # # att ange deferrable för integritetsvillkor stöds inte för domäner # -# På många ställen är det svårt att avgöra. Ta t.ex. integer som ibland refererar till typen integer och -# ibland refererar mer allmänt till heltal. +# På många ställen är det svårt att avgöra. Ta t.ex. integer som ibland +# refererar till typen integer och ibland refererar mer allmänt till heltal. # -# Andra exempel är att i engelskan används cleanup och vacuum på olika ställen nedan. Jag har valt att -# behålla vacuum på svenska för att göra tydligt att det är kommandon VACUUM och den processen det +# Andra exempel är att i engelskan används cleanup och vacuum på olika +# ställen nedan. Jag har valt att i vissa fall behålla vacuum på svenska +# för att göra tydligt att det är kommandon VACUUM och den processen det # hänvisas till och inte någon annan städning. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-10-20 17:14+0000\n" -"PO-Revision-Date: 2020-10-20 20:06+0200\n" +"POT-Creation-Date: 2021-11-07 09:42+0000\n" +"PO-Revision-Date: 2021-11-07 23:08+0100\n" "Last-Translator: Dennis Björklund \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -40,7 +42,7 @@ msgstr "ej sparad" #: ../common/controldata_utils.c:58 commands/copy.c:3198 -#: commands/extension.c:3350 utils/adt/genfile.c:128 +#: commands/extension.c:3358 utils/adt/genfile.c:128 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "kunde inte öppna filen \"%s\" för läsning: %m" @@ -51,14 +53,14 @@ msgstr "%s: kunde inte öppna fil \"%s\" för läsning: %s\n" #: ../common/controldata_utils.c:75 access/transam/timeline.c:142 -#: access/transam/timeline.c:362 access/transam/xlog.c:3418 -#: access/transam/xlog.c:10990 access/transam/xlog.c:11003 -#: access/transam/xlog.c:11420 access/transam/xlog.c:11463 -#: access/transam/xlog.c:11502 access/transam/xlog.c:11545 +#: access/transam/timeline.c:362 access/transam/xlog.c:3442 +#: access/transam/xlog.c:11135 access/transam/xlog.c:11148 +#: access/transam/xlog.c:11565 access/transam/xlog.c:11608 +#: access/transam/xlog.c:11647 access/transam/xlog.c:11690 #: access/transam/xlogfuncs.c:668 access/transam/xlogfuncs.c:687 -#: commands/extension.c:3360 libpq/hba.c:499 replication/logical/origin.c:726 -#: replication/logical/origin.c:756 replication/logical/reorderbuffer.c:3251 -#: replication/walsender.c:510 storage/file/buffile.c:269 +#: commands/extension.c:3368 libpq/hba.c:499 replication/logical/origin.c:726 +#: replication/logical/origin.c:756 replication/logical/reorderbuffer.c:3275 +#: replication/walsender.c:514 storage/file/buffile.c:269 #: storage/file/copydir.c:204 utils/adt/genfile.c:145 utils/adt/misc.c:935 #, c-format msgid "could not read file \"%s\": %m" @@ -192,22 +194,22 @@ msgstr "kunde inte stänga katalog \"%s\": %s\n" #: ../common/psprintf.c:180 ../port/path.c:630 ../port/path.c:668 -#: ../port/path.c:685 access/transam/twophase.c:1316 access/transam/xlog.c:6434 -#: lib/stringinfo.c:258 libpq/auth.c:1131 libpq/auth.c:1502 libpq/auth.c:1570 -#: libpq/auth.c:2088 postmaster/bgworker.c:337 postmaster/bgworker.c:908 +#: ../port/path.c:685 access/transam/twophase.c:1377 access/transam/xlog.c:6478 +#: lib/stringinfo.c:258 libpq/auth.c:1155 libpq/auth.c:1534 libpq/auth.c:1602 +#: libpq/auth.c:2120 postmaster/bgworker.c:350 postmaster/bgworker.c:978 #: postmaster/postmaster.c:2472 postmaster/postmaster.c:2494 -#: postmaster/postmaster.c:4056 postmaster/postmaster.c:4772 -#: postmaster/postmaster.c:4847 postmaster/postmaster.c:5577 -#: postmaster/postmaster.c:5937 -#: replication/libpqwalreceiver/libpqwalreceiver.c:274 +#: postmaster/postmaster.c:4063 postmaster/postmaster.c:4779 +#: postmaster/postmaster.c:4854 postmaster/postmaster.c:5586 +#: postmaster/postmaster.c:5946 +#: replication/libpqwalreceiver/libpqwalreceiver.c:280 #: replication/logical/logical.c:175 storage/buffer/localbuf.c:436 #: storage/file/fd.c:793 storage/file/fd.c:1222 storage/file/fd.c:1340 #: storage/file/fd.c:2078 storage/ipc/procarray.c:1069 #: storage/ipc/procarray.c:1557 storage/ipc/procarray.c:1564 #: storage/ipc/procarray.c:1987 storage/ipc/procarray.c:2598 -#: utils/adt/formatting.c:1571 utils/adt/formatting.c:1696 -#: utils/adt/formatting.c:1822 utils/adt/pg_locale.c:470 -#: utils/adt/pg_locale.c:634 utils/adt/regexp.c:223 utils/adt/varlena.c:4703 +#: utils/adt/formatting.c:1575 utils/adt/formatting.c:1700 +#: utils/adt/formatting.c:1826 utils/adt/pg_locale.c:474 +#: utils/adt/pg_locale.c:638 utils/adt/regexp.c:223 utils/adt/varlena.c:4703 #: utils/adt/varlena.c:4724 utils/fmgr/dfmgr.c:221 utils/hash/dynahash.c:444 #: utils/hash/dynahash.c:553 utils/hash/dynahash.c:1065 utils/mb/mbutils.c:382 #: utils/mb/mbutils.c:409 utils/mb/mbutils.c:738 utils/mb/mbutils.c:764 @@ -287,7 +289,7 @@ msgid "could not look up effective user ID %ld: %s" msgstr "kunde inte slå upp effektivt användar-id %ld: %s" -#: ../common/username.c:45 libpq/auth.c:2035 +#: ../common/username.c:45 libpq/auth.c:2067 msgid "user does not exist" msgstr "användaren finns inte" @@ -410,7 +412,7 @@ msgstr "förfrågan efter BRIN-intervallsummering för index \"%s\" sida %u har inte spelats in" #: access/brin/brin.c:874 access/brin/brin.c:951 access/gin/ginfast.c:990 -#: access/transam/xlog.c:10404 access/transam/xlog.c:10929 +#: access/transam/xlog.c:10549 access/transam/xlog.c:11074 #: access/transam/xlogfuncs.c:296 access/transam/xlogfuncs.c:323 #: access/transam/xlogfuncs.c:362 access/transam/xlogfuncs.c:383 #: access/transam/xlogfuncs.c:404 access/transam/xlogfuncs.c:474 @@ -442,7 +444,8 @@ #: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:364 #: access/brin/brin_pageops.c:830 access/gin/ginentrypage.c:110 #: access/gist/gist.c:1369 access/nbtree/nbtinsert.c:577 -#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1933 +#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1938 +#: access/spgist/spgdoinsert.c:2206 #, c-format msgid "index row size %zu exceeds maximum %zu for index \"%s\"" msgstr "indexradstorlek %zu överstiger maximum %zu för index \"%s\"" @@ -530,7 +533,7 @@ msgid "index row requires %zu bytes, maximum size is %zu" msgstr "indexrad kräver %zu byte, maximal storlek är %zu" -#: access/common/printtup.c:290 tcop/fastpath.c:182 tcop/fastpath.c:532 +#: access/common/printtup.c:290 tcop/fastpath.c:182 tcop/fastpath.c:538 #: tcop/postgres.c:1749 #, c-format msgid "unsupported format code: %d" @@ -657,8 +660,8 @@ msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "För att fixa detta, kör REINDEX INDEX \"%s\"." -#: access/gin/ginutil.c:134 executor/execExpr.c:1780 -#: utils/adt/arrayfuncs.c:3815 utils/adt/arrayfuncs.c:6335 +#: access/gin/ginutil.c:134 executor/execExpr.c:1811 +#: utils/adt/arrayfuncs.c:3817 utils/adt/arrayfuncs.c:6343 #: utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" @@ -741,8 +744,8 @@ msgid "index row size %zu exceeds hash maximum %zu" msgstr "indexradstorlek %zu överstiger hash-maximum %zu" -#: access/hash/hashinsert.c:84 access/spgist/spgdoinsert.c:1937 -#: access/spgist/spgutils.c:708 +#: access/hash/hashinsert.c:84 access/spgist/spgdoinsert.c:1942 +#: access/spgist/spgdoinsert.c:2210 access/spgist/spgutils.c:708 #, c-format msgid "Values larger than a buffer page cannot be indexed." msgstr "Värden större än en buffert-sida kan inte indexeras." @@ -782,46 +785,46 @@ msgid "operator family \"%s\" of access method %s is missing cross-type operator(s)" msgstr "operatorfamilj \"%s\" för accessmetod %s saknar mellan-typ-operator(er)" -#: access/heap/heapam.c:1293 access/heap/heapam.c:1321 -#: access/heap/heapam.c:1353 catalog/aclchk.c:1772 +#: access/heap/heapam.c:1305 access/heap/heapam.c:1333 +#: access/heap/heapam.c:1365 catalog/aclchk.c:1775 #, c-format msgid "\"%s\" is an index" msgstr "\"%s\" är ett index" -#: access/heap/heapam.c:1298 access/heap/heapam.c:1326 -#: access/heap/heapam.c:1358 catalog/aclchk.c:1779 commands/tablecmds.c:10080 +#: access/heap/heapam.c:1310 access/heap/heapam.c:1338 +#: access/heap/heapam.c:1370 catalog/aclchk.c:1782 commands/tablecmds.c:10080 #: commands/tablecmds.c:13328 #, c-format msgid "\"%s\" is a composite type" msgstr "\"%s\" är en composite-typ" -#: access/heap/heapam.c:2593 +#: access/heap/heapam.c:2609 #, c-format msgid "cannot insert tuples during a parallel operation" msgstr "kan inte lägga till tupler under en parallell operation" -#: access/heap/heapam.c:3038 +#: access/heap/heapam.c:3054 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "kan inte radera tupler under en parallell operation" -#: access/heap/heapam.c:3084 +#: access/heap/heapam.c:3100 #, c-format msgid "attempted to delete invisible tuple" msgstr "försökte ta bort en osynlig tuple" -#: access/heap/heapam.c:3514 access/heap/heapam.c:6289 +#: access/heap/heapam.c:3534 access/heap/heapam.c:6309 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "kan inte uppdatera tupler under en parallell operation" -#: access/heap/heapam.c:3662 +#: access/heap/heapam.c:3682 #, c-format msgid "attempted to update invisible tuple" msgstr "försökte uppdatera en osynlig tuple" -#: access/heap/heapam.c:4962 access/heap/heapam.c:5000 -#: access/heap/heapam.c:5252 executor/execMain.c:2648 +#: access/heap/heapam.c:4982 access/heap/heapam.c:5020 +#: access/heap/heapam.c:5272 executor/execMain.c:2654 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "kunde inte låsa rad i relationen \"%s\"" @@ -838,20 +841,20 @@ #: access/heap/rewriteheap.c:981 access/heap/rewriteheap.c:1204 #: access/heap/rewriteheap.c:1304 access/transam/timeline.c:428 -#: access/transam/timeline.c:508 access/transam/xlog.c:3283 -#: access/transam/xlog.c:3451 replication/logical/snapbuild.c:1653 +#: access/transam/timeline.c:508 access/transam/xlog.c:3307 +#: access/transam/xlog.c:3475 replication/logical/snapbuild.c:1669 #: replication/slot.c:1319 replication/slot.c:1415 storage/file/fd.c:651 -#: storage/file/fd.c:3244 storage/smgr/md.c:1037 storage/smgr/md.c:1282 -#: storage/smgr/md.c:1456 utils/misc/guc.c:7061 +#: storage/file/fd.c:3244 storage/smgr/md.c:1079 storage/smgr/md.c:1324 +#: storage/smgr/md.c:1498 utils/misc/guc.c:7061 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "kunde inte fsync:a fil \"%s\": %m" #: access/heap/rewriteheap.c:1036 access/heap/rewriteheap.c:1156 #: access/transam/timeline.c:329 access/transam/timeline.c:483 -#: access/transam/xlog.c:3237 access/transam/xlog.c:3389 -#: access/transam/xlog.c:10739 access/transam/xlog.c:10777 -#: access/transam/xlog.c:11181 postmaster/postmaster.c:4539 +#: access/transam/xlog.c:3261 access/transam/xlog.c:3413 +#: access/transam/xlog.c:10884 access/transam/xlog.c:10922 +#: access/transam/xlog.c:11326 postmaster/postmaster.c:4546 #: replication/logical/origin.c:582 replication/slot.c:1266 #: storage/file/copydir.c:176 storage/smgr/md.c:328 utils/time/snapmgr.c:1297 #, c-format @@ -863,18 +866,18 @@ msgid "could not truncate file \"%s\" to %u: %m" msgstr "kunde inte trunkera fil \"%s\" till %u: %m" -#: access/heap/rewriteheap.c:1174 replication/walsender.c:490 -#: storage/smgr/md.c:1986 +#: access/heap/rewriteheap.c:1174 replication/walsender.c:494 +#: storage/smgr/md.c:2028 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "kunde inte söka (seek) till slutet av filen \"%s\": %m" #: access/heap/rewriteheap.c:1191 access/transam/timeline.c:384 #: access/transam/timeline.c:420 access/transam/timeline.c:500 -#: access/transam/xlog.c:3269 access/transam/xlog.c:3442 -#: postmaster/postmaster.c:4549 postmaster/postmaster.c:4559 +#: access/transam/xlog.c:3293 access/transam/xlog.c:3466 +#: postmaster/postmaster.c:4556 postmaster/postmaster.c:4566 #: replication/logical/origin.c:597 replication/logical/origin.c:642 -#: replication/logical/origin.c:664 replication/logical/snapbuild.c:1629 +#: replication/logical/origin.c:664 replication/logical/snapbuild.c:1645 #: replication/slot.c:1301 storage/file/buffile.c:343 #: storage/file/copydir.c:217 utils/init/miscinit.c:1253 #: utils/init/miscinit.c:1264 utils/init/miscinit.c:1272 utils/misc/guc.c:7022 @@ -887,29 +890,29 @@ #: access/heap/rewriteheap.c:1278 access/transam/xlogarchive.c:112 #: access/transam/xlogarchive.c:457 postmaster/postmaster.c:1281 #: postmaster/syslogger.c:1455 replication/logical/origin.c:569 -#: replication/logical/reorderbuffer.c:2753 -#: replication/logical/snapbuild.c:1570 replication/logical/snapbuild.c:1973 -#: replication/slot.c:1385 storage/file/fd.c:702 storage/ipc/dsm.c:327 -#: storage/smgr/md.c:427 storage/smgr/md.c:476 storage/smgr/md.c:1403 +#: replication/logical/reorderbuffer.c:2777 +#: replication/logical/snapbuild.c:1586 replication/logical/snapbuild.c:1992 +#: replication/slot.c:1385 storage/file/fd.c:702 storage/ipc/dsm.c:322 +#: storage/smgr/md.c:473 storage/smgr/md.c:517 storage/smgr/md.c:1445 #, c-format msgid "could not remove file \"%s\": %m" msgstr "kunde inte ta bort fil \"%s\": %m" #: access/heap/rewriteheap.c:1293 access/transam/timeline.c:110 #: access/transam/timeline.c:250 access/transam/timeline.c:348 -#: access/transam/xlog.c:3213 access/transam/xlog.c:3333 -#: access/transam/xlog.c:3374 access/transam/xlog.c:3653 -#: access/transam/xlog.c:3756 access/transam/xlogutils.c:706 +#: access/transam/xlog.c:3237 access/transam/xlog.c:3357 +#: access/transam/xlog.c:3398 access/transam/xlog.c:3677 +#: access/transam/xlog.c:3780 access/transam/xlogutils.c:706 #: postmaster/syslogger.c:1464 replication/basebackup.c:490 #: replication/basebackup.c:1236 replication/logical/origin.c:719 -#: replication/logical/reorderbuffer.c:2269 -#: replication/logical/reorderbuffer.c:2525 -#: replication/logical/reorderbuffer.c:3231 -#: replication/logical/snapbuild.c:1615 replication/logical/snapbuild.c:1715 -#: replication/slot.c:1400 replication/walsender.c:483 -#: replication/walsender.c:2411 storage/file/copydir.c:169 +#: replication/logical/reorderbuffer.c:2291 +#: replication/logical/reorderbuffer.c:2548 +#: replication/logical/reorderbuffer.c:3255 +#: replication/logical/snapbuild.c:1631 replication/logical/snapbuild.c:1734 +#: replication/slot.c:1400 replication/walsender.c:487 +#: replication/walsender.c:2409 storage/file/copydir.c:169 #: storage/file/fd.c:634 storage/file/fd.c:3156 storage/file/fd.c:3223 -#: storage/smgr/md.c:609 utils/error/elog.c:1872 utils/init/miscinit.c:1177 +#: storage/smgr/md.c:651 utils/error/elog.c:1872 utils/init/miscinit.c:1177 #: utils/init/miscinit.c:1312 utils/init/miscinit.c:1389 utils/misc/guc.c:7278 #: utils/misc/guc.c:7311 #, c-format @@ -959,7 +962,7 @@ "eller möjligen full-text-indexering." #: access/nbtree/nbtpage.c:169 access/nbtree/nbtpage.c:372 -#: access/nbtree/nbtpage.c:459 parser/parse_utilcmd.c:2112 +#: access/nbtree/nbtpage.c:459 parser/parse_utilcmd.c:2146 #, c-format msgid "index \"%s\" is not a btree" msgstr "index \"%s\" är inte ett btree" @@ -1040,14 +1043,14 @@ msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u" msgstr "databasen tar inte emot kommandon som genererar nya MultiXactId:er för att förhinda dataförlust vid \"wraparound\" i databasen med OID %u" -#: access/transam/multixact.c:1028 access/transam/multixact.c:2318 +#: access/transam/multixact.c:1028 access/transam/multixact.c:2323 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "database \"%s\" must be vacuumed before %u more MultiXactIds are used" msgstr[0] "databasen \"%s\" måste städas innan ytterligare %u MultiXactId används" msgstr[1] "databasen \"%s\" måste städas innan ytterligare %u MultiXactId:er används" -#: access/transam/multixact.c:1037 access/transam/multixact.c:2327 +#: access/transam/multixact.c:1037 access/transam/multixact.c:2332 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" @@ -1083,7 +1086,7 @@ msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Kör en hela-databas-VACUUM i den databasen med reducerade inställningar för vacuum_multixact_freeze_min_age och vacuum_multixact_freeze_table_age." -#: access/transam/multixact.c:1277 +#: access/transam/multixact.c:1279 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "MultiXactId %u finns inte längre -- troligen en wraparound" @@ -1093,12 +1096,12 @@ msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "MultiXactId %u har inte skapats än -- troligen en wraparound" -#: access/transam/multixact.c:2268 +#: access/transam/multixact.c:2273 #, c-format msgid "MultiXactId wrap limit is %u, limited by database with OID %u" msgstr "MultiXactId wrap-gräns är %u, begränsad av databasen med OID %u" -#: access/transam/multixact.c:2323 access/transam/multixact.c:2332 +#: access/transam/multixact.c:2328 access/transam/multixact.c:2337 #: access/transam/varsup.c:146 access/transam/varsup.c:153 #: access/transam/varsup.c:405 access/transam/varsup.c:412 #, c-format @@ -1109,71 +1112,71 @@ "För att undvika att databasen stängs ner, utför en hela databas-VACCUM i den databasen.\n" "Du kan också behöva commit:a eller rulla tillbaka gamla förberedda transaktioner." -#: access/transam/multixact.c:2602 +#: access/transam/multixact.c:2607 #, c-format msgid "oldest MultiXactId member is at offset %u" msgstr "äldsta MultiXactId-medlemmen är vid offset %u" -#: access/transam/multixact.c:2606 +#: access/transam/multixact.c:2611 #, c-format msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk" msgstr "MultiXact-medlems wraparound-skydd är avslagen eftersom äldsta checkpoint:ade MultiXact %u inte finns på disk" -#: access/transam/multixact.c:2628 +#: access/transam/multixact.c:2633 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "MultiXact-medlems wraparound-skydd är nu påslagen" -#: access/transam/multixact.c:2631 +#: access/transam/multixact.c:2636 #, c-format msgid "MultiXact member stop limit is now %u based on MultiXact %u" msgstr "MultiXact-medlems stoppgräns är nu %u baserad på MultiXact %u" -#: access/transam/multixact.c:3011 +#: access/transam/multixact.c:3024 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" msgstr "äldsta MultiXact %u hittas inte, tidigast MultiXact %u, skippar trunkering" -#: access/transam/multixact.c:3029 +#: access/transam/multixact.c:3042 #, c-format msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" msgstr "kan inte trunkera upp till %u eftersom den inte finns på disk, skippar trunkering" -#: access/transam/multixact.c:3355 +#: access/transam/multixact.c:3368 #, c-format msgid "invalid MultiXactId: %u" msgstr "ogiltig MultiXactId: %u" -#: access/transam/parallel.c:608 +#: access/transam/parallel.c:619 #, c-format msgid "parallel worker failed to initialize" msgstr "parallell arbetare misslyckades med initiering" -#: access/transam/parallel.c:609 +#: access/transam/parallel.c:620 #, c-format msgid "More details may be available in the server log." msgstr "Fler detaljer kan finnas i serverloggen." -#: access/transam/parallel.c:670 +#: access/transam/parallel.c:681 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "postmaster avslutade under en parallell transaktion" -#: access/transam/parallel.c:857 +#: access/transam/parallel.c:868 #, c-format msgid "lost connection to parallel worker" msgstr "tappad kopplingen till parallell arbetare" -#: access/transam/parallel.c:919 access/transam/parallel.c:921 +#: access/transam/parallel.c:930 access/transam/parallel.c:932 msgid "parallel worker" msgstr "parallell arbetare" -#: access/transam/parallel.c:1064 +#: access/transam/parallel.c:1077 #, c-format msgid "could not map dynamic shared memory segment" msgstr "kunde inte skapa dynamiskt delat minnessegment: %m" -#: access/transam/parallel.c:1069 +#: access/transam/parallel.c:1082 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "ogiltigt magiskt nummer i dynamiskt delat minnessegment" @@ -1220,12 +1223,12 @@ msgid "Could not close file \"%s\": %m." msgstr "Kunde inte stänga fil \"%s\": %m." -#: access/transam/slru.c:1211 +#: access/transam/slru.c:1204 #, c-format msgid "could not truncate directory \"%s\": apparent wraparound" msgstr "Kunde inte trunkera katalog \"%s\": trolig wraparound" -#: access/transam/slru.c:1266 access/transam/slru.c:1322 +#: access/transam/slru.c:1262 access/transam/slru.c:1318 #, c-format msgid "removing file \"%s\"" msgstr "tar bort fil \"%s\"" @@ -1266,7 +1269,7 @@ msgstr "Tidslinje-ID:er måste vara mindre än barnens tidslinje-ID:er." #: access/transam/timeline.c:434 access/transam/timeline.c:514 -#: access/transam/xlog.c:3290 access/transam/xlog.c:3457 +#: access/transam/xlog.c:3314 access/transam/xlog.c:3481 #: access/transam/xlogfuncs.c:693 commands/copy.c:1741 #: storage/file/copydir.c:228 #, c-format @@ -1298,144 +1301,144 @@ msgid "transaction identifier \"%s\" is already in use" msgstr "transaktionsidentifierare \"%s\" används redan" -#: access/transam/twophase.c:419 access/transam/twophase.c:2364 +#: access/transam/twophase.c:419 access/transam/twophase.c:2433 #, c-format msgid "maximum number of prepared transactions reached" msgstr "maximalt antal förberedda transaktioner har uppnåtts" -#: access/transam/twophase.c:420 access/transam/twophase.c:2365 +#: access/transam/twophase.c:420 access/transam/twophase.c:2434 #, c-format msgid "Increase max_prepared_transactions (currently %d)." msgstr "Öka max_prepared_transactions (nu %d)." -#: access/transam/twophase.c:587 +#: access/transam/twophase.c:597 #, c-format msgid "prepared transaction with identifier \"%s\" is busy" msgstr "förberedd transaktion med identifierare \"%s\" är upptagen" -#: access/transam/twophase.c:593 +#: access/transam/twophase.c:603 #, c-format msgid "permission denied to finish prepared transaction" msgstr "rättighet saknas för att slutföra förberedd transaktion" -#: access/transam/twophase.c:594 +#: access/transam/twophase.c:604 #, c-format msgid "Must be superuser or the user that prepared the transaction." msgstr "Måste vara superanvändare eller den användare som förberedde transaktionen" -#: access/transam/twophase.c:605 +#: access/transam/twophase.c:615 #, c-format msgid "prepared transaction belongs to another database" msgstr "förberedda transaktionen tillhör en annan databas" -#: access/transam/twophase.c:606 +#: access/transam/twophase.c:616 #, c-format msgid "Connect to the database where the transaction was prepared to finish it." msgstr "Anslut till databasen där transaktionen var förberedd för att slutföra den." -#: access/transam/twophase.c:621 +#: access/transam/twophase.c:631 #, c-format msgid "prepared transaction with identifier \"%s\" does not exist" msgstr "förberedd transaktion med identifierare \"%s\" finns inte" -#: access/transam/twophase.c:1086 +#: access/transam/twophase.c:1143 #, c-format msgid "two-phase state file maximum length exceeded" msgstr "tvåfas-statusfilens maximala längd överskriden" -#: access/transam/twophase.c:1204 +#: access/transam/twophase.c:1261 #, c-format msgid "could not open two-phase state file \"%s\": %m" msgstr "kunde inte öppna tvåfas-statusfil \"%s\": %m" -#: access/transam/twophase.c:1225 +#: access/transam/twophase.c:1282 #, c-format msgid "could not stat two-phase state file \"%s\": %m" msgstr "kunde inte göra stat() på tvåfas-statusfil \"%s\": %m" -#: access/transam/twophase.c:1264 +#: access/transam/twophase.c:1321 #, c-format msgid "could not read two-phase state file \"%s\": %m" msgstr "kunde inte läsa tvåfas-statusfil \"%s\": %m" -#: access/transam/twophase.c:1317 access/transam/xlog.c:6435 +#: access/transam/twophase.c:1378 access/transam/xlog.c:6479 #, c-format msgid "Failed while allocating a WAL reading processor." msgstr "Millslyckades vid allokering av en WAL-läs-processor." -#: access/transam/twophase.c:1323 +#: access/transam/twophase.c:1392 #, c-format msgid "could not read two-phase state from WAL at %X/%X" msgstr "kunde inte läsa tvåfas-status från WAL vid %X/%X" -#: access/transam/twophase.c:1331 +#: access/transam/twophase.c:1400 #, c-format msgid "expected two-phase state data is not present in WAL at %X/%X" msgstr "förväntad tvåfas-statusdata finns inte i WAL vid %X/%X" -#: access/transam/twophase.c:1568 +#: access/transam/twophase.c:1637 #, c-format msgid "could not remove two-phase state file \"%s\": %m" msgstr "kunde inte ta bort tvåfas-statusfil \"%s\": %m" -#: access/transam/twophase.c:1598 +#: access/transam/twophase.c:1667 #, c-format msgid "could not recreate two-phase state file \"%s\": %m" msgstr "kunde inte återskapa tvåfas-statusfil \"%s\": %m" -#: access/transam/twophase.c:1615 access/transam/twophase.c:1628 +#: access/transam/twophase.c:1684 access/transam/twophase.c:1697 #, c-format msgid "could not write two-phase state file: %m" msgstr "kunde inte skriva tvåfas-statusfil: %m" -#: access/transam/twophase.c:1645 +#: access/transam/twophase.c:1714 #, c-format msgid "could not fsync two-phase state file: %m" msgstr "kunde inte fsync:a tvåfas-statusfil %m" -#: access/transam/twophase.c:1652 +#: access/transam/twophase.c:1721 #, c-format msgid "could not close two-phase state file: %m" msgstr "kunde inte stänga tvåfas-statusfil: %m" -#: access/transam/twophase.c:1740 +#: access/transam/twophase.c:1809 #, c-format msgid "%u two-phase state file was written for a long-running prepared transaction" msgid_plural "%u two-phase state files were written for long-running prepared transactions" msgstr[0] "%u tvåfas-statusfil skrevs för långkörande förberedd transkation" msgstr[1] "%u tvåfas-statusfiler skrevs för långkörande förberedda transaktioner" -#: access/transam/twophase.c:1968 +#: access/transam/twophase.c:2037 #, c-format msgid "recovering prepared transaction %u from shared memory" msgstr "återskapar förberedd transaktion %u från delat minne" -#: access/transam/twophase.c:2058 +#: access/transam/twophase.c:2127 #, c-format msgid "removing stale two-phase state file for transaction %u" msgstr "tar bort död tvåfas-statusfil för transaktioon %u" -#: access/transam/twophase.c:2065 +#: access/transam/twophase.c:2134 #, c-format msgid "removing stale two-phase state from memory for transaction %u" msgstr "tar bort död tvåfas-statusfil från minne för transaktion %u" -#: access/transam/twophase.c:2078 +#: access/transam/twophase.c:2147 #, c-format msgid "removing future two-phase state file for transaction %u" msgstr "tar bort framtida tvåfas-statusfil för transaktion %u" -#: access/transam/twophase.c:2085 +#: access/transam/twophase.c:2154 #, c-format msgid "removing future two-phase state from memory for transaction %u" msgstr "tar bort framtida tvåfas-statusfil från minne för transaktion %u" -#: access/transam/twophase.c:2099 access/transam/twophase.c:2118 +#: access/transam/twophase.c:2168 access/transam/twophase.c:2187 #, c-format msgid "removing corrupt two-phase state file for transaction %u" msgstr "tar bort korrupt tvåfas-statusfil för transaktion %u" -#: access/transam/twophase.c:2125 +#: access/transam/twophase.c:2194 #, c-format msgid "removing corrupt two-phase state from memory for transaction %u" msgstr "tar bort korrupt tvåfas-statusfil från minne för transaktion %u" @@ -1474,953 +1477,958 @@ msgid "transaction ID wrap limit is %u, limited by database with OID %u" msgstr "transaktions-ID wrap-gräns är %u, begränsad av databas med OID %u" -#: access/transam/xact.c:969 +#: access/transam/xact.c:970 #, c-format msgid "cannot have more than 2^32-2 commands in a transaction" msgstr "kan inte ha mer än 2^32-2 kommandon i en transaktion" -#: access/transam/xact.c:1494 +#: access/transam/xact.c:1495 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "maximalt antal commit:ade undertransaktioner (%d) överskridet" -#: access/transam/xact.c:2299 +#: access/transam/xact.c:2301 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "kan inte göra PREPARE på en transaktion som har arbetat med temporära tabeller" -#: access/transam/xact.c:2311 +#: access/transam/xact.c:2313 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary objects" msgstr "kan inte göra PREPARE på en transaktion som har arbetat med temporära objekt" -#: access/transam/xact.c:2321 +#: access/transam/xact.c:2323 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "kan inte göra PREPARE på en transaktion som har exporterade snapshots" -#: access/transam/xact.c:2330 +#: access/transam/xact.c:2332 #, c-format msgid "cannot PREPARE a transaction that has manipulated logical replication workers" msgstr "kan inte göra PREPARE på en transaktion som har förändrat logiska replikeringsarbetare" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3215 +#: access/transam/xact.c:3226 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s kan inte köras i ett transaktionsblock" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3225 +#: access/transam/xact.c:3236 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s kan inte köras i ett undertransaktionsblock" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3235 +#: access/transam/xact.c:3246 #, c-format msgid "%s cannot be executed from a function or multi-command string" msgstr "%s kan inte köras från en funktion eller multi-kommando-sträng" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3306 +#: access/transam/xact.c:3317 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s kan bara användas i transaktionsblock" -#: access/transam/xact.c:3490 +#: access/transam/xact.c:3501 #, c-format msgid "there is already a transaction in progress" msgstr "det är redan en transaktion igång" -#: access/transam/xact.c:3658 access/transam/xact.c:3761 +#: access/transam/xact.c:3669 access/transam/xact.c:3772 #, c-format msgid "there is no transaction in progress" msgstr "ingen transaktion pågår" -#: access/transam/xact.c:3669 +#: access/transam/xact.c:3680 #, c-format msgid "cannot commit during a parallel operation" msgstr "kan inte commit:a under en parallell operation" -#: access/transam/xact.c:3772 +#: access/transam/xact.c:3783 #, c-format msgid "cannot abort during a parallel operation" msgstr "can inte avbryta under en parallell operation" -#: access/transam/xact.c:3814 +#: access/transam/xact.c:3825 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "kan inte definiera sparpunkter under en parallell operation" -#: access/transam/xact.c:3881 +#: access/transam/xact.c:3892 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "kan inte frigöra en sparpunkt under en parallell operation" -#: access/transam/xact.c:3892 access/transam/xact.c:3944 -#: access/transam/xact.c:3950 access/transam/xact.c:4006 -#: access/transam/xact.c:4056 access/transam/xact.c:4062 +#: access/transam/xact.c:3903 access/transam/xact.c:3955 +#: access/transam/xact.c:3961 access/transam/xact.c:4017 +#: access/transam/xact.c:4067 access/transam/xact.c:4073 #, c-format msgid "no such savepoint" msgstr "ingen sådan sparpunkt" -#: access/transam/xact.c:3994 +#: access/transam/xact.c:4005 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "kan inte rulla tillbaka till sparpunkt under en parallell operation" -#: access/transam/xact.c:4122 +#: access/transam/xact.c:4133 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "kan inte starta subtransaktioner under en parallell operation" -#: access/transam/xact.c:4189 +#: access/transam/xact.c:4200 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "kan inte commit:a subtransaktioner undert en parallell operation" -#: access/transam/xact.c:4826 +#: access/transam/xact.c:4842 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "kan inte ha mer än 2^32-1 subtransaktioner i en transaktion" -#: access/transam/xlog.c:2469 +#: access/transam/xlog.c:2493 #, c-format msgid "could not seek in log file %s to offset %u: %m" msgstr "kunde inte söka i loggfil %s till offset %u: %m" -#: access/transam/xlog.c:2491 +#: access/transam/xlog.c:2515 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "kunde inte skriva till loggfil %s vid offset %u, längd %zu: %m" -#: access/transam/xlog.c:2767 +#: access/transam/xlog.c:2791 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" msgstr "updaterade minsta återställningspunkt till %X/%X på tidslinje %u" -#: access/transam/xlog.c:3422 +#: access/transam/xlog.c:3446 #, c-format msgid "not enough data in file \"%s\"" msgstr "otillräckligt med data i fil \"%s\"" -#: access/transam/xlog.c:3568 +#: access/transam/xlog.c:3592 #, c-format msgid "could not open write-ahead log file \"%s\": %m" msgstr "kunde inte öppna write-ahead-logg-fil \"%s\": %m" -#: access/transam/xlog.c:3782 access/transam/xlog.c:5631 +#: access/transam/xlog.c:3806 access/transam/xlog.c:5668 #, c-format msgid "could not close log file %s: %m" msgstr "kunde inte stänga loggfil %s: %m" -#: access/transam/xlog.c:3846 access/transam/xlogutils.c:701 -#: replication/walsender.c:2406 +#: access/transam/xlog.c:3870 access/transam/xlogutils.c:701 +#: replication/walsender.c:2404 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "efterfrågat WAL-segment %s har redan tagits bort" -#: access/transam/xlog.c:3907 access/transam/xlog.c:3982 -#: access/transam/xlog.c:4177 +#: access/transam/xlog.c:3931 access/transam/xlog.c:4006 +#: access/transam/xlog.c:4201 #, c-format msgid "could not open write-ahead log directory \"%s\": %m" msgstr "kunde inte öppna write-ahead-logg-katalog \"%s\": %m" -#: access/transam/xlog.c:4063 +#: access/transam/xlog.c:4087 #, c-format msgid "recycled write-ahead log file \"%s\"" msgstr "återanvände write-ahead-loggfil \"%s\"" -#: access/transam/xlog.c:4075 +#: access/transam/xlog.c:4099 #, c-format msgid "removing write-ahead log file \"%s\"" msgstr "tar bort write-ahead-loggfil \"%s\"" -#: access/transam/xlog.c:4095 +#: access/transam/xlog.c:4119 #, c-format msgid "could not rename old write-ahead log file \"%s\": %m" msgstr "kunde inte döpa om gammal write-ahead-loggfil \"%s\": %m" -#: access/transam/xlog.c:4137 access/transam/xlog.c:4147 +#: access/transam/xlog.c:4161 access/transam/xlog.c:4171 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "krävd WAL-katalog \"%s\" finns inte" -#: access/transam/xlog.c:4153 +#: access/transam/xlog.c:4177 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "skapar saknad WAL-katalog \"%s\"" -#: access/transam/xlog.c:4156 +#: access/transam/xlog.c:4180 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "kunde inte skapa saknad katalog \"%s\": %m" -#: access/transam/xlog.c:4267 +#: access/transam/xlog.c:4304 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "oväntad tidslinje-ID %u i loggsegment %s, offset %u" -#: access/transam/xlog.c:4405 +#: access/transam/xlog.c:4442 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "ny tidslinje %u är inte ett barn till databasens systemtidslinje %u" -#: access/transam/xlog.c:4419 +#: access/transam/xlog.c:4456 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "ny tidslinje %u skapad från aktuella databasens systemtidslinje %u innan nuvarande återställningspunkt %X/%X" -#: access/transam/xlog.c:4438 +#: access/transam/xlog.c:4475 #, c-format msgid "new target timeline is %u" msgstr "ny måltidslinje är %u" -#: access/transam/xlog.c:4519 +#: access/transam/xlog.c:4556 #, c-format msgid "could not create control file \"%s\": %m" msgstr "kunde inte skapa kontrollfil \"%s\": %m" -#: access/transam/xlog.c:4531 access/transam/xlog.c:4765 +#: access/transam/xlog.c:4568 access/transam/xlog.c:4802 #, c-format msgid "could not write to control file: %m" msgstr "kunde inte skriva till kontrollfil: %m" -#: access/transam/xlog.c:4539 access/transam/xlog.c:4773 +#: access/transam/xlog.c:4576 access/transam/xlog.c:4810 #, c-format msgid "could not fsync control file: %m" msgstr "kunde inte fsync:a kontrollfil: %m" -#: access/transam/xlog.c:4545 access/transam/xlog.c:4779 +#: access/transam/xlog.c:4582 access/transam/xlog.c:4816 #, c-format msgid "could not close control file: %m" msgstr "kunde inte stänga kontrollfil: %m" -#: access/transam/xlog.c:4564 access/transam/xlog.c:4753 +#: access/transam/xlog.c:4601 access/transam/xlog.c:4790 #, c-format msgid "could not open control file \"%s\": %m" msgstr "kunde inte öppna kontrollfil \"%s\": %m" -#: access/transam/xlog.c:4574 +#: access/transam/xlog.c:4611 #, c-format msgid "could not read from control file: %m" msgstr "kunde inte läsa från kontrollfil: %m" -#: access/transam/xlog.c:4577 +#: access/transam/xlog.c:4614 #, c-format msgid "could not read from control file: read %d bytes, expected %d" msgstr "kunde inte läsa från kontrollfil: läste %d byte, förväntade %d" -#: access/transam/xlog.c:4592 access/transam/xlog.c:4601 -#: access/transam/xlog.c:4625 access/transam/xlog.c:4632 -#: access/transam/xlog.c:4639 access/transam/xlog.c:4644 -#: access/transam/xlog.c:4651 access/transam/xlog.c:4658 -#: access/transam/xlog.c:4665 access/transam/xlog.c:4672 -#: access/transam/xlog.c:4679 access/transam/xlog.c:4686 -#: access/transam/xlog.c:4693 access/transam/xlog.c:4702 -#: access/transam/xlog.c:4709 access/transam/xlog.c:4718 -#: access/transam/xlog.c:4725 utils/init/miscinit.c:1410 +#: access/transam/xlog.c:4629 access/transam/xlog.c:4638 +#: access/transam/xlog.c:4662 access/transam/xlog.c:4669 +#: access/transam/xlog.c:4676 access/transam/xlog.c:4681 +#: access/transam/xlog.c:4688 access/transam/xlog.c:4695 +#: access/transam/xlog.c:4702 access/transam/xlog.c:4709 +#: access/transam/xlog.c:4716 access/transam/xlog.c:4723 +#: access/transam/xlog.c:4730 access/transam/xlog.c:4739 +#: access/transam/xlog.c:4746 access/transam/xlog.c:4755 +#: access/transam/xlog.c:4762 utils/init/miscinit.c:1410 #, c-format msgid "database files are incompatible with server" msgstr "databasfilerna är inkompatibla med servern" -#: access/transam/xlog.c:4593 +#: access/transam/xlog.c:4630 #, 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 "Databasklustret initierades med PG_CONTROL_VERSION %d (0x%08x), men servern kompilerades med PG_CONTROL_VERSION %d (0x%08x)." -#: access/transam/xlog.c:4597 +#: access/transam/xlog.c:4634 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "Detta kan orsakas av en felaktig byte-ordning. Du behöver troligen köra initdb." -#: access/transam/xlog.c:4602 +#: access/transam/xlog.c:4639 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "Databasklustret initierades med PG_CONTROL_VERSION %d, men servern kompilerades med PG_CONTROL_VERSION %d." -#: access/transam/xlog.c:4605 access/transam/xlog.c:4629 -#: access/transam/xlog.c:4636 access/transam/xlog.c:4641 +#: access/transam/xlog.c:4642 access/transam/xlog.c:4666 +#: access/transam/xlog.c:4673 access/transam/xlog.c:4678 #, c-format msgid "It looks like you need to initdb." msgstr "Du behöver troligen köra initdb." -#: access/transam/xlog.c:4616 +#: access/transam/xlog.c:4653 #, c-format msgid "incorrect checksum in control file" msgstr "ogiltig kontrollsumma kontrollfil" -#: access/transam/xlog.c:4626 +#: access/transam/xlog.c:4663 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "Databasklustret initierades med CATALOG_VERSION_NO %d, men servern kompilerades med CATALOG_VERSION_NO %d." -#: access/transam/xlog.c:4633 +#: access/transam/xlog.c:4670 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "Databasklustret initierades med MAXALIGN %d, men servern kompilerades med MAXALIGN %d." -#: access/transam/xlog.c:4640 +#: access/transam/xlog.c:4677 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "Databasklustret verkar använda en annan flyttalsrepresentation än vad serverprogrammet gör." -#: access/transam/xlog.c:4645 +#: access/transam/xlog.c:4682 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "Databasklustret initierades med BLCKSZ %d, men servern kompilerades med BLCKSZ %d." -#: access/transam/xlog.c:4648 access/transam/xlog.c:4655 -#: access/transam/xlog.c:4662 access/transam/xlog.c:4669 -#: access/transam/xlog.c:4676 access/transam/xlog.c:4683 -#: access/transam/xlog.c:4690 access/transam/xlog.c:4697 -#: access/transam/xlog.c:4705 access/transam/xlog.c:4712 -#: access/transam/xlog.c:4721 access/transam/xlog.c:4728 +#: access/transam/xlog.c:4685 access/transam/xlog.c:4692 +#: access/transam/xlog.c:4699 access/transam/xlog.c:4706 +#: access/transam/xlog.c:4713 access/transam/xlog.c:4720 +#: access/transam/xlog.c:4727 access/transam/xlog.c:4734 +#: access/transam/xlog.c:4742 access/transam/xlog.c:4749 +#: access/transam/xlog.c:4758 access/transam/xlog.c:4765 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Det verkar som om du måste kompilera om eller köra initdb." -#: access/transam/xlog.c:4652 +#: access/transam/xlog.c:4689 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "Databasklustret initierades med RELSEG_SIZE %d, men servern kompilerades med RELSEG_SIZE %d." -#: access/transam/xlog.c:4659 +#: access/transam/xlog.c:4696 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "Databasklustret initierades med XLOG_BLCKSZ %d, men servern kompilerades med XLOG_BLCKSZ %d." -#: access/transam/xlog.c:4666 +#: access/transam/xlog.c:4703 #, c-format msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d." msgstr "Databasklustret initierades med XLOG_SEG_SIZE %d, men servern kompilerades med XLOG_SEG_SIZE %d." -#: access/transam/xlog.c:4673 +#: access/transam/xlog.c:4710 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "Databasklustret initierades med NAMEDATALEN %d, men servern kompilerades med NAMEDATALEN %d." -#: access/transam/xlog.c:4680 +#: access/transam/xlog.c:4717 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "Databasklustret initierades med INDEX_MAX_KEYS %d, men servern kompilerades med INDEX_MAX_KEYS %d." -#: access/transam/xlog.c:4687 +#: access/transam/xlog.c:4724 #, 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 "Databasklustret initierades med TOAST_MAX_CHUNK_SIZE %d, men servern kompilerades med TOAST_MAX_CHUNK_SIZE %d." -#: access/transam/xlog.c:4694 +#: access/transam/xlog.c:4731 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "Databasklustret initierades med LOBLKSIZE %d, men servern kompilerades med LOBLKSIZE %d." -#: access/transam/xlog.c:4703 +#: access/transam/xlog.c:4740 #, c-format msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." msgstr "Databasklustret initierades utan USE_FLOAT4_BYVAL, men servern kompilerades med USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4710 +#: access/transam/xlog.c:4747 #, c-format msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL." msgstr "Databasklustret initierades med USE_FLOAT4_BYVAL, men servern kompilerades utan USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4719 +#: access/transam/xlog.c:4756 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "Databasklustret initierades utan USE_FLOAT8_BYVAL, men servern kompilerades med USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4726 +#: access/transam/xlog.c:4763 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "Databasklustret initierades med USE_FLOAT8_BYVAL, men servern kompilerades utan USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:5082 +#: access/transam/xlog.c:5119 #, c-format msgid "could not generate secret authorization token" msgstr "kunde inte generera hemligt auktorisationstoken" -#: access/transam/xlog.c:5172 +#: access/transam/xlog.c:5209 #, c-format msgid "could not write bootstrap write-ahead log file: %m" msgstr "kunde inte skriva bootstrap-write-ahead-loggfil: %m" -#: access/transam/xlog.c:5180 +#: access/transam/xlog.c:5217 #, c-format msgid "could not fsync bootstrap write-ahead log file: %m" msgstr "kunde inte fsync:a bootstrap-write-ahead-loggfil: %m" -#: access/transam/xlog.c:5186 +#: access/transam/xlog.c:5223 #, c-format msgid "could not close bootstrap write-ahead log file: %m" msgstr "kunde inte stänga bootstrap-write-ahead-loggfil: %m" -#: access/transam/xlog.c:5262 +#: access/transam/xlog.c:5299 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "kunde inte öppna återställningskommandofil \"%s\": %m" -#: access/transam/xlog.c:5308 access/transam/xlog.c:5410 +#: access/transam/xlog.c:5345 access/transam/xlog.c:5447 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" msgstr "ogiltigt värde för återställningsparameter \"%s\": \"%s\"" -#: access/transam/xlog.c:5311 +#: access/transam/xlog.c:5348 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "Giltiga värden är \"pause\", \"promote\" och \"shutdown\"." -#: access/transam/xlog.c:5331 +#: access/transam/xlog.c:5368 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" msgstr "recovery_target_timeline är inte ett giltigt nummer: \"%s\"" -#: access/transam/xlog.c:5348 +#: access/transam/xlog.c:5385 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" msgstr "recovery_target_xid är inte ett giltigt nummer: \"%s\"" -#: access/transam/xlog.c:5379 +#: access/transam/xlog.c:5416 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" msgstr "recovery_target_name är för lång (maximalt %d tecken)" -#: access/transam/xlog.c:5413 +#: access/transam/xlog.c:5450 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "Det enda tillåtna värdet är \"immediate\"." -#: access/transam/xlog.c:5426 access/transam/xlog.c:5437 +#: access/transam/xlog.c:5463 access/transam/xlog.c:5474 #: commands/extension.c:547 commands/extension.c:555 utils/misc/guc.c:5761 #, c-format msgid "parameter \"%s\" requires a Boolean value" msgstr "parameter \"%s\" kräver ett boolskt värde" -#: access/transam/xlog.c:5472 +#: access/transam/xlog.c:5509 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "parameter \"%s\" kräver ett temporärt värde" -#: access/transam/xlog.c:5474 catalog/dependency.c:985 catalog/dependency.c:986 -#: catalog/dependency.c:992 catalog/dependency.c:993 catalog/dependency.c:1004 -#: catalog/dependency.c:1005 commands/tablecmds.c:951 -#: commands/tablecmds.c:10536 commands/user.c:1076 commands/view.c:504 +#: access/transam/xlog.c:5511 catalog/dependency.c:994 catalog/dependency.c:995 +#: catalog/dependency.c:1001 catalog/dependency.c:1002 +#: catalog/dependency.c:1013 catalog/dependency.c:1014 commands/tablecmds.c:951 +#: commands/tablecmds.c:10536 commands/user.c:1078 commands/view.c:504 #: libpq/auth.c:329 replication/syncrep.c:1309 storage/lmgr/deadlock.c:1145 -#: storage/lmgr/proc.c:1318 utils/adt/acl.c:5328 utils/misc/guc.c:5783 -#: utils/misc/guc.c:5876 utils/misc/guc.c:9906 utils/misc/guc.c:9940 -#: utils/misc/guc.c:9974 utils/misc/guc.c:10008 utils/misc/guc.c:10043 +#: storage/lmgr/proc.c:1318 utils/adt/acl.c:5331 utils/misc/guc.c:5783 +#: utils/misc/guc.c:5876 utils/misc/guc.c:9915 utils/misc/guc.c:9949 +#: utils/misc/guc.c:9983 utils/misc/guc.c:10026 utils/misc/guc.c:10068 #, c-format msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5481 +#: access/transam/xlog.c:5518 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "okänd återställningsparameter \"%s\"" -#: access/transam/xlog.c:5492 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command" msgstr "återställningskommandofil \"%s\" angav inte vare sig primary_conninfo eller restore_command" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5531 #, c-format msgid "The database server will regularly poll the pg_wal subdirectory to check for files placed there." msgstr "Databasservern kommer med jämna mellanrum att poll:a pg_wal-underkatalogen för att se om filer placerats där." -#: access/transam/xlog.c:5501 +#: access/transam/xlog.c:5538 #, c-format msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled" msgstr "återställningskommandofil \"%s\" måste ange restore_command när standby-läge inte är påslaget" -#: access/transam/xlog.c:5522 +#: access/transam/xlog.c:5559 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "standby-läge stöd inte av enanvändarservrar" -#: access/transam/xlog.c:5541 +#: access/transam/xlog.c:5578 #, c-format msgid "recovery target timeline %u does not exist" msgstr "återställningsmåltidslinje %u finns inte" -#: access/transam/xlog.c:5650 +#: access/transam/xlog.c:5687 #, c-format msgid "archive recovery complete" msgstr "arkivåterställning klar" -#: access/transam/xlog.c:5709 access/transam/xlog.c:5975 +#: access/transam/xlog.c:5746 access/transam/xlog.c:6012 #, c-format msgid "recovery stopping after reaching consistency" msgstr "återställning stoppad efter att ha uppnått konsistens" -#: access/transam/xlog.c:5730 +#: access/transam/xlog.c:5767 #, c-format msgid "recovery stopping before WAL location (LSN) \"%X/%X\"" msgstr "återställning stoppad före WAL-position (LSN) \"%X/%X\"" -#: access/transam/xlog.c:5816 +#: access/transam/xlog.c:5853 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "återställning stoppad före commit av transaktion %u, tid %s" -#: access/transam/xlog.c:5823 +#: access/transam/xlog.c:5860 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "återställning stoppad före abort av transaktion %u, tid %s" -#: access/transam/xlog.c:5869 +#: access/transam/xlog.c:5906 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "återställning stoppad vid återställningspunkt \"%s\", tid %s" -#: access/transam/xlog.c:5887 +#: access/transam/xlog.c:5924 #, c-format msgid "recovery stopping after WAL location (LSN) \"%X/%X\"" msgstr "återställning stoppad efter WAL-position (LSN) \"%X/%X\"" -#: access/transam/xlog.c:5955 +#: access/transam/xlog.c:5992 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "återställning stoppad efter commit av transaktion %u, tid %s" -#: access/transam/xlog.c:5963 +#: access/transam/xlog.c:6000 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "återställning stoppad efter abort av transaktion %u, tid %s" -#: access/transam/xlog.c:6003 +#: access/transam/xlog.c:6040 #, c-format msgid "recovery has paused" msgstr "återställning har pausats" -#: access/transam/xlog.c:6004 +#: access/transam/xlog.c:6041 #, c-format msgid "Execute pg_wal_replay_resume() to continue." msgstr "Kör pg_wal_replay_resume() för att fortsätta." -#: access/transam/xlog.c:6212 +#: access/transam/xlog.c:6256 #, 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 är inte möjligt då %s = %d har ett lägre värde än på masterservern (dess värde var %d)" -#: access/transam/xlog.c:6238 +#: access/transam/xlog.c:6282 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "WAL genererades med wal_level=minimal, data kan saknas" -#: access/transam/xlog.c:6239 +#: access/transam/xlog.c:6283 #, c-format msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup." msgstr "Detta händer om du temporärt sätter wal_level=minimal utan att ta en ny basbackup." -#: access/transam/xlog.c:6250 +#: access/transam/xlog.c:6294 #, c-format msgid "hot standby is not possible because wal_level was not set to \"replica\" or higher on the master server" msgstr "hot standby är inte möjligt då wal_level inte satts till \"replica\" eller högre på masterservern" -#: access/transam/xlog.c:6251 +#: access/transam/xlog.c:6295 #, c-format msgid "Either set wal_level to \"replica\" on the master, or turn off hot_standby here." msgstr "Antingen sätt wal_level till \"replica\" på mastern eller stäng av hot_standby här." -#: access/transam/xlog.c:6308 +#: access/transam/xlog.c:6352 #, c-format msgid "control file contains invalid data" msgstr "kontrollfil innehåller ogiltig data" -#: access/transam/xlog.c:6314 +#: access/transam/xlog.c:6358 #, c-format msgid "database system was shut down at %s" msgstr "databassystemet stängdes ner vid %s" -#: access/transam/xlog.c:6319 +#: access/transam/xlog.c:6363 #, c-format msgid "database system was shut down in recovery at %s" msgstr "databassystemet stängdes ner under återställning vid %s" -#: access/transam/xlog.c:6323 +#: access/transam/xlog.c:6367 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "nedstängning av databasen avbröts; senast kända upptidpunkt vid %s" -#: access/transam/xlog.c:6327 +#: access/transam/xlog.c:6371 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "databassystemet avbröts under återställning vid %s" -#: access/transam/xlog.c:6329 +#: access/transam/xlog.c:6373 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "Det betyder troligen att en del data är förstörd och du behöver återställa databasen från den senaste backup:en." -#: access/transam/xlog.c:6333 +#: access/transam/xlog.c:6377 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "databassystemet avbröts under återställning vid loggtid %s" -#: access/transam/xlog.c:6335 +#: access/transam/xlog.c:6379 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." msgstr "Om detta har hänt mer än en gång så kan data vara korrupt och du kanske måste återställa till ett tidigare återställningsmål." -#: access/transam/xlog.c:6339 +#: access/transam/xlog.c:6383 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "databassystemet avbröts; senast kända upptidpunkt vid %s" -#: access/transam/xlog.c:6395 +#: access/transam/xlog.c:6439 #, c-format msgid "entering standby mode" msgstr "går in i standby-läge" -#: access/transam/xlog.c:6398 +#: access/transam/xlog.c:6442 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "startar point-in-time-återställning till XID %u" -#: access/transam/xlog.c:6402 +#: access/transam/xlog.c:6446 #, c-format msgid "starting point-in-time recovery to %s" msgstr "startar point-in-time-återställning till %s" -#: access/transam/xlog.c:6406 +#: access/transam/xlog.c:6450 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "startar point-in-time-återställning till \"%s\"" -#: access/transam/xlog.c:6410 +#: access/transam/xlog.c:6454 #, c-format msgid "starting point-in-time recovery to WAL location (LSN) \"%X/%X\"" msgstr "startar point-in-time-återställning till WAL-position (LSN) \"%X/%X\"" -#: access/transam/xlog.c:6415 +#: access/transam/xlog.c:6459 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "startar point-in-time-återställning till tidigast konsistenta punkt" -#: access/transam/xlog.c:6418 +#: access/transam/xlog.c:6462 #, c-format msgid "starting archive recovery" msgstr "Startar arkivåterställning" -#: access/transam/xlog.c:6472 access/transam/xlog.c:6600 +#: access/transam/xlog.c:6516 access/transam/xlog.c:6644 #, c-format msgid "checkpoint record is at %X/%X" msgstr "checkpoint-posten är vid %X/%X" -#: access/transam/xlog.c:6486 +#: access/transam/xlog.c:6530 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "kunde inte hitta redo-position refererad av checkpoint-post" -#: access/transam/xlog.c:6487 access/transam/xlog.c:6494 +#: access/transam/xlog.c:6531 access/transam/xlog.c:6538 #, c-format msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." msgstr "Om du inte hålller på att återställa från en backup, försök med att ta bort filen \"%s/backup_label\"." -#: access/transam/xlog.c:6493 +#: access/transam/xlog.c:6537 #, c-format msgid "could not locate required checkpoint record" msgstr "kunde inte hitta den checkpoint-post som krävs" -#: access/transam/xlog.c:6519 commands/tablespace.c:639 +#: access/transam/xlog.c:6563 commands/tablespace.c:635 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "kan inte skapa symbolisk länk \"%s\": %m" -#: access/transam/xlog.c:6551 access/transam/xlog.c:6557 +#: access/transam/xlog.c:6595 access/transam/xlog.c:6601 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "hoppar över fil \"%s\" då ingen fil \"%s\" finns" -#: access/transam/xlog.c:6553 access/transam/xlog.c:11624 +#: access/transam/xlog.c:6597 access/transam/xlog.c:11769 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Filen \"%s\" döptes om till \"%s\"." -#: access/transam/xlog.c:6559 +#: access/transam/xlog.c:6603 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Kunde inte döpa om fil \"%s\" till \"%s\": %m" -#: access/transam/xlog.c:6610 access/transam/xlog.c:6625 +#: access/transam/xlog.c:6654 access/transam/xlog.c:6669 #, c-format msgid "could not locate a valid checkpoint record" msgstr "kunde inte hitta en giltig checkpoint-post" -#: access/transam/xlog.c:6619 +#: access/transam/xlog.c:6663 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "använder tidigare checkpoint-post vid %X/%X" -#: access/transam/xlog.c:6663 +#: access/transam/xlog.c:6707 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "efterfrågad tidslinje %u är inte ett barn till denna servers historik" -#: access/transam/xlog.c:6665 +#: access/transam/xlog.c:6709 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." msgstr "Senaste checkpoint är vid %X/%X på tidslinje %u, men i historiken för efterfrågad tidslinje så avvek servern från den tidslinjen vid %X/%X." -#: access/transam/xlog.c:6681 +#: access/transam/xlog.c:6725 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "efterfågan tidslinje %u innehåller inte minimal återställningspunkt %X/%X på tidslinje %u" -#: access/transam/xlog.c:6712 +#: access/transam/xlog.c:6756 #, c-format msgid "invalid next transaction ID" msgstr "nästa transaktions-ID ogiltig" -#: access/transam/xlog.c:6807 +#: access/transam/xlog.c:6851 #, c-format msgid "invalid redo in checkpoint record" msgstr "ogiltig redo i checkpoint-post" -#: access/transam/xlog.c:6818 +#: access/transam/xlog.c:6862 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "ogiltig redo-post i nedstängnings-checkpoint" -#: access/transam/xlog.c:6852 +#: access/transam/xlog.c:6902 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "databassystemet stängdes inte ned korrekt; automatisk återställning pågår" -#: access/transam/xlog.c:6856 +#: access/transam/xlog.c:6906 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "krashåterställning startar i tidslinje %u och har måltidslinje %u" -#: access/transam/xlog.c:6904 +#: access/transam/xlog.c:6954 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label innehåller data som inte stämmer med kontrollfil" -#: access/transam/xlog.c:6905 +#: access/transam/xlog.c:6955 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "Det betyder att backup:en är trasig och du behöver använda en annan backup för att återställa." -#: access/transam/xlog.c:6996 +#: access/transam/xlog.c:7046 #, c-format msgid "initializing for hot standby" msgstr "initierar för hot standby" -#: access/transam/xlog.c:7128 +#: access/transam/xlog.c:7178 #, c-format msgid "redo starts at %X/%X" msgstr "redo startar vid %X/%X" -#: access/transam/xlog.c:7362 +#: access/transam/xlog.c:7412 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "efterfrågad återställningsstoppunkt är före en konsistent återställningspunkt" -#: access/transam/xlog.c:7400 +#: access/transam/xlog.c:7450 #, c-format msgid "redo done at %X/%X" msgstr "redo gjord vid %X/%X" -#: access/transam/xlog.c:7405 access/transam/xlog.c:9468 +#: access/transam/xlog.c:7455 access/transam/xlog.c:9583 #, c-format msgid "last completed transaction was at log time %s" msgstr "senaste kompletta transaktionen var vid loggtid %s" -#: access/transam/xlog.c:7414 +#: access/transam/xlog.c:7464 #, c-format msgid "redo is not required" msgstr "redo behövs inte" -#: access/transam/xlog.c:7493 access/transam/xlog.c:7497 +#: access/transam/xlog.c:7548 access/transam/xlog.c:7552 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL slutar före sluttiden av online-backup:en" -#: access/transam/xlog.c:7494 +#: access/transam/xlog.c:7549 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "Alla genererade WAL under tiden online-backup:en togs måste vara tillgängliga vid återställning." -#: access/transam/xlog.c:7498 +#: access/transam/xlog.c:7553 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "Online-backup startad med pg_start_backup() måste avslutas med pg_stop_backup() och alla WAL fram till den punkten måste vara tillgängliga vid återställning." -#: access/transam/xlog.c:7501 +#: access/transam/xlog.c:7556 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL avslutas innan konstistent återställningspunkt" -#: access/transam/xlog.c:7536 +#: access/transam/xlog.c:7591 #, c-format msgid "selected new timeline ID: %u" msgstr "valt nytt tidslinje-ID: %u" -#: access/transam/xlog.c:7984 +#: access/transam/xlog.c:8066 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "konsistent återställningstillstånd uppnått vid %X/%X" -#: access/transam/xlog.c:8194 +#: access/transam/xlog.c:8276 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "ogiltig primär checkpoint-länk i kontrollfil" -#: access/transam/xlog.c:8198 +#: access/transam/xlog.c:8280 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "ogiltig sekondär checkpoint-länk i kontrollfil" -#: access/transam/xlog.c:8202 +#: access/transam/xlog.c:8284 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "ogiltig checkpoint-länk i \"backup_label\"-fil" -#: access/transam/xlog.c:8219 +#: access/transam/xlog.c:8301 #, c-format msgid "invalid primary checkpoint record" msgstr "ogiltig primär checkpoint-post" -#: access/transam/xlog.c:8223 +#: access/transam/xlog.c:8305 #, c-format msgid "invalid secondary checkpoint record" msgstr "ogiltig sekundär checkpoint-post" -#: access/transam/xlog.c:8227 +#: access/transam/xlog.c:8309 #, c-format msgid "invalid checkpoint record" msgstr "ogiltig checkpoint-post" -#: access/transam/xlog.c:8238 +#: access/transam/xlog.c:8320 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "ogiltig resurshanterar-ID i primär checkpoint-post" -#: access/transam/xlog.c:8242 +#: access/transam/xlog.c:8324 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "ogiltig resurshanterar-ID i sekundär checkpoint-post" -#: access/transam/xlog.c:8246 +#: access/transam/xlog.c:8328 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "ogiltig resurshanterar-ID i checkpoint-post" -#: access/transam/xlog.c:8259 +#: access/transam/xlog.c:8341 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "ogiltig xl_info i primär checkpoint-post" -#: access/transam/xlog.c:8263 +#: access/transam/xlog.c:8345 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "ogiltig xl_info i sekundär checkpoint-post" -#: access/transam/xlog.c:8267 +#: access/transam/xlog.c:8349 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "ogiltig xl_info i checkpoint-post" -#: access/transam/xlog.c:8278 +#: access/transam/xlog.c:8360 #, c-format msgid "invalid length of primary checkpoint record" msgstr "ogiltig längd i primär checkpoint-post" -#: access/transam/xlog.c:8282 +#: access/transam/xlog.c:8364 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "ogiltig längd i sekundär checkpoint-post" -#: access/transam/xlog.c:8286 +#: access/transam/xlog.c:8368 #, c-format msgid "invalid length of checkpoint record" msgstr "ogiltig längd på checkpoint-post" -#: access/transam/xlog.c:8489 +#: access/transam/xlog.c:8571 #, c-format msgid "shutting down" msgstr "stänger ner" -#: access/transam/xlog.c:8808 +#: access/transam/xlog.c:8876 #, c-format msgid "checkpoint skipped because system is idle" msgstr "checkpoint överhoppad på grund av att systemet är olastat" -#: access/transam/xlog.c:9013 +#: access/transam/xlog.c:9081 #, c-format msgid "concurrent write-ahead log activity while database system is shutting down" msgstr "samtidig write-ahead-logg-aktivitet när databassystemet stängs ner" -#: access/transam/xlog.c:9267 +#: access/transam/xlog.c:9382 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "hoppar över omstartpunkt, återställning har redan avslutats" -#: access/transam/xlog.c:9290 +#: access/transam/xlog.c:9405 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "hoppar över omstartpunkt, redan gjorde vid %X/%X" -#: access/transam/xlog.c:9466 +#: access/transam/xlog.c:9581 #, c-format msgid "recovery restart point at %X/%X" msgstr "återställningens omstartspunkt vid %X/%X" -#: access/transam/xlog.c:9602 +#: access/transam/xlog.c:9717 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "återställningspunkt \"%s\" skapad vid %X/%X" -#: access/transam/xlog.c:9744 +#: access/transam/xlog.c:9859 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "oväntad föregående tidslinje-ID %u (nuvarande tidslinje-ID %u) i checkpoint-post" -#: access/transam/xlog.c:9753 +#: access/transam/xlog.c:9868 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "oväntad tidslinje-ID %u (efter %u) i checkpoint-post" -#: access/transam/xlog.c:9769 +#: access/transam/xlog.c:9884 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "oväntad tidslinje-ID %u i checkpoint-post, innan vi nått minimal återställningspunkt %X/%X på tidslinje %u" -#: access/transam/xlog.c:9845 +#: access/transam/xlog.c:9960 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "online-backup avbröts, återställning kan inte fortsätta" -#: access/transam/xlog.c:9903 access/transam/xlog.c:9961 -#: access/transam/xlog.c:9984 +#: access/transam/xlog.c:10018 access/transam/xlog.c:10076 +#: access/transam/xlog.c:10106 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "oväntad tidslinje-ID %u (skall vara %u) i checkpoint-post" -#: access/transam/xlog.c:10272 +#: access/transam/xlog.c:10264 +#, c-format +msgid "successfully skipped missing contrecord at %X/%X, overwritten at %s" +msgstr "lyckades hoppa över saknad contrecord vid %X/%X, överskriven vid %s" + +#: access/transam/xlog.c:10417 #, c-format msgid "could not fsync log segment %s: %m" msgstr "kunde inte fsync:a loggsegment %s: %m" -#: access/transam/xlog.c:10297 +#: access/transam/xlog.c:10442 #, c-format msgid "could not fsync log file %s: %m" msgstr "kunde inte fsync:a loggfil %s: %m" -#: access/transam/xlog.c:10305 +#: access/transam/xlog.c:10450 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "kunde inte fsync:a skriv-igenom-loggfil %s: %m" -#: access/transam/xlog.c:10314 +#: access/transam/xlog.c:10459 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "kunde inte fdatasync:a loggfil %s: %m" -#: access/transam/xlog.c:10405 access/transam/xlog.c:10930 +#: access/transam/xlog.c:10550 access/transam/xlog.c:11075 #: access/transam/xlogfuncs.c:297 access/transam/xlogfuncs.c:324 #: access/transam/xlogfuncs.c:363 access/transam/xlogfuncs.c:384 #: access/transam/xlogfuncs.c:405 @@ -2428,67 +2436,67 @@ msgid "WAL control functions cannot be executed during recovery." msgstr "WAL-kontrollfunktioner kan inte köras under återställning." -#: access/transam/xlog.c:10414 access/transam/xlog.c:10939 +#: access/transam/xlog.c:10559 access/transam/xlog.c:11084 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "WAL-nivå inte tillräcklig för att kunna skapa en online-backup" -#: access/transam/xlog.c:10415 access/transam/xlog.c:10940 +#: access/transam/xlog.c:10560 access/transam/xlog.c:11085 #: access/transam/xlogfuncs.c:330 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "wal_level måste vara satt till \"replica\" eller \"logical\" vid serverstart." -#: access/transam/xlog.c:10420 +#: access/transam/xlog.c:10565 #, c-format msgid "backup label too long (max %d bytes)" msgstr "backup-etikett för lång (max %d byte)" -#: access/transam/xlog.c:10457 access/transam/xlog.c:10730 -#: access/transam/xlog.c:10768 +#: access/transam/xlog.c:10602 access/transam/xlog.c:10875 +#: access/transam/xlog.c:10913 #, c-format msgid "a backup is already in progress" msgstr "en backup är redan på gång" -#: access/transam/xlog.c:10458 +#: access/transam/xlog.c:10603 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Kör pg_stop_backup() och försök igen." -#: access/transam/xlog.c:10553 +#: access/transam/xlog.c:10698 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "WAL skapad med full_page_writes=off har återspelats sedab senaste omstartpunkten" -#: access/transam/xlog.c:10555 access/transam/xlog.c:11135 +#: access/transam/xlog.c:10700 access/transam/xlog.c:11280 #, c-format msgid "This means that the backup being taken on the standby is corrupt and should not be used. Enable full_page_writes and run CHECKPOINT on the master, and then try an online backup again." msgstr "Det betyder att backup:en som tas på standby:en är trasig och inte skall användas. Slå på full_page_writes och kör CHECKPOINT på master och försök sedan ta en ny online-backup igen." -#: access/transam/xlog.c:10622 replication/basebackup.c:1114 +#: access/transam/xlog.c:10767 replication/basebackup.c:1114 #: utils/adt/misc.c:511 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "kan inte läsa symbolisk länk \"%s\": %m" -#: access/transam/xlog.c:10629 replication/basebackup.c:1119 +#: access/transam/xlog.c:10774 replication/basebackup.c:1119 #: utils/adt/misc.c:516 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "mål för symbolisk länk \"%s\" är för lång" -#: access/transam/xlog.c:10682 commands/tablespace.c:389 +#: access/transam/xlog.c:10827 commands/tablespace.c:389 #: commands/tablespace.c:551 replication/basebackup.c:1134 utils/adt/misc.c:524 #, c-format msgid "tablespaces are not supported on this platform" msgstr "tabellutrymmen stöds inte på denna plattform" -#: access/transam/xlog.c:10724 access/transam/xlog.c:10762 -#: access/transam/xlog.c:10978 access/transam/xlogarchive.c:104 +#: access/transam/xlog.c:10869 access/transam/xlog.c:10907 +#: access/transam/xlog.c:11123 access/transam/xlogarchive.c:104 #: access/transam/xlogarchive.c:263 commands/copy.c:1871 commands/copy.c:3208 -#: commands/extension.c:3339 commands/tablespace.c:780 -#: commands/tablespace.c:871 guc-file.l:1059 replication/basebackup.c:496 -#: replication/basebackup.c:566 replication/logical/snapbuild.c:1528 +#: commands/extension.c:3347 commands/tablespace.c:776 +#: commands/tablespace.c:867 guc-file.l:1061 replication/basebackup.c:496 +#: replication/basebackup.c:566 replication/logical/snapbuild.c:1544 #: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:3018 #: storage/file/fd.c:3110 utils/adt/dbsize.c:70 utils/adt/dbsize.c:227 #: utils/adt/dbsize.c:307 utils/adt/genfile.c:108 utils/adt/genfile.c:327 @@ -2497,129 +2505,129 @@ msgid "could not stat file \"%s\": %m" msgstr "kunde inte göra stat() på fil \"%s\": %m" -#: access/transam/xlog.c:10731 access/transam/xlog.c:10769 +#: access/transam/xlog.c:10876 access/transam/xlog.c:10914 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "Om du är säker på att det inte pågår någon backup så ta bort filen \"%s\" och försök igen." -#: access/transam/xlog.c:10748 access/transam/xlog.c:10786 -#: access/transam/xlog.c:11193 postmaster/syslogger.c:1475 +#: access/transam/xlog.c:10893 access/transam/xlog.c:10931 +#: access/transam/xlog.c:11338 postmaster/syslogger.c:1475 #: postmaster/syslogger.c:1488 #, c-format msgid "could not write file \"%s\": %m" msgstr "kunde inte skriva fil \"%s\": %m" -#: access/transam/xlog.c:10955 +#: access/transam/xlog.c:11100 #, c-format msgid "exclusive backup not in progress" msgstr "exklusiv backup är inte på gång" -#: access/transam/xlog.c:10982 +#: access/transam/xlog.c:11127 #, c-format msgid "a backup is not in progress" msgstr "ingen backup är på gång" -#: access/transam/xlog.c:11068 access/transam/xlog.c:11081 -#: access/transam/xlog.c:11434 access/transam/xlog.c:11440 -#: access/transam/xlog.c:11524 access/transam/xlogfuncs.c:698 +#: access/transam/xlog.c:11213 access/transam/xlog.c:11226 +#: access/transam/xlog.c:11579 access/transam/xlog.c:11585 +#: access/transam/xlog.c:11669 access/transam/xlogfuncs.c:698 #, c-format msgid "invalid data in file \"%s\"" msgstr "felaktig data i fil \"%s\"" -#: access/transam/xlog.c:11085 replication/basebackup.c:1012 +#: access/transam/xlog.c:11230 replication/basebackup.c:1012 #, c-format msgid "the standby was promoted during online backup" msgstr "standby:en befordrades under online-backup" -#: access/transam/xlog.c:11086 replication/basebackup.c:1013 +#: access/transam/xlog.c:11231 replication/basebackup.c:1013 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "Det betyder att backupen som tas är trasig och inte skall användas. Försök ta en ny online-backup." -#: access/transam/xlog.c:11133 +#: access/transam/xlog.c:11278 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "WAL skapad med full_page_writes=off återspelades under online-backup" -#: access/transam/xlog.c:11248 +#: access/transam/xlog.c:11393 #, c-format msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "pg_stop_backup-uppstädning klar, väntar på att de WAL-segment som krävs blir arkiverade" -#: access/transam/xlog.c:11258 +#: access/transam/xlog.c:11403 #, c-format msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "pg_stop_backup väntar fortfarande på att alla krävda WAL-segments skall bli arkiverade (%d sekunder har gått)" -#: access/transam/xlog.c:11260 +#: access/transam/xlog.c:11405 #, c-format msgid "Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments." msgstr "Kontrollera att ditt archive_command kör som det skall. pg_stop_backup kan avbrytas på ett säkert sätt men databasbackup:en kommer inte vara användbart utan att alla WAL-segment finns." -#: access/transam/xlog.c:11267 +#: access/transam/xlog.c:11412 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "pg_stop_backup komplett, alla krävda WAL-segments har arkiverats" -#: access/transam/xlog.c:11271 +#: access/transam/xlog.c:11416 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "WAL-arkivering är inte påslagen; du måste se till att alla krävda WAL-segment har kopierats på annat sätt för att backup:en skall vara komplett" #. translator: %s is a WAL record description -#: access/transam/xlog.c:11564 +#: access/transam/xlog.c:11709 #, c-format msgid "WAL redo at %X/%X for %s" msgstr "WAL-redo vid %X/%X för %s" -#: access/transam/xlog.c:11613 +#: access/transam/xlog.c:11758 #, c-format msgid "online backup mode was not canceled" msgstr "online backupläge har ej avbrutits" -#: access/transam/xlog.c:11614 +#: access/transam/xlog.c:11759 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Filen \"%s\" kunde inte döpas om till \"%s\": %m." -#: access/transam/xlog.c:11623 access/transam/xlog.c:11635 -#: access/transam/xlog.c:11645 +#: access/transam/xlog.c:11768 access/transam/xlog.c:11780 +#: access/transam/xlog.c:11790 #, c-format msgid "online backup mode canceled" msgstr "online backupläge avbrutet" -#: access/transam/xlog.c:11636 +#: access/transam/xlog.c:11781 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "Filer \"%s\" och \"%s\" döptes om till \"%s\" och \"%s\", var för sig." -#: access/transam/xlog.c:11646 +#: access/transam/xlog.c:11791 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." msgstr "Filen \"%s\" dötes om till \"%s\", men filen \"%s\" kunde inte döpas om till \"%s\": %m." -#: access/transam/xlog.c:11770 access/transam/xlogutils.c:726 -#: replication/walreceiver.c:982 replication/walsender.c:2423 +#: access/transam/xlog.c:11915 access/transam/xlogutils.c:726 +#: replication/walreceiver.c:953 replication/walsender.c:2421 #, c-format msgid "could not seek in log segment %s to offset %u: %m" msgstr "kunde inte söka i loggsegment %s till offset %u: %m" -#: access/transam/xlog.c:11786 +#: access/transam/xlog.c:11931 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "kunde inte läsa från loggsegment %s, offset %u: %m" -#: access/transam/xlog.c:12344 +#: access/transam/xlog.c:12497 #, c-format msgid "received promote request" msgstr "tog emot förfrågan om befordring" -#: access/transam/xlog.c:12357 +#: access/transam/xlog.c:12510 #, c-format msgid "trigger file found: %s" msgstr "utlösarfil hittad: %s" -#: access/transam/xlog.c:12366 +#: access/transam/xlog.c:12519 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "kunde inte göra stat() på utlösarfil \"%s\": %m" @@ -2648,7 +2656,7 @@ msgstr "%s \"%s\": %s" #: access/transam/xlogarchive.c:447 postmaster/syslogger.c:1499 -#: replication/logical/snapbuild.c:1668 replication/slot.c:598 +#: replication/logical/snapbuild.c:1684 replication/slot.c:598 #: replication/slot.c:1203 replication/slot.c:1336 storage/file/fd.c:662 #: storage/file/fd.c:757 utils/time/snapmgr.c:1318 #, c-format @@ -2675,11 +2683,11 @@ msgid "a backup is already in progress in this session" msgstr "en backup är redan på gång i denna session" -#: access/transam/xlogfuncs.c:92 commands/tablespace.c:703 -#: commands/tablespace.c:713 postmaster/postmaster.c:1482 +#: access/transam/xlogfuncs.c:92 commands/tablespace.c:699 +#: commands/tablespace.c:709 postmaster/postmaster.c:1482 #: replication/basebackup.c:381 replication/basebackup.c:726 #: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2470 -#: storage/file/fd.c:3083 storage/ipc/dsm.c:301 utils/adt/misc.c:427 +#: storage/file/fd.c:3083 storage/ipc/dsm.c:296 utils/adt/misc.c:427 #: utils/misc/tzparser.c:339 #, c-format msgid "could not open directory \"%s\": %m" @@ -2696,12 +2704,12 @@ msgstr "Menade du att använda pg_stop_backup('f')?" #: access/transam/xlogfuncs.c:205 commands/event_trigger.c:1493 -#: commands/event_trigger.c:2045 commands/extension.c:1915 -#: commands/extension.c:2024 commands/extension.c:2248 commands/prepare.c:721 -#: executor/execExpr.c:2121 executor/execSRF.c:690 executor/functions.c:1029 -#: foreign/foreign.c:488 libpq/hba.c:2568 replication/logical/launcher.c:1126 +#: commands/event_trigger.c:2051 commands/extension.c:1915 +#: commands/extension.c:2024 commands/extension.c:2248 commands/prepare.c:725 +#: executor/execExpr.c:2152 executor/execSRF.c:690 executor/functions.c:1029 +#: foreign/foreign.c:488 libpq/hba.c:2579 replication/logical/launcher.c:1126 #: replication/logical/logicalfuncs.c:176 replication/logical/origin.c:1467 -#: replication/slotfuncs.c:197 replication/walsender.c:3190 +#: replication/slotfuncs.c:197 replication/walsender.c:3188 #: utils/adt/datetime.c:4796 utils/adt/genfile.c:421 utils/adt/genfile.c:501 #: utils/adt/jsonfuncs.c:1689 utils/adt/jsonfuncs.c:1819 #: utils/adt/jsonfuncs.c:2007 utils/adt/jsonfuncs.c:2134 @@ -2713,11 +2721,11 @@ msgstr "en funktion som returnerar en mängd anropades i kontext som inte godtar en mängd" #: access/transam/xlogfuncs.c:209 commands/event_trigger.c:1497 -#: commands/event_trigger.c:2049 commands/extension.c:1919 -#: commands/extension.c:2028 commands/extension.c:2252 commands/prepare.c:725 -#: foreign/foreign.c:493 libpq/hba.c:2572 replication/logical/launcher.c:1130 +#: commands/event_trigger.c:2055 commands/extension.c:1919 +#: commands/extension.c:2028 commands/extension.c:2252 commands/prepare.c:729 +#: foreign/foreign.c:493 libpq/hba.c:2583 replication/logical/launcher.c:1130 #: replication/logical/logicalfuncs.c:180 replication/logical/origin.c:1471 -#: replication/slotfuncs.c:201 replication/walsender.c:3194 +#: replication/slotfuncs.c:201 replication/walsender.c:3192 #: utils/adt/datetime.c:4800 utils/adt/genfile.c:425 utils/adt/genfile.c:505 #: utils/adt/misc.c:387 utils/adt/pgstatfuncs.c:462 utils/adt/pgstatfuncs.c:563 #: utils/misc/guc.c:8614 utils/misc/pg_config.c:44 utils/mmgr/portalmem.c:1071 @@ -2767,153 +2775,153 @@ msgid "Recovery control functions can only be executed during recovery." msgstr "Återställningskontrollfunktioner kan bara köras under återställning." -#: access/transam/xlogreader.c:297 +#: access/transam/xlogreader.c:302 #, c-format msgid "invalid record offset at %X/%X" msgstr "ogiltig postoffset vid %X/%X" -#: access/transam/xlogreader.c:305 +#: access/transam/xlogreader.c:310 #, c-format msgid "contrecord is requested by %X/%X" msgstr "contrecord är begärd vid %X/%X" -#: access/transam/xlogreader.c:346 access/transam/xlogreader.c:644 +#: access/transam/xlogreader.c:351 access/transam/xlogreader.c:681 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "ogiltig postlängd vid %X/%X: förväntade %u, fick %u" -#: access/transam/xlogreader.c:361 +#: access/transam/xlogreader.c:366 #, c-format msgid "record length %u at %X/%X too long" msgstr "postlängd %u vid %X/%X är för lång" -#: access/transam/xlogreader.c:402 +#: access/transam/xlogreader.c:425 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "det finns ingen contrecord-flagga vid %X/%X" -#: access/transam/xlogreader.c:415 +#: access/transam/xlogreader.c:438 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "ogiltig contrecord-längd %u vid %X/%X" -#: access/transam/xlogreader.c:652 +#: access/transam/xlogreader.c:689 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ogiltigt resurshanterar-ID %u vid %X/%X" -#: access/transam/xlogreader.c:666 access/transam/xlogreader.c:683 +#: access/transam/xlogreader.c:703 access/transam/xlogreader.c:720 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "post med inkorrekt prev-link %X/%X vid %X/%X" -#: access/transam/xlogreader.c:720 +#: access/transam/xlogreader.c:757 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "felaktig resurshanterardatakontrollsumma i post vid %X/%X" -#: access/transam/xlogreader.c:757 +#: access/transam/xlogreader.c:794 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "felaktigt magiskt nummer %04X i loggsegment %s, offset %u" -#: access/transam/xlogreader.c:771 access/transam/xlogreader.c:822 +#: access/transam/xlogreader.c:808 access/transam/xlogreader.c:859 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "ogiltiga infobitar %04X i loggsegment %s, offset %u" -#: access/transam/xlogreader.c:797 +#: access/transam/xlogreader.c:834 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s" msgstr "WAL-fil är från ett annat databassystem: WAL-filens databassystemidentifierare är %s, pg_control databassystemidentifierare är %s" -#: access/transam/xlogreader.c:804 +#: access/transam/xlogreader.c:841 #, c-format msgid "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page header" msgstr "WAL-fil är från ett annat databassystem: felaktig XLOG_SEG_SIZE i sidhuvud" -#: access/transam/xlogreader.c:810 +#: access/transam/xlogreader.c:847 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "WAL-fil är från ett annat databassystem: inkorrekt XLOG_BLCKSZ i sidhuvuid" -#: access/transam/xlogreader.c:841 +#: access/transam/xlogreader.c:878 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "oväntad sidadress %X/%X i loggsegment %s, offset %u" # FIXME -#: access/transam/xlogreader.c:866 +#: access/transam/xlogreader.c:903 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "\"ej i sekvens\"-fel på tidslinje-ID %u (efter %u) i loggsegment %s, offset %u" -#: access/transam/xlogreader.c:1111 +#: access/transam/xlogreader.c:1148 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "\"ej i sekvens\"-block_id %u vid %X/%X" -#: access/transam/xlogreader.c:1134 +#: access/transam/xlogreader.c:1171 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA satt, men ingen data inkluderad vid %X/%X" -#: access/transam/xlogreader.c:1141 +#: access/transam/xlogreader.c:1178 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA ej satt, men datalängd är %u vid %X/%X" -#: access/transam/xlogreader.c:1177 +#: access/transam/xlogreader.c:1214 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE satt, men håloffset %u längd %u block-image-längd %u vid %X/%X" -#: access/transam/xlogreader.c:1193 +#: access/transam/xlogreader.c:1230 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE ej satt, men håloffset %u längd %u vid %X/%X" -#: access/transam/xlogreader.c:1208 +#: access/transam/xlogreader.c:1245 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED satt, men block-image-längd %u vid %X/%X" -#: access/transam/xlogreader.c:1223 +#: access/transam/xlogreader.c:1260 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "varken BKPIMAGE_HAS_HOLE eller BKPIMAGE_IS_COMPRESSED satt, men block-image-längd är %u vid %X/%X" -#: access/transam/xlogreader.c:1239 +#: access/transam/xlogreader.c:1276 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL satt men ingen tidigare rel vid %X/%X" -#: access/transam/xlogreader.c:1251 +#: access/transam/xlogreader.c:1288 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "ogiltig block_id %u vid %X/%X" -#: access/transam/xlogreader.c:1334 +#: access/transam/xlogreader.c:1371 #, c-format msgid "record with invalid length at %X/%X" msgstr "post med ogiltig längd vid %X/%X" -#: access/transam/xlogreader.c:1423 +#: access/transam/xlogreader.c:1460 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "ogiltig komprimerad image vid %X/%X, block %d" -#: access/transam/xlogutils.c:751 replication/walsender.c:2442 +#: access/transam/xlogutils.c:751 replication/walsender.c:2440 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "kunde inte läsa från loggsegment %s, offset %u, längd %lu: %m" -#: bootstrap/bootstrap.c:272 postmaster/postmaster.c:843 tcop/postgres.c:3537 +#: bootstrap/bootstrap.c:272 postmaster/postmaster.c:843 tcop/postgres.c:3559 #, c-format msgid "--%s requires a value" msgstr "--%s kräver ett värde" -#: bootstrap/bootstrap.c:277 postmaster/postmaster.c:848 tcop/postgres.c:3542 +#: bootstrap/bootstrap.c:277 postmaster/postmaster.c:848 tcop/postgres.c:3564 #, c-format msgid "-c %s requires a value" msgstr "-c %s kräver ett värde" @@ -3039,9 +3047,9 @@ msgid "column privileges are only valid for relations" msgstr "kolumnprivilegier är bara giltiga för relationer" -#: catalog/aclchk.c:696 catalog/aclchk.c:3926 catalog/aclchk.c:4708 +#: catalog/aclchk.c:696 catalog/aclchk.c:3929 catalog/aclchk.c:4711 #: catalog/objectaddress.c:928 catalog/pg_largeobject.c:111 -#: storage/large_object/inv_api.c:291 +#: storage/large_object/inv_api.c:293 #, c-format msgid "large object %u does not exist" msgstr "stort objekt %u existerar inte" @@ -3068,12 +3076,12 @@ #: commands/sequence.c:1264 commands/sequence.c:1274 commands/sequence.c:1284 #: commands/sequence.c:1294 commands/sequence.c:1304 commands/sequence.c:1314 #: commands/sequence.c:1324 commands/sequence.c:1334 commands/sequence.c:1344 -#: commands/subscriptioncmds.c:110 commands/subscriptioncmds.c:120 -#: commands/subscriptioncmds.c:130 commands/subscriptioncmds.c:140 -#: commands/subscriptioncmds.c:154 commands/subscriptioncmds.c:165 -#: commands/subscriptioncmds.c:179 commands/tablecmds.c:6043 -#: commands/typecmds.c:298 commands/typecmds.c:1396 commands/typecmds.c:1405 -#: commands/typecmds.c:1413 commands/typecmds.c:1421 commands/typecmds.c:1429 +#: commands/subscriptioncmds.c:111 commands/subscriptioncmds.c:121 +#: commands/subscriptioncmds.c:131 commands/subscriptioncmds.c:141 +#: commands/subscriptioncmds.c:157 commands/subscriptioncmds.c:168 +#: commands/subscriptioncmds.c:182 commands/tablecmds.c:6043 +#: commands/typecmds.c:298 commands/typecmds.c:1398 commands/typecmds.c:1407 +#: commands/typecmds.c:1415 commands/typecmds.c:1423 commands/typecmds.c:1431 #: commands/user.c:134 commands/user.c:148 commands/user.c:157 #: commands/user.c:166 commands/user.c:175 commands/user.c:184 #: commands/user.c:193 commands/user.c:202 commands/user.c:211 @@ -3082,9 +3090,9 @@ #: commands/user.c:583 commands/user.c:591 commands/user.c:599 #: commands/user.c:607 commands/user.c:615 commands/user.c:623 #: commands/user.c:632 commands/user.c:640 commands/user.c:648 -#: parser/parse_utilcmd.c:411 replication/pgoutput/pgoutput.c:108 -#: replication/pgoutput/pgoutput.c:129 replication/walsender.c:804 -#: replication/walsender.c:815 replication/walsender.c:825 +#: parser/parse_utilcmd.c:427 replication/pgoutput/pgoutput.c:108 +#: replication/pgoutput/pgoutput.c:129 replication/walsender.c:808 +#: replication/walsender.c:819 replication/walsender.c:829 #, c-format msgid "conflicting or redundant options" msgstr "motstridiga eller redundanta inställningar" @@ -3099,8 +3107,8 @@ msgid "cannot use IN SCHEMA clause when using GRANT/REVOKE ON SCHEMAS" msgstr "kan inte använda IN SCHEMA-klausul samtidigt som GRANT/REVOKE ON SCHEMAS" -#: catalog/aclchk.c:1521 catalog/objectaddress.c:1389 commands/analyze.c:399 -#: commands/copy.c:4827 commands/sequence.c:1699 commands/tablecmds.c:5691 +#: catalog/aclchk.c:1524 catalog/objectaddress.c:1389 commands/analyze.c:399 +#: commands/copy.c:4835 commands/sequence.c:1699 commands/tablecmds.c:5691 #: commands/tablecmds.c:5838 commands/tablecmds.c:5895 #: commands/tablecmds.c:5968 commands/tablecmds.c:6062 #: commands/tablecmds.c:6121 commands/tablecmds.c:6246 @@ -3109,419 +3117,419 @@ #: commands/tablecmds.c:8898 commands/tablecmds.c:9022 #: commands/tablecmds.c:9557 commands/trigger.c:817 parser/analyze.c:2342 #: parser/parse_relation.c:2733 parser/parse_relation.c:2795 -#: parser/parse_target.c:1002 parser/parse_type.c:145 utils/adt/acl.c:2871 +#: parser/parse_target.c:1001 parser/parse_type.c:145 utils/adt/acl.c:2870 #: utils/adt/ruleutils.c:2373 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "kolumn \"%s\" i relation \"%s\" existerar inte" -#: catalog/aclchk.c:1787 catalog/objectaddress.c:1229 commands/sequence.c:1137 -#: commands/tablecmds.c:231 commands/tablecmds.c:13293 utils/adt/acl.c:2061 -#: utils/adt/acl.c:2091 utils/adt/acl.c:2123 utils/adt/acl.c:2155 -#: utils/adt/acl.c:2183 utils/adt/acl.c:2213 +#: catalog/aclchk.c:1790 catalog/objectaddress.c:1229 commands/sequence.c:1137 +#: commands/tablecmds.c:231 commands/tablecmds.c:13293 utils/adt/acl.c:2060 +#: utils/adt/acl.c:2090 utils/adt/acl.c:2122 utils/adt/acl.c:2154 +#: utils/adt/acl.c:2182 utils/adt/acl.c:2212 #, c-format msgid "\"%s\" is not a sequence" msgstr "\"%s\" är inte en sekvens" -#: catalog/aclchk.c:1825 +#: catalog/aclchk.c:1828 #, c-format msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" msgstr "sekvensen \"%s\" stöder bara USAGE-, SELECT- och UPDATE-rättigheter" -#: catalog/aclchk.c:1842 +#: catalog/aclchk.c:1845 #, c-format msgid "invalid privilege type %s for table" msgstr "ogiltig rättighetstyp %s för tabell" -#: catalog/aclchk.c:2008 +#: catalog/aclchk.c:2011 #, c-format msgid "invalid privilege type %s for column" msgstr "ogitligt rättighetstyp %s för kolumn" -#: catalog/aclchk.c:2021 +#: catalog/aclchk.c:2024 #, c-format msgid "sequence \"%s\" only supports SELECT column privileges" msgstr "sekvensen \"%s\" stöder bara kolumnrättigheten SELECT" -#: catalog/aclchk.c:2603 +#: catalog/aclchk.c:2606 #, c-format msgid "language \"%s\" is not trusted" msgstr "språket \"%s\" är inte betrott" -#: catalog/aclchk.c:2605 +#: catalog/aclchk.c:2608 #, c-format msgid "GRANT and REVOKE are not allowed on untrusted languages, because only superusers can use untrusted languages." msgstr "GRANT och REVOKE är inte tillåtna på icke betrodda språk då bara superanvändare kan använda icke betrodda språk." -#: catalog/aclchk.c:3119 +#: catalog/aclchk.c:3122 #, c-format msgid "cannot set privileges of array types" msgstr "kan inte sätta privilegier för array-typer" -#: catalog/aclchk.c:3120 +#: catalog/aclchk.c:3123 #, c-format msgid "Set the privileges of the element type instead." msgstr "Sätt rättigheter för elementtypen istället." -#: catalog/aclchk.c:3127 catalog/objectaddress.c:1519 +#: catalog/aclchk.c:3130 catalog/objectaddress.c:1519 #, c-format msgid "\"%s\" is not a domain" msgstr "\"%s\" är inte en domän" -#: catalog/aclchk.c:3247 +#: catalog/aclchk.c:3250 #, c-format msgid "unrecognized privilege type \"%s\"" msgstr "okänd privilegietyp \"%s\"" -#: catalog/aclchk.c:3296 +#: catalog/aclchk.c:3299 #, c-format msgid "permission denied for column %s" msgstr "rättighet saknas för kolumn %s" -#: catalog/aclchk.c:3298 +#: catalog/aclchk.c:3301 #, c-format msgid "permission denied for relation %s" msgstr "rättighet saknas för relation %s" -#: catalog/aclchk.c:3300 commands/sequence.c:599 commands/sequence.c:833 +#: catalog/aclchk.c:3303 commands/sequence.c:599 commands/sequence.c:833 #: commands/sequence.c:875 commands/sequence.c:916 commands/sequence.c:1797 #: commands/sequence.c:1861 #, c-format msgid "permission denied for sequence %s" msgstr "rättighet saknas för sekvens %s" -#: catalog/aclchk.c:3302 +#: catalog/aclchk.c:3305 #, c-format msgid "permission denied for database %s" msgstr "rättighet saknas för databas %s" -#: catalog/aclchk.c:3304 +#: catalog/aclchk.c:3307 #, c-format msgid "permission denied for function %s" msgstr "rättighet saknas för funktion %s" -#: catalog/aclchk.c:3306 +#: catalog/aclchk.c:3309 #, c-format msgid "permission denied for operator %s" msgstr "rättighet saknas för operator %s" -#: catalog/aclchk.c:3308 +#: catalog/aclchk.c:3311 #, c-format msgid "permission denied for type %s" msgstr "rättighet saknas för typ %s" -#: catalog/aclchk.c:3310 +#: catalog/aclchk.c:3313 #, c-format msgid "permission denied for language %s" msgstr "rättighet saknas för språk %s" -#: catalog/aclchk.c:3312 +#: catalog/aclchk.c:3315 #, c-format msgid "permission denied for large object %s" msgstr "rättighet saknas för stort objekt %s" -#: catalog/aclchk.c:3314 +#: catalog/aclchk.c:3317 #, c-format msgid "permission denied for schema %s" msgstr "rättighet saknas för schema %s" -#: catalog/aclchk.c:3316 +#: catalog/aclchk.c:3319 #, c-format msgid "permission denied for operator class %s" msgstr "rättighet saknas för operatorklasss %s" -#: catalog/aclchk.c:3318 +#: catalog/aclchk.c:3321 #, c-format msgid "permission denied for operator family %s" msgstr "rättighet saknas för operatorfamilj %s" -#: catalog/aclchk.c:3320 +#: catalog/aclchk.c:3323 #, c-format msgid "permission denied for collation %s" msgstr "rättighet saknas för jämförelse %s" -#: catalog/aclchk.c:3322 +#: catalog/aclchk.c:3325 #, c-format msgid "permission denied for conversion %s" msgstr "rättighet saknas för konvertering %s" -#: catalog/aclchk.c:3324 +#: catalog/aclchk.c:3327 #, c-format msgid "permission denied for statistics object %s" msgstr "rättighet saknas för statistikobjekt %s" -#: catalog/aclchk.c:3326 +#: catalog/aclchk.c:3329 #, c-format msgid "permission denied for tablespace %s" msgstr "rättighet saknas för tabellutrymme %s" -#: catalog/aclchk.c:3328 +#: catalog/aclchk.c:3331 #, c-format msgid "permission denied for text search dictionary %s" msgstr "rättighet saknas för textsökordlista %s" -#: catalog/aclchk.c:3330 +#: catalog/aclchk.c:3333 #, c-format msgid "permission denied for text search configuration %s" msgstr "rättighet saknas för textsökkonfigurering %s" -#: catalog/aclchk.c:3332 +#: catalog/aclchk.c:3335 #, c-format msgid "permission denied for foreign-data wrapper %s" msgstr "rättighet saknas för främmande data-omvandlare %s" -#: catalog/aclchk.c:3334 +#: catalog/aclchk.c:3337 #, c-format msgid "permission denied for foreign server %s" msgstr "rättighet saknas för främmande server %s" -#: catalog/aclchk.c:3336 +#: catalog/aclchk.c:3339 #, c-format msgid "permission denied for event trigger %s" msgstr "rättighet saknas för händelseutlösare %s" -#: catalog/aclchk.c:3338 +#: catalog/aclchk.c:3341 #, c-format msgid "permission denied for extension %s" msgstr "rättighet saknas för utökning %s" -#: catalog/aclchk.c:3340 +#: catalog/aclchk.c:3343 #, c-format msgid "permission denied for publication %s" msgstr "rättighet saknas för publicering %s" -#: catalog/aclchk.c:3342 +#: catalog/aclchk.c:3345 #, c-format msgid "permission denied for subscription %s" msgstr "rättighet saknas för prenumeration %s" -#: catalog/aclchk.c:3348 catalog/aclchk.c:3350 +#: catalog/aclchk.c:3351 catalog/aclchk.c:3353 #, c-format msgid "must be owner of relation %s" msgstr "måste vara ägaren till relationen %s" -#: catalog/aclchk.c:3352 +#: catalog/aclchk.c:3355 #, c-format msgid "must be owner of sequence %s" msgstr "måste vara ägaren till sekvensen %s" -#: catalog/aclchk.c:3354 +#: catalog/aclchk.c:3357 #, c-format msgid "must be owner of database %s" msgstr "måste vara ägaren till databasen %s" -#: catalog/aclchk.c:3356 +#: catalog/aclchk.c:3359 #, c-format msgid "must be owner of function %s" msgstr "måste vara ägaren till funktionen %s" -#: catalog/aclchk.c:3358 +#: catalog/aclchk.c:3361 #, c-format msgid "must be owner of operator %s" msgstr "måste vara ägaren till operatorn %s" -#: catalog/aclchk.c:3360 +#: catalog/aclchk.c:3363 #, c-format msgid "must be owner of type %s" msgstr "måste vara ägaren till typen %s" -#: catalog/aclchk.c:3362 +#: catalog/aclchk.c:3365 #, c-format msgid "must be owner of language %s" msgstr "måste vara ägaren till språket %s" -#: catalog/aclchk.c:3364 +#: catalog/aclchk.c:3367 #, c-format msgid "must be owner of large object %s" msgstr "måste vara ägaren till stora objektet %s" -#: catalog/aclchk.c:3366 +#: catalog/aclchk.c:3369 #, c-format msgid "must be owner of schema %s" msgstr "måste vara ägaren till schemat %s" -#: catalog/aclchk.c:3368 +#: catalog/aclchk.c:3371 #, c-format msgid "must be owner of operator class %s" msgstr "måste vara ägaren till operatorklassen %s" -#: catalog/aclchk.c:3370 +#: catalog/aclchk.c:3373 #, c-format msgid "must be owner of operator family %s" msgstr "måste vara ägaren till operatorfamiljen %s" -#: catalog/aclchk.c:3372 +#: catalog/aclchk.c:3375 #, c-format msgid "must be owner of collation %s" msgstr "måste vara ägaren till jämförelsen %s" -#: catalog/aclchk.c:3374 +#: catalog/aclchk.c:3377 #, c-format msgid "must be owner of conversion %s" msgstr "måste vara ägaren till konverteringen %s" -#: catalog/aclchk.c:3376 +#: catalog/aclchk.c:3379 #, c-format msgid "must be owner of statistics object %s" msgstr "måste vara ägaren till statistikobjektet %s" -#: catalog/aclchk.c:3378 +#: catalog/aclchk.c:3381 #, c-format msgid "must be owner of tablespace %s" msgstr "måste vara ägaren till tabellutrymmet %s" -#: catalog/aclchk.c:3380 +#: catalog/aclchk.c:3383 #, c-format msgid "must be owner of text search dictionary %s" msgstr "måste vara ägaren till textsökordlistan %s" -#: catalog/aclchk.c:3382 +#: catalog/aclchk.c:3385 #, c-format msgid "must be owner of text search configuration %s" msgstr "måste vara ägaren till textsökkonfigurationen %s" -#: catalog/aclchk.c:3384 +#: catalog/aclchk.c:3387 #, c-format msgid "must be owner of foreign-data wrapper %s" msgstr "måste vara ägaren till främmande data-omvandlaren %s" -#: catalog/aclchk.c:3386 +#: catalog/aclchk.c:3389 #, c-format msgid "must be owner of foreign server %s" msgstr "måste vara ägaren till främmande servern %s" -#: catalog/aclchk.c:3388 +#: catalog/aclchk.c:3391 #, c-format msgid "must be owner of event trigger %s" msgstr "måste vara ägaren till händelseutlösaren %s" -#: catalog/aclchk.c:3390 +#: catalog/aclchk.c:3393 #, c-format msgid "must be owner of extension %s" msgstr "måste vara ägaren till utökningen %s" -#: catalog/aclchk.c:3392 +#: catalog/aclchk.c:3395 #, c-format msgid "must be owner of publication %s" msgstr "måste vara ägaren till publiceringen %s" -#: catalog/aclchk.c:3394 +#: catalog/aclchk.c:3397 #, c-format msgid "must be owner of subscription %s" msgstr "måste vara ägaren till prenumerationen %s" -#: catalog/aclchk.c:3436 +#: catalog/aclchk.c:3439 #, c-format msgid "permission denied for column \"%s\" of relation \"%s\"" msgstr "rättighet saknas för kolumn \"%s\" i relation \"%s\"" -#: catalog/aclchk.c:3559 catalog/aclchk.c:3567 +#: catalog/aclchk.c:3562 catalog/aclchk.c:3570 #, c-format msgid "attribute %d of relation with OID %u does not exist" msgstr "attribut %d i relation med OID %u existerar inte" -#: catalog/aclchk.c:3640 catalog/aclchk.c:4559 +#: catalog/aclchk.c:3643 catalog/aclchk.c:4562 #, c-format msgid "relation with OID %u does not exist" msgstr "relation med OID %u existerar inte" -#: catalog/aclchk.c:3739 catalog/aclchk.c:4977 +#: catalog/aclchk.c:3742 catalog/aclchk.c:4980 #, c-format msgid "database with OID %u does not exist" msgstr "databas med OID %u finns inte" -#: catalog/aclchk.c:3793 catalog/aclchk.c:4637 tcop/fastpath.c:223 +#: catalog/aclchk.c:3796 catalog/aclchk.c:4640 tcop/fastpath.c:220 #: utils/fmgr/fmgr.c:2117 #, c-format msgid "function with OID %u does not exist" msgstr "funktionen med OID %u existerar inte" -#: catalog/aclchk.c:3847 catalog/aclchk.c:4663 +#: catalog/aclchk.c:3850 catalog/aclchk.c:4666 #, c-format msgid "language with OID %u does not exist" msgstr "språk med OID %u existerar inte" -#: catalog/aclchk.c:4011 catalog/aclchk.c:4735 +#: catalog/aclchk.c:4014 catalog/aclchk.c:4738 commands/collationcmds.c:533 #, c-format msgid "schema with OID %u does not exist" msgstr "schema med OID %u existerar inte" -#: catalog/aclchk.c:4065 catalog/aclchk.c:4762 +#: catalog/aclchk.c:4068 catalog/aclchk.c:4765 #, c-format msgid "tablespace with OID %u does not exist" msgstr "tabellutrymme med OID %u finns inte" -#: catalog/aclchk.c:4124 catalog/aclchk.c:4896 commands/foreigncmds.c:324 +#: catalog/aclchk.c:4127 catalog/aclchk.c:4899 commands/foreigncmds.c:324 #, c-format msgid "foreign-data wrapper with OID %u does not exist" msgstr "främmande data-omvandlare med OID %u finns inte" -#: catalog/aclchk.c:4186 catalog/aclchk.c:4923 commands/foreigncmds.c:459 +#: catalog/aclchk.c:4189 catalog/aclchk.c:4926 commands/foreigncmds.c:459 #, c-format msgid "foreign server with OID %u does not exist" msgstr "främmande server med OID %u finns inte" -#: catalog/aclchk.c:4246 catalog/aclchk.c:4585 utils/cache/typcache.c:240 +#: catalog/aclchk.c:4249 catalog/aclchk.c:4588 utils/cache/typcache.c:240 #, c-format msgid "type with OID %u does not exist" msgstr "typ med OID %u existerar inte" -#: catalog/aclchk.c:4611 +#: catalog/aclchk.c:4614 #, c-format msgid "operator with OID %u does not exist" msgstr "operator med OID %u existerar inte" -#: catalog/aclchk.c:4788 +#: catalog/aclchk.c:4791 #, c-format msgid "operator class with OID %u does not exist" msgstr "operatorklass med OID %u existerar inte" -#: catalog/aclchk.c:4815 +#: catalog/aclchk.c:4818 #, c-format msgid "operator family with OID %u does not exist" msgstr "operatorfamilj med OID %u existerar inte" -#: catalog/aclchk.c:4842 +#: catalog/aclchk.c:4845 #, c-format msgid "text search dictionary with OID %u does not exist" msgstr "textsökordlista med OID %u existerar inte" -#: catalog/aclchk.c:4869 +#: catalog/aclchk.c:4872 #, c-format msgid "text search configuration with OID %u does not exist" msgstr "textsökkonfiguration med OID %u existerar inte" -#: catalog/aclchk.c:4950 commands/event_trigger.c:588 +#: catalog/aclchk.c:4953 commands/event_trigger.c:588 #, c-format msgid "event trigger with OID %u does not exist" msgstr "händelseutlösare med OID %u existerar inte" -#: catalog/aclchk.c:5003 commands/collationcmds.c:348 +#: catalog/aclchk.c:5006 commands/collationcmds.c:367 #, c-format msgid "collation with OID %u does not exist" msgstr "jämförelse med OID %u existerar inte" -#: catalog/aclchk.c:5029 +#: catalog/aclchk.c:5032 #, c-format msgid "conversion with OID %u does not exist" msgstr "konvertering med OID %u existerar inte" -#: catalog/aclchk.c:5070 +#: catalog/aclchk.c:5073 #, c-format msgid "extension with OID %u does not exist" msgstr "utökning med OID %u existerar inte" -#: catalog/aclchk.c:5097 commands/publicationcmds.c:733 +#: catalog/aclchk.c:5100 commands/publicationcmds.c:745 #, c-format msgid "publication with OID %u does not exist" msgstr "publicering med OID %u existerar inte" -#: catalog/aclchk.c:5123 commands/subscriptioncmds.c:1097 +#: catalog/aclchk.c:5126 commands/subscriptioncmds.c:1101 #, c-format msgid "subscription with OID %u does not exist" msgstr "prenumeration med OID %u existerar inte" -#: catalog/aclchk.c:5149 +#: catalog/aclchk.c:5152 #, c-format msgid "statistics object with OID %u does not exist" msgstr "statistikobjekt med OID %u finns inte" @@ -3541,22 +3549,22 @@ msgid "cannot drop %s because it is required by the database system" msgstr "kan inte ta bort %s eftersom den krävs av databassystemet" -#: catalog/dependency.c:921 +#: catalog/dependency.c:925 #, c-format msgid "drop auto-cascades to %s" msgstr "drop svämmar automatiskt över (cascades) till %s" -#: catalog/dependency.c:933 catalog/dependency.c:942 +#: catalog/dependency.c:939 catalog/dependency.c:948 #, c-format msgid "%s depends on %s" msgstr "%s beror på %s" -#: catalog/dependency.c:954 catalog/dependency.c:963 +#: catalog/dependency.c:963 catalog/dependency.c:972 #, c-format msgid "drop cascades to %s" msgstr "drop svämmar över (cascades) till %s" -#: catalog/dependency.c:971 catalog/pg_shdepend.c:685 +#: catalog/dependency.c:980 catalog/pg_shdepend.c:685 #, c-format msgid "" "\n" @@ -3571,30 +3579,30 @@ "\n" "och %d andra objekt (se serverloggen för en lista)" -#: catalog/dependency.c:983 +#: catalog/dependency.c:992 #, c-format msgid "cannot drop %s because other objects depend on it" msgstr "kan inte ta bort %s eftersom andra objekt beror på den" -#: catalog/dependency.c:987 catalog/dependency.c:994 +#: catalog/dependency.c:996 catalog/dependency.c:1003 #, c-format msgid "Use DROP ... CASCADE to drop the dependent objects too." msgstr "Använd DROP ... CASCADE för att ta bort de beroende objekten också." -#: catalog/dependency.c:991 +#: catalog/dependency.c:1000 #, c-format msgid "cannot drop desired object(s) because other objects depend on them" msgstr "kan inte ta bort önskade objekt eftersom andra objekt beror på dem" #. translator: %d always has a value larger than 1 -#: catalog/dependency.c:1000 +#: catalog/dependency.c:1009 #, c-format msgid "drop cascades to %d other object" msgid_plural "drop cascades to %d other objects" msgstr[0] "drop svämmar över (cascades) till %d andra objekt" msgstr[1] "drop svämmar över (cascades) till %d andra objekt" -#: catalog/dependency.c:1679 +#: catalog/dependency.c:1688 #, c-format msgid "constant of the type %s cannot be used here" msgstr "konstant av typen %s kan inte användas här" @@ -3642,9 +3650,9 @@ #: catalog/heap.c:591 commands/createas.c:204 commands/createas.c:501 #: commands/indexcmds.c:1177 commands/tablecmds.c:13584 commands/view.c:105 -#: regex/regc_pg_locale.c:263 utils/adt/formatting.c:1537 -#: utils/adt/formatting.c:1662 utils/adt/formatting.c:1788 utils/adt/like.c:184 -#: utils/adt/selfuncs.c:5652 utils/adt/varlena.c:1417 utils/adt/varlena.c:1854 +#: regex/regc_pg_locale.c:263 utils/adt/formatting.c:1541 +#: utils/adt/formatting.c:1666 utils/adt/formatting.c:1792 utils/adt/like.c:184 +#: utils/adt/selfuncs.c:5679 utils/adt/varlena.c:1417 utils/adt/varlena.c:1854 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." msgstr "Använd en COLLATE-klausul för att sätta jämförelsen explicit." @@ -3655,8 +3663,8 @@ msgstr "relationen \"%s\" finns redan" #: catalog/heap.c:1093 catalog/pg_type.c:418 catalog/pg_type.c:733 -#: commands/typecmds.c:239 commands/typecmds.c:788 commands/typecmds.c:1139 -#: commands/typecmds.c:1371 commands/typecmds.c:2152 +#: commands/typecmds.c:239 commands/typecmds.c:788 commands/typecmds.c:1141 +#: commands/typecmds.c:1373 commands/typecmds.c:2154 #, c-format msgid "type \"%s\" already exists" msgstr "typen \"%s\" existerar redan" @@ -3711,14 +3719,14 @@ msgid "cannot use column references in default expression" msgstr "kan inte använda kolumnreferenser i default-uttryck" -#: catalog/heap.c:2681 rewrite/rewriteHandler.c:1164 +#: catalog/heap.c:2681 rewrite/rewriteHandler.c:1187 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "kolumn \"%s\" har typ %s men default-uttryck har typen %s" -#: catalog/heap.c:2686 commands/prepare.c:384 parser/parse_node.c:430 -#: parser/parse_target.c:590 parser/parse_target.c:840 -#: parser/parse_target.c:850 rewrite/rewriteHandler.c:1169 +#: catalog/heap.c:2686 commands/prepare.c:388 parser/parse_node.c:430 +#: parser/parse_target.c:589 parser/parse_target.c:839 +#: parser/parse_target.c:849 rewrite/rewriteHandler.c:1192 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Du måste skriva om eller typomvandla uttrycket." @@ -3753,7 +3761,7 @@ msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "Trunkera tabellen \"%s\" samtidigt, eller använd TRUNCATE ... CASCADE." -#: catalog/index.c:214 parser/parse_utilcmd.c:1969 +#: catalog/index.c:214 parser/parse_utilcmd.c:2003 #, c-format msgid "multiple primary keys for table \"%s\" are not allowed" msgstr "multipla primärnycklar för tabell \"%s\" tillåts inte" @@ -3779,7 +3787,7 @@ msgstr "delade index kan inte skapas efter initdb" #: catalog/index.c:811 commands/createas.c:250 commands/sequence.c:152 -#: parser/parse_utilcmd.c:210 +#: parser/parse_utilcmd.c:211 #, c-format msgid "relation \"%s\" already exists, skipping" msgstr "relationen \"%s\" finns redan, hoppar över" @@ -3799,18 +3807,18 @@ msgid "building index \"%s\" on table \"%s\"" msgstr "bygger index \"%s\" på tabell \"%s\"" -#: catalog/index.c:3451 +#: catalog/index.c:3440 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "kan inte omindexera temporära tabeller som tillhör andra sessioner" -#: catalog/index.c:3574 +#: catalog/index.c:3563 #, c-format msgid "index \"%s\" was reindexed" msgstr "index \"%s\" omindexerades" #: catalog/namespace.c:236 catalog/namespace.c:434 catalog/namespace.c:526 -#: commands/trigger.c:5150 +#: commands/trigger.c:5162 #, c-format msgid "cross-database references are not implemented: \"%s.%s.%s\"" msgstr "referenser till andra databaser är inte implementerat: \"%s.%s.%s\"" @@ -3888,13 +3896,13 @@ msgid "text search configuration \"%s\" does not exist" msgstr "textsökkonfiguration \"%s\" finns inte" -#: catalog/namespace.c:2809 parser/parse_expr.c:789 parser/parse_target.c:1192 +#: catalog/namespace.c:2809 parser/parse_expr.c:789 parser/parse_target.c:1191 #, c-format msgid "cross-database references are not implemented: %s" msgstr "referenser till andra databaser är inte implementerat: %s" -#: catalog/namespace.c:2815 gram.y:14336 gram.y:15757 parser/parse_expr.c:796 -#: parser/parse_target.c:1199 +#: catalog/namespace.c:2815 gram.y:14337 gram.y:15758 parser/parse_expr.c:796 +#: parser/parse_target.c:1198 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "ej korrekt kvalificerat namn (för många namn med punkt): %s" @@ -3945,17 +3953,16 @@ msgid "cannot create temporary tables during a parallel operation" msgstr "kan inte skapa temporära tabeller under en parallell operation" -#: catalog/namespace.c:4133 commands/tablespace.c:1171 commands/variable.c:64 -#: utils/misc/guc.c:10075 utils/misc/guc.c:10153 +#: catalog/namespace.c:4133 commands/tablespace.c:1167 commands/variable.c:64 +#: utils/misc/guc.c:10100 utils/misc/guc.c:10178 #, c-format msgid "List syntax is invalid." msgstr "List-syntaxen är ogiltig." #: catalog/objectaddress.c:1237 catalog/pg_publication.c:66 -#: commands/lockcmds.c:95 commands/policy.c:94 commands/policy.c:372 -#: commands/policy.c:462 commands/tablecmds.c:225 commands/tablecmds.c:267 -#: commands/tablecmds.c:1548 commands/tablecmds.c:4778 -#: commands/tablecmds.c:8833 +#: commands/lockcmds.c:95 commands/policy.c:95 commands/policy.c:373 +#: commands/tablecmds.c:225 commands/tablecmds.c:267 commands/tablecmds.c:1548 +#: commands/tablecmds.c:4778 commands/tablecmds.c:8833 #, c-format msgid "\"%s\" is not a table" msgstr "\"%s\" är inte en tabell" @@ -3994,8 +4001,8 @@ msgstr "standardvärde för kolumn \"%s\" i relation \"%s\" existerar inte" #: catalog/objectaddress.c:1508 commands/functioncmds.c:128 -#: commands/tablecmds.c:253 commands/typecmds.c:3295 parser/parse_type.c:244 -#: parser/parse_type.c:273 parser/parse_type.c:812 utils/adt/acl.c:4437 +#: commands/tablecmds.c:253 commands/typecmds.c:3302 parser/parse_type.c:244 +#: parser/parse_type.c:273 parser/parse_type.c:812 utils/adt/acl.c:4436 #, c-format msgid "type \"%s\" does not exist" msgstr "typen \"%s\" existerar inte" @@ -4080,7 +4087,7 @@ msgid "argument list length must be exactly %d" msgstr "argumentlistans längd måste vara exakt %d" -#: catalog/objectaddress.c:2342 libpq/be-fsstubs.c:350 +#: catalog/objectaddress.c:2342 libpq/be-fsstubs.c:346 #, c-format msgid "must be owner of large object %u" msgstr "måste vara ägaren till stort objekt %u" @@ -4100,77 +4107,77 @@ msgid "must have CREATEROLE privilege" msgstr "måste ha rättigheten CREATEROLE" -#: catalog/objectaddress.c:2493 +#: catalog/objectaddress.c:2494 #, c-format msgid "unrecognized object type \"%s\"" msgstr "okänd objekttyp \"%s\"" -#: catalog/objectaddress.c:2688 +#: catalog/objectaddress.c:2689 #, c-format msgid " column %s" msgstr " kolumn %s" -#: catalog/objectaddress.c:2694 +#: catalog/objectaddress.c:2695 #, c-format msgid "function %s" msgstr "funktion %s" -#: catalog/objectaddress.c:2699 +#: catalog/objectaddress.c:2700 #, c-format msgid "type %s" msgstr "typ %s" -#: catalog/objectaddress.c:2729 +#: catalog/objectaddress.c:2730 #, c-format msgid "cast from %s to %s" msgstr "typomvandling från %s till %s" -#: catalog/objectaddress.c:2757 +#: catalog/objectaddress.c:2758 #, c-format msgid "collation %s" msgstr "jämförelse %s" -#: catalog/objectaddress.c:2782 +#: catalog/objectaddress.c:2783 #, c-format msgid "constraint %s on %s" msgstr "villkor %s på %s" -#: catalog/objectaddress.c:2788 +#: catalog/objectaddress.c:2789 #, c-format msgid "constraint %s" msgstr "villkor %s" -#: catalog/objectaddress.c:2815 +#: catalog/objectaddress.c:2816 #, c-format msgid "conversion %s" msgstr "konvertering %s" -#: catalog/objectaddress.c:2853 +#: catalog/objectaddress.c:2854 #, c-format msgid "default for %s" msgstr "default för %s" -#: catalog/objectaddress.c:2862 +#: catalog/objectaddress.c:2863 #, c-format msgid "language %s" msgstr "språk %s" -#: catalog/objectaddress.c:2867 +#: catalog/objectaddress.c:2868 #, c-format msgid "large object %u" msgstr "stort objekt %u" -#: catalog/objectaddress.c:2872 +#: catalog/objectaddress.c:2873 #, c-format msgid "operator %s" msgstr "operator %s" -#: catalog/objectaddress.c:2904 +#: catalog/objectaddress.c:2905 #, c-format msgid "operator class %s for access method %s" msgstr "operatorklass %s för accessmetod %s" -#: catalog/objectaddress.c:2927 +#: catalog/objectaddress.c:2928 #, c-format msgid "access method %s" msgstr "accessmetod %s" @@ -4179,7 +4186,7 @@ #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2970 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "operator %d (%s, %s) för %s: %s" @@ -4188,198 +4195,198 @@ #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:3019 +#: catalog/objectaddress.c:3020 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "funktion %d (%s, %s) för %s: %s" -#: catalog/objectaddress.c:3059 +#: catalog/objectaddress.c:3060 #, c-format msgid "rule %s on " msgstr "regel %s på " -#: catalog/objectaddress.c:3094 +#: catalog/objectaddress.c:3095 #, c-format msgid "trigger %s on " msgstr "utlösare %s på " -#: catalog/objectaddress.c:3111 +#: catalog/objectaddress.c:3112 #, c-format msgid "schema %s" msgstr "schema %s" -#: catalog/objectaddress.c:3134 +#: catalog/objectaddress.c:3135 #, c-format msgid "statistics object %s" msgstr "statistikobjekt %s" -#: catalog/objectaddress.c:3161 +#: catalog/objectaddress.c:3162 #, c-format msgid "text search parser %s" msgstr "textsökparser %s" -#: catalog/objectaddress.c:3187 +#: catalog/objectaddress.c:3188 #, c-format msgid "text search dictionary %s" msgstr "textsökordlista %s" -#: catalog/objectaddress.c:3213 +#: catalog/objectaddress.c:3214 #, c-format msgid "text search template %s" msgstr "textsökmall %s" -#: catalog/objectaddress.c:3239 +#: catalog/objectaddress.c:3240 #, c-format msgid "text search configuration %s" msgstr "textsökkonfiguration %s" -#: catalog/objectaddress.c:3248 +#: catalog/objectaddress.c:3249 #, c-format msgid "role %s" msgstr "roll %s" -#: catalog/objectaddress.c:3261 +#: catalog/objectaddress.c:3262 #, c-format msgid "database %s" msgstr "databas %s" -#: catalog/objectaddress.c:3273 +#: catalog/objectaddress.c:3274 #, c-format msgid "tablespace %s" msgstr "tabellutrymme %s" -#: catalog/objectaddress.c:3282 +#: catalog/objectaddress.c:3283 #, c-format msgid "foreign-data wrapper %s" msgstr "främmande data-omvandlare %s" -#: catalog/objectaddress.c:3291 +#: catalog/objectaddress.c:3292 #, c-format msgid "server %s" msgstr "server %s" -#: catalog/objectaddress.c:3319 +#: catalog/objectaddress.c:3320 #, c-format msgid "user mapping for %s on server %s" msgstr "användarmappning för %s på server %s" -#: catalog/objectaddress.c:3354 +#: catalog/objectaddress.c:3355 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "standardrättigheter för nya relationer som tillhör rollen %s" -#: catalog/objectaddress.c:3359 +#: catalog/objectaddress.c:3360 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "standardrättigheter för nya sekvenser som tillhör rollen %s" -#: catalog/objectaddress.c:3364 +#: catalog/objectaddress.c:3365 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "standardrättigheter för nya funktioner som tillhör rollen %s" -#: catalog/objectaddress.c:3369 +#: catalog/objectaddress.c:3370 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "standardrättigheter för nya typer som tillhör rollen %s" -#: catalog/objectaddress.c:3374 +#: catalog/objectaddress.c:3375 #, c-format msgid "default privileges on new schemas belonging to role %s" msgstr "\" members of btree operator families." msgstr "Sorteringsoperationer måste vara \"<\"- eller \">\"-medlemmar i btree-operatorfamiljer." -#: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 -#: parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 -#: parser/parse_expr.c:2144 parser/parse_expr.c:2732 parser/parse_target.c:936 +#: parser/parse_coerce.c:990 parser/parse_coerce.c:1020 +#: parser/parse_coerce.c:1038 parser/parse_coerce.c:1053 +#: parser/parse_expr.c:2144 parser/parse_expr.c:2732 parser/parse_target.c:935 #, c-format msgid "cannot cast type %s to %s" msgstr "kan inte omvandla typ %s till %s" -#: parser/parse_coerce.c:1004 +#: parser/parse_coerce.c:1023 #, c-format msgid "Input has too few columns." msgstr "Indata har för få kolumner" -#: parser/parse_coerce.c:1022 +#: parser/parse_coerce.c:1041 #, c-format msgid "Cannot cast type %s to %s in column %d." msgstr "Kan inte typomvandla typ %s till %s i kolumn %d." -#: parser/parse_coerce.c:1037 +#: parser/parse_coerce.c:1056 #, c-format msgid "Input has too many columns." msgstr "Indata har för många kolumner" #. translator: first %s is name of a SQL construct, eg WHERE #. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:1080 parser/parse_coerce.c:1128 +#: parser/parse_coerce.c:1099 parser/parse_coerce.c:1147 #, c-format msgid "argument of %s must be type %s, not type %s" msgstr "argumentet till %s måste vara av typ %s, inte av typ %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:1091 parser/parse_coerce.c:1140 +#: parser/parse_coerce.c:1110 parser/parse_coerce.c:1159 #, c-format msgid "argument of %s must not return a set" msgstr "argumentet till %s får inte returnera en mängd" #. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1280 +#: parser/parse_coerce.c:1299 #, c-format msgid "%s types %s and %s cannot be matched" msgstr "%s typer %s och %s matchar inte" #. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1347 +#: parser/parse_coerce.c:1366 #, c-format msgid "%s could not convert type %s to %s" msgstr "%s kan inte konvertera typ %s till %s" -#: parser/parse_coerce.c:1649 +#: parser/parse_coerce.c:1668 #, c-format msgid "arguments declared \"anyelement\" are not all alike" msgstr "argument deklarerade som \"anyelement\" är inte alla likadana" -#: parser/parse_coerce.c:1669 +#: parser/parse_coerce.c:1688 #, c-format msgid "arguments declared \"anyarray\" are not all alike" msgstr "argument deklarerade \"anyarray\" är inte alla likadana" -#: parser/parse_coerce.c:1689 +#: parser/parse_coerce.c:1708 #, c-format msgid "arguments declared \"anyrange\" are not all alike" msgstr "argument deklarerade \"anyrange\" är inte alla likadana" -#: parser/parse_coerce.c:1718 parser/parse_coerce.c:1933 -#: parser/parse_coerce.c:1967 utils/fmgr/funcapi.c:425 +#: parser/parse_coerce.c:1737 parser/parse_coerce.c:1952 +#: parser/parse_coerce.c:1986 utils/fmgr/funcapi.c:425 #, c-format msgid "argument declared %s is not an array but type %s" msgstr "argumentet deklarerad %s är inte en array utan typ %s" -#: parser/parse_coerce.c:1734 parser/parse_coerce.c:1773 +#: parser/parse_coerce.c:1753 parser/parse_coerce.c:1792 #, c-format msgid "argument declared %s is not consistent with argument declared %s" msgstr "argument deklarerad %s är inte konsistent med argument deklarerad %s" -#: parser/parse_coerce.c:1756 parser/parse_coerce.c:1980 +#: parser/parse_coerce.c:1775 parser/parse_coerce.c:1999 #: utils/fmgr/funcapi.c:439 #, c-format msgid "argument declared %s is not a range type but type %s" msgstr "argumentet deklarerad %s är inte en intervalltyp utan typ %s" -#: parser/parse_coerce.c:1794 +#: parser/parse_coerce.c:1813 #, c-format msgid "could not determine polymorphic type because input has type %s" msgstr "kunde inte bestämma en polymorf typ då indata har typ %s" -#: parser/parse_coerce.c:1805 +#: parser/parse_coerce.c:1824 #, c-format msgid "type matched to anynonarray is an array type: %s" msgstr "typen som matchar anynonarray är en array-typ: %s" -#: parser/parse_coerce.c:1815 +#: parser/parse_coerce.c:1834 #, c-format msgid "type matched to anyenum is not an enum type: %s" msgstr "typen som matchar anyenum är inte en enum-typ: %s" -#: parser/parse_coerce.c:1855 parser/parse_coerce.c:1885 +#: parser/parse_coerce.c:1874 parser/parse_coerce.c:1904 #, c-format msgid "could not find range type for data type %s" msgstr "kunde inte hitta intervalltyp för datatyp %s" @@ -14529,13 +14551,13 @@ msgid "column notation .%s applied to type %s, which is not a composite type" msgstr "kolumnotation .%s använd på typ %s som inte är en sammanslagen typ" -#: parser/parse_expr.c:458 parser/parse_target.c:722 +#: parser/parse_expr.c:458 parser/parse_target.c:721 #, c-format msgid "row expansion via \"*\" is not supported here" msgstr "radexpansion via \"*\" stöds inte här" #: parser/parse_expr.c:767 parser/parse_relation.c:689 -#: parser/parse_relation.c:789 parser/parse_target.c:1171 +#: parser/parse_relation.c:789 parser/parse_target.c:1170 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "kolumnreferens \"%s\" är tvetydig" @@ -15107,47 +15129,47 @@ msgid "Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\"." msgstr "Kanske tänkte du referera till kolumnen \"%s.%s\" eller kolumnen \"%s.%s\"." -#: parser/parse_target.c:483 parser/parse_target.c:775 +#: parser/parse_target.c:482 parser/parse_target.c:774 #, c-format msgid "cannot assign to system column \"%s\"" msgstr "kan inte skriva till systemkolumn \"%s\"" -#: parser/parse_target.c:511 +#: parser/parse_target.c:510 #, c-format msgid "cannot set an array element to DEFAULT" msgstr "kan inte sätta ett array-element till DEFAULT" -#: parser/parse_target.c:516 +#: parser/parse_target.c:515 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "kan inte sätta ett underfält till DEFAULT" -#: parser/parse_target.c:585 +#: parser/parse_target.c:584 #, c-format msgid "column \"%s\" is of type %s but expression is of type %s" msgstr "kolumn \"%s\" har typ %s men uttrycket är av typ %s" -#: parser/parse_target.c:759 +#: parser/parse_target.c:758 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" msgstr "kan inte tilldela till fält \"%s\" i kolumn \"%s\" då dess typ %s inte är en composit-typ" -#: parser/parse_target.c:768 +#: parser/parse_target.c:767 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" msgstr "kan inte tilldela till fält \"%s\" i kolumn \"%s\" då det inte finns någon sådan kolumn i datatypen %s" -#: parser/parse_target.c:835 +#: parser/parse_target.c:834 #, c-format msgid "array assignment to \"%s\" requires type %s but expression is of type %s" msgstr "array-tilldelning till \"%s\" kräver typ %s men uttrycket har typ %s" -#: parser/parse_target.c:845 +#: parser/parse_target.c:844 #, c-format msgid "subfield \"%s\" is of type %s but expression is of type %s" msgstr "underfält \"%s\" har typ %s men uttrycket har typ %s" -#: parser/parse_target.c:1261 +#: parser/parse_target.c:1260 #, c-format msgid "SELECT * with no tables specified is not valid" msgstr "SELECT * utan tabeller angivna är inte giltigt" @@ -15187,304 +15209,305 @@ msgid "invalid type name \"%s\"" msgstr "ogiltigt typnamn \"%s\"" -#: parser/parse_utilcmd.c:276 +#: parser/parse_utilcmd.c:278 #, c-format msgid "cannot create partitioned table as inheritance child" msgstr "kan inte skapa partitionerad tabell som barnarv" -#: parser/parse_utilcmd.c:451 +#: parser/parse_utilcmd.c:467 #, c-format msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" msgstr "%s kommer skapa en implicit sekvens \"%s\" för \"serial\"-kolumnen \"%s.%s\"" -#: parser/parse_utilcmd.c:574 +#: parser/parse_utilcmd.c:590 #, c-format msgid "array of serial is not implemented" msgstr "array med serial är inte implementerat" -#: parser/parse_utilcmd.c:650 parser/parse_utilcmd.c:662 +#: parser/parse_utilcmd.c:666 parser/parse_utilcmd.c:678 +#: parser/parse_utilcmd.c:736 #, c-format msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" msgstr "motstridiga NULL/NOT NULL-villkor för kolumnen \"%s\" i tabell \"%s\"" -#: parser/parse_utilcmd.c:674 +#: parser/parse_utilcmd.c:690 #, c-format msgid "multiple default values specified for column \"%s\" of table \"%s\"" msgstr "multipla default-värden angivna för kolumn \"%s\" i tabell \"%s\"" -#: parser/parse_utilcmd.c:691 +#: parser/parse_utilcmd.c:707 #, c-format msgid "identity columns are not supported on typed tables" msgstr "identitetskolumner stöds inte på typade tabeller" -#: parser/parse_utilcmd.c:695 +#: parser/parse_utilcmd.c:711 #, c-format msgid "identity columns are not supported on partitions" msgstr "identitetskolumner stöds inte för partitioner" -#: parser/parse_utilcmd.c:704 +#: parser/parse_utilcmd.c:720 #, c-format msgid "multiple identity specifications for column \"%s\" of table \"%s\"" msgstr "multipla identitetspecifikationer för kolumn \"%s\" i tabell \"%s\"" -#: parser/parse_utilcmd.c:727 parser/parse_utilcmd.c:844 +#: parser/parse_utilcmd.c:753 parser/parse_utilcmd.c:870 #, c-format msgid "primary key constraints are not supported on foreign tables" msgstr "primärnyckelvillkor stöds inte på främmande tabeller" -#: parser/parse_utilcmd.c:733 parser/parse_utilcmd.c:850 +#: parser/parse_utilcmd.c:759 parser/parse_utilcmd.c:876 #, c-format msgid "primary key constraints are not supported on partitioned tables" msgstr "primärnyckelvillkor stöds inte på partitionerade tabeller" -#: parser/parse_utilcmd.c:742 parser/parse_utilcmd.c:860 +#: parser/parse_utilcmd.c:768 parser/parse_utilcmd.c:886 #, c-format msgid "unique constraints are not supported on foreign tables" msgstr "unika villkor stöds inte på främmande tabeller" -#: parser/parse_utilcmd.c:748 parser/parse_utilcmd.c:866 +#: parser/parse_utilcmd.c:774 parser/parse_utilcmd.c:892 #, c-format msgid "unique constraints are not supported on partitioned tables" msgstr "unika villkor stöds inte på partitionerade tabeller" -#: parser/parse_utilcmd.c:765 parser/parse_utilcmd.c:896 +#: parser/parse_utilcmd.c:791 parser/parse_utilcmd.c:922 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "främmande nyckel-villkor stöds inte för främmande tabeller" -#: parser/parse_utilcmd.c:771 parser/parse_utilcmd.c:902 +#: parser/parse_utilcmd.c:797 parser/parse_utilcmd.c:928 #, c-format msgid "foreign key constraints are not supported on partitioned tables" msgstr "främmande nyckel-villkor stöds inte på partitionerade tabeller" -#: parser/parse_utilcmd.c:799 +#: parser/parse_utilcmd.c:825 #, c-format msgid "both default and identity specified for column \"%s\" of table \"%s\"" msgstr "både default och identity angiven för kolumn \"%s\" i tabell \"%s\"" -#: parser/parse_utilcmd.c:876 +#: parser/parse_utilcmd.c:902 #, c-format msgid "exclusion constraints are not supported on foreign tables" msgstr "uteslutningsvillkor stöds inte på främmande tabeller" -#: parser/parse_utilcmd.c:882 +#: parser/parse_utilcmd.c:908 #, c-format msgid "exclusion constraints are not supported on partitioned tables" msgstr "uteslutningsvillkor stöds inte för partitionerade tabeller" -#: parser/parse_utilcmd.c:954 +#: parser/parse_utilcmd.c:980 #, c-format msgid "LIKE is not supported for creating foreign tables" msgstr "LIKE stöds inte för att skapa främmande tabeller" -#: parser/parse_utilcmd.c:1626 parser/parse_utilcmd.c:1702 +#: parser/parse_utilcmd.c:1660 parser/parse_utilcmd.c:1736 #, c-format msgid "Index \"%s\" contains a whole-row table reference." msgstr "Index \"%s\" innehåller en hela-raden-referens." -#: parser/parse_utilcmd.c:2031 +#: parser/parse_utilcmd.c:2065 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "kan inte använda ett existerande index i CREATE TABLE" -#: parser/parse_utilcmd.c:2051 +#: parser/parse_utilcmd.c:2085 #, c-format msgid "index \"%s\" is already associated with a constraint" msgstr "index \"%s\" är redan associerad med ett villkor" -#: parser/parse_utilcmd.c:2059 +#: parser/parse_utilcmd.c:2093 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" msgstr "index \"%s\" tillhör inte tabell \"%s\"" -#: parser/parse_utilcmd.c:2066 +#: parser/parse_utilcmd.c:2100 #, c-format msgid "index \"%s\" is not valid" msgstr "index \"%s\" är inte giltigt" -#: parser/parse_utilcmd.c:2072 +#: parser/parse_utilcmd.c:2106 #, c-format msgid "\"%s\" is not a unique index" msgstr "\"%s\" är inte ett unikt index" -#: parser/parse_utilcmd.c:2073 parser/parse_utilcmd.c:2080 -#: parser/parse_utilcmd.c:2087 parser/parse_utilcmd.c:2157 +#: parser/parse_utilcmd.c:2107 parser/parse_utilcmd.c:2114 +#: parser/parse_utilcmd.c:2121 parser/parse_utilcmd.c:2191 #, c-format msgid "Cannot create a primary key or unique constraint using such an index." msgstr "Kan inte skapa en primärnyckel eller ett unikt villkor med hjälp av ett sådant index." -#: parser/parse_utilcmd.c:2079 +#: parser/parse_utilcmd.c:2113 #, c-format msgid "index \"%s\" contains expressions" msgstr "index \"%s\" innehåller uttryck" -#: parser/parse_utilcmd.c:2086 +#: parser/parse_utilcmd.c:2120 #, c-format msgid "\"%s\" is a partial index" msgstr "\"%s\" är ett partiellt index" -#: parser/parse_utilcmd.c:2098 +#: parser/parse_utilcmd.c:2132 #, c-format msgid "\"%s\" is a deferrable index" msgstr "\"%s\" är ett \"deferrable\" index" -#: parser/parse_utilcmd.c:2099 +#: parser/parse_utilcmd.c:2133 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "Kan inte skapa ett icke-\"deferrable\" integritetsvillkor från ett \"deferrable\" index." -#: parser/parse_utilcmd.c:2156 +#: parser/parse_utilcmd.c:2190 #, c-format msgid "index \"%s\" does not have default sorting behavior" msgstr "index \"%s\" har ingen standard för sorteringsbeteende" -#: parser/parse_utilcmd.c:2300 +#: parser/parse_utilcmd.c:2334 #, c-format msgid "column \"%s\" appears twice in primary key constraint" msgstr "kolumn \"%s\" finns med två gånger i primära nyckel-villkoret" -#: parser/parse_utilcmd.c:2306 +#: parser/parse_utilcmd.c:2340 #, c-format msgid "column \"%s\" appears twice in unique constraint" msgstr "kolumn \"%s\" finns med två gånger i unique-villkoret" -#: parser/parse_utilcmd.c:2528 +#: parser/parse_utilcmd.c:2562 #, c-format msgid "index expressions and predicates can refer only to the table being indexed" msgstr "indexuttryck och predikat kan bara referera till tabellen som indexeras" -#: parser/parse_utilcmd.c:2574 +#: parser/parse_utilcmd.c:2608 #, c-format msgid "rules on materialized views are not supported" msgstr "regler på materialiserade vyer stöds inte" -#: parser/parse_utilcmd.c:2635 +#: parser/parse_utilcmd.c:2669 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "WHERE-villkor i regel kan inte innehålla referenser till andra relationer" -#: parser/parse_utilcmd.c:2707 +#: parser/parse_utilcmd.c:2741 #, c-format msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions" msgstr "regler med WHERE-villkor kan bara innehålla SELECT-, INSERT-, UPDATE- eller DELETE-handlingar" -#: parser/parse_utilcmd.c:2725 parser/parse_utilcmd.c:2824 +#: parser/parse_utilcmd.c:2759 parser/parse_utilcmd.c:2858 #: rewrite/rewriteHandler.c:499 rewrite/rewriteManip.c:1015 #, c-format msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" msgstr "UNION-/INTERSECT-/EXCEPT-satser med villkor är inte implementerat" -#: parser/parse_utilcmd.c:2743 +#: parser/parse_utilcmd.c:2777 #, c-format msgid "ON SELECT rule cannot use OLD" msgstr "ON SELECT-regel kan inte använda OLD" -#: parser/parse_utilcmd.c:2747 +#: parser/parse_utilcmd.c:2781 #, c-format msgid "ON SELECT rule cannot use NEW" msgstr "ON SELECT-regel kan inte använda NEW" -#: parser/parse_utilcmd.c:2756 +#: parser/parse_utilcmd.c:2790 #, c-format msgid "ON INSERT rule cannot use OLD" msgstr "ON INSERT-regel kan inte använda OLD" -#: parser/parse_utilcmd.c:2762 +#: parser/parse_utilcmd.c:2796 #, c-format msgid "ON DELETE rule cannot use NEW" msgstr "ON DELETE-regel kan inte använda NEW" -#: parser/parse_utilcmd.c:2790 +#: parser/parse_utilcmd.c:2824 #, c-format msgid "cannot refer to OLD within WITH query" msgstr "kan inte referera till OLD i WITH-fråga" -#: parser/parse_utilcmd.c:2797 +#: parser/parse_utilcmd.c:2831 #, c-format msgid "cannot refer to NEW within WITH query" msgstr "kan inte referera till NEW i WITH-fråga" -#: parser/parse_utilcmd.c:3234 +#: parser/parse_utilcmd.c:3269 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "felplacerad DEFERRABLE-klausul" -#: parser/parse_utilcmd.c:3239 parser/parse_utilcmd.c:3254 +#: parser/parse_utilcmd.c:3274 parser/parse_utilcmd.c:3289 #, c-format msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" msgstr "multipla DEFERRABLE/NOT DEFERRABLE-klausuler tillåts inte" -#: parser/parse_utilcmd.c:3249 +#: parser/parse_utilcmd.c:3284 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "felplacerad NOT DEFERRABLE-klausul" -#: parser/parse_utilcmd.c:3270 +#: parser/parse_utilcmd.c:3305 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "felplacerad INITIALLY DEFERRED-klausul" -#: parser/parse_utilcmd.c:3275 parser/parse_utilcmd.c:3301 +#: parser/parse_utilcmd.c:3310 parser/parse_utilcmd.c:3336 #, c-format msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" msgstr "multipla INITIALLY IMMEDIATE/DEFERRED-klausuler tillåts inte" -#: parser/parse_utilcmd.c:3296 +#: parser/parse_utilcmd.c:3331 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "felplacerad klausul INITIALLY IMMEDIATE" -#: parser/parse_utilcmd.c:3487 +#: parser/parse_utilcmd.c:3522 #, c-format msgid "CREATE specifies a schema (%s) different from the one being created (%s)" msgstr "CREATE anger ett schema (%s) som skiljer sig från det som skapas (%s)" -#: parser/parse_utilcmd.c:3546 +#: parser/parse_utilcmd.c:3581 #, c-format msgid "invalid bound specification for a list partition" msgstr "ogiltig gränsangivelse för listpartition" -#: parser/parse_utilcmd.c:3602 +#: parser/parse_utilcmd.c:3637 #, c-format msgid "invalid bound specification for a range partition" msgstr "ogiltig gränsangivelse för range-partition" -#: parser/parse_utilcmd.c:3608 +#: parser/parse_utilcmd.c:3643 #, c-format msgid "FROM must specify exactly one value per partitioning column" msgstr "FROM måste ge exakt ett värde per partitionerande kolumn" -#: parser/parse_utilcmd.c:3612 +#: parser/parse_utilcmd.c:3647 #, c-format msgid "TO must specify exactly one value per partitioning column" msgstr "TO måste ge exakt ett värde per partitionerande kolumn" -#: parser/parse_utilcmd.c:3659 parser/parse_utilcmd.c:3673 +#: parser/parse_utilcmd.c:3694 parser/parse_utilcmd.c:3708 #, c-format msgid "cannot specify NULL in range bound" msgstr "kan inte ange NULL i range-gräns" -#: parser/parse_utilcmd.c:3720 +#: parser/parse_utilcmd.c:3755 #, c-format msgid "every bound following MAXVALUE must also be MAXVALUE" msgstr "varje gräns efter MAXVALUE måste också vara MAXVALUE" -#: parser/parse_utilcmd.c:3726 +#: parser/parse_utilcmd.c:3761 #, c-format msgid "every bound following MINVALUE must also be MINVALUE" msgstr "varje gräns efter MINVALUE måste också vara MINVALUE" -#: parser/parse_utilcmd.c:3756 parser/parse_utilcmd.c:3768 +#: parser/parse_utilcmd.c:3791 parser/parse_utilcmd.c:3803 #, c-format msgid "specified value cannot be cast to type %s for column \"%s\"" msgstr "angivet värde kan inte typomvandlas till typ %s för kolumn \"%s\"" -#: parser/parse_utilcmd.c:3770 +#: parser/parse_utilcmd.c:3805 #, c-format msgid "The cast requires a non-immutable conversion." msgstr "Typomvandligen kräver en icke-immuterbar konvertering." -#: parser/parse_utilcmd.c:3771 +#: parser/parse_utilcmd.c:3806 #, c-format msgid "Try putting the literal value in single quotes." msgstr "Försöka att sätta literalen inom enkelcitattecken." @@ -15494,17 +15517,17 @@ msgid "identifier \"%s\" will be truncated to \"%s\"" msgstr "identifierare \"%s\" kommer trunkeras till \"%s\"" -#: port/pg_shmem.c:217 port/sysv_shmem.c:217 +#: port/pg_shmem.c:227 port/sysv_shmem.c:227 #, c-format msgid "could not create shared memory segment: %m" msgstr "kunde inte skapa delat minnessegment: %m" -#: port/pg_shmem.c:218 port/sysv_shmem.c:218 +#: port/pg_shmem.c:228 port/sysv_shmem.c:228 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." msgstr "Misslyckade systemanropet var semget(key=%lu, size=%zu, 0%o)." -#: port/pg_shmem.c:222 port/sysv_shmem.c:222 +#: port/pg_shmem.c:232 port/sysv_shmem.c:232 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n" @@ -15513,7 +15536,7 @@ "Felet betyder vanligen att PostgreSQLs begäran av delat minnessegment överskred kärnans SHMMAX-parameter eller möjligen att det är lägre än kärnans SHMMIN-parameter.\n" "PostgreSQLs dokumentation innehåller mer information om konfigueration av delat minne." -#: port/pg_shmem.c:229 port/sysv_shmem.c:229 +#: port/pg_shmem.c:239 port/sysv_shmem.c:239 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n" @@ -15522,7 +15545,7 @@ "Felet betyder vanligen att PostgreSQLs begäran av delat minnessegment överskred kärnans SHMALL-parameter. Du kan behöva rekonfigurera kärnan med ett större SHMALL.\n" "PostgreSQLs dokumentation innehåller mer information om konfigueration av delat minne." -#: port/pg_shmem.c:235 port/sysv_shmem.c:235 +#: port/pg_shmem.c:245 port/sysv_shmem.c:245 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n" @@ -15531,32 +15554,32 @@ "Felet betyder *inte* att diskutrymmet tagit slut. Felet sker aningen om alla tillgängliga ID-nummer för delat minne tagit slut och då behöver du öka kärnans SHMMNI-parameter eller för att systemets totala gräns för delat minne ha nåtts.\n" "PostgreSQLs dokumentation innehåller mer information om konfigueration av delat minne." -#: port/pg_shmem.c:580 port/sysv_shmem.c:580 +#: port/pg_shmem.c:590 port/sysv_shmem.c:590 #, c-format msgid "could not map anonymous shared memory: %m" msgstr "kunde inte mappa anonymt delat minne: %m" -#: port/pg_shmem.c:582 port/sysv_shmem.c:582 +#: port/pg_shmem.c:592 port/sysv_shmem.c:592 #, c-format msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections." msgstr "Detta fel betyder vanligtvis att PostgreSQL:s begäran av delat minnessegment överskrider mängden tillgängligt minne, swap eller stora sidor. För att minska begärd storlek (nu %zu byte) minska PostgreSQL:s användning av delat minne t.ex. genom att dra ner på shared_buffers eller max_connections." -#: port/pg_shmem.c:644 port/sysv_shmem.c:644 port/win32_shmem.c:151 +#: port/pg_shmem.c:654 port/sysv_shmem.c:654 port/win32_shmem.c:151 #, c-format msgid "huge pages not supported on this platform" msgstr "stora sidor stöds inte på denna plattform" -#: port/pg_shmem.c:704 port/sysv_shmem.c:704 utils/init/miscinit.c:977 +#: port/pg_shmem.c:714 port/sysv_shmem.c:714 utils/init/miscinit.c:977 #, c-format msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" msgstr "redan existerande delat minnesblock (nyckel %lu, ID %lu) används fortfarande" -#: port/pg_shmem.c:707 port/sysv_shmem.c:707 utils/init/miscinit.c:979 +#: port/pg_shmem.c:717 port/sysv_shmem.c:717 utils/init/miscinit.c:979 #, c-format msgid "Terminate any old server processes associated with data directory \"%s\"." msgstr "Stäng ner gamla serverprocesser som hör ihop med datakatalogen \"%s\"." -#: port/pg_shmem.c:758 port/sysv_shmem.c:758 +#: port/pg_shmem.c:768 port/sysv_shmem.c:768 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "kunde inte göra stat() på datakatalog \"%s\": %m" @@ -15728,64 +15751,64 @@ msgid "Enable the \"track_counts\" option." msgstr "Slå på flaggan \"track_counts\"." -#: postmaster/bgworker.c:393 postmaster/bgworker.c:856 +#: postmaster/bgworker.c:406 postmaster/bgworker.c:926 #, c-format msgid "registering background worker \"%s\"" msgstr "registrerar bakgrundsarbetare \"%s\"" -#: postmaster/bgworker.c:425 +#: postmaster/bgworker.c:447 #, c-format msgid "unregistering background worker \"%s\"" msgstr "avregistrerar bakgrundsarbetare \"%s\"" -#: postmaster/bgworker.c:590 +#: postmaster/bgworker.c:660 #, c-format msgid "background worker \"%s\": must attach to shared memory in order to request a database connection" msgstr "bakgrundsarbetare \"%s\": måste ansluta till delat minne för att kunna få en databasanslutning" -#: postmaster/bgworker.c:599 +#: postmaster/bgworker.c:669 #, c-format msgid "background worker \"%s\": cannot request database access if starting at postmaster start" msgstr "bakgrundsarbetare \"%s\" kan inte få databasaccess om den startar när postmaster startar" -#: postmaster/bgworker.c:613 +#: postmaster/bgworker.c:683 #, c-format msgid "background worker \"%s\": invalid restart interval" msgstr "bakgrundsarbetare \"%s\": ogiltigt omstartsintervall" -#: postmaster/bgworker.c:628 +#: postmaster/bgworker.c:698 #, c-format msgid "background worker \"%s\": parallel workers may not be configured for restart" msgstr "bakgrundsarbetare \"%s\": parallella arbetare kan inte konfigureras för omstart" -#: postmaster/bgworker.c:666 +#: postmaster/bgworker.c:736 #, c-format msgid "terminating background worker \"%s\" due to administrator command" msgstr "terminerar bakgrundsarbetare \"%s\" pga administratörskommando" -#: postmaster/bgworker.c:864 +#: postmaster/bgworker.c:934 #, c-format msgid "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "bakgrundsarbetare \"%s\": måste vara registrerad i shared_preload_libraries" -#: postmaster/bgworker.c:876 +#: postmaster/bgworker.c:946 #, c-format msgid "background worker \"%s\": only dynamic background workers can request notification" msgstr "bakgrundsarbetare \"%s\": bara dynamiska bakgrundsarbetare kan be om notifiering" -#: postmaster/bgworker.c:891 +#: postmaster/bgworker.c:961 #, c-format msgid "too many background workers" msgstr "för många bakgrundsarbetare" -#: postmaster/bgworker.c:892 +#: postmaster/bgworker.c:962 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "Up to %d background workers can be registered with the current settings." msgstr[0] "Upp till %d bakgrundsarbetare kan registreras med nuvarande inställning." msgstr[1] "Upp till %d bakgrundsarbetare kan registreras med nuvarande inställning." -#: postmaster/bgworker.c:896 +#: postmaster/bgworker.c:966 #, c-format msgid "Consider increasing the configuration parameter \"max_worker_processes\"." msgstr "Överväg att öka konfigurationsparametern \"max_worker_processes\"." @@ -16196,7 +16219,7 @@ msgstr "inget stöd för framändans protokoll %u.%u: servern stöder %u.0 till %u.%u" #: postmaster/postmaster.c:2146 utils/misc/guc.c:5781 utils/misc/guc.c:5874 -#: utils/misc/guc.c:7224 utils/misc/guc.c:10003 utils/misc/guc.c:10037 +#: utils/misc/guc.c:7224 utils/misc/guc.c:10021 utils/misc/guc.c:10062 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "ogiltigt värde för parameter \"%s\": \"%s\"" @@ -16386,172 +16409,172 @@ msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) avslutade med okänd status %d" -#: postmaster/postmaster.c:3864 +#: postmaster/postmaster.c:3871 #, c-format msgid "abnormal database system shutdown" msgstr "ej normal databasnedstängning" -#: postmaster/postmaster.c:3904 +#: postmaster/postmaster.c:3911 #, c-format msgid "all server processes terminated; reinitializing" msgstr "alla serverprocesser är avslutade; initierar på nytt" -#: postmaster/postmaster.c:4070 postmaster/postmaster.c:5541 -#: postmaster/postmaster.c:5928 +#: postmaster/postmaster.c:4077 postmaster/postmaster.c:5550 +#: postmaster/postmaster.c:5937 #, c-format msgid "could not generate random cancel key" msgstr "kunde inte skapa slumpad avbrytningsnyckel" -#: postmaster/postmaster.c:4124 +#: postmaster/postmaster.c:4131 #, c-format msgid "could not fork new process for connection: %m" msgstr "kunde inte fork():a ny process for uppkoppling: %m" -#: postmaster/postmaster.c:4166 +#: postmaster/postmaster.c:4173 msgid "could not fork new process for connection: " msgstr "kunde inte fork():a ny process for uppkoppling: " -#: postmaster/postmaster.c:4288 +#: postmaster/postmaster.c:4295 #, c-format msgid "connection received: host=%s port=%s" msgstr "ansluting mottagen: värd=%s port=%s" -#: postmaster/postmaster.c:4293 +#: postmaster/postmaster.c:4300 #, c-format msgid "connection received: host=%s" msgstr "ansluting mottagen: värd=%s" -#: postmaster/postmaster.c:4578 +#: postmaster/postmaster.c:4585 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "kunde inte köra serverprocess \"%s\": %m" -#: postmaster/postmaster.c:4731 +#: postmaster/postmaster.c:4738 #, c-format msgid "giving up after too many tries to reserve shared memory" msgstr "ger upp efter för många försök att reservera delat minne" -#: postmaster/postmaster.c:4732 +#: postmaster/postmaster.c:4739 #, c-format msgid "This might be caused by ASLR or antivirus software." msgstr "Detta kan orsakas av ASLR eller antivirusprogram." -#: postmaster/postmaster.c:4929 +#: postmaster/postmaster.c:4936 #, c-format msgid "SSL configuration could not be loaded in child process" msgstr "SSL-konfigurering kunde inte laddas i barnprocess" -#: postmaster/postmaster.c:5061 +#: postmaster/postmaster.c:5068 #, c-format msgid "Please report this to ." msgstr "Vänligen rapportera detta till ." -#: postmaster/postmaster.c:5154 +#: postmaster/postmaster.c:5155 #, c-format msgid "database system is ready to accept read only connections" msgstr "databassystemet är redo att ta emot read-only-anslutningar" -#: postmaster/postmaster.c:5469 +#: postmaster/postmaster.c:5478 #, c-format msgid "could not fork startup process: %m" msgstr "kunde inte starta startup-processen: %m" -#: postmaster/postmaster.c:5473 +#: postmaster/postmaster.c:5482 #, c-format msgid "could not fork background writer process: %m" msgstr "kunde inte starta process för bakgrundsskrivare: %m" -#: postmaster/postmaster.c:5477 +#: postmaster/postmaster.c:5486 #, c-format msgid "could not fork checkpointer process: %m" msgstr "kunde inte fork:a bakgrundsprocess: %m" -#: postmaster/postmaster.c:5481 +#: postmaster/postmaster.c:5490 #, c-format msgid "could not fork WAL writer process: %m" msgstr "kunde inte fork:a WAL-skrivprocess: %m" -#: postmaster/postmaster.c:5485 +#: postmaster/postmaster.c:5494 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "kunde inte fork:a WAL-mottagarprocess: %m" -#: postmaster/postmaster.c:5489 +#: postmaster/postmaster.c:5498 #, c-format msgid "could not fork process: %m" msgstr "kunde inte fork:a process: %m" -#: postmaster/postmaster.c:5686 postmaster/postmaster.c:5709 +#: postmaster/postmaster.c:5695 postmaster/postmaster.c:5718 #, c-format msgid "database connection requirement not indicated during registration" msgstr "krav på databasanslutning fanns inte med vid registering" -#: postmaster/postmaster.c:5693 postmaster/postmaster.c:5716 +#: postmaster/postmaster.c:5702 postmaster/postmaster.c:5725 #, c-format msgid "invalid processing mode in background worker" msgstr "ogiltigt processläge i bakgrundsarbetare" -#: postmaster/postmaster.c:5789 +#: postmaster/postmaster.c:5798 #, c-format msgid "starting background worker process \"%s\"" msgstr "startar bakgrundsarbetarprocess \"%s\"" -#: postmaster/postmaster.c:5801 +#: postmaster/postmaster.c:5810 #, c-format msgid "could not fork worker process: %m" msgstr "kunde inte starta (fork) arbetarprocess: %m" -#: postmaster/postmaster.c:5914 +#: postmaster/postmaster.c:5923 #, c-format msgid "no slot available for new worker process" msgstr "ingen slot tillgänglig för ny arbetsprocess" -#: postmaster/postmaster.c:6249 +#: postmaster/postmaster.c:6258 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "kunde inte duplicera uttag (socket) %d för att använda i backend: felkod %d" -#: postmaster/postmaster.c:6281 +#: postmaster/postmaster.c:6290 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "kunde inte skapa ärvt uttag (socket): felkod %d\n" -#: postmaster/postmaster.c:6310 +#: postmaster/postmaster.c:6319 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "kunde inte öppna bakändans variabelfil \"%s\": %s\n" -#: postmaster/postmaster.c:6317 +#: postmaster/postmaster.c:6326 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "kunde inte läsa från bakändans variabelfil \"%s\": %s\n" -#: postmaster/postmaster.c:6326 +#: postmaster/postmaster.c:6335 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "kunde inte ta bort fil \"%s\": %s\n" -#: postmaster/postmaster.c:6343 +#: postmaster/postmaster.c:6352 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "kunde inte mappa in vy för bakgrundsvariabler: felkod %lu\n" -#: postmaster/postmaster.c:6352 +#: postmaster/postmaster.c:6361 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "kunde inte avmappa vy för bakgrundsvariabler: felkod %lu\n" -#: postmaster/postmaster.c:6359 +#: postmaster/postmaster.c:6368 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "kunde inte stänga \"handle\" till backend:ens parametervariabler: felkod %lu\n" -#: postmaster/postmaster.c:6523 +#: postmaster/postmaster.c:6532 #, c-format msgid "could not read exit code for process\n" msgstr "kunde inte läsa avslutningskod för process\n" -#: postmaster/postmaster.c:6528 +#: postmaster/postmaster.c:6537 #, c-format msgid "could not post child completion status\n" msgstr "kunde inte skicka barnets avslutningsstatus\n" @@ -16698,108 +16721,108 @@ msgid "could not clear search path: %s" msgstr "kunde inte nollställa sökväg: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:249 +#: replication/libpqwalreceiver/libpqwalreceiver.c:254 #, c-format msgid "invalid connection string syntax: %s" msgstr "ogiltig anslutningssträngsyntax %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:273 +#: replication/libpqwalreceiver/libpqwalreceiver.c:279 #, c-format msgid "could not parse connection string: %s" msgstr "kunde inte parsa anslutningssträng: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:323 +#: replication/libpqwalreceiver/libpqwalreceiver.c:329 #, c-format msgid "could not receive database system identifier and timeline ID from the primary server: %s" msgstr "kunde inte hämta databassystemidentifierare och tidslinje-ID från primära servern: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:334 -#: replication/libpqwalreceiver/libpqwalreceiver.c:545 +#: replication/libpqwalreceiver/libpqwalreceiver.c:340 +#: replication/libpqwalreceiver/libpqwalreceiver.c:551 #, c-format msgid "invalid response from primary server" msgstr "ogiltigt svar från primär server" -#: replication/libpqwalreceiver/libpqwalreceiver.c:335 +#: replication/libpqwalreceiver/libpqwalreceiver.c:341 #, c-format msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields." msgstr "Kunde inte identifiera system: fick %d rader och %d fält, förväntade %d rader och %d eller fler fält." -#: replication/libpqwalreceiver/libpqwalreceiver.c:401 #: replication/libpqwalreceiver/libpqwalreceiver.c:407 -#: replication/libpqwalreceiver/libpqwalreceiver.c:432 +#: replication/libpqwalreceiver/libpqwalreceiver.c:413 +#: replication/libpqwalreceiver/libpqwalreceiver.c:438 #, c-format msgid "could not start WAL streaming: %s" msgstr "kunde inte starta WAL-strömning: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:455 +#: replication/libpqwalreceiver/libpqwalreceiver.c:461 #, c-format msgid "could not send end-of-streaming message to primary: %s" msgstr "kunde inte skicka meddelandet end-of-streaming till primären: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:477 +#: replication/libpqwalreceiver/libpqwalreceiver.c:483 #, c-format msgid "unexpected result set after end-of-streaming" msgstr "oväntad resultatmängd efter end-of-streaming" -#: replication/libpqwalreceiver/libpqwalreceiver.c:491 +#: replication/libpqwalreceiver/libpqwalreceiver.c:497 #, c-format msgid "error while shutting down streaming COPY: %s" msgstr "fel vid nestängning av strömmande COPY: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:500 +#: replication/libpqwalreceiver/libpqwalreceiver.c:506 #, c-format msgid "error reading result of streaming command: %s" msgstr "fel vid läsning av resultat från strömmningskommando: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:508 -#: replication/libpqwalreceiver/libpqwalreceiver.c:746 +#: replication/libpqwalreceiver/libpqwalreceiver.c:514 +#: replication/libpqwalreceiver/libpqwalreceiver.c:752 #, c-format msgid "unexpected result after CommandComplete: %s" msgstr "oväntat resultat efter CommandComplete: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:534 +#: replication/libpqwalreceiver/libpqwalreceiver.c:540 #, c-format msgid "could not receive timeline history file from the primary server: %s" msgstr "kan inte ta emot fil med tidslinjehistorik från primära servern: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:546 +#: replication/libpqwalreceiver/libpqwalreceiver.c:552 #, c-format msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "Förväntade 1 tupel med 2 fält, fick %d tupler med %d fält." -#: replication/libpqwalreceiver/libpqwalreceiver.c:710 -#: replication/libpqwalreceiver/libpqwalreceiver.c:761 +#: replication/libpqwalreceiver/libpqwalreceiver.c:716 #: replication/libpqwalreceiver/libpqwalreceiver.c:767 +#: replication/libpqwalreceiver/libpqwalreceiver.c:773 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "kunde inte ta emot data från WAL-ström: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:786 +#: replication/libpqwalreceiver/libpqwalreceiver.c:792 #, c-format msgid "could not send data to WAL stream: %s" msgstr "kunde inte skicka data till WAL-ström: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:835 +#: replication/libpqwalreceiver/libpqwalreceiver.c:841 #, c-format msgid "could not create replication slot \"%s\": %s" msgstr "kunde inte skapa replikeringsslot \"%s\": %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:869 +#: replication/libpqwalreceiver/libpqwalreceiver.c:875 #, c-format msgid "invalid query response" msgstr "ogiltigt frågerespons" -#: replication/libpqwalreceiver/libpqwalreceiver.c:870 +#: replication/libpqwalreceiver/libpqwalreceiver.c:876 #, c-format msgid "Expected %d fields, got %d fields." msgstr "Förväntade %d fält, fick %d fält." -#: replication/libpqwalreceiver/libpqwalreceiver.c:939 +#: replication/libpqwalreceiver/libpqwalreceiver.c:945 #, c-format msgid "the query interface requires a database connection" msgstr "frågeinterface:et kräver en databasanslutning" -#: replication/libpqwalreceiver/libpqwalreceiver.c:970 +#: replication/libpqwalreceiver/libpqwalreceiver.c:976 msgid "empty query" msgstr "tom fråga" @@ -17016,44 +17039,44 @@ msgid "no replication origin is configured" msgstr "ingen replikeringskälla är konfigurerad" -#: replication/logical/relation.c:283 +#: replication/logical/relation.c:270 #, c-format msgid "logical replication target relation \"%s.%s\" does not exist" msgstr "logisk replikeringsmålrelation \"%s.%s\" finns inte" -#: replication/logical/relation.c:325 +#: replication/logical/relation.c:312 #, c-format msgid "logical replication target relation \"%s.%s\" is missing some replicated columns" msgstr "logisk replikeringsmålrelation \"%s.%s\" saknar några replikerade kolumner" -#: replication/logical/relation.c:365 +#: replication/logical/relation.c:352 #, c-format msgid "logical replication target relation \"%s.%s\" uses system columns in REPLICA IDENTITY index" msgstr "logisk replikeringsmålrelation \"%s.%s\" använder systemkolumner i REPLICA IDENTITY-index" -#: replication/logical/reorderbuffer.c:2446 +#: replication/logical/reorderbuffer.c:2469 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "kunde inte skriva till datafil för XID %u: %m" -#: replication/logical/reorderbuffer.c:2550 -#: replication/logical/reorderbuffer.c:2572 +#: replication/logical/reorderbuffer.c:2573 +#: replication/logical/reorderbuffer.c:2595 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "kunde inte läsa från reorderbuffer spill-fil: %m" -#: replication/logical/reorderbuffer.c:2554 -#: replication/logical/reorderbuffer.c:2576 +#: replication/logical/reorderbuffer.c:2577 +#: replication/logical/reorderbuffer.c:2599 #, c-format msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes" msgstr "kunde inte läsa från reorderbuffer spill-fil: läste %d istället för %u byte" -#: replication/logical/reorderbuffer.c:2788 +#: replication/logical/reorderbuffer.c:2812 #, c-format msgid "could not remove file \"%s\" during removal of pg_replslot/%s/*.xid: %m" msgstr "kunde inte radera fil \"%s\" vid borttagning av pg_replslot/%s/*.xid: %m" -#: replication/logical/reorderbuffer.c:3258 +#: replication/logical/reorderbuffer.c:3282 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "kunde inte läsa från fil \"%s\": läste %d istället för %d byte" @@ -17070,64 +17093,64 @@ msgstr[0] "exporterade logisk avkodnings-snapshot: \"%s\" med %u transaktions-ID" msgstr[1] "exporterade logisk avkodnings-snapshot: \"%s\" med %u transaktions-ID" -#: replication/logical/snapbuild.c:1271 replication/logical/snapbuild.c:1364 -#: replication/logical/snapbuild.c:1879 +#: replication/logical/snapbuild.c:1287 replication/logical/snapbuild.c:1380 +#: replication/logical/snapbuild.c:1898 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "logisk avkodning hittade konsistent punkt vid %X/%X" -#: replication/logical/snapbuild.c:1273 +#: replication/logical/snapbuild.c:1289 #, c-format msgid "There are no running transactions." msgstr "Det finns inga körande transaktioner." -#: replication/logical/snapbuild.c:1315 +#: replication/logical/snapbuild.c:1331 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "logisk avkodning hittade initial startpunkt vid %X/%X" -#: replication/logical/snapbuild.c:1317 replication/logical/snapbuild.c:1341 +#: replication/logical/snapbuild.c:1333 replication/logical/snapbuild.c:1357 #, c-format msgid "Waiting for transactions (approximately %d) older than %u to end." msgstr "Väntar på att transaktioner (cirka %d) äldre än %u skall gå klart." -#: replication/logical/snapbuild.c:1339 +#: replication/logical/snapbuild.c:1355 #, c-format msgid "logical decoding found initial consistent point at %X/%X" msgstr "logisk avkodning hittade initial konsistent punkt vid %X/%X" -#: replication/logical/snapbuild.c:1366 +#: replication/logical/snapbuild.c:1382 #, c-format msgid "There are no old transactions anymore." msgstr "Det finns inte längre några gamla transaktioner." -#: replication/logical/snapbuild.c:1741 replication/logical/snapbuild.c:1774 -#: replication/logical/snapbuild.c:1794 replication/logical/snapbuild.c:1813 +#: replication/logical/snapbuild.c:1760 replication/logical/snapbuild.c:1793 +#: replication/logical/snapbuild.c:1813 replication/logical/snapbuild.c:1832 #, c-format msgid "could not read file \"%s\", read %d of %d: %m" msgstr "kunde inte läsa fil \"%s\": läste %d av %d: %m" -#: replication/logical/snapbuild.c:1748 +#: replication/logical/snapbuild.c:1767 #, c-format msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" msgstr "snapbuild-state-fil \"%s\" har fel magiskt tal: %u istället för %u" -#: replication/logical/snapbuild.c:1754 +#: replication/logical/snapbuild.c:1773 #, c-format msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" msgstr "snapbuild-state-fil \"%s\" har en ej stödd version: %u istället för %u" -#: replication/logical/snapbuild.c:1826 +#: replication/logical/snapbuild.c:1845 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "checksumma stämmer inte för snapbuild-state-fil \"%s\": är %u, skall vara %u" -#: replication/logical/snapbuild.c:1881 +#: replication/logical/snapbuild.c:1900 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "Logisk avkodning kommer starta med sparat snapshot." -#: replication/logical/snapbuild.c:1953 +#: replication/logical/snapbuild.c:1972 #, c-format msgid "could not parse file name \"%s\"" msgstr "kunde inte parsa filnamn \"%s\"" @@ -17137,122 +17160,122 @@ msgid "logical replication table synchronization worker for subscription \"%s\", table \"%s\" has finished" msgstr "logisk replikerings tabellsynkroniseringsarbetare för prenumeration \"%s\", tabell \"%s\" är klar" -#: replication/logical/tablesync.c:685 +#: replication/logical/tablesync.c:686 #, c-format msgid "could not fetch table info for table \"%s.%s\" from publisher: %s" msgstr "kunde inte hämta tabellinfo för tabell \"%s.%s\" från publicerare: %s" -#: replication/logical/tablesync.c:691 +#: replication/logical/tablesync.c:692 #, c-format msgid "table \"%s.%s\" not found on publisher" msgstr "tabell \"%s.%s\" hittades inte hos publicerare" -#: replication/logical/tablesync.c:721 +#: replication/logical/tablesync.c:723 #, c-format msgid "could not fetch table info for table \"%s.%s\": %s" msgstr "kunde inte hämta tabellinfo för tabell \"%s.%s\": %s" -#: replication/logical/tablesync.c:791 +#: replication/logical/tablesync.c:793 #, c-format msgid "could not start initial contents copy for table \"%s.%s\": %s" msgstr "kunde inte starta initial innehållskopiering för tabell \"%s.%s\": %s" -#: replication/logical/tablesync.c:905 +#: replication/logical/tablesync.c:908 #, c-format msgid "table copy could not start transaction on publisher" msgstr "tabellkopiering kunde inte starta transaktion på publiceraren" -#: replication/logical/tablesync.c:927 +#: replication/logical/tablesync.c:930 #, c-format msgid "table copy could not finish transaction on publisher" msgstr "tabellkopiering kunde inte slutföra transaktion på publiceraren" -#: replication/logical/worker.c:305 +#: replication/logical/worker.c:294 #, c-format -msgid "processing remote data for replication target relation \"%s.%s\" column \"%s\", remote type %s, local type %s" -msgstr "processar fjärrdata för replikeringsmålrelation \"%s.%s\" kolumn \"%s\", fjärrtyp %s, lokal typ %s" +msgid "processing remote data for replication target relation \"%s.%s\" column \"%s\"" +msgstr "processar fjärrdata för replikeringsmålrelation \"%s.%s\" kolumn \"%s\"" -#: replication/logical/worker.c:542 +#: replication/logical/worker.c:529 #, c-format msgid "ORIGIN message sent out of order" msgstr "ORIGIN-meddelande skickat i fel ordning" -#: replication/logical/worker.c:675 +#: replication/logical/worker.c:660 #, c-format msgid "publisher did not send replica identity column expected by the logical replication target relation \"%s.%s\"" msgstr "publicerare skickade inte identitetskolumn för replika som förväntades av den logiska replikeringens målrelation \"%s.%s\"" -#: replication/logical/worker.c:682 +#: replication/logical/worker.c:667 #, c-format msgid "logical replication target relation \"%s.%s\" has neither REPLICA IDENTITY index nor PRIMARY KEY and published relation does not have REPLICA IDENTITY FULL" msgstr "logisk replikeringsmålrelation \"%s.%s\" har varken REPLICA IDENTITY-index eller PRIMARY KEY och den publicerade relationen har inte REPLICA IDENTITY FULL" -#: replication/logical/worker.c:913 +#: replication/logical/worker.c:898 #, c-format msgid "logical replication could not find row for delete in replication target relation \"%s\"" msgstr "logisk replikering kunde inte hitta raden som skulle tas bort i replikeringsmålrelationen \"%s\"" -#: replication/logical/worker.c:980 +#: replication/logical/worker.c:965 #, c-format msgid "invalid logical replication message type \"%c\"" msgstr "ogiltig logisk replikeringsmeddelandetyp \"%c\"" -#: replication/logical/worker.c:1123 +#: replication/logical/worker.c:1108 #, c-format msgid "data stream from publisher has ended" msgstr "dataströmmen från publiceraren har avslutats" -#: replication/logical/worker.c:1282 +#: replication/logical/worker.c:1267 #, c-format msgid "terminating logical replication worker due to timeout" msgstr "avslutar logisk replikeringsarbetare på grund av timeout" -#: replication/logical/worker.c:1427 +#: replication/logical/worker.c:1413 #, c-format msgid "logical replication apply worker for subscription \"%s\" will stop because the subscription was removed" msgstr "logisk replikerings uppspelningsarbetare för prenumeration \"%s\" kommer stoppa då prenumerationen har tagits bort" -#: replication/logical/worker.c:1441 +#: replication/logical/worker.c:1427 #, c-format msgid "logical replication apply worker for subscription \"%s\" will stop because the subscription was disabled" msgstr "logisk replikerings uppspelningsarbetare för prenumeration \"%s\" kommer stoppa då prenumerationen har stängts av" -#: replication/logical/worker.c:1455 +#: replication/logical/worker.c:1441 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because the connection information was changed" msgstr "logisk replikerings uppspelningsarbetare för prenumeration \"%s\" kommer starta om då uppkopplingsinformationen ändrats" -#: replication/logical/worker.c:1469 +#: replication/logical/worker.c:1455 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because subscription was renamed" msgstr "logisk replikerings uppspelningsarbetare för prenumeration \"%s\" kommer starta om då prenumerationen bytt namn" -#: replication/logical/worker.c:1486 +#: replication/logical/worker.c:1472 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because the replication slot name was changed" msgstr "logisk replikerings uppspelningsarbetare för prenumeration \"%s\" kommer starta om då replikeringsslotten bytt namn" -#: replication/logical/worker.c:1500 +#: replication/logical/worker.c:1486 #, c-format msgid "logical replication apply worker for subscription \"%s\" will restart because subscription's publications were changed" msgstr "logisk replikerings uppspelningsarbetare för prenumeration \"%s\" kommer starta om då prenumerationens publiceringar ändrats" -#: replication/logical/worker.c:1614 +#: replication/logical/worker.c:1600 #, c-format msgid "logical replication apply worker for subscription \"%s\" will not start because the subscription was disabled during startup" msgstr "logisk replikerings uppspelningsarbetare för prenumeration \"%s\" kommer inte starta då prenumerationen stänges av under uppstart" -#: replication/logical/worker.c:1628 +#: replication/logical/worker.c:1614 #, c-format msgid "logical replication table synchronization worker for subscription \"%s\", table \"%s\" has started" msgstr "logisk replikerings tabellsynkroniseringsarbetare för prenumeration \"%s\", tabell \"%s\" har startat" -#: replication/logical/worker.c:1632 +#: replication/logical/worker.c:1618 #, c-format msgid "logical replication apply worker for subscription \"%s\" has started" msgstr "logisk replikerings uppspelningsarbetare för prenumeration \"%s\" har startat" -#: replication/logical/worker.c:1672 +#: replication/logical/worker.c:1658 #, c-format msgid "subscription has no replication slot set" msgstr "prenumeration har ingen replikeringsslot angiven" @@ -17437,586 +17460,596 @@ msgid "number of synchronous standbys (%d) must be greater than zero" msgstr "antal synkrona standbys (%d) måste vara fler än noll" -#: replication/walreceiver.c:159 +#: replication/walreceiver.c:160 #, c-format msgid "terminating walreceiver process due to administrator command" msgstr "avslutar wal-mottagarprocessen på grund av ett administratörskommando" -#: replication/walreceiver.c:283 +#: replication/walreceiver.c:284 #, c-format msgid "could not connect to the primary server: %s" msgstr "kunde inte ansluta till primärserver: %s" -#: replication/walreceiver.c:320 +#: replication/walreceiver.c:321 #, c-format msgid "database system identifier differs between the primary and standby" msgstr "databassystemets identifierare skiljer sig åt mellan primären och standby:en" -#: replication/walreceiver.c:321 +#: replication/walreceiver.c:322 #, c-format msgid "The primary's identifier is %s, the standby's identifier is %s." msgstr "Primärens identifierare är %s, standby:ens identifierare är %s." -#: replication/walreceiver.c:331 +#: replication/walreceiver.c:332 #, c-format msgid "highest timeline %u of the primary is behind recovery timeline %u" msgstr "högsta tidslinjen %u i primären är efter återställningstidslinjen %u" -#: replication/walreceiver.c:367 +#: replication/walreceiver.c:368 #, c-format msgid "started streaming WAL from primary at %X/%X on timeline %u" msgstr "startade strömning av WAL från primären vid %X/%X på tidslinje %u" -#: replication/walreceiver.c:372 +#: replication/walreceiver.c:373 #, c-format msgid "restarted WAL streaming at %X/%X on timeline %u" msgstr "återstartade WAL-strömning vid %X/%X på tidslinje %u" -#: replication/walreceiver.c:401 +#: replication/walreceiver.c:402 #, c-format msgid "cannot continue WAL streaming, recovery has already ended" msgstr "kan inte fortsätta WAL-strömning, återställning har redan avslutats" -#: replication/walreceiver.c:438 +#: replication/walreceiver.c:439 #, c-format msgid "replication terminated by primary server" msgstr "replikering avslutad av primär server" -#: replication/walreceiver.c:439 +#: replication/walreceiver.c:440 #, c-format msgid "End of WAL reached on timeline %u at %X/%X." msgstr "Slut på WAL nådd på tidslinje %u vid %X/%X." -#: replication/walreceiver.c:536 +#: replication/walreceiver.c:537 #, c-format msgid "terminating walreceiver due to timeout" msgstr "avslutar wal-mottagare på grund av timeout" -#: replication/walreceiver.c:574 +#: replication/walreceiver.c:575 #, c-format msgid "primary server contains no more WAL on requested timeline %u" msgstr "primär server har ingen mer WAL på efterfrågad tidslinje %u" -#: replication/walreceiver.c:589 replication/walreceiver.c:945 +#: replication/walreceiver.c:590 replication/walreceiver.c:1079 #, c-format msgid "could not close log segment %s: %m" msgstr "kunde inte stänga loggsegment %s: %m" -#: replication/walreceiver.c:714 +#: replication/walreceiver.c:715 #, c-format msgid "fetching timeline history file for timeline %u from primary server" msgstr "hämtar tidslinjehistorikfil för tidslinje %u från primära servern" -#: replication/walreceiver.c:999 +#: replication/walreceiver.c:970 #, c-format msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "kunde inte skriva till loggfilsegment %s på offset %u, längd %lu: %m" -#: replication/walsender.c:494 +#: replication/walsender.c:498 #, c-format msgid "could not seek to beginning of file \"%s\": %m" msgstr "kunde inte söka till början av filen \"%s\": %m" -#: replication/walsender.c:535 +#: replication/walsender.c:539 #, c-format msgid "IDENTIFY_SYSTEM has not been run before START_REPLICATION" msgstr "IDENTIFY_SYSTEM har inte körts före START_REPLICATION" -#: replication/walsender.c:552 +#: replication/walsender.c:556 #, c-format msgid "cannot use a logical replication slot for physical replication" msgstr "kan inte använda logisk replikeringsslot för fysisk replikering" -#: replication/walsender.c:615 +#: replication/walsender.c:619 #, c-format msgid "requested starting point %X/%X on timeline %u is not in this server's history" msgstr "efterfrågad startpunkt %X/%X på tidslinje %u finns inte i denna servers historik" -#: replication/walsender.c:619 +#: replication/walsender.c:623 #, c-format msgid "This server's history forked from timeline %u at %X/%X." msgstr "Denna servers historik delade sig från tidslinje %u vid %X/%X." -#: replication/walsender.c:664 +#: replication/walsender.c:668 #, c-format msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X" msgstr "efterfrågad startpunkt %X/%X är längre fram än denna servers flush:ade WAL-skrivposition %X/%X" -#: replication/walsender.c:893 +#: replication/walsender.c:897 #, c-format msgid "CREATE_REPLICATION_SLOT ... EXPORT_SNAPSHOT must not be called inside a transaction" msgstr "CREATE_REPLICATION_SLOT ... EXPORT_SNAPSHOT får inte anropas i en transaktion" -#: replication/walsender.c:902 +#: replication/walsender.c:906 #, c-format msgid "CREATE_REPLICATION_SLOT ... USE_SNAPSHOT must be called inside a transaction" msgstr "CREATE_REPLICATION_SLOT ... USE_SNAPSHOT måste anropas i en transaktion" -#: replication/walsender.c:907 +#: replication/walsender.c:911 #, c-format msgid "CREATE_REPLICATION_SLOT ... USE_SNAPSHOT must be called in REPEATABLE READ isolation mode transaction" msgstr "CREATE_REPLICATION_SLOT ... USE_SNAPSHOT måste anropas i transaktions REPEATABLE READ-isolationsläge" -#: replication/walsender.c:912 +#: replication/walsender.c:916 #, c-format msgid "CREATE_REPLICATION_SLOT ... USE_SNAPSHOT must be called before any query" msgstr "CREATE_REPLICATION_SLOT ... USE_SNAPSHOT måste anropas innan någon fråga" -#: replication/walsender.c:917 +#: replication/walsender.c:921 #, c-format msgid "CREATE_REPLICATION_SLOT ... USE_SNAPSHOT must not be called in a subtransaction" msgstr "CREATE_REPLICATION_SLOT ... USE_SNAPSHOT får inte anropas i en subtransaktion" -#: replication/walsender.c:1063 +#: replication/walsender.c:1067 #, c-format msgid "terminating walsender process after promotion" msgstr "stänger ner walsender-process efter befordring" -#: replication/walsender.c:1442 +#: replication/walsender.c:1446 #, c-format msgid "cannot execute new commands while WAL sender is in stopping mode" msgstr "kan inte utföra nya kommandon när WAL-sändare är i stopp-läge" -#: replication/walsender.c:1475 +#: replication/walsender.c:1483 +#, c-format +msgid "cannot execute SQL commands in WAL sender for physical replication" +msgstr "kan inte köra SQL-kommandon i WAL-sändare för fysisk replikering" + +#: replication/walsender.c:1506 #, c-format msgid "received replication command: %s" msgstr "tog emot replikeringskommando: %s" -#: replication/walsender.c:1491 tcop/fastpath.c:281 tcop/postgres.c:1020 +#: replication/walsender.c:1514 tcop/fastpath.c:287 tcop/postgres.c:1020 #: tcop/postgres.c:1330 tcop/postgres.c:1589 tcop/postgres.c:1994 #: tcop/postgres.c:2362 tcop/postgres.c:2437 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "aktuella transaktionen har avbrutits, alla kommandon ignoreras tills slutet på transaktionen" -#: replication/walsender.c:1559 -#, c-format -msgid "cannot execute SQL commands in WAL sender for physical replication" -msgstr "kan inte köra SQL-kommandon i WAL-sändare för fysisk replikering" - -#: replication/walsender.c:1607 replication/walsender.c:1623 +#: replication/walsender.c:1622 replication/walsender.c:1638 #, c-format msgid "unexpected EOF on standby connection" msgstr "oväntat EOF från standby-anslutning" -#: replication/walsender.c:1637 -#, c-format -msgid "unexpected standby message type \"%c\", after receiving CopyDone" -msgstr "oväntat standby-meddelandetyp \"%c\" efter att vi tagit emot CopyDone" - -#: replication/walsender.c:1675 +#: replication/walsender.c:1677 #, c-format msgid "invalid standby message type \"%c\"" msgstr "ogiltigt standby-meddelandetyp \"%c\"" -#: replication/walsender.c:1716 +#: replication/walsender.c:1718 #, c-format msgid "unexpected message type \"%c\"" msgstr "oväntad meddelandetyp \"%c\"" -#: replication/walsender.c:2094 +#: replication/walsender.c:2090 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "avslutar walsender-process på grund av replikerings-timeout" -#: replication/walsender.c:2178 +#: replication/walsender.c:2174 #, c-format msgid "\"%s\" has now caught up with upstream server" msgstr "\"%s\" har nu kommit ikapp servern uppströms" -#: replication/walsender.c:2289 +#: replication/walsender.c:2287 #, c-format msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "antalet efterfrågade standby-anslutningar överskrider max_wal_senders (nu %d)" -#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:981 +#: rewrite/rewriteDefine.c:113 rewrite/rewriteDefine.c:992 #, c-format msgid "rule \"%s\" for relation \"%s\" already exists" msgstr "regel \"%s\" för relation \"%s\" existerar redan" -#: rewrite/rewriteDefine.c:296 +#: rewrite/rewriteDefine.c:297 #, c-format msgid "rule actions on OLD are not implemented" msgstr "regelhandlingar på OLD är inte implementerat" -#: rewrite/rewriteDefine.c:297 +#: rewrite/rewriteDefine.c:298 #, c-format msgid "Use views or triggers instead." msgstr "Använd vyer eller utlösare (trigger) istället." -#: rewrite/rewriteDefine.c:301 +#: rewrite/rewriteDefine.c:302 #, c-format msgid "rule actions on NEW are not implemented" msgstr "regelhandlingar på NEW är inte implementerat" -#: rewrite/rewriteDefine.c:302 +#: rewrite/rewriteDefine.c:303 #, c-format msgid "Use triggers instead." msgstr "Använd utlösare (trigger) istället." -#: rewrite/rewriteDefine.c:315 +#: rewrite/rewriteDefine.c:316 #, c-format msgid "INSTEAD NOTHING rules on SELECT are not implemented" msgstr "INSTEAD NOTHING-regler på SELECT är inte implementerat ännu" -#: rewrite/rewriteDefine.c:316 +#: rewrite/rewriteDefine.c:317 #, c-format msgid "Use views instead." msgstr "Använd vyer istället." -#: rewrite/rewriteDefine.c:324 +#: rewrite/rewriteDefine.c:325 #, c-format msgid "multiple actions for rules on SELECT are not implemented" msgstr "flera regelhandlingar på SELECT är inte implementerat" -#: rewrite/rewriteDefine.c:334 +#: rewrite/rewriteDefine.c:335 #, c-format msgid "rules on SELECT must have action INSTEAD SELECT" msgstr "regler på SELECT måste ha handlingen INSTEAD SELECT" -#: rewrite/rewriteDefine.c:342 +#: rewrite/rewriteDefine.c:343 #, c-format msgid "rules on SELECT must not contain data-modifying statements in WITH" msgstr "regler på SELECT får inte innehålla datamodifierande satser i WITH" -#: rewrite/rewriteDefine.c:350 +#: rewrite/rewriteDefine.c:351 #, c-format msgid "event qualifications are not implemented for rules on SELECT" msgstr "händelsebegränsningar är inte implementerat för regler på SELECT" -#: rewrite/rewriteDefine.c:377 +#: rewrite/rewriteDefine.c:378 #, c-format msgid "\"%s\" is already a view" msgstr "\"%s\" är redan en vy" -#: rewrite/rewriteDefine.c:401 +#: rewrite/rewriteDefine.c:402 #, c-format msgid "view rule for \"%s\" must be named \"%s\"" msgstr "vy-regel (rule) för \"%s\" måste ha namnet \"%s\"" -#: rewrite/rewriteDefine.c:428 +#: rewrite/rewriteDefine.c:430 #, c-format msgid "cannot convert partitioned table \"%s\" to a view" msgstr "kan inte konvertera partitionerad tabell \"%s\" till en vy" -#: rewrite/rewriteDefine.c:434 +#: rewrite/rewriteDefine.c:439 #, c-format msgid "cannot convert partition \"%s\" to a view" msgstr "kan inte konvertera partition \"%s\" till en vy" -#: rewrite/rewriteDefine.c:442 +#: rewrite/rewriteDefine.c:447 #, c-format msgid "could not convert table \"%s\" to a view because it is not empty" msgstr "kunde inte konvertera tabell \"%s\" till en vy då den inte är tom" -#: rewrite/rewriteDefine.c:450 +#: rewrite/rewriteDefine.c:455 #, c-format msgid "could not convert table \"%s\" to a view because it has triggers" msgstr "kunde inte konvertera tabell \"%s\" till en vy då den har utlösare" -#: rewrite/rewriteDefine.c:452 +#: rewrite/rewriteDefine.c:457 #, c-format msgid "In particular, the table cannot be involved in any foreign key relationships." msgstr "Mer specifikt, tabellen kan inte vare inblandad i främmande-nyckelberoenden." -#: rewrite/rewriteDefine.c:457 +#: rewrite/rewriteDefine.c:462 #, c-format msgid "could not convert table \"%s\" to a view because it has indexes" msgstr "kunde inte konvertera tabell \"%s\" till en vy eftersom den har index" -#: rewrite/rewriteDefine.c:463 +#: rewrite/rewriteDefine.c:468 #, c-format msgid "could not convert table \"%s\" to a view because it has child tables" msgstr "kunde inte konvertera tabell \"%s\" till en vy då den har barntabeller" -#: rewrite/rewriteDefine.c:469 +#: rewrite/rewriteDefine.c:474 +#, c-format +msgid "could not convert table \"%s\" to a view because it has parent tables" +msgstr "kunde inte konvertera tabell \"%s\" till en vy då den har föräldratabeller" + +#: rewrite/rewriteDefine.c:480 #, c-format msgid "could not convert table \"%s\" to a view because it has row security enabled" msgstr "kunde inte konvertera tabell \"%s\" till en vy eftersom den har radsäkerhet påslagen" -#: rewrite/rewriteDefine.c:475 +#: rewrite/rewriteDefine.c:486 #, c-format msgid "could not convert table \"%s\" to a view because it has row security policies" msgstr "kunde inte konvertera tabell \"%s\" till en vy eftersom den har radsäkerhetspolicy" -#: rewrite/rewriteDefine.c:502 +#: rewrite/rewriteDefine.c:513 #, c-format msgid "cannot have multiple RETURNING lists in a rule" msgstr "kan inte ha flera RETURNING-listor i en regel" -#: rewrite/rewriteDefine.c:507 +#: rewrite/rewriteDefine.c:518 #, c-format msgid "RETURNING lists are not supported in conditional rules" msgstr "RETURNING-listor stöds inte i villkorade regler" -#: rewrite/rewriteDefine.c:511 +#: rewrite/rewriteDefine.c:522 #, c-format msgid "RETURNING lists are not supported in non-INSTEAD rules" msgstr "RETURNING-listor stöds inte i icke-INSTEAD-regler" -#: rewrite/rewriteDefine.c:676 +#: rewrite/rewriteDefine.c:687 #, c-format msgid "SELECT rule's target list has too many entries" msgstr "SELECT-regelns mållista har för många poster" -#: rewrite/rewriteDefine.c:677 +#: rewrite/rewriteDefine.c:688 #, c-format msgid "RETURNING list has too many entries" msgstr "RETURNING-lista har för många element" -#: rewrite/rewriteDefine.c:704 +#: rewrite/rewriteDefine.c:715 #, c-format msgid "cannot convert relation containing dropped columns to view" msgstr "kan inte konvertera en relation som har borttagna kolumner till en vy" -#: rewrite/rewriteDefine.c:705 +#: rewrite/rewriteDefine.c:716 #, c-format msgid "cannot create a RETURNING list for a relation containing dropped columns" msgstr "kan inte skapa en RETURNING-lista för relationer som innehåller borttagna kolumner" -#: rewrite/rewriteDefine.c:711 +#: rewrite/rewriteDefine.c:722 #, c-format msgid "SELECT rule's target entry %d has different column name from column \"%s\"" msgstr "SELECT-regels målpost %d har ett annat kolumnnamn än kolumnen \"%s\"" -#: rewrite/rewriteDefine.c:713 +#: rewrite/rewriteDefine.c:724 #, c-format msgid "SELECT target entry is named \"%s\"." msgstr "SELECT-målpost har namn \"%s\"." -#: rewrite/rewriteDefine.c:722 +#: rewrite/rewriteDefine.c:733 #, c-format msgid "SELECT rule's target entry %d has different type from column \"%s\"" msgstr "SELECT-regels målpot %d har en annan typ än kolumnen \"%s\"" -#: rewrite/rewriteDefine.c:724 +#: rewrite/rewriteDefine.c:735 #, c-format msgid "RETURNING list's entry %d has different type from column \"%s\"" msgstr "RETURNING-listans post %d har en annan typ än kolumnen \"%s\"" -#: rewrite/rewriteDefine.c:727 rewrite/rewriteDefine.c:751 +#: rewrite/rewriteDefine.c:738 rewrite/rewriteDefine.c:762 #, c-format msgid "SELECT target entry has type %s, but column has type %s." msgstr "SELECT-målpost har typ %s men kolumnen har typ %s." -#: rewrite/rewriteDefine.c:730 rewrite/rewriteDefine.c:755 +#: rewrite/rewriteDefine.c:741 rewrite/rewriteDefine.c:766 #, c-format msgid "RETURNING list entry has type %s, but column has type %s." msgstr "RETURNING-listpost har typ %s men kolumnen har typ %s." -#: rewrite/rewriteDefine.c:746 +#: rewrite/rewriteDefine.c:757 #, c-format msgid "SELECT rule's target entry %d has different size from column \"%s\"" msgstr "SELECT-regelns målpost %d har en annan storlek än kolumnen \"%s\"" -#: rewrite/rewriteDefine.c:748 +#: rewrite/rewriteDefine.c:759 #, c-format msgid "RETURNING list's entry %d has different size from column \"%s\"" msgstr "RETURNING-listpost %d har en annan storlek än kolumnen\"%s\"" -#: rewrite/rewriteDefine.c:765 +#: rewrite/rewriteDefine.c:776 #, c-format msgid "SELECT rule's target list has too few entries" msgstr "SELECT-regels mållista har för få element" -#: rewrite/rewriteDefine.c:766 +#: rewrite/rewriteDefine.c:777 #, c-format msgid "RETURNING list has too few entries" msgstr "RETURNING-lista har för få element" -#: rewrite/rewriteDefine.c:858 rewrite/rewriteDefine.c:972 +#: rewrite/rewriteDefine.c:869 rewrite/rewriteDefine.c:983 #: rewrite/rewriteSupport.c:109 #, c-format msgid "rule \"%s\" for relation \"%s\" does not exist" msgstr "regel \"%s\" för relation \"%s\" existerar inte" -#: rewrite/rewriteDefine.c:991 +#: rewrite/rewriteDefine.c:1002 #, c-format msgid "renaming an ON SELECT rule is not allowed" msgstr "byta namn på en ON SELECT-regel tillåts inte" -#: rewrite/rewriteHandler.c:542 +#: rewrite/rewriteHandler.c:545 #, c-format msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten" msgstr "WITH-frågenamn \"%s\" finns både i en regelhändelse och i frågan som skrivs om" -#: rewrite/rewriteHandler.c:602 +#: rewrite/rewriteHandler.c:572 +#, c-format +msgid "INSERT...SELECT rule actions are not supported for queries having data-modifying statements in WITH" +msgstr "INSERT...SELECT-regler stöds inte för frågor som har datamodifierande satser i WITH" + +#: rewrite/rewriteHandler.c:625 #, c-format msgid "cannot have RETURNING lists in multiple rules" msgstr "kan inte ha RETURNING-listor i multipla regler" -#: rewrite/rewriteHandler.c:811 +#: rewrite/rewriteHandler.c:834 #, c-format msgid "cannot insert into column \"%s\"" msgstr "kan inte sätta in i kolumn \"%s\"" -#: rewrite/rewriteHandler.c:812 rewrite/rewriteHandler.c:827 +#: rewrite/rewriteHandler.c:835 rewrite/rewriteHandler.c:850 #, c-format msgid "Column \"%s\" is an identity column defined as GENERATED ALWAYS." msgstr "Kolumn \"%s\" är en identitetskolumn definierad som GENERATED ALWAYS." -#: rewrite/rewriteHandler.c:814 +#: rewrite/rewriteHandler.c:837 #, c-format msgid "Use OVERRIDING SYSTEM VALUE to override." msgstr "Använd OVERRIDING SYSTEM VALUE för att överskugga." -#: rewrite/rewriteHandler.c:826 +#: rewrite/rewriteHandler.c:849 #, c-format msgid "column \"%s\" can only be updated to DEFAULT" msgstr "kolumn \"%s\" kan bara uppdateras till DEFAULT" -#: rewrite/rewriteHandler.c:988 rewrite/rewriteHandler.c:1006 +#: rewrite/rewriteHandler.c:1011 rewrite/rewriteHandler.c:1029 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "flera tilldelningar till samma kolumn \"%s\"" -#: rewrite/rewriteHandler.c:1937 rewrite/rewriteHandler.c:3735 +#: rewrite/rewriteHandler.c:1960 rewrite/rewriteHandler.c:3772 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "oändlig rekursion detekterad i reglerna för relation \"%s\"" -#: rewrite/rewriteHandler.c:2023 +#: rewrite/rewriteHandler.c:2046 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "oändlig rekursion detekterad i policy för relation \"%s\"" -#: rewrite/rewriteHandler.c:2343 +#: rewrite/rewriteHandler.c:2366 msgid "Junk view columns are not updatable." msgstr "Skräpkolumner i vy är inte uppdateringsbara." -#: rewrite/rewriteHandler.c:2348 +#: rewrite/rewriteHandler.c:2371 msgid "View columns that are not columns of their base relation are not updatable." msgstr "Vykolumner som inte är kolumner i dess basrelation är inte uppdateringsbara." -#: rewrite/rewriteHandler.c:2351 +#: rewrite/rewriteHandler.c:2374 msgid "View columns that refer to system columns are not updatable." msgstr "Vykolumner som refererar till systemkolumner är inte uppdateringsbara." -#: rewrite/rewriteHandler.c:2354 +#: rewrite/rewriteHandler.c:2377 msgid "View columns that return whole-row references are not updatable." msgstr "Vykolumner som returnerar hel-rad-referenser är inte uppdateringsbara." -#: rewrite/rewriteHandler.c:2415 +#: rewrite/rewriteHandler.c:2438 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Vyer som innehåller DISTINCT är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2418 +#: rewrite/rewriteHandler.c:2441 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Vyer som innehåller GROUP BY är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2421 +#: rewrite/rewriteHandler.c:2444 msgid "Views containing HAVING are not automatically updatable." msgstr "Vyer som innehåller HAVING är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2424 +#: rewrite/rewriteHandler.c:2447 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "Vyer som innehåller UNION, INTERSECT eller EXCEPT är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2427 +#: rewrite/rewriteHandler.c:2450 msgid "Views containing WITH are not automatically updatable." msgstr "Vyer som innehåller WITH är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2430 +#: rewrite/rewriteHandler.c:2453 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Vyer som innehåller LIMIT eller OFFSET är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2442 +#: rewrite/rewriteHandler.c:2465 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Vyer som returnerar aggregatfunktioner är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2445 +#: rewrite/rewriteHandler.c:2468 msgid "Views that return window functions are not automatically updatable." msgstr "Vyer som returnerar fönsterfunktioner uppdateras inte automatiskt." -#: rewrite/rewriteHandler.c:2448 +#: rewrite/rewriteHandler.c:2471 msgid "Views that return set-returning functions are not automatically updatable." msgstr "Vyer som returnerar mängd-returnerande funktioner är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2455 rewrite/rewriteHandler.c:2459 -#: rewrite/rewriteHandler.c:2467 +#: rewrite/rewriteHandler.c:2478 rewrite/rewriteHandler.c:2482 +#: rewrite/rewriteHandler.c:2490 msgid "Views that do not select from a single table or view are not automatically updatable." msgstr "Vyer som inte läser från en ensam tabell eller vy är inte automatiskt uppdateringsbar." -#: rewrite/rewriteHandler.c:2470 +#: rewrite/rewriteHandler.c:2493 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Vyer som innehåller TABLESAMPLE är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2494 +#: rewrite/rewriteHandler.c:2517 msgid "Views that have no updatable columns are not automatically updatable." msgstr "Vyer som inte har några uppdateringsbara kolumner är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:2971 +#: rewrite/rewriteHandler.c:2994 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "kan inte insert:a i kolumn \"%s\" i vy \"%s\"" -#: rewrite/rewriteHandler.c:2979 +#: rewrite/rewriteHandler.c:3002 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "kan inte uppdatera kolumn \"%s\" i view \"%s\"" -#: rewrite/rewriteHandler.c:3449 +#: rewrite/rewriteHandler.c:3475 +#, c-format +msgid "DO INSTEAD NOTIFY rules are not supported for data-modifying statements in WITH" +msgstr "DO INSTEAD NOTIFY-regler stöds inte för datamodifierande satser i WITH" + +#: rewrite/rewriteHandler.c:3486 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "DO INSTEAD NOTHING-regler stöds inte för datamodifierande satser i WITH" -#: rewrite/rewriteHandler.c:3463 +#: rewrite/rewriteHandler.c:3500 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "villkorliga DO INSTEAD-regler stöds inte för datamodifierande satser i WITH" -#: rewrite/rewriteHandler.c:3467 +#: rewrite/rewriteHandler.c:3504 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "DO ALSO-regler stöds inte för datamodifierande satser i WITH" -#: rewrite/rewriteHandler.c:3472 +#: rewrite/rewriteHandler.c:3509 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "fler-satsiga DO INSTEAD-regler stöds inte för datamodifierande satser i WITH" -#: rewrite/rewriteHandler.c:3663 rewrite/rewriteHandler.c:3671 -#: rewrite/rewriteHandler.c:3679 +#: rewrite/rewriteHandler.c:3700 rewrite/rewriteHandler.c:3708 +#: rewrite/rewriteHandler.c:3716 #, c-format msgid "Views with conditional DO INSTEAD rules are not automatically updatable." msgstr "Vyer med villkorliga DO INSTEAD-regler är inte automatiskt uppdateringsbara." -#: rewrite/rewriteHandler.c:3772 +#: rewrite/rewriteHandler.c:3809 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "kan inte utföra INSERT RETURNING på relation \"%s\"" -#: rewrite/rewriteHandler.c:3774 +#: rewrite/rewriteHandler.c:3811 #, c-format msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "Du behöver en villkorslös ON INSERT DO INSTEAD-regel med en RETURNING-klausul." -#: rewrite/rewriteHandler.c:3779 +#: rewrite/rewriteHandler.c:3816 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "kan inte utföra UPDATE RETURNING på relation \"%s\"" -#: rewrite/rewriteHandler.c:3781 +#: rewrite/rewriteHandler.c:3818 #, c-format msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "Du behöver en villkorslös ON UPDATE DO INSTEAD-regel med en RETURNING-klausul." -#: rewrite/rewriteHandler.c:3786 +#: rewrite/rewriteHandler.c:3823 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "kan inte utföra DELETE RETURNING på relation \"%s\"" -#: rewrite/rewriteHandler.c:3788 +#: rewrite/rewriteHandler.c:3825 #, c-format msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "Du behöver en villkorslös ON DELETE DO INSTEAD-regel med en RETURNING-klausul." -#: rewrite/rewriteHandler.c:3806 +#: rewrite/rewriteHandler.c:3843 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" msgstr "INSERT med ON CONFLICT-klausul kan inte användas med tabell som har INSERT- eller UPDATE-regler" -#: rewrite/rewriteHandler.c:3863 +#: rewrite/rewriteHandler.c:3900 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" msgstr "WITH kan inte användas i en fråga där regler skrivit om den till flera olika frågor" @@ -18179,7 +18212,7 @@ msgid "missing Language parameter" msgstr "saknar parameter \"Language\"" -#: statistics/dependencies.c:670 statistics/dependencies.c:723 +#: statistics/dependencies.c:682 statistics/dependencies.c:735 #: statistics/mvdistinct.c:333 statistics/mvdistinct.c:386 #: utils/adt/pseudotypes.c:94 utils/adt/pseudotypes.c:122 #: utils/adt/pseudotypes.c:147 utils/adt/pseudotypes.c:171 @@ -18190,7 +18223,7 @@ msgid "cannot accept a value of type %s" msgstr "kan inte acceptera ett värde av type %s" -#: statistics/extended_stats.c:103 +#: statistics/extended_stats.c:105 #, c-format msgid "statistics object \"%s.%s\" could not be computed for relation \"%s.%s\"" msgstr "statistikobjekt \"%s.%s\" kunde inte beräknas för relation \"%s.%s\"" @@ -18200,37 +18233,42 @@ msgid "cannot access temporary tables of other sessions" msgstr "får inte röra temporära tabeller som tillhör andra sessioner" -#: storage/buffer/bufmgr.c:807 +#: storage/buffer/bufmgr.c:735 +#, c-format +msgid "cannot extend relation %s beyond %u blocks" +msgstr "kan inte utöka relation %s utöver %u block" + +#: storage/buffer/bufmgr.c:816 #, c-format msgid "unexpected data beyond EOF in block %u of relation %s" msgstr "oväntad data efter EOF i block %u för relation %s" -#: storage/buffer/bufmgr.c:809 +#: storage/buffer/bufmgr.c:818 #, c-format msgid "This has been seen to occur with buggy kernels; consider updating your system." msgstr "Detta beteende har observerats med buggiga kärnor; fundera på att uppdatera ditt system." -#: storage/buffer/bufmgr.c:907 +#: storage/buffer/bufmgr.c:916 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "felaktig sida i block %u för relation %s; nollställer sidan" -#: storage/buffer/bufmgr.c:4013 +#: storage/buffer/bufmgr.c:4022 #, c-format msgid "could not write block %u of %s" msgstr "kunde inte skriva block %u av %s" -#: storage/buffer/bufmgr.c:4015 +#: storage/buffer/bufmgr.c:4024 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Multipla fel --- skrivfelet kan vara permanent." -#: storage/buffer/bufmgr.c:4036 storage/buffer/bufmgr.c:4055 +#: storage/buffer/bufmgr.c:4045 storage/buffer/bufmgr.c:4064 #, c-format msgid "writing block %u of relation %s" msgstr "skriver block %u i relation %s" -#: storage/buffer/bufmgr.c:4358 +#: storage/buffer/bufmgr.c:4367 #, c-format msgid "snapshot too old" msgstr "snapshot för gammal" @@ -18322,27 +18360,27 @@ msgid "could not read directory \"%s\": %m" msgstr "kunde inte läsa katalog \"%s\": %m" -#: storage/ipc/dsm.c:364 +#: storage/ipc/dsm.c:359 #, c-format msgid "dynamic shared memory control segment is corrupt" msgstr "dynamiskt delat minnes kontrollsegment är korrupt" -#: storage/ipc/dsm.c:411 +#: storage/ipc/dsm.c:406 #, c-format msgid "dynamic shared memory is disabled" msgstr "dynamiskt delat minne är avstängt" -#: storage/ipc/dsm.c:412 +#: storage/ipc/dsm.c:407 #, c-format msgid "Set dynamic_shared_memory_type to a value other than \"none\"." msgstr "Sätt dynamic_shared_memory_type till ett annat värde än \"none\"." -#: storage/ipc/dsm.c:432 +#: storage/ipc/dsm.c:427 #, c-format msgid "dynamic shared memory control segment is not valid" msgstr "dynamiskt delat minnes kontrollsegment är inte giltigt" -#: storage/ipc/dsm.c:527 +#: storage/ipc/dsm.c:522 #, c-format msgid "too many dynamic shared memory segments" msgstr "för många dynamiska delade minnessegment" @@ -18425,10 +18463,10 @@ msgstr "ogiltig meddelandestorlek %zu i kö i delat minne" #: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:190 storage/lmgr/lock.c:905 -#: storage/lmgr/lock.c:943 storage/lmgr/lock.c:2730 storage/lmgr/lock.c:4055 -#: storage/lmgr/lock.c:4120 storage/lmgr/lock.c:4412 -#: storage/lmgr/predicate.c:2401 storage/lmgr/predicate.c:2416 -#: storage/lmgr/predicate.c:3808 storage/lmgr/predicate.c:4962 +#: storage/lmgr/lock.c:943 storage/lmgr/lock.c:2730 storage/lmgr/lock.c:4132 +#: storage/lmgr/lock.c:4197 storage/lmgr/lock.c:4547 +#: storage/lmgr/predicate.c:2476 storage/lmgr/predicate.c:2491 +#: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:5037 #: utils/hash/dynahash.c:1061 #, c-format msgid "out of shared memory" @@ -18459,12 +18497,12 @@ msgid "requested shared memory size overflows size_t" msgstr "efterfrågad delat minnesstorlek överskrider size_t" -#: storage/ipc/standby.c:572 tcop/postgres.c:3012 +#: storage/ipc/standby.c:673 tcop/postgres.c:3034 #, c-format msgid "canceling statement due to conflict with recovery" msgstr "avbryter sats på grund av konflikt med återställning" -#: storage/ipc/standby.c:573 tcop/postgres.c:2294 +#: storage/ipc/standby.c:674 tcop/postgres.c:2294 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "Användartransaktion orsakade deadlock för buffer vid återställning." @@ -18474,17 +18512,17 @@ msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d" msgstr "pg_largeobject-post för OID %u, sida %d har ogiltig datafältstorlek %d" -#: storage/large_object/inv_api.c:284 +#: storage/large_object/inv_api.c:286 #, c-format msgid "invalid flags for opening a large object: %d" msgstr "ogiltiga flaggor för att öppna stort objekt: %d" -#: storage/large_object/inv_api.c:436 +#: storage/large_object/inv_api.c:432 #, c-format msgid "invalid whence setting: %d" msgstr "ogiltig whence-inställning: %d" -#: storage/large_object/inv_api.c:593 +#: storage/large_object/inv_api.c:589 #, c-format msgid "invalid large object write request size: %d" msgstr "ogiltig storlek för stort objects skrivningbegäran: %d" @@ -18620,12 +18658,12 @@ msgstr "Bara RowExclusiveLock eller lägre kan tas på databasobjekt under återställning." #: storage/lmgr/lock.c:906 storage/lmgr/lock.c:944 storage/lmgr/lock.c:2731 -#: storage/lmgr/lock.c:4056 storage/lmgr/lock.c:4121 storage/lmgr/lock.c:4413 +#: storage/lmgr/lock.c:4133 storage/lmgr/lock.c:4198 storage/lmgr/lock.c:4548 #, c-format msgid "You might need to increase max_locks_per_transaction." msgstr "Du kan behöva öka parametern max_locks_per_transaction." -#: storage/lmgr/lock.c:3172 storage/lmgr/lock.c:3288 +#: storage/lmgr/lock.c:3181 storage/lmgr/lock.c:3249 storage/lmgr/lock.c:3365 #, c-format msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object" msgstr "kan inte göra PREPARE samtidigt som vi håller lås på sessionsnivå och transaktionsnivå för samma objekt" @@ -18645,67 +18683,67 @@ msgid "not enough elements in RWConflictPool to record a potential read/write conflict" msgstr "ej tillräckligt med element i RWConflictPool för att spara ner en potentiell läs/skriv-konflikt" -#: storage/lmgr/predicate.c:921 +#: storage/lmgr/predicate.c:977 #, c-format msgid "memory for serializable conflict tracking is nearly exhausted" msgstr "minne för serialiserbar konfliktspårning är nästan slut" -#: storage/lmgr/predicate.c:922 +#: storage/lmgr/predicate.c:978 #, c-format msgid "There might be an idle transaction or a forgotten prepared transaction causing this." msgstr "Orsaken kan vara en stillastående transaktion eller en glömd förberedd transaktion." -#: storage/lmgr/predicate.c:1561 +#: storage/lmgr/predicate.c:1636 #, c-format msgid "deferrable snapshot was unsafe; trying a new one" msgstr "deferrable-snapshot var osäklert; försöker med ett nytt" -#: storage/lmgr/predicate.c:1650 +#: storage/lmgr/predicate.c:1725 #, c-format msgid "\"default_transaction_isolation\" is set to \"serializable\"." msgstr "\"default_transaction_isolation\" är satt till \"serializable\"." -#: storage/lmgr/predicate.c:1651 +#: storage/lmgr/predicate.c:1726 #, c-format msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default." msgstr "Du kan använda \"SET default_transaction_isolation = 'repeatable read'\" för att ändra standardvärdet." -#: storage/lmgr/predicate.c:1691 +#: storage/lmgr/predicate.c:1766 #, c-format msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" msgstr "en snapshot-importerande transaktion får inte vara READ ONLY DEFERRABLE" -#: storage/lmgr/predicate.c:1771 utils/time/snapmgr.c:621 +#: storage/lmgr/predicate.c:1846 utils/time/snapmgr.c:621 #: utils/time/snapmgr.c:627 #, c-format msgid "could not import the requested snapshot" msgstr "kunde inte importera efterfrågat snapshot" -#: storage/lmgr/predicate.c:1772 utils/time/snapmgr.c:628 +#: storage/lmgr/predicate.c:1847 utils/time/snapmgr.c:628 #, c-format msgid "The source process with PID %d is not running anymore." msgstr "Källprocessen med PID %d kör inte längre." -#: storage/lmgr/predicate.c:2402 storage/lmgr/predicate.c:2417 -#: storage/lmgr/predicate.c:3809 +#: storage/lmgr/predicate.c:2477 storage/lmgr/predicate.c:2492 +#: storage/lmgr/predicate.c:3884 #, c-format msgid "You might need to increase max_pred_locks_per_transaction." msgstr "Du kan behöva öka parametern max_pred_locks_per_transaction." -#: storage/lmgr/predicate.c:3963 storage/lmgr/predicate.c:4063 -#: storage/lmgr/predicate.c:4071 storage/lmgr/predicate.c:4110 -#: storage/lmgr/predicate.c:4349 storage/lmgr/predicate.c:4686 -#: storage/lmgr/predicate.c:4698 storage/lmgr/predicate.c:4740 -#: storage/lmgr/predicate.c:4778 +#: storage/lmgr/predicate.c:4038 storage/lmgr/predicate.c:4138 +#: storage/lmgr/predicate.c:4146 storage/lmgr/predicate.c:4185 +#: storage/lmgr/predicate.c:4424 storage/lmgr/predicate.c:4761 +#: storage/lmgr/predicate.c:4773 storage/lmgr/predicate.c:4815 +#: storage/lmgr/predicate.c:4853 #, c-format msgid "could not serialize access due to read/write dependencies among transactions" msgstr "kunde inte serialisera åtkomst på grund av läs/skriv-beroenden bland transaktionerna" -#: storage/lmgr/predicate.c:3965 storage/lmgr/predicate.c:4065 -#: storage/lmgr/predicate.c:4073 storage/lmgr/predicate.c:4112 -#: storage/lmgr/predicate.c:4351 storage/lmgr/predicate.c:4688 -#: storage/lmgr/predicate.c:4700 storage/lmgr/predicate.c:4742 -#: storage/lmgr/predicate.c:4780 +#: storage/lmgr/predicate.c:4040 storage/lmgr/predicate.c:4140 +#: storage/lmgr/predicate.c:4148 storage/lmgr/predicate.c:4187 +#: storage/lmgr/predicate.c:4426 storage/lmgr/predicate.c:4763 +#: storage/lmgr/predicate.c:4775 storage/lmgr/predicate.c:4817 +#: storage/lmgr/predicate.c:4855 #, c-format msgid "The transaction might succeed if retried." msgstr "Transaktionen kan lyckas om den körs igen." @@ -18783,118 +18821,123 @@ msgid "corrupted item pointer: offset = %u, length = %u" msgstr "trasig postpekare: offset = %u, längd = %u" -#: storage/smgr/md.c:449 storage/smgr/md.c:967 +#: storage/smgr/md.c:438 storage/smgr/md.c:1009 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "kunde inte trunkera fil \"%s\": %m" -#: storage/smgr/md.c:516 +#: storage/smgr/md.c:558 #, c-format msgid "cannot extend file \"%s\" beyond %u blocks" msgstr "kan inte utöka fil \"%s\" utöver %u block" -#: storage/smgr/md.c:538 storage/smgr/md.c:747 storage/smgr/md.c:823 +#: storage/smgr/md.c:580 storage/smgr/md.c:789 storage/smgr/md.c:865 #, c-format msgid "could not seek to block %u in file \"%s\": %m" msgstr "kunde inte söka (seek) till block %u i fil \"%s\": %m" -#: storage/smgr/md.c:546 +#: storage/smgr/md.c:588 #, c-format msgid "could not extend file \"%s\": %m" msgstr "kunde inte utöka fil \"%s\": %m" -#: storage/smgr/md.c:548 storage/smgr/md.c:555 storage/smgr/md.c:850 +#: storage/smgr/md.c:590 storage/smgr/md.c:597 storage/smgr/md.c:892 #, c-format msgid "Check free disk space." msgstr "Kontrollera ledigt diskutrymme." -#: storage/smgr/md.c:552 +#: storage/smgr/md.c:594 #, c-format msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" msgstr "kunde inte utöka fil \"%s\": skrev bara %d av %d byte vid block %u" -#: storage/smgr/md.c:765 +#: storage/smgr/md.c:807 #, c-format msgid "could not read block %u in file \"%s\": %m" msgstr "kunde inte läsa block %u i fil \"%s\": %m" -#: storage/smgr/md.c:781 +#: storage/smgr/md.c:823 #, c-format msgid "could not read block %u in file \"%s\": read only %d of %d bytes" msgstr "kunde inte läsa block %u i fil \"%s\": läste bara %d av %d byte" -#: storage/smgr/md.c:841 +#: storage/smgr/md.c:883 #, c-format msgid "could not write block %u in file \"%s\": %m" msgstr "kunde inte skriva block %u i fil \"%s\": %m" -#: storage/smgr/md.c:846 +#: storage/smgr/md.c:888 #, c-format msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "kunde inte skriva block %u i fil \"%s\": skrev bara %d av %d byte" -#: storage/smgr/md.c:938 +#: storage/smgr/md.c:980 #, c-format msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" msgstr "kunde inte trunkera fil \"%s\" till %u block: den är bara %u block nu" -#: storage/smgr/md.c:993 +#: storage/smgr/md.c:1035 #, c-format msgid "could not truncate file \"%s\" to %u blocks: %m" msgstr "kunde inte trunkera fil \"%s\" till %u block: %m" -#: storage/smgr/md.c:1288 +#: storage/smgr/md.c:1330 #, c-format msgid "could not fsync file \"%s\" but retrying: %m" msgstr "kunde inte fsync:a fil \"%s\" men försöker igen: %m" -#: storage/smgr/md.c:1451 +#: storage/smgr/md.c:1493 #, c-format msgid "could not forward fsync request because request queue is full" msgstr "kunde inte skicka vidare fsync-förfrågan då kön för förfrågningar är full" -#: storage/smgr/md.c:1951 +#: storage/smgr/md.c:1993 #, c-format msgid "could not open file \"%s\" (target block %u): previous segment is only %u blocks" msgstr "kunde inte öppna fil \"%s\" (målblock %u): föregående segment är bara %u block" -#: storage/smgr/md.c:1965 +#: storage/smgr/md.c:2007 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "kunde inte öppna fil \"%s\" (målblock %u): %m" -#: tcop/fastpath.c:111 tcop/fastpath.c:463 tcop/fastpath.c:593 +#: tcop/fastpath.c:111 tcop/fastpath.c:469 tcop/fastpath.c:599 #, c-format msgid "invalid argument size %d in function call message" msgstr "ogiltig argumentstorlek %d i funktionsaropsmeddelande" -#: tcop/fastpath.c:309 +#: tcop/fastpath.c:227 +#, c-format +msgid "cannot call function %s via fastpath interface" +msgstr "kan inte anropa funktionen %s via fastpath-interface" + +#: tcop/fastpath.c:315 #, c-format msgid "fastpath function call: \"%s\" (OID %u)" msgstr "fastpath funktionsanrop: \"%s\" (OID %u)" -#: tcop/fastpath.c:391 tcop/postgres.c:1192 tcop/postgres.c:1455 +#: tcop/fastpath.c:397 tcop/postgres.c:1192 tcop/postgres.c:1455 #: tcop/postgres.c:1835 tcop/postgres.c:2053 #, c-format msgid "duration: %s ms" msgstr "varaktighet %s ms" -#: tcop/fastpath.c:395 +#: tcop/fastpath.c:401 #, c-format msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" msgstr "varaktighet: %s ms fastpath funktionsanrop: \"%s\" (OID %u)" -#: tcop/fastpath.c:431 tcop/fastpath.c:558 +#: tcop/fastpath.c:437 tcop/fastpath.c:564 #, c-format msgid "function call message contains %d arguments but function requires %d" msgstr "meddelande för funktionsanrop innehåller %d argument men funktionen kräver %d" -#: tcop/fastpath.c:439 +#: tcop/fastpath.c:445 #, c-format msgid "function call message contains %d argument formats but %d arguments" msgstr "meddelande för funktioonsanrop innehåller %d argumentformat men %d argument" -#: tcop/fastpath.c:526 tcop/fastpath.c:609 +#: tcop/fastpath.c:532 tcop/fastpath.c:615 #, c-format msgid "incorrect binary data format in function argument %d" msgstr "inkorrekt binärt dataformat i funktionsargument %d" @@ -18905,7 +18948,7 @@ msgstr "oväntat EOF från klienten" #: tcop/postgres.c:432 tcop/postgres.c:444 tcop/postgres.c:455 -#: tcop/postgres.c:467 tcop/postgres.c:4354 +#: tcop/postgres.c:467 tcop/postgres.c:4378 #, c-format msgid "invalid frontend message type %d" msgstr "ogiltig frontend-meddelandetyp %d" @@ -19038,7 +19081,7 @@ 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 "Postmastern har sagt åt denna serverprocess att rulla tillbaka den aktuella transaktionen och avsluta då en annan process har avslutats onormalt och har eventuellt trasat sönder delat minne." -#: tcop/postgres.c:2621 tcop/postgres.c:2942 +#: tcop/postgres.c:2621 tcop/postgres.c:2960 #, c-format msgid "In a moment you should be able to reconnect to the database and repeat your command." msgstr "Du kan strax återansluta till databasen och upprepa kommandot." @@ -19053,127 +19096,127 @@ 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 "En ogiltig flyttalsoperation har signalerats. Detta beror troligen på ett resultat som är utanför giltigt intervall eller en ogiltig operation så som division med noll." -#: tcop/postgres.c:2872 +#: tcop/postgres.c:2890 #, c-format msgid "canceling authentication due to timeout" msgstr "avbryter autentisering på grund av timeout" -#: tcop/postgres.c:2876 +#: tcop/postgres.c:2894 #, c-format msgid "terminating autovacuum process due to administrator command" msgstr "avslutar autovacuum-process på grund av ett administratörskommando" -#: tcop/postgres.c:2880 +#: tcop/postgres.c:2898 #, c-format msgid "terminating logical replication worker due to administrator command" msgstr "avslutar logisk replikeringsarbetare på grund av ett administratörskommando" -#: tcop/postgres.c:2884 +#: tcop/postgres.c:2902 #, c-format msgid "logical replication launcher shutting down" msgstr "logisk replikeringsuppstartare stänger ner" -#: tcop/postgres.c:2897 tcop/postgres.c:2907 tcop/postgres.c:2940 +#: tcop/postgres.c:2915 tcop/postgres.c:2925 tcop/postgres.c:2958 #, c-format msgid "terminating connection due to conflict with recovery" msgstr "avslutar anslutning på grund av konflikt med återställning" -#: tcop/postgres.c:2913 +#: tcop/postgres.c:2931 #, c-format msgid "terminating connection due to administrator command" msgstr "avslutar anslutning på grund av ett administratörskommando" -#: tcop/postgres.c:2923 +#: tcop/postgres.c:2941 #, c-format msgid "connection to client lost" msgstr "anslutning till klient har brutits" -#: tcop/postgres.c:2989 +#: tcop/postgres.c:3011 #, c-format msgid "canceling statement due to lock timeout" msgstr "avbryter sats på grund av lås-timeout" -#: tcop/postgres.c:2996 +#: tcop/postgres.c:3018 #, c-format msgid "canceling statement due to statement timeout" msgstr "avbryter sats på grund av sats-timeout" -#: tcop/postgres.c:3003 +#: tcop/postgres.c:3025 #, c-format msgid "canceling autovacuum task" msgstr "avbryter autovacuum-uppgift" -#: tcop/postgres.c:3026 +#: tcop/postgres.c:3048 #, c-format msgid "canceling statement due to user request" msgstr "avbryter sats på användares begäran" -#: tcop/postgres.c:3036 +#: tcop/postgres.c:3058 #, c-format msgid "terminating connection due to idle-in-transaction timeout" msgstr "terminerar anslutning på grund av idle-in-transaction-timeout" -#: tcop/postgres.c:3150 +#: tcop/postgres.c:3172 #, c-format msgid "stack depth limit exceeded" msgstr "maximalt stackdjup överskridet" -#: tcop/postgres.c:3151 +#: tcop/postgres.c:3173 #, c-format msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate." msgstr "Öka konfigurationsparametern \"max_stack_depth\" (nu %dkB) efter att ha undersökt att plattformens gräns för stackdjup är tillräcklig." -#: tcop/postgres.c:3214 +#: tcop/postgres.c:3236 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." msgstr "\"max_stack_depth\" får ej överskrida %ldkB." -#: tcop/postgres.c:3216 +#: tcop/postgres.c:3238 #, c-format msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." msgstr "Öka plattformens stackdjupbegränsning via \"ulimit -s\" eller motsvarande." -#: tcop/postgres.c:3576 +#: tcop/postgres.c:3598 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "ogiltigt kommandoradsargument för serverprocess: %s" -#: tcop/postgres.c:3577 tcop/postgres.c:3583 +#: tcop/postgres.c:3599 tcop/postgres.c:3605 #, c-format msgid "Try \"%s --help\" for more information." msgstr "Försök med \"%s --help\" för mer information." -#: tcop/postgres.c:3581 +#: tcop/postgres.c:3603 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s: ogiltigt kommandoradsargument: %s" -#: tcop/postgres.c:3643 +#: tcop/postgres.c:3665 #, c-format msgid "%s: no database nor user name specified" msgstr "%s: ingen databas eller användarnamn angivet" -#: tcop/postgres.c:4262 +#: tcop/postgres.c:4286 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "ogiltig subtyp %d för CLOSE-meddelande" -#: tcop/postgres.c:4297 +#: tcop/postgres.c:4321 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "ogiltig subtyp %d för DESCRIBE-meddelande" -#: tcop/postgres.c:4375 +#: tcop/postgres.c:4399 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "fastpath-funktionsanrop stöds inte i en replikeringsanslutning" -#: tcop/postgres.c:4379 +#: tcop/postgres.c:4403 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "utökat frågeprotokoll stöds inte i en replikeringsanslutning" -#: tcop/postgres.c:4549 +#: tcop/postgres.c:4573 #, c-format msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" msgstr "nedkoppling: sessionstid: %d:%02d:%02d.%03d användare=%s databas=%s värd=%s%s%s" @@ -19343,12 +19386,12 @@ msgstr "saknar ordlistparameter" #: tsearch/spell.c:380 tsearch/spell.c:397 tsearch/spell.c:406 -#: tsearch/spell.c:1036 +#: tsearch/spell.c:1062 #, c-format msgid "invalid affix flag \"%s\"" msgstr "ogiltig affix-flagga \"%s\"" -#: tsearch/spell.c:384 tsearch/spell.c:1040 +#: tsearch/spell.c:384 tsearch/spell.c:1066 #, c-format msgid "affix flag \"%s\" is out of range" msgstr "affix-flaggan \"%s\" är utanför giltigt intervall" @@ -19368,33 +19411,33 @@ msgid "could not open dictionary file \"%s\": %m" msgstr "kunde inte öppna ordboksfil \"%s\": %m" -#: tsearch/spell.c:742 utils/adt/regexp.c:208 +#: tsearch/spell.c:763 utils/adt/regexp.c:208 #, c-format msgid "invalid regular expression: %s" msgstr "ogiltigt reguljärt uttryck: %s" -#: tsearch/spell.c:1163 tsearch/spell.c:1175 tsearch/spell.c:1729 -#: tsearch/spell.c:1734 tsearch/spell.c:1739 +#: tsearch/spell.c:1189 tsearch/spell.c:1201 tsearch/spell.c:1755 +#: tsearch/spell.c:1760 tsearch/spell.c:1765 #, c-format msgid "invalid affix alias \"%s\"" msgstr "ogiltigt affix-alias \"%s\"" -#: tsearch/spell.c:1216 tsearch/spell.c:1287 tsearch/spell.c:1431 +#: tsearch/spell.c:1242 tsearch/spell.c:1313 tsearch/spell.c:1457 #, c-format msgid "could not open affix file \"%s\": %m" msgstr "kunde inte öppna affix-fil \"%s\": %m" -#: tsearch/spell.c:1270 +#: tsearch/spell.c:1296 #, c-format msgid "Ispell dictionary supports only \"default\", \"long\", and \"num\" flag values" msgstr "Ispell-ordbok stöder bara flaggorna \"default\", \"long\" och \"num\"" -#: tsearch/spell.c:1314 +#: tsearch/spell.c:1340 #, c-format msgid "invalid number of flag vector aliases" msgstr "ogiltigt antal alias i flaggvektor" -#: tsearch/spell.c:1547 +#: tsearch/spell.c:1573 #, c-format msgid "affix file contains both old-style and new-style commands" msgstr "affix-fil innehåller kommandon på gammalt och nytt format" @@ -19466,127 +19509,127 @@ msgid "MaxFragments should be >= 0" msgstr "MaxFragments skall vara >= 0" -#: utils/adt/acl.c:170 utils/adt/name.c:91 +#: utils/adt/acl.c:169 utils/adt/name.c:91 #, c-format msgid "identifier too long" msgstr "identifieraren för lång" -#: utils/adt/acl.c:171 utils/adt/name.c:92 +#: utils/adt/acl.c:170 utils/adt/name.c:92 #, c-format msgid "Identifier must be less than %d characters." msgstr "Identifierare måste vara mindre än %d tecken." -#: utils/adt/acl.c:257 +#: utils/adt/acl.c:256 #, c-format msgid "unrecognized key word: \"%s\"" msgstr "okänt nyckelord: \"%s\"" -#: utils/adt/acl.c:258 +#: utils/adt/acl.c:257 #, c-format msgid "ACL key word must be \"group\" or \"user\"." msgstr "ACL-nyckelord måste vara \"group\" eller \"user\"." -#: utils/adt/acl.c:263 +#: utils/adt/acl.c:262 #, c-format msgid "missing name" msgstr "namn saknas" -#: utils/adt/acl.c:264 +#: utils/adt/acl.c:263 #, c-format msgid "A name must follow the \"group\" or \"user\" key word." msgstr "Ett namn måste följa efter nyckelorden \"group\" resp. \"user\"." -#: utils/adt/acl.c:270 +#: utils/adt/acl.c:269 #, c-format msgid "missing \"=\" sign" msgstr "saknar \"=\"-tecken" -#: utils/adt/acl.c:323 +#: utils/adt/acl.c:322 #, c-format msgid "invalid mode character: must be one of \"%s\"" msgstr "ogiltigt lägestecken: måste vara en av \"%s\"" -#: utils/adt/acl.c:345 +#: utils/adt/acl.c:344 #, c-format msgid "a name must follow the \"/\" sign" msgstr "ett namn måste följa på tecknet \"/\"" -#: utils/adt/acl.c:353 +#: utils/adt/acl.c:352 #, c-format msgid "defaulting grantor to user ID %u" msgstr "sätter fullmaktsgivaranvändar-ID till standardvärdet %u" -#: utils/adt/acl.c:544 +#: utils/adt/acl.c:543 #, c-format msgid "ACL array contains wrong data type" msgstr "ACL-array innehåller fel datatyp" -#: utils/adt/acl.c:548 +#: utils/adt/acl.c:547 #, c-format msgid "ACL arrays must be one-dimensional" msgstr "ACL-array:er måste vara endimensionella" -#: utils/adt/acl.c:552 +#: utils/adt/acl.c:551 #, c-format msgid "ACL arrays must not contain null values" msgstr "ACL-array:er får inte innehålla null-värden" -#: utils/adt/acl.c:576 +#: utils/adt/acl.c:575 #, c-format msgid "extra garbage at the end of the ACL specification" msgstr "skräp vid slutet av ACL-angivelse" -#: utils/adt/acl.c:1198 +#: utils/adt/acl.c:1197 #, c-format msgid "grant options cannot be granted back to your own grantor" msgstr "fullmaksgivarflaggor kan inte ges tillbaka till den som givit det till dig" -#: utils/adt/acl.c:1259 +#: utils/adt/acl.c:1258 #, c-format msgid "dependent privileges exist" msgstr "det finns beroende privilegier" -#: utils/adt/acl.c:1260 +#: utils/adt/acl.c:1259 #, c-format msgid "Use CASCADE to revoke them too." msgstr "Använd CASCADE för att återkalla dem med." -#: utils/adt/acl.c:1522 +#: utils/adt/acl.c:1521 #, c-format msgid "aclinsert is no longer supported" msgstr "aclinsert stöds inte länge" -#: utils/adt/acl.c:1532 +#: utils/adt/acl.c:1531 #, c-format msgid "aclremove is no longer supported" msgstr "aclremove stöds inte längre" -#: utils/adt/acl.c:1618 utils/adt/acl.c:1672 +#: utils/adt/acl.c:1617 utils/adt/acl.c:1671 #, c-format msgid "unrecognized privilege type: \"%s\"" msgstr "okänd privilegietyp: \"%s\"" -#: utils/adt/acl.c:3472 utils/adt/regproc.c:102 utils/adt/regproc.c:277 +#: utils/adt/acl.c:3471 utils/adt/regproc.c:102 utils/adt/regproc.c:277 #, c-format msgid "function \"%s\" does not exist" msgstr "funktionen \"%s\" finns inte" -#: utils/adt/acl.c:4944 +#: utils/adt/acl.c:4947 #, c-format msgid "must be member of role \"%s\"" msgstr "måste vara medlem i rollen \"%s\"" -#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 -#: utils/adt/arrayfuncs.c:1531 utils/adt/arrayfuncs.c:3263 -#: utils/adt/arrayfuncs.c:3401 utils/adt/arrayfuncs.c:5858 -#: utils/adt/arrayfuncs.c:6169 utils/adt/arrayutils.c:93 +#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:933 +#: utils/adt/arrayfuncs.c:1520 utils/adt/arrayfuncs.c:3263 +#: utils/adt/arrayfuncs.c:3403 utils/adt/arrayfuncs.c:5866 +#: utils/adt/arrayfuncs.c:6177 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 "array-storlek överskrider maximalt tillåtna (%d)" -#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:471 -#: utils/adt/array_userfuncs.c:551 utils/adt/json.c:1765 utils/adt/json.c:1860 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:472 +#: utils/adt/array_userfuncs.c:552 utils/adt/json.c:1765 utils/adt/json.c:1860 #: utils/adt/json.c:1898 utils/adt/jsonb.c:1128 utils/adt/jsonb.c:1157 #: utils/adt/jsonb.c:1549 utils/adt/jsonb.c:1713 utils/adt/jsonb.c:1723 #, c-format @@ -19599,15 +19642,15 @@ msgstr "indatatyp är inte en array" #: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 -#: utils/adt/arrayfuncs.c:1334 utils/adt/float.c:1234 utils/adt/float.c:1308 -#: utils/adt/float.c:3585 utils/adt/float.c:3601 utils/adt/int.c:608 -#: utils/adt/int.c:637 utils/adt/int.c:658 utils/adt/int.c:689 -#: utils/adt/int.c:722 utils/adt/int.c:744 utils/adt/int.c:892 -#: utils/adt/int.c:913 utils/adt/int.c:940 utils/adt/int.c:980 -#: utils/adt/int.c:1001 utils/adt/int.c:1028 utils/adt/int.c:1061 -#: utils/adt/int.c:1144 utils/adt/int8.c:1298 utils/adt/numeric.c:2953 -#: utils/adt/numeric.c:2962 utils/adt/varbit.c:1178 utils/adt/varbit.c:1566 -#: utils/adt/varlena.c:1054 utils/adt/varlena.c:2957 +#: utils/adt/float.c:1234 utils/adt/float.c:1308 utils/adt/float.c:3585 +#: utils/adt/float.c:3601 utils/adt/int.c:608 utils/adt/int.c:637 +#: utils/adt/int.c:658 utils/adt/int.c:689 utils/adt/int.c:722 +#: utils/adt/int.c:744 utils/adt/int.c:892 utils/adt/int.c:913 +#: utils/adt/int.c:940 utils/adt/int.c:980 utils/adt/int.c:1001 +#: utils/adt/int.c:1028 utils/adt/int.c:1061 utils/adt/int.c:1144 +#: utils/adt/int8.c:1298 utils/adt/numeric.c:2947 utils/adt/numeric.c:2952 +#: utils/adt/varbit.c:1178 utils/adt/varbit.c:1566 utils/adt/varlena.c:1054 +#: utils/adt/varlena.c:2957 #, c-format msgid "integer out of range" msgstr "heltal utanför giltigt intervall" @@ -19644,12 +19687,12 @@ msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "Array:er med olika dimensioner fungerar inte vid konkatenering." -#: utils/adt/array_userfuncs.c:667 utils/adt/array_userfuncs.c:819 +#: utils/adt/array_userfuncs.c:668 utils/adt/array_userfuncs.c:820 #, c-format msgid "searching for elements in multidimensional arrays is not supported" msgstr "sökning efter element i en multidimensionell array stöds inte" -#: utils/adt/array_userfuncs.c:691 +#: utils/adt/array_userfuncs.c:692 #, c-format msgid "initial position must not be null" msgstr "initiala positionen får ej vara null" @@ -19658,14 +19701,14 @@ #: utils/adt/arrayfuncs.c:293 utils/adt/arrayfuncs.c:315 #: utils/adt/arrayfuncs.c:330 utils/adt/arrayfuncs.c:344 #: utils/adt/arrayfuncs.c:350 utils/adt/arrayfuncs.c:357 -#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:504 -#: utils/adt/arrayfuncs.c:515 utils/adt/arrayfuncs.c:530 -#: utils/adt/arrayfuncs.c:551 utils/adt/arrayfuncs.c:581 -#: utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:596 -#: utils/adt/arrayfuncs.c:630 utils/adt/arrayfuncs.c:653 -#: utils/adt/arrayfuncs.c:673 utils/adt/arrayfuncs.c:785 -#: utils/adt/arrayfuncs.c:794 utils/adt/arrayfuncs.c:824 -#: utils/adt/arrayfuncs.c:839 utils/adt/arrayfuncs.c:892 +#: utils/adt/arrayfuncs.c:490 utils/adt/arrayfuncs.c:506 +#: utils/adt/arrayfuncs.c:517 utils/adt/arrayfuncs.c:532 +#: utils/adt/arrayfuncs.c:553 utils/adt/arrayfuncs.c:583 +#: utils/adt/arrayfuncs.c:590 utils/adt/arrayfuncs.c:598 +#: utils/adt/arrayfuncs.c:632 utils/adt/arrayfuncs.c:655 +#: utils/adt/arrayfuncs.c:675 utils/adt/arrayfuncs.c:787 +#: utils/adt/arrayfuncs.c:796 utils/adt/arrayfuncs.c:826 +#: utils/adt/arrayfuncs.c:841 utils/adt/arrayfuncs.c:894 #, c-format msgid "malformed array literal: \"%s\"" msgstr "felaktig array-literal: \"%s\"" @@ -19685,8 +19728,8 @@ msgid "Missing \"%s\" after array dimensions." msgstr "Saknar \"%s\" efter array-dimensioner." -#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2882 -#: utils/adt/arrayfuncs.c:2914 utils/adt/arrayfuncs.c:2929 +#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2881 +#: utils/adt/arrayfuncs.c:2913 utils/adt/arrayfuncs.c:2928 #, c-format msgid "upper bound cannot be less than lower bound" msgstr "övre gränsen kan inte vara lägre än undre gränsen" @@ -19706,81 +19749,81 @@ msgid "Specified array dimensions do not match array contents." msgstr "Angivna array-dimensioner matchar inte array-innehållet." -#: utils/adt/arrayfuncs.c:489 utils/adt/arrayfuncs.c:516 +#: utils/adt/arrayfuncs.c:491 utils/adt/arrayfuncs.c:518 #: utils/adt/rangetypes.c:2116 utils/adt/rangetypes.c:2124 #: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216 #, c-format msgid "Unexpected end of input." msgstr "oväntat slut på indata." -#: utils/adt/arrayfuncs.c:505 utils/adt/arrayfuncs.c:552 -#: utils/adt/arrayfuncs.c:582 utils/adt/arrayfuncs.c:631 +#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:554 +#: utils/adt/arrayfuncs.c:584 utils/adt/arrayfuncs.c:633 #, c-format msgid "Unexpected \"%c\" character." msgstr "oväntat tecken \"%c\"." -#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:654 +#: utils/adt/arrayfuncs.c:533 utils/adt/arrayfuncs.c:656 #, c-format msgid "Unexpected array element." msgstr "Oväntat array-element." -#: utils/adt/arrayfuncs.c:589 +#: utils/adt/arrayfuncs.c:591 #, c-format msgid "Unmatched \"%c\" character." msgstr "Icke matchat tecken \"%c\"." -#: utils/adt/arrayfuncs.c:597 utils/adt/jsonfuncs.c:2381 +#: utils/adt/arrayfuncs.c:599 utils/adt/jsonfuncs.c:2381 #, c-format msgid "Multidimensional arrays must have sub-arrays with matching dimensions." msgstr "Flerdimensionella array:er måste ha underarray:er med matchande dimensioner." -#: utils/adt/arrayfuncs.c:674 +#: utils/adt/arrayfuncs.c:676 #, c-format msgid "Junk after closing right brace." msgstr "Skräp efter avslutande höger parentes." -#: utils/adt/arrayfuncs.c:1296 utils/adt/arrayfuncs.c:3369 -#: utils/adt/arrayfuncs.c:5764 +#: utils/adt/arrayfuncs.c:1298 utils/adt/arrayfuncs.c:3369 +#: utils/adt/arrayfuncs.c:5770 #, c-format msgid "invalid number of dimensions: %d" msgstr "felaktigt antal dimensioner: %d" -#: utils/adt/arrayfuncs.c:1307 +#: utils/adt/arrayfuncs.c:1309 #, c-format msgid "invalid array flags" msgstr "ogiltiga array-flaggor" -#: utils/adt/arrayfuncs.c:1315 +#: utils/adt/arrayfuncs.c:1317 #, c-format msgid "wrong element type" msgstr "fel elementtyp" -#: utils/adt/arrayfuncs.c:1365 utils/adt/rangetypes.c:334 +#: utils/adt/arrayfuncs.c:1354 utils/adt/rangetypes.c:334 #: utils/cache/lsyscache.c:2707 #, c-format msgid "no binary input function available for type %s" msgstr "ingen binär indatafunktion finns för typen %s" -#: utils/adt/arrayfuncs.c:1505 +#: utils/adt/arrayfuncs.c:1494 #, c-format msgid "improper binary format in array element %d" msgstr "felaktigt binärt format i array-element %d" -#: utils/adt/arrayfuncs.c:1586 utils/adt/rangetypes.c:339 +#: utils/adt/arrayfuncs.c:1575 utils/adt/rangetypes.c:339 #: utils/cache/lsyscache.c:2740 #, c-format msgid "no binary output function available for type %s" msgstr "det saknas en binär output-funktion för typen %s" -#: utils/adt/arrayfuncs.c:2064 +#: utils/adt/arrayfuncs.c:2053 #, c-format msgid "slices of fixed-length arrays not implemented" msgstr "slice av fixlängd-array är inte implementerat" -#: utils/adt/arrayfuncs.c:2242 utils/adt/arrayfuncs.c:2264 -#: utils/adt/arrayfuncs.c:2313 utils/adt/arrayfuncs.c:2549 -#: utils/adt/arrayfuncs.c:2860 utils/adt/arrayfuncs.c:5750 -#: utils/adt/arrayfuncs.c:5776 utils/adt/arrayfuncs.c:5787 +#: utils/adt/arrayfuncs.c:2231 utils/adt/arrayfuncs.c:2253 +#: utils/adt/arrayfuncs.c:2302 utils/adt/arrayfuncs.c:2541 +#: utils/adt/arrayfuncs.c:2859 utils/adt/arrayfuncs.c:5756 +#: utils/adt/arrayfuncs.c:5782 utils/adt/arrayfuncs.c:5793 #: utils/adt/json.c:2259 utils/adt/json.c:2334 utils/adt/jsonb.c:1327 #: utils/adt/jsonb.c:1413 utils/adt/jsonfuncs.c:4153 utils/adt/jsonfuncs.c:4304 #: utils/adt/jsonfuncs.c:4349 utils/adt/jsonfuncs.c:4396 @@ -19788,119 +19831,124 @@ msgid "wrong number of array subscripts" msgstr "fel antal array-indexeringar" -#: utils/adt/arrayfuncs.c:2247 utils/adt/arrayfuncs.c:2355 -#: utils/adt/arrayfuncs.c:2613 utils/adt/arrayfuncs.c:2919 +#: utils/adt/arrayfuncs.c:2236 utils/adt/arrayfuncs.c:2344 +#: utils/adt/arrayfuncs.c:2605 utils/adt/arrayfuncs.c:2918 #, c-format msgid "array subscript out of range" msgstr "array-index utanför giltigt område" -#: utils/adt/arrayfuncs.c:2252 +#: utils/adt/arrayfuncs.c:2241 #, c-format msgid "cannot assign null value to an element of a fixed-length array" msgstr "kan inte tilldela null-värde till ett element i en array med fast längd" -#: utils/adt/arrayfuncs.c:2807 +#: utils/adt/arrayfuncs.c:2806 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "uppdatering av slice på fixlängd-array är inte implementerat" -#: utils/adt/arrayfuncs.c:2838 +#: utils/adt/arrayfuncs.c:2837 #, c-format msgid "array slice subscript must provide both boundaries" msgstr "array-slice-index måste inkludera båda gränser" -#: utils/adt/arrayfuncs.c:2839 +#: utils/adt/arrayfuncs.c:2838 #, c-format msgid "When assigning to a slice of an empty array value, slice boundaries must be fully specified." msgstr "Vid tilldelning till en slice av en tom array så måste slice-gränserna anges" -#: utils/adt/arrayfuncs.c:2850 utils/adt/arrayfuncs.c:2945 +#: utils/adt/arrayfuncs.c:2849 utils/adt/arrayfuncs.c:2945 #, c-format msgid "source array too small" msgstr "käll-array för liten" -#: utils/adt/arrayfuncs.c:3525 +#: utils/adt/arrayfuncs.c:3527 #, c-format msgid "null array element not allowed in this context" msgstr "null-element i arrayer stöds inte i detta kontext" -#: utils/adt/arrayfuncs.c:3627 utils/adt/arrayfuncs.c:3798 -#: utils/adt/arrayfuncs.c:4072 +#: utils/adt/arrayfuncs.c:3629 utils/adt/arrayfuncs.c:3800 +#: utils/adt/arrayfuncs.c:4074 #, c-format msgid "cannot compare arrays of different element types" msgstr "kan inte jämföra arrayer med olika elementtyper" -#: utils/adt/arrayfuncs.c:3974 utils/adt/rangetypes.c:1253 +#: utils/adt/arrayfuncs.c:3976 utils/adt/rangetypes.c:1253 #, c-format msgid "could not identify a hash function for type %s" msgstr "kunde inte hitta en hash-funktion för typ %s" -#: utils/adt/arrayfuncs.c:5164 +#: utils/adt/arrayfuncs.c:5166 #, c-format msgid "data type %s is not an array type" msgstr "datatypen %s är inte en arraytyp" -#: utils/adt/arrayfuncs.c:5219 +#: utils/adt/arrayfuncs.c:5221 #, c-format msgid "cannot accumulate null arrays" msgstr "kan inte ackumulera null-array:er" -#: utils/adt/arrayfuncs.c:5247 +#: utils/adt/arrayfuncs.c:5249 #, c-format msgid "cannot accumulate empty arrays" msgstr "kan inte ackumulera tomma array:er" -#: utils/adt/arrayfuncs.c:5276 utils/adt/arrayfuncs.c:5282 +#: utils/adt/arrayfuncs.c:5278 utils/adt/arrayfuncs.c:5284 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "kan inte ackumulera arrayer med olika dimensioner" -#: utils/adt/arrayfuncs.c:5648 utils/adt/arrayfuncs.c:5688 +#: utils/adt/arrayfuncs.c:5654 utils/adt/arrayfuncs.c:5694 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "dimensionsarray eller undre gränsarray kan inte vara null" -#: utils/adt/arrayfuncs.c:5751 utils/adt/arrayfuncs.c:5777 +#: utils/adt/arrayfuncs.c:5757 utils/adt/arrayfuncs.c:5783 #, c-format msgid "Dimension array must be one dimensional." msgstr "Dimensionsarray måste vara endimensionell." -#: utils/adt/arrayfuncs.c:5756 utils/adt/arrayfuncs.c:5782 +#: utils/adt/arrayfuncs.c:5762 utils/adt/arrayfuncs.c:5788 #, c-format msgid "dimension values cannot be null" msgstr "dimensionsvärden kan inte vara null" -#: utils/adt/arrayfuncs.c:5788 +#: utils/adt/arrayfuncs.c:5794 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "Undre arraygräns har annan storlek än dimensionsarray." -#: utils/adt/arrayfuncs.c:6034 +#: utils/adt/arrayfuncs.c:6042 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "borttagning av element från en multidimensionell array stöds inte" -#: utils/adt/arrayfuncs.c:6311 +#: utils/adt/arrayfuncs.c:6319 #, c-format msgid "thresholds must be one-dimensional array" msgstr "gränsvärden måste vara en endimensionell array" -#: utils/adt/arrayfuncs.c:6316 +#: utils/adt/arrayfuncs.c:6324 #, c-format msgid "thresholds array must not contain NULLs" msgstr "gränsvärdesarray får inte innehålla NULLL-värden" -#: utils/adt/arrayutils.c:209 +#: utils/adt/arrayutils.c:136 +#, c-format +msgid "array lower bound is too large: %d" +msgstr "lägre gräns för array är för stor: %d" + +#: utils/adt/arrayutils.c:236 #, c-format msgid "typmod array must be type cstring[]" msgstr "typmod-array måste ha typ cstring[]" -#: utils/adt/arrayutils.c:214 +#: utils/adt/arrayutils.c:241 #, c-format msgid "typmod array must be one-dimensional" msgstr "typmod-array måste vara endimensionell" -#: utils/adt/arrayutils.c:219 +#: utils/adt/arrayutils.c:246 #, c-format msgid "typmod array must not contain nulls" msgstr "typmod-arrayen får inte innehålla null-värden" @@ -19921,9 +19969,9 @@ #: utils/adt/geo_ops.c:4582 utils/adt/geo_ops.c:4589 utils/adt/mac.c:94 #: utils/adt/mac8.c:93 utils/adt/mac8.c:166 utils/adt/mac8.c:184 #: utils/adt/mac8.c:202 utils/adt/mac8.c:221 utils/adt/nabstime.c:1542 -#: utils/adt/network.c:58 utils/adt/numeric.c:593 utils/adt/numeric.c:620 -#: utils/adt/numeric.c:5498 utils/adt/numeric.c:5522 utils/adt/numeric.c:5546 -#: utils/adt/numeric.c:6348 utils/adt/numeric.c:6374 utils/adt/oid.c:44 +#: utils/adt/network.c:58 utils/adt/numeric.c:585 utils/adt/numeric.c:612 +#: utils/adt/numeric.c:5488 utils/adt/numeric.c:5512 utils/adt/numeric.c:5536 +#: utils/adt/numeric.c:6327 utils/adt/numeric.c:6353 utils/adt/oid.c:44 #: utils/adt/oid.c:58 utils/adt/oid.c:64 utils/adt/oid.c:86 #: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:50 utils/adt/tid.c:72 #: utils/adt/tid.c:80 utils/adt/tid.c:88 utils/adt/txid.c:405 @@ -19946,8 +19994,8 @@ #: utils/adt/int.c:846 utils/adt/int.c:954 utils/adt/int.c:1043 #: utils/adt/int.c:1082 utils/adt/int.c:1110 utils/adt/int8.c:597 #: utils/adt/int8.c:657 utils/adt/int8.c:897 utils/adt/int8.c:1005 -#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6912 -#: utils/adt/numeric.c:7201 utils/adt/numeric.c:8213 utils/adt/timestamp.c:3210 +#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6891 +#: utils/adt/numeric.c:7180 utils/adt/numeric.c:8247 utils/adt/timestamp.c:3242 #, c-format msgid "division by zero" msgstr "division med noll" @@ -19978,8 +20026,8 @@ msgid "date/time value \"current\" is no longer supported" msgstr "datum/tid-värde \"current\" stöds inte längre" -#: utils/adt/date.c:173 utils/adt/date.c:181 utils/adt/formatting.c:3578 -#: utils/adt/formatting.c:3587 +#: utils/adt/date.c:173 utils/adt/date.c:181 utils/adt/formatting.c:3625 +#: utils/adt/formatting.c:3634 #, c-format msgid "date out of range: \"%s\"" msgstr "datum utanför giltigt intervall \"%s\"" @@ -20003,29 +20051,29 @@ #: utils/adt/date.c:328 utils/adt/date.c:351 utils/adt/date.c:377 #: utils/adt/date.c:1093 utils/adt/date.c:1139 utils/adt/date.c:1728 #: utils/adt/date.c:1759 utils/adt/date.c:1788 utils/adt/date.c:2525 -#: utils/adt/datetime.c:1688 utils/adt/formatting.c:3453 -#: utils/adt/formatting.c:3485 utils/adt/formatting.c:3553 +#: utils/adt/datetime.c:1688 utils/adt/formatting.c:3500 +#: utils/adt/formatting.c:3532 utils/adt/formatting.c:3600 #: utils/adt/json.c:1540 utils/adt/json.c:1562 utils/adt/jsonb.c:825 #: utils/adt/jsonb.c:849 utils/adt/nabstime.c:459 utils/adt/nabstime.c:502 #: utils/adt/nabstime.c:532 utils/adt/nabstime.c:575 utils/adt/timestamp.c:231 #: utils/adt/timestamp.c:263 utils/adt/timestamp.c:683 #: utils/adt/timestamp.c:692 utils/adt/timestamp.c:770 -#: utils/adt/timestamp.c:803 utils/adt/timestamp.c:2789 -#: utils/adt/timestamp.c:2810 utils/adt/timestamp.c:2823 -#: utils/adt/timestamp.c:2832 utils/adt/timestamp.c:2840 -#: utils/adt/timestamp.c:2895 utils/adt/timestamp.c:2918 -#: utils/adt/timestamp.c:2931 utils/adt/timestamp.c:2942 -#: utils/adt/timestamp.c:2950 utils/adt/timestamp.c:3506 -#: utils/adt/timestamp.c:3631 utils/adt/timestamp.c:3672 -#: utils/adt/timestamp.c:3753 utils/adt/timestamp.c:3799 -#: utils/adt/timestamp.c:3902 utils/adt/timestamp.c:4302 -#: utils/adt/timestamp.c:4498 utils/adt/timestamp.c:4837 -#: utils/adt/timestamp.c:4851 utils/adt/timestamp.c:4856 -#: utils/adt/timestamp.c:4870 utils/adt/timestamp.c:4915 -#: utils/adt/timestamp.c:4947 utils/adt/timestamp.c:4954 -#: utils/adt/timestamp.c:4987 utils/adt/timestamp.c:4991 -#: utils/adt/timestamp.c:5060 utils/adt/timestamp.c:5064 -#: utils/adt/timestamp.c:5078 utils/adt/timestamp.c:5112 utils/adt/xml.c:2212 +#: utils/adt/timestamp.c:803 utils/adt/timestamp.c:2821 +#: utils/adt/timestamp.c:2842 utils/adt/timestamp.c:2855 +#: utils/adt/timestamp.c:2864 utils/adt/timestamp.c:2872 +#: utils/adt/timestamp.c:2927 utils/adt/timestamp.c:2950 +#: utils/adt/timestamp.c:2963 utils/adt/timestamp.c:2974 +#: utils/adt/timestamp.c:2982 utils/adt/timestamp.c:3538 +#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:3704 +#: utils/adt/timestamp.c:3785 utils/adt/timestamp.c:3831 +#: utils/adt/timestamp.c:3934 utils/adt/timestamp.c:4334 +#: utils/adt/timestamp.c:4530 utils/adt/timestamp.c:4869 +#: utils/adt/timestamp.c:4883 utils/adt/timestamp.c:4888 +#: utils/adt/timestamp.c:4902 utils/adt/timestamp.c:4947 +#: utils/adt/timestamp.c:4979 utils/adt/timestamp.c:4986 +#: utils/adt/timestamp.c:5019 utils/adt/timestamp.c:5023 +#: utils/adt/timestamp.c:5092 utils/adt/timestamp.c:5096 +#: utils/adt/timestamp.c:5110 utils/adt/timestamp.c:5144 utils/adt/xml.c:2212 #: utils/adt/xml.c:2219 utils/adt/xml.c:2239 utils/adt/xml.c:2246 #, c-format msgid "timestamp out of range" @@ -20077,15 +20125,15 @@ msgid "\"time with time zone\" units \"%s\" not recognized" msgstr "känner inte igen \"time with time zone\" enhet \"%s\"" -#: utils/adt/date.c:2743 utils/adt/datetime.c:931 utils/adt/datetime.c:1846 +#: utils/adt/date.c:2745 utils/adt/datetime.c:931 utils/adt/datetime.c:1846 #: utils/adt/datetime.c:4632 utils/adt/timestamp.c:504 -#: utils/adt/timestamp.c:531 utils/adt/timestamp.c:4862 -#: utils/adt/timestamp.c:5070 +#: utils/adt/timestamp.c:531 utils/adt/timestamp.c:4894 +#: utils/adt/timestamp.c:5102 #, c-format msgid "time zone \"%s\" not recognized" msgstr "tidszon \"%s\" känns inte igen" -#: utils/adt/date.c:2775 utils/adt/timestamp.c:4904 utils/adt/timestamp.c:5101 +#: utils/adt/date.c:2777 utils/adt/timestamp.c:4936 utils/adt/timestamp.c:5133 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "intervalltidszonen \"%s\" kan inte inkludera månader eller år" @@ -20125,17 +20173,17 @@ msgid "could not open tablespace directory \"%s\": %m" msgstr "kunde inte öppna tabellutrymmeskatalog \"%s\": %m" -#: utils/adt/dbsize.c:764 utils/adt/dbsize.c:832 +#: utils/adt/dbsize.c:768 utils/adt/dbsize.c:836 #, c-format msgid "invalid size: \"%s\"" msgstr "ogiltig storlek: \"%s\"" -#: utils/adt/dbsize.c:833 +#: utils/adt/dbsize.c:837 #, c-format msgid "Invalid size unit: \"%s\"." msgstr "Ogiltig storleksenhet: \"%s\"." -#: utils/adt/dbsize.c:834 +#: utils/adt/dbsize.c:838 #, c-format msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." msgstr "Giltiga enheter är \"bytes\", \"kB\", \"MB\", \"GB\" och \"TB\"." @@ -20238,32 +20286,32 @@ #: utils/adt/float.c:1259 utils/adt/float.c:1333 utils/adt/int.c:334 #: utils/adt/int.c:760 utils/adt/int.c:789 utils/adt/int.c:810 #: utils/adt/int.c:830 utils/adt/int.c:864 utils/adt/int.c:1159 -#: utils/adt/int8.c:1323 utils/adt/numeric.c:3050 utils/adt/numeric.c:3059 +#: utils/adt/int8.c:1323 utils/adt/numeric.c:3041 utils/adt/numeric.c:3046 #, c-format msgid "smallint out of range" msgstr "smallint utanför sitt intervall" -#: utils/adt/float.c:1459 utils/adt/numeric.c:7634 +#: utils/adt/float.c:1459 utils/adt/numeric.c:7613 #, c-format msgid "cannot take square root of a negative number" msgstr "kan inte ta kvadratroten av ett negativt tal" -#: utils/adt/float.c:1501 utils/adt/numeric.c:2853 +#: utils/adt/float.c:1501 utils/adt/numeric.c:2854 #, c-format msgid "zero raised to a negative power is undefined" msgstr "noll upphöjt med ett negativt tal är odefinierat" -#: utils/adt/float.c:1505 utils/adt/numeric.c:2859 +#: utils/adt/float.c:1505 utils/adt/numeric.c:8100 #, c-format msgid "a negative number raised to a non-integer power yields a complex result" msgstr "ett negativt tal upphöjt i en icke-negativ potens ger ett komplext resultat" -#: utils/adt/float.c:1571 utils/adt/float.c:1601 utils/adt/numeric.c:7900 +#: utils/adt/float.c:1571 utils/adt/float.c:1601 utils/adt/numeric.c:7885 #, c-format msgid "cannot take logarithm of zero" msgstr "kan inte ta logartimen av noll" -#: utils/adt/float.c:1575 utils/adt/float.c:1605 utils/adt/numeric.c:7904 +#: utils/adt/float.c:1575 utils/adt/float.c:1605 utils/adt/numeric.c:7889 #, c-format msgid "cannot take logarithm of a negative number" msgstr "kan inte ta logaritmen av ett negativt tal" @@ -20276,12 +20324,12 @@ msgid "input is out of range" msgstr "indata är utanför giltigt intervall" -#: utils/adt/float.c:3561 utils/adt/numeric.c:1493 +#: utils/adt/float.c:3561 utils/adt/numeric.c:1485 #, c-format msgid "count must be greater than zero" msgstr "antal måste vara större än noll" -#: utils/adt/float.c:3566 utils/adt/numeric.c:1500 +#: utils/adt/float.c:3566 utils/adt/numeric.c:1492 #, c-format msgid "operand, lower bound, and upper bound cannot be NaN" msgstr "operand, lägre gräns och övre gräns kan inte vara NaN" @@ -20291,223 +20339,223 @@ msgid "lower and upper bounds must be finite" msgstr "lägre och övre gräns måste vara ändliga" -#: utils/adt/float.c:3610 utils/adt/numeric.c:1513 +#: utils/adt/float.c:3610 utils/adt/numeric.c:1505 #, c-format msgid "lower bound cannot equal upper bound" msgstr "lägre gräns kan inte vara samma som övre gräns" -#: utils/adt/formatting.c:482 +#: utils/adt/formatting.c:486 #, c-format msgid "invalid format specification for an interval value" msgstr "ogiltig formatspecifikation för ett intervallvärdei" -#: utils/adt/formatting.c:483 +#: utils/adt/formatting.c:487 #, c-format msgid "Intervals are not tied to specific calendar dates." msgstr "Intervaller är inte kopplade till specifika kalenderdatum." -#: utils/adt/formatting.c:1051 +#: utils/adt/formatting.c:1055 #, c-format msgid "\"EEEE\" must be the last pattern used" msgstr "\"EEEE\" måste vara det sista mönstret som används" -#: utils/adt/formatting.c:1059 +#: utils/adt/formatting.c:1063 #, c-format msgid "\"9\" must be ahead of \"PR\"" msgstr "\"9\" måste vara före \"PR\"" -#: utils/adt/formatting.c:1075 +#: utils/adt/formatting.c:1079 #, c-format msgid "\"0\" must be ahead of \"PR\"" msgstr "\"0\" måste vara före \"PR\"" -#: utils/adt/formatting.c:1102 +#: utils/adt/formatting.c:1106 #, c-format msgid "multiple decimal points" msgstr "multipla decimalpunkter" -#: utils/adt/formatting.c:1106 utils/adt/formatting.c:1189 +#: utils/adt/formatting.c:1110 utils/adt/formatting.c:1193 #, c-format msgid "cannot use \"V\" and decimal point together" msgstr "kan inte använda \"V\" ach decimalpunkt tillsammans" -#: utils/adt/formatting.c:1118 +#: utils/adt/formatting.c:1122 #, c-format msgid "cannot use \"S\" twice" msgstr "kan inte använda \"S\" två gånger" -#: utils/adt/formatting.c:1122 +#: utils/adt/formatting.c:1126 #, c-format msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" msgstr "kan inte använda \"S\" och \"PL\"/\"MI\"/\"SG\"/\"PR\" tillsammans" -#: utils/adt/formatting.c:1142 +#: utils/adt/formatting.c:1146 #, c-format msgid "cannot use \"S\" and \"MI\" together" msgstr "kan inte använda \"S\" och \"MI\" tillsammans." -#: utils/adt/formatting.c:1152 +#: utils/adt/formatting.c:1156 #, c-format msgid "cannot use \"S\" and \"PL\" together" msgstr "kan inte använda \"S\" och \"PL\" tillsammans." -#: utils/adt/formatting.c:1162 +#: utils/adt/formatting.c:1166 #, c-format msgid "cannot use \"S\" and \"SG\" together" msgstr "kan inte använda \"S\" och \"SG\" tillsammans." -#: utils/adt/formatting.c:1171 +#: utils/adt/formatting.c:1175 #, c-format msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" msgstr "kan inte använda \"PR\" och \"S\"/\"PL\"/\"MI\"/\"SG\" tillsammans." -#: utils/adt/formatting.c:1197 +#: utils/adt/formatting.c:1201 #, c-format msgid "cannot use \"EEEE\" twice" msgstr "kan inte använda \"EEEE\" två gånger" -#: utils/adt/formatting.c:1203 +#: utils/adt/formatting.c:1207 #, c-format msgid "\"EEEE\" is incompatible with other formats" msgstr "\"EEEE\" är inkompatibel med andra format" -#: utils/adt/formatting.c:1204 +#: utils/adt/formatting.c:1208 #, c-format msgid "\"EEEE\" may only be used together with digit and decimal point patterns." msgstr "\"EEEE\" får bara användas tillsammans med siffror- och decimalpunkts-mönster." -#: utils/adt/formatting.c:1393 +#: utils/adt/formatting.c:1397 #, c-format msgid "\"%s\" is not a number" msgstr "\"%s\" är inte ett nummer" -#: utils/adt/formatting.c:1471 +#: utils/adt/formatting.c:1475 #, c-format msgid "case conversion failed: %s" msgstr "case-konvertering misslyckades: %s" -#: utils/adt/formatting.c:1536 +#: utils/adt/formatting.c:1540 #, c-format msgid "could not determine which collation to use for lower() function" msgstr "kunde inte bestämma jämförelse (collation) för funktionen lower()" -#: utils/adt/formatting.c:1661 +#: utils/adt/formatting.c:1665 #, c-format msgid "could not determine which collation to use for upper() function" msgstr "kunde inte bestämma jämförelse (collation) för funktionen upper()" -#: utils/adt/formatting.c:1787 +#: utils/adt/formatting.c:1791 #, c-format msgid "could not determine which collation to use for initcap() function" msgstr "kunde inte bestämma jämförelse (collation) för funktionen initcap()" -#: utils/adt/formatting.c:2157 +#: utils/adt/formatting.c:2161 #, c-format msgid "invalid combination of date conventions" msgstr "ogiltig kombination av datumkonventioner" -#: utils/adt/formatting.c:2158 +#: utils/adt/formatting.c:2162 #, c-format msgid "Do not mix Gregorian and ISO week date conventions in a formatting template." msgstr "Blanda inte datumkonventionerna Gregoriansk och ISO-veckor i formatteringsmall." -#: utils/adt/formatting.c:2175 +#: utils/adt/formatting.c:2179 #, c-format msgid "conflicting values for \"%s\" field in formatting string" msgstr "värden för \"%s\" i formatsträng står i konflikt med varandra" -#: utils/adt/formatting.c:2177 +#: utils/adt/formatting.c:2181 #, c-format msgid "This value contradicts a previous setting for the same field type." msgstr "Detta värde motsäger en tidigare inställning för samma fälttyp." -#: utils/adt/formatting.c:2241 +#: utils/adt/formatting.c:2245 #, c-format msgid "source string too short for \"%s\" formatting field" msgstr "källsträngen är för kort för formatfält \"%s\"" -#: utils/adt/formatting.c:2243 +#: utils/adt/formatting.c:2247 #, c-format msgid "Field requires %d characters, but only %d remain." msgstr "Fältet kräver %d tecken men bara %d återstår." -#: utils/adt/formatting.c:2246 utils/adt/formatting.c:2260 +#: utils/adt/formatting.c:2250 utils/adt/formatting.c:2264 #, c-format msgid "If your source string is not fixed-width, try using the \"FM\" modifier." msgstr "Om din källsträng inte är av fast längd så testa med modifieraren \"FM\"." -#: utils/adt/formatting.c:2256 utils/adt/formatting.c:2269 -#: utils/adt/formatting.c:2399 +#: utils/adt/formatting.c:2260 utils/adt/formatting.c:2273 +#: utils/adt/formatting.c:2403 #, c-format msgid "invalid value \"%s\" for \"%s\"" msgstr "ogiltigt värde \"%s\" för \"%s\"" -#: utils/adt/formatting.c:2258 +#: utils/adt/formatting.c:2262 #, c-format msgid "Field requires %d characters, but only %d could be parsed." msgstr "Fältet kräver %d tecken men bara %d kunde parsas." -#: utils/adt/formatting.c:2271 +#: utils/adt/formatting.c:2275 #, c-format msgid "Value must be an integer." msgstr "Värdet måste vara ett heltal." -#: utils/adt/formatting.c:2276 +#: utils/adt/formatting.c:2280 #, c-format msgid "value for \"%s\" in source string is out of range" msgstr "värdet för \"%s\" i källsträng är utanför giltigt intervall" -#: utils/adt/formatting.c:2278 +#: utils/adt/formatting.c:2282 #, c-format msgid "Value must be in the range %d to %d." msgstr "Värdet måste vara i intervallet %d till %d." -#: utils/adt/formatting.c:2401 +#: utils/adt/formatting.c:2405 #, c-format msgid "The given value did not match any of the allowed values for this field." msgstr "Det givna värdet matchar inget av de tillåtna värdena för detta fält." -#: utils/adt/formatting.c:2586 utils/adt/formatting.c:2606 -#: utils/adt/formatting.c:2626 utils/adt/formatting.c:2646 -#: utils/adt/formatting.c:2665 utils/adt/formatting.c:2684 -#: utils/adt/formatting.c:2708 utils/adt/formatting.c:2726 -#: utils/adt/formatting.c:2744 utils/adt/formatting.c:2762 -#: utils/adt/formatting.c:2779 utils/adt/formatting.c:2796 +#: utils/adt/formatting.c:2590 utils/adt/formatting.c:2610 +#: utils/adt/formatting.c:2630 utils/adt/formatting.c:2650 +#: utils/adt/formatting.c:2669 utils/adt/formatting.c:2688 +#: utils/adt/formatting.c:2712 utils/adt/formatting.c:2730 +#: utils/adt/formatting.c:2748 utils/adt/formatting.c:2766 +#: utils/adt/formatting.c:2783 utils/adt/formatting.c:2800 #, c-format msgid "localized string format value too long" msgstr "lokaliserat strängformatvärde är för långt" -#: utils/adt/formatting.c:3083 +#: utils/adt/formatting.c:3130 #, c-format msgid "formatting field \"%s\" is only supported in to_char" msgstr "formateringsfält \"%s\" stöds bara i to_char" -#: utils/adt/formatting.c:3194 +#: utils/adt/formatting.c:3241 #, c-format msgid "invalid input string for \"Y,YYY\"" msgstr "ogiltig indatasträng för \"Y,YYY\"" -#: utils/adt/formatting.c:3696 +#: utils/adt/formatting.c:3743 #, c-format msgid "hour \"%d\" is invalid for the 12-hour clock" msgstr "timmen \"%d\" är ogiltigt för en 12-timmars-klocka" -#: utils/adt/formatting.c:3698 +#: utils/adt/formatting.c:3745 #, c-format msgid "Use the 24-hour clock, or give an hour between 1 and 12." msgstr "Använd en 24-timmars-klocka eller ange en timme mellan 1 och 12." -#: utils/adt/formatting.c:3807 +#: utils/adt/formatting.c:3854 #, c-format msgid "cannot calculate day of year without year information" msgstr "kan inte beräkna dag på året utan årsinformation" -#: utils/adt/formatting.c:4674 +#: utils/adt/formatting.c:4721 #, c-format msgid "\"EEEE\" not supported for input" msgstr "\"EEEE\" stöds inte för indata" -#: utils/adt/formatting.c:4686 +#: utils/adt/formatting.c:4733 #, c-format msgid "\"RN\" not supported for input" msgstr "\"RN\" stöds inte för indata" @@ -20645,8 +20693,8 @@ msgid "oidvector has too many elements" msgstr "oidvector har för många element" -#: utils/adt/int.c:1347 utils/adt/int8.c:1453 utils/adt/numeric.c:1401 -#: utils/adt/timestamp.c:5163 utils/adt/timestamp.c:5244 +#: utils/adt/int.c:1347 utils/adt/int8.c:1453 utils/adt/numeric.c:1393 +#: utils/adt/timestamp.c:5195 utils/adt/timestamp.c:5276 #, c-format msgid "step size cannot equal zero" msgstr "stegstorleken kan inte vara noll" @@ -20665,7 +20713,7 @@ #: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031 #: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112 #: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 -#: utils/adt/int8.c:1358 utils/adt/int8.c:1393 utils/adt/numeric.c:3005 +#: utils/adt/int8.c:1358 utils/adt/int8.c:1393 utils/adt/numeric.c:2996 #: utils/adt/varbit.c:1646 #, c-format msgid "bigint out of range" @@ -20777,7 +20825,7 @@ msgid "key value must be scalar, not array, composite, or json" msgstr "nyckelvärde måste vara skalär, inte array, composite eller json" -#: utils/adt/json.c:2012 utils/adt/json.c:2022 utils/fmgr/funcapi.c:1556 +#: utils/adt/json.c:2012 utils/adt/json.c:2022 utils/fmgr/funcapi.c:1557 #, c-format msgid "could not determine data type for argument %d" msgstr "kunde inte lista ut datatypen för argument %d" @@ -20995,27 +21043,22 @@ msgid "cannot delete path in scalar" msgstr "kan inte radera sökväg i skalär" -#: utils/adt/jsonfuncs.c:4524 -#, c-format -msgid "invalid concatenation of jsonb objects" -msgstr "ogiltig sammanslagning av jsonb-objekt" - -#: utils/adt/jsonfuncs.c:4558 +#: utils/adt/jsonfuncs.c:4553 #, c-format msgid "path element at position %d is null" msgstr "sökvägselement vid position %d är null" -#: utils/adt/jsonfuncs.c:4644 +#: utils/adt/jsonfuncs.c:4639 #, c-format msgid "cannot replace existing key" msgstr "kan inte ersätta befintlig nyckel" -#: utils/adt/jsonfuncs.c:4645 +#: utils/adt/jsonfuncs.c:4640 #, c-format msgid "Try using the function jsonb_set to replace key value." msgstr "Försök använda funktionen jsonb_set för att ersätta nyckelvärde." -#: utils/adt/jsonfuncs.c:4727 +#: utils/adt/jsonfuncs.c:4722 #, c-format msgid "path element at position %d is not an integer: \"%s\"" msgstr "sökvägselement vid position %d är inte ett heltal: \"%s\"" @@ -21025,7 +21068,7 @@ msgid "levenshtein argument exceeds maximum length of %d characters" msgstr "levenshtein-argument överskrider maximala längden på %d tecken" -#: utils/adt/like.c:183 utils/adt/selfuncs.c:5651 +#: utils/adt/like.c:183 utils/adt/selfuncs.c:5678 #, c-format msgid "could not determine which collation to use for ILIKE" msgstr "kunde inte bestämma vilken jämförelse (collation) som skall användas för ILIKE" @@ -21256,84 +21299,84 @@ msgid "cannot subtract inet values of different sizes" msgstr "kan inte subtrahera inet-värden av olika storlek" -#: utils/adt/numeric.c:819 +#: utils/adt/numeric.c:811 #, c-format msgid "invalid sign in external \"numeric\" value" msgstr "ogiltigt tecken i externt \"numric\"-värde" -#: utils/adt/numeric.c:825 +#: utils/adt/numeric.c:817 #, c-format msgid "invalid scale in external \"numeric\" value" msgstr "ogiltig skala i externt \"numeric\"-värde" -#: utils/adt/numeric.c:834 +#: utils/adt/numeric.c:826 #, c-format msgid "invalid digit in external \"numeric\" value" msgstr "felaktig siffra i externt numeriskt (\"numeric\") värde " -#: utils/adt/numeric.c:1024 utils/adt/numeric.c:1038 +#: utils/adt/numeric.c:1016 utils/adt/numeric.c:1030 #, c-format msgid "NUMERIC precision %d must be between 1 and %d" msgstr "Precisionen %d för NUMERIC måste vara mellan 1 och %d" -#: utils/adt/numeric.c:1029 +#: utils/adt/numeric.c:1021 #, c-format msgid "NUMERIC scale %d must be between 0 and precision %d" msgstr "Skalan %d för NUMERIC måste vara mellan 0 och precisionen %d" -#: utils/adt/numeric.c:1047 +#: utils/adt/numeric.c:1039 #, c-format msgid "invalid NUMERIC type modifier" msgstr "ogiltig typmodifierare för NUMERIC" -#: utils/adt/numeric.c:1379 +#: utils/adt/numeric.c:1371 #, c-format msgid "start value cannot be NaN" msgstr "startvärde får inte vara NaN" -#: utils/adt/numeric.c:1384 +#: utils/adt/numeric.c:1376 #, c-format msgid "stop value cannot be NaN" msgstr "stoppvärde får inte vara NaN" -#: utils/adt/numeric.c:1394 +#: utils/adt/numeric.c:1386 #, c-format msgid "step size cannot be NaN" msgstr "stegstorlek får inte vara NaN" -#: utils/adt/numeric.c:2589 utils/adt/numeric.c:5561 utils/adt/numeric.c:6006 -#: utils/adt/numeric.c:7710 utils/adt/numeric.c:8135 utils/adt/numeric.c:8249 -#: utils/adt/numeric.c:8322 +#: utils/adt/numeric.c:2588 utils/adt/numeric.c:5551 utils/adt/numeric.c:5985 +#: utils/adt/numeric.c:7691 utils/adt/numeric.c:8157 utils/adt/numeric.c:8283 +#: utils/adt/numeric.c:8356 #, c-format msgid "value overflows numeric format" msgstr "overflow på värde i formatet numeric" -#: utils/adt/numeric.c:2931 +#: utils/adt/numeric.c:2926 #, c-format msgid "cannot convert NaN to integer" msgstr "kan inte konvertera NaN till ett integer" -#: utils/adt/numeric.c:2997 +#: utils/adt/numeric.c:2988 #, c-format msgid "cannot convert NaN to bigint" msgstr "kan inte konvertera NaN till ett bigint" -#: utils/adt/numeric.c:3042 +#: utils/adt/numeric.c:3033 #, c-format msgid "cannot convert NaN to smallint" msgstr "kan inte konvertera NaN till ett smallint" -#: utils/adt/numeric.c:3079 utils/adt/numeric.c:3150 +#: utils/adt/numeric.c:3069 utils/adt/numeric.c:3140 #, c-format msgid "cannot convert infinity to numeric" msgstr "kan inte konvertera oändlighet till numeric" -#: utils/adt/numeric.c:6076 +#: utils/adt/numeric.c:6055 #, c-format msgid "numeric field overflow" msgstr "overflow i numeric-fält" -#: utils/adt/numeric.c:6077 +#: utils/adt/numeric.c:6056 #, c-format msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d." msgstr "Ett fält med precision %d, skala %d måste avrundas till ett absolut värde mindre än %s%d." @@ -21374,92 +21417,92 @@ msgid "percentile value %g is not between 0 and 1" msgstr "percentil-värde %g är inte mellan 0 och 1" -#: utils/adt/pg_locale.c:1260 +#: utils/adt/pg_locale.c:1264 #, c-format msgid "Apply system library package updates." msgstr "Applicera paketuppdateringar för systembibliotek." -#: utils/adt/pg_locale.c:1475 +#: utils/adt/pg_locale.c:1479 #, c-format msgid "could not create locale \"%s\": %m" msgstr "kunde inte skapa locale \"%s\": %m" -#: utils/adt/pg_locale.c:1478 +#: utils/adt/pg_locale.c:1482 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." msgstr "Operativsystemet kunde inte hitta någon lokaldata för lokalnamnet \"%s\"." -#: utils/adt/pg_locale.c:1579 +#: utils/adt/pg_locale.c:1583 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "jämförelser (collations) med olika collate- och ctype-värden stöds inte på denna plattform" -#: utils/adt/pg_locale.c:1588 +#: utils/adt/pg_locale.c:1592 #, c-format msgid "collation provider LIBC is not supported on this platform" msgstr "leverantören LIBC för jämförelse (collation) stöds inte på denna plattform" -#: utils/adt/pg_locale.c:1600 +#: utils/adt/pg_locale.c:1604 #, c-format msgid "collations with different collate and ctype values are not supported by ICU" msgstr "jämförelser (collation) med olika collate- och ctype-värden stöds inte av ICU" -#: utils/adt/pg_locale.c:1606 utils/adt/pg_locale.c:1694 +#: utils/adt/pg_locale.c:1610 utils/adt/pg_locale.c:1698 #, c-format msgid "could not open collator for locale \"%s\": %s" msgstr "kunde inte öppna jämförelse för lokal \"%s\": %s" -#: utils/adt/pg_locale.c:1617 +#: utils/adt/pg_locale.c:1621 #, c-format msgid "ICU is not supported in this build" msgstr "ICU stöds inte av detta bygge" -#: utils/adt/pg_locale.c:1618 +#: utils/adt/pg_locale.c:1622 #, c-format msgid "You need to rebuild PostgreSQL using --with-icu." msgstr "Du behöver bygga om PostgreSQL med --with-icu." -#: utils/adt/pg_locale.c:1638 +#: utils/adt/pg_locale.c:1642 #, c-format msgid "collation \"%s\" has no actual version, but a version was specified" msgstr "jämförelse (collation) \"%s\" har ingen version men en version angavs" -#: utils/adt/pg_locale.c:1645 +#: utils/adt/pg_locale.c:1649 #, c-format msgid "collation \"%s\" has version mismatch" msgstr "jämförelse (collation) \"%s\" har en version som inte matchar" -#: utils/adt/pg_locale.c:1647 +#: utils/adt/pg_locale.c:1651 #, c-format msgid "The collation in the database was created using version %s, but the operating system provides version %s." msgstr "Jämförelsen (collation) i databasen har skapats med version %s men operativsystemet har version %s." -#: utils/adt/pg_locale.c:1650 +#: utils/adt/pg_locale.c:1654 #, c-format msgid "Rebuild all objects affected by this collation and run ALTER COLLATION %s REFRESH VERSION, or build PostgreSQL with the right library version." msgstr "Bygg om alla objekt som påverkas av denna jämförelse (collation) och kör ALTER COLLATION %s REFRESH VERSION eller bygg PostgreSQL med rätt bibliotekversion." -#: utils/adt/pg_locale.c:1734 +#: utils/adt/pg_locale.c:1738 #, c-format msgid "could not open ICU converter for encoding \"%s\": %s" msgstr "kunde inte öppna ICU-konverterare för kodning \"%s\": %s" -#: utils/adt/pg_locale.c:1765 utils/adt/pg_locale.c:1774 +#: utils/adt/pg_locale.c:1769 utils/adt/pg_locale.c:1778 #, c-format msgid "ucnv_toUChars failed: %s" msgstr "ucnv_toUChars misslyckades: %s" -#: utils/adt/pg_locale.c:1803 utils/adt/pg_locale.c:1812 +#: utils/adt/pg_locale.c:1807 utils/adt/pg_locale.c:1816 #, c-format msgid "ucnv_fromUChars failed: %s" msgstr "ucnv_fromUChars misslyckades: %s" -#: utils/adt/pg_locale.c:1985 +#: utils/adt/pg_locale.c:1989 #, c-format msgid "invalid multibyte character for locale" msgstr "ogiltigt multibyte-tecken för lokalen" -#: utils/adt/pg_locale.c:1986 +#: utils/adt/pg_locale.c:1990 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "Serverns LC_CTYPE-lokal är troligen inkompatibel med databasens teckenkodning." @@ -21776,12 +21819,12 @@ msgid "rule \"%s\" has unsupported event type %d" msgstr "regel \"%s\" har en icke stödd händelsetyp %d" -#: utils/adt/selfuncs.c:5636 +#: utils/adt/selfuncs.c:5663 #, c-format msgid "case insensitive matching not supported on type bytea" msgstr "matchning utan skiftlägeskänslighet stöds inte för typen bytea" -#: utils/adt/selfuncs.c:5738 +#: utils/adt/selfuncs.c:5765 #, c-format msgid "regular-expression matching not supported on type bytea" msgstr "matching med reguljär-uttryck stöds inte för typen bytea" @@ -21844,14 +21887,14 @@ msgstr "timestamp utanför giltigt intervall: \"%g\"" #: utils/adt/timestamp.c:926 utils/adt/timestamp.c:1496 -#: utils/adt/timestamp.c:1909 utils/adt/timestamp.c:2988 -#: utils/adt/timestamp.c:2993 utils/adt/timestamp.c:2998 -#: utils/adt/timestamp.c:3048 utils/adt/timestamp.c:3055 -#: utils/adt/timestamp.c:3062 utils/adt/timestamp.c:3082 -#: utils/adt/timestamp.c:3089 utils/adt/timestamp.c:3096 -#: utils/adt/timestamp.c:3126 utils/adt/timestamp.c:3134 -#: utils/adt/timestamp.c:3178 utils/adt/timestamp.c:3501 -#: utils/adt/timestamp.c:3626 utils/adt/timestamp.c:3994 +#: utils/adt/timestamp.c:1941 utils/adt/timestamp.c:3020 +#: utils/adt/timestamp.c:3025 utils/adt/timestamp.c:3030 +#: utils/adt/timestamp.c:3080 utils/adt/timestamp.c:3087 +#: utils/adt/timestamp.c:3094 utils/adt/timestamp.c:3114 +#: utils/adt/timestamp.c:3121 utils/adt/timestamp.c:3128 +#: utils/adt/timestamp.c:3158 utils/adt/timestamp.c:3166 +#: utils/adt/timestamp.c:3210 utils/adt/timestamp.c:3533 +#: utils/adt/timestamp.c:3658 utils/adt/timestamp.c:4026 #, c-format msgid "interval out of range" msgstr "interval utanför giltigt intervall" @@ -21876,46 +21919,46 @@ msgid "interval(%d) precision must be between %d and %d" msgstr "interval(%d)-precision måste vara mellan %d och %d" -#: utils/adt/timestamp.c:2589 +#: utils/adt/timestamp.c:2621 #, c-format msgid "cannot subtract infinite timestamps" msgstr "kan inte subtrahera oändliga tider (timestamp)" -#: utils/adt/timestamp.c:3745 utils/adt/timestamp.c:4255 -#: utils/adt/timestamp.c:4417 utils/adt/timestamp.c:4438 +#: utils/adt/timestamp.c:3777 utils/adt/timestamp.c:4287 +#: utils/adt/timestamp.c:4449 utils/adt/timestamp.c:4470 #, c-format msgid "timestamp units \"%s\" not supported" msgstr "timestamp-enhet \"%s\" stöds inte" -#: utils/adt/timestamp.c:3759 utils/adt/timestamp.c:4209 -#: utils/adt/timestamp.c:4448 +#: utils/adt/timestamp.c:3791 utils/adt/timestamp.c:4241 +#: utils/adt/timestamp.c:4480 #, c-format msgid "timestamp units \"%s\" not recognized" msgstr "timestamp-enhet \"%s\" känns inte igen" -#: utils/adt/timestamp.c:3891 utils/adt/timestamp.c:4250 -#: utils/adt/timestamp.c:4613 utils/adt/timestamp.c:4635 +#: utils/adt/timestamp.c:3923 utils/adt/timestamp.c:4282 +#: utils/adt/timestamp.c:4645 utils/adt/timestamp.c:4667 #, c-format msgid "timestamp with time zone units \"%s\" not supported" msgstr "timestamp with time zone, enhet \"%s\" stöds inte" -#: utils/adt/timestamp.c:3908 utils/adt/timestamp.c:4204 -#: utils/adt/timestamp.c:4644 +#: utils/adt/timestamp.c:3940 utils/adt/timestamp.c:4236 +#: utils/adt/timestamp.c:4676 #, c-format msgid "timestamp with time zone units \"%s\" not recognized" msgstr "timestamp with time zone, enhet \"%s\" känns inte igen" -#: utils/adt/timestamp.c:3981 +#: utils/adt/timestamp.c:4013 #, c-format msgid "interval units \"%s\" not supported because months usually have fractional weeks" msgstr "intervallenhet \"%s\" stöds inte då månader typiskt har veckor på bråkform" -#: utils/adt/timestamp.c:3987 utils/adt/timestamp.c:4738 +#: utils/adt/timestamp.c:4019 utils/adt/timestamp.c:4770 #, c-format msgid "interval units \"%s\" not supported" msgstr "intervallenhet \"%s\" stöds inte" -#: utils/adt/timestamp.c:4003 utils/adt/timestamp.c:4761 +#: utils/adt/timestamp.c:4035 utils/adt/timestamp.c:4793 #, c-format msgid "interval units \"%s\" not recognized" msgstr "intervallenhet \"%s\" känns inte igen" @@ -21945,10 +21988,10 @@ msgid "gtsvector_in not implemented" msgstr "gtsvector_in är inte implementerad" -#: utils/adt/tsquery.c:166 +#: utils/adt/tsquery.c:166 utils/adt/tsquery_op.c:123 #, c-format -msgid "distance in phrase operator should not be greater than %d" -msgstr "distans i frasoperator skall inte vara större än %d" +msgid "distance in phrase operator must be an integer value between zero and %d inclusive" +msgstr "distans i frasoperator måste vara ett heltalsvärde mellan noll och %d, inklusive" #: utils/adt/tsquery.c:254 utils/adt/tsquery.c:513 #: utils/adt/tsvector_parser.c:141 @@ -21991,11 +22034,6 @@ msgid "text-search query contains only stop words or doesn't contain lexemes, ignored" msgstr "textsökfråga innehåller bara stoppord eller innehåller inga lexem, hoppar över" -#: utils/adt/tsquery_op.c:123 -#, c-format -msgid "distance in phrase operator should be non-negative and less than %d" -msgstr "distans i frasoperator skall vara icke-negativ och mindre än %d" - #: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" @@ -22465,17 +22503,17 @@ msgid "cached plan must not change result type" msgstr "cache:ad plan får inte ändra resultattyp" -#: utils/cache/relcache.c:5938 +#: utils/cache/relcache.c:6047 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "kunde inte skapa initieringsfil \"%s\" för relations-cache: %m" -#: utils/cache/relcache.c:5940 +#: utils/cache/relcache.c:6049 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Fortsätter ändå, trots att något är fel." -#: utils/cache/relcache.c:6260 +#: utils/cache/relcache.c:6369 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "kunde inte ta bort cache-fil \"%s\": %m" @@ -22485,37 +22523,37 @@ msgid "cannot PREPARE a transaction that modified relation mapping" msgstr "kan inte göra PREPARE på en transaktion som ändrat relationsmappningen" -#: utils/cache/relmapper.c:652 utils/cache/relmapper.c:754 +#: utils/cache/relmapper.c:652 utils/cache/relmapper.c:760 #, c-format msgid "could not open relation mapping file \"%s\": %m" msgstr "kunde inte öppna relationsmappningsfil \"%s\": %m" -#: utils/cache/relmapper.c:666 +#: utils/cache/relmapper.c:669 #, c-format msgid "could not read relation mapping file \"%s\": %m" msgstr "kunde inte läsa relationsmappningsfil \"%s\": %m" -#: utils/cache/relmapper.c:677 +#: utils/cache/relmapper.c:683 #, c-format msgid "relation mapping file \"%s\" contains invalid data" msgstr "relationsmappningsfilen \"%s\" innehåller ogiltig data" -#: utils/cache/relmapper.c:687 +#: utils/cache/relmapper.c:693 #, c-format msgid "relation mapping file \"%s\" contains incorrect checksum" msgstr "relationsmappningsfilen \"%s\" innehåller en felaktig checksumma" -#: utils/cache/relmapper.c:788 +#: utils/cache/relmapper.c:794 #, c-format msgid "could not write to relation mapping file \"%s\": %m" msgstr "kunde inte skriva till relationsmappningsfilen \"%s\": %m" -#: utils/cache/relmapper.c:803 +#: utils/cache/relmapper.c:809 #, c-format msgid "could not fsync relation mapping file \"%s\": %m" msgstr "kunde inte fsync:a relationsmappningsfilen \"%s\": %m" -#: utils/cache/relmapper.c:810 +#: utils/cache/relmapper.c:816 #, c-format msgid "could not close relation mapping file \"%s\": %m" msgstr "kunde inte stänga relationsmappningsfilen \"%s\": %m" @@ -22757,17 +22795,17 @@ msgid "could not determine actual result type for function \"%s\" declared to return type %s" msgstr "kunde inte bestämma resultattyp för funktion \"%s\" som deklarerats att returnera typ %s" -#: utils/fmgr/funcapi.c:1396 utils/fmgr/funcapi.c:1427 +#: utils/fmgr/funcapi.c:1397 utils/fmgr/funcapi.c:1428 #, c-format msgid "number of aliases does not match number of columns" msgstr "antalet alias matchar inte antalet kolumner" -#: utils/fmgr/funcapi.c:1421 +#: utils/fmgr/funcapi.c:1422 #, c-format msgid "no column alias was provided" msgstr "inget kolumnalias angivet" -#: utils/fmgr/funcapi.c:1445 +#: utils/fmgr/funcapi.c:1446 #, c-format msgid "could not determine row description for function returning record" msgstr "kunde inte få radbeskrivning för funktion som returnerar en record" @@ -23438,8 +23476,8 @@ msgstr "En sidskrivning som sker vid en operativsystemkrash kan bli delvis utskriven till disk. Under återställning så kommer radändringar i WAL:en inte vara tillräckligt för att återställa datan. Denna flagga skriver ut sidor först efter att en WAL-checkpoint gjorts vilket gör att full återställning kan ske." #: utils/misc/guc.c:1029 -msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications." -msgstr "Skriver fulla sidor till WAL första gången de ändras efter en checkpoint, även för ickekritiska ändringar." +msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification." +msgstr "Skriver fulla sidor till WAL första gången de ändras efter en checkpoint, även för ickekritisk ändring." #: utils/misc/guc.c:1039 msgid "Compresses full-page writes written in WAL file." @@ -24746,7 +24784,7 @@ #: utils/misc/guc.c:5979 utils/misc/guc.c:6758 utils/misc/guc.c:6811 #: utils/misc/guc.c:6862 utils/misc/guc.c:7195 utils/misc/guc.c:7954 -#: utils/misc/guc.c:8122 utils/misc/guc.c:9823 +#: utils/misc/guc.c:8122 utils/misc/guc.c:9832 #, c-format msgid "unrecognized configuration parameter \"%s\"" msgstr "okänd konfigurationsparameter \"%s\"" @@ -24761,7 +24799,7 @@ msgid "parameter \"%s\" cannot be changed now" msgstr "parameter \"%s\" kan inte ändras nu" -#: utils/misc/guc.c:6045 utils/misc/guc.c:6091 utils/misc/guc.c:9839 +#: utils/misc/guc.c:6045 utils/misc/guc.c:6091 utils/misc/guc.c:9848 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "rättighet saknas för att sätta parameter \"%s\"" @@ -24821,47 +24859,47 @@ msgid "while setting parameter \"%s\" to \"%s\"" msgstr "vid sättande av parameter \"%s\" till \"%s\"" -#: utils/misc/guc.c:9453 +#: utils/misc/guc.c:9455 #, c-format msgid "parameter \"%s\" could not be set" msgstr "parameter \"%s\" kunde inte sättas" -#: utils/misc/guc.c:9543 +#: utils/misc/guc.c:9547 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "kunde inte tolka inställningen för parameter \"%s\"" -#: utils/misc/guc.c:9901 utils/misc/guc.c:9935 +#: utils/misc/guc.c:9910 utils/misc/guc.c:9944 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "ogiltigt värde för parameter \"%s\": %d" -#: utils/misc/guc.c:9969 +#: utils/misc/guc.c:9978 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "ogiltigt värde för parameter \"%s\": %g" -#: utils/misc/guc.c:10253 +#: utils/misc/guc.c:10279 #, c-format msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session." msgstr "\"temp_buffers\" kan inte ändras efter att man använt temporära tabeller i sessionen." -#: utils/misc/guc.c:10265 +#: utils/misc/guc.c:10291 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour stöds inte av detta bygge" -#: utils/misc/guc.c:10278 +#: utils/misc/guc.c:10304 #, c-format msgid "SSL is not supported by this build" msgstr "SSL stöds inte av detta bygge" -#: utils/misc/guc.c:10290 +#: utils/misc/guc.c:10316 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "Kan inte slå på parameter när \"log_statement_stats\" är satt." -#: utils/misc/guc.c:10302 +#: utils/misc/guc.c:10328 #, c-format msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true." msgstr "Kan inte slå på \"log_statement_stats\" när \"log_parser_stats\", \"log_planner_stats\" eller \"log_executor_stats\" är satta." diff -Nru postgresql-10-10.17/src/backend/port/sysv_shmem.c postgresql-10-10.19/src/backend/port/sysv_shmem.c --- postgresql-10-10.17/src/backend/port/sysv_shmem.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/port/sysv_shmem.c 2021-11-08 22:05:38.000000000 +0000 @@ -143,6 +143,16 @@ if (pg_shmem_addr) requestedAddress = (void *) strtoul(pg_shmem_addr, NULL, 0); + else + { +#if defined(__darwin__) && SIZEOF_VOID_P == 8 + /* + * Provide a default value that is believed to avoid problems with + * ASLR on the current macOS release. + */ + requestedAddress = (void *) 0x80000000000; +#endif + } } #endif diff -Nru postgresql-10-10.17/src/backend/postmaster/bgworker.c postgresql-10-10.19/src/backend/postmaster/bgworker.c --- postgresql-10-10.17/src/backend/postmaster/bgworker.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/postmaster/bgworker.c 2021-11-08 22:05:38.000000000 +0000 @@ -328,9 +328,11 @@ notify_pid = slot->worker.bgw_notify_pid; if ((slot->worker.bgw_flags & BGWORKER_CLASS_PARALLEL) != 0) BackgroundWorkerData->parallel_terminate_count++; - pg_memory_barrier(); slot->pid = 0; + + pg_memory_barrier(); slot->in_use = false; + if (notify_pid != 0) kill(notify_pid, SIGUSR1); @@ -415,6 +417,8 @@ * points to it. This convention allows deletion of workers during * searches of the worker list, and saves having to search the list again. * + * Caller is responsible for notifying bgw_notify_pid, if appropriate. + * * This function must be invoked only in the postmaster. */ void @@ -427,9 +431,16 @@ Assert(rw->rw_shmem_slot < max_worker_processes); slot = &BackgroundWorkerData->slot[rw->rw_shmem_slot]; + Assert(slot->in_use); + + /* + * We need a memory barrier here to make sure that the update of + * parallel_terminate_count completes before the store to in_use. + */ if ((rw->rw_worker.bgw_flags & BGWORKER_CLASS_PARALLEL) != 0) BackgroundWorkerData->parallel_terminate_count++; + pg_memory_barrier(); slot->in_use = false; ereport(DEBUG1, diff -Nru postgresql-10-10.17/src/backend/postmaster/postmaster.c postgresql-10-10.19/src/backend/postmaster/postmaster.c --- postgresql-10-10.17/src/backend/postmaster/postmaster.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/postmaster/postmaster.c 2021-11-08 22:05:38.000000000 +0000 @@ -2061,6 +2061,19 @@ if (SSLok == 'S' && secure_open_server(port) == -1) return STATUS_ERROR; #endif + + /* + * At this point we should have no data already buffered. If we do, + * it was received before we performed the SSL handshake, so it wasn't + * encrypted and indeed may have been injected by a man-in-the-middle. + * We report this case to the client. + */ + if (pq_buffer_has_data()) + ereport(FATAL, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg("received unencrypted data after SSL request"), + errdetail("This could be either a client-software bug or evidence of an attempted man-in-the-middle attack."))); + /* regular startup packet, cancel, etc packet should follow... */ /* but not another SSL negotiation request */ return ProcessStartupPacket(port, true); diff -Nru postgresql-10-10.17/src/backend/regex/regcomp.c postgresql-10-10.19/src/backend/regex/regcomp.c --- postgresql-10-10.17/src/backend/regex/regcomp.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/regex/regcomp.c 2021-11-08 22:05:38.000000000 +0000 @@ -958,7 +958,7 @@ if (cap) { v->subs[subno] = atom; - t = subre(v, '(', atom->flags | CAP, lp, rp); + t = subre(v, '(', atom->flags | CAP, s, s2); NOERR(); t->subno = subno; t->left = atom; @@ -1041,11 +1041,23 @@ /* annoying special case: {0} or {0,0} cancels everything */ if (m == 0 && n == 0) { - if (atom != NULL) - freesubre(v, atom); - if (atomtype == '(') - v->subs[subno] = NULL; - delsub(v->nfa, lp, rp); + /* + * If we had capturing subexpression(s) within the atom, we don't want + * to destroy them, because it's legal (if useless) to back-ref them + * later. Hence, just unlink the atom from lp/rp and then ignore it. + */ + if (atom != NULL && (atom->flags & CAP)) + { + delsub(v->nfa, lp, atom->begin); + delsub(v->nfa, atom->end, rp); + } + else + { + /* Otherwise, we can clean up any subre infrastructure we made */ + if (atom != NULL) + freesubre(v, atom); + delsub(v->nfa, lp, rp); + } EMPTYARC(lp, rp); return; } diff -Nru postgresql-10-10.17/src/backend/regex/regexec.c postgresql-10-10.19/src/backend/regex/regexec.c --- postgresql-10-10.17/src/backend/regex/regexec.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/regex/regexec.c 2021-11-08 22:05:38.000000000 +0000 @@ -196,6 +196,8 @@ return REG_INVARG; if (re->re_csize != sizeof(chr)) return REG_MIXED; + if (search_start > len) + return REG_NOMATCH; /* Initialize locale-dependent support */ pg_set_regex_collation(re->re_collation); @@ -226,6 +228,8 @@ } else v->pmatch = pmatch; + if (v->nmatch > 0) + zapallsubs(v->pmatch, v->nmatch); v->details = details; v->start = (chr *) string; v->search_start = (chr *) string + search_start; @@ -455,7 +459,6 @@ return REG_OKAY; /* find submatches */ - zapallsubs(v->pmatch, v->nmatch); return cdissect(v, v->g->tree, begin, end); } @@ -566,7 +569,6 @@ break; /* no match with this begin point, try next */ MDEBUG(("tentative end %ld\n", LOFF(end))); /* Dissect the potential match to see if it really matches */ - zapallsubs(v->pmatch, v->nmatch); er = cdissect(v, v->g->tree, begin, end); if (er == REG_OKAY) { @@ -614,6 +616,8 @@ /* * zapallsubs - initialize all subexpression matches to "no match" + * + * Note that p[0], the overall-match location, is not touched. */ static void zapallsubs(regmatch_t *p, @@ -685,8 +689,30 @@ * DFA and found that the proposed substring satisfies the DFA. (We make * the caller do that because in concatenation and iteration nodes, it's * much faster to check all the substrings against the child DFAs before we - * recurse.) Also, caller must have cleared subexpression match data via - * zaptreesubs (or zapallsubs at the top level). + * recurse.) + * + * A side-effect of a successful match is to save match locations for + * capturing subexpressions in v->pmatch[]. This is a little bit tricky, + * so we make the following rules: + * 1. Before initial entry to cdissect, all match data must have been + * cleared (this is seen to by zapallsubs). + * 2. Before any recursive entry to cdissect, the match data for that + * subexpression tree must be guaranteed clear (see zaptreesubs). + * 3. When returning REG_OKAY, each level of cdissect will have saved + * any relevant match locations. + * 4. When returning REG_NOMATCH, each level of cdissect will guarantee + * that its subexpression match locations are again clear. + * 5. No guarantees are made for error cases (i.e., other result codes). + * 6. When a level of cdissect abandons a successful sub-match, it will + * clear that subtree's match locations with zaptreesubs before trying + * any new DFA match or cdissect call for that subtree or any subtree + * to its right (that is, any subtree that could have a backref into the + * abandoned match). + * This may seem overly complicated, but it's difficult to simplify it + * because of the provision that match locations must be reset before + * any fresh DFA match (a rule that is needed to make dfa_backref safe). + * That means it won't work to just reset relevant match locations at the + * start of each cdissect level. */ static int /* regexec return code */ cdissect(struct vars *v, @@ -804,6 +830,8 @@ MDEBUG(("successful\n")); return REG_OKAY; } + /* Reset left's matches (right should have done so itself) */ + zaptreesubs(v, t->left); } if (er != REG_NOMATCH) return er; @@ -826,8 +854,6 @@ return REG_NOMATCH; } MDEBUG(("%d: new midpoint %ld\n", t->id, LOFF(mid))); - zaptreesubs(v, t->left); - zaptreesubs(v, t->right); } /* can't get here */ @@ -882,6 +908,8 @@ MDEBUG(("successful\n")); return REG_OKAY; } + /* Reset left's matches (right should have done so itself) */ + zaptreesubs(v, t->left); } if (er != REG_NOMATCH) return er; @@ -904,8 +932,6 @@ return REG_NOMATCH; } MDEBUG(("%d: new midpoint %ld\n", t->id, LOFF(mid))); - zaptreesubs(v, t->left); - zaptreesubs(v, t->right); } /* can't get here */ @@ -1098,8 +1124,8 @@ * Our strategy is to first find a set of sub-match endpoints that are * valid according to the child node's DFA, and then recursively dissect * each sub-match to confirm validity. If any validity check fails, - * backtrack the last sub-match and try again. And, when we next try for - * a validity check, we need not recheck any successfully verified + * backtrack that sub-match and try again. And, when we next try for a + * validity check, we need not recheck any successfully verified * sub-matches that we didn't move the endpoints of. nverified remembers * how many sub-matches are currently known okay. */ @@ -1165,6 +1191,7 @@ for (i = nverified + 1; i <= k; i++) { + /* zap any match data from a non-last iteration */ zaptreesubs(v, t->left); er = cdissect(v, t->left, endpts[i - 1], endpts[i]); if (er == REG_OKAY) @@ -1187,12 +1214,13 @@ return REG_OKAY; } - /* match failed to verify, so backtrack */ + /* i'th match failed to verify, so backtrack it */ + k = i; backtrack: /* - * Must consider shorter versions of the current sub-match. However, + * Must consider shorter versions of the k'th sub-match. However, * we'll only ask for a zero-length match if necessary. */ while (k > 0) @@ -1299,8 +1327,8 @@ * Our strategy is to first find a set of sub-match endpoints that are * valid according to the child node's DFA, and then recursively dissect * each sub-match to confirm validity. If any validity check fails, - * backtrack the last sub-match and try again. And, when we next try for - * a validity check, we need not recheck any successfully verified + * backtrack that sub-match and try again. And, when we next try for a + * validity check, we need not recheck any successfully verified * sub-matches that we didn't move the endpoints of. nverified remembers * how many sub-matches are currently known okay. */ @@ -1372,6 +1400,7 @@ for (i = nverified + 1; i <= k; i++) { + /* zap any match data from a non-last iteration */ zaptreesubs(v, t->left); er = cdissect(v, t->left, endpts[i - 1], endpts[i]); if (er == REG_OKAY) @@ -1394,12 +1423,13 @@ return REG_OKAY; } - /* match failed to verify, so backtrack */ + /* i'th match failed to verify, so backtrack it */ + k = i; backtrack: /* - * Must consider longer versions of the current sub-match. + * Must consider longer versions of the k'th sub-match. */ while (k > 0) { diff -Nru postgresql-10-10.17/src/backend/replication/logical/decode.c postgresql-10-10.19/src/backend/replication/logical/decode.c --- postgresql-10-10.17/src/backend/replication/logical/decode.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/logical/decode.c 2021-11-08 22:05:38.000000000 +0000 @@ -196,6 +196,7 @@ case XLOG_FPI_FOR_HINT: case XLOG_FPI: case XLOG_FPI_MULTI: + case XLOG_OVERWRITE_CONTRECORD: break; default: elog(ERROR, "unexpected RM_XLOG_ID record type: %u", info); @@ -778,19 +779,17 @@ if (target_node.dbNode != ctx->slot->data.database) return; - /* - * Super deletions are irrelevant for logical decoding, it's driven by the - * confirmation records. - */ - if (xlrec->flags & XLH_DELETE_IS_SUPER) - return; - /* output plugin doesn't look for this origin, no need to queue */ if (FilterByOrigin(ctx, XLogRecGetOrigin(r))) return; change = ReorderBufferGetChange(ctx->reorder); - change->action = REORDER_BUFFER_CHANGE_DELETE; + + if (xlrec->flags & XLH_DELETE_IS_SUPER) + change->action = REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT; + else + change->action = REORDER_BUFFER_CHANGE_DELETE; + change->origin_id = XLogRecGetOrigin(r); memcpy(&change->data.tp.relnode, &target_node, sizeof(RelFileNode)); diff -Nru postgresql-10-10.17/src/backend/replication/logical/launcher.c postgresql-10-10.19/src/backend/replication/logical/launcher.c --- postgresql-10-10.17/src/backend/replication/logical/launcher.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/logical/launcher.c 2021-11-08 22:05:38.000000000 +0000 @@ -726,8 +726,8 @@ logicalrep_worker_onexit(int code, Datum arg) { /* Disconnect gracefully from the remote side. */ - if (wrconn) - walrcv_disconnect(wrconn); + if (LogRepWorkerWalRcvConn) + walrcv_disconnect(LogRepWorkerWalRcvConn); logicalrep_worker_detach(); diff -Nru postgresql-10-10.17/src/backend/replication/logical/origin.c postgresql-10-10.19/src/backend/replication/logical/origin.c --- postgresql-10-10.17/src/backend/replication/logical/origin.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/logical/origin.c 2021-11-08 22:05:38.000000000 +0000 @@ -787,7 +787,7 @@ FIN_CRC32C(crc); if (file_crc != crc) ereport(PANIC, - (errcode(ERRCODE_CONFIGURATION_LIMIT_EXCEEDED), + (errcode(ERRCODE_DATA_CORRUPTED), errmsg("replication slot checkpoint has wrong checksum %u, expected %u", crc, file_crc))); diff -Nru postgresql-10-10.17/src/backend/replication/logical/relation.c postgresql-10-10.19/src/backend/replication/logical/relation.c --- postgresql-10-10.17/src/backend/replication/logical/relation.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/logical/relation.c 2021-11-08 22:05:38.000000000 +0000 @@ -24,16 +24,13 @@ #include "nodes/makefuncs.h" #include "replication/logicalrelation.h" #include "replication/worker_internal.h" -#include "utils/builtins.h" #include "utils/inval.h" -#include "utils/lsyscache.h" #include "utils/memutils.h" -#include "utils/syscache.h" + static MemoryContext LogicalRepRelMapContext = NULL; static HTAB *LogicalRepRelMap = NULL; -static HTAB *LogicalRepTypMap = NULL; /* @@ -100,16 +97,6 @@ LogicalRepRelMap = hash_create("logicalrep relation map cache", 128, &ctl, HASH_ELEM | HASH_BLOBS | HASH_CONTEXT); - /* Initialize the type hash table. */ - MemSet(&ctl, 0, sizeof(ctl)); - ctl.keysize = sizeof(Oid); - ctl.entrysize = sizeof(LogicalRepTyp); - ctl.hcxt = LogicalRepRelMapContext; - - /* This will usually be small. */ - LogicalRepTypMap = hash_create("logicalrep type map cache", 2, &ctl, - HASH_ELEM | HASH_BLOBS | HASH_CONTEXT); - /* Watch for invalidation events. */ CacheRegisterRelcacheCallback(logicalrep_relmap_invalidate_cb, (Datum) 0); @@ -397,92 +384,3 @@ heap_close(rel->localrel, lockmode); rel->localrel = NULL; } - -/* - * Free the type map cache entry data. - */ -static void -logicalrep_typmap_free_entry(LogicalRepTyp *entry) -{ - pfree(entry->nspname); - pfree(entry->typname); -} - -/* - * Add new entry or update existing entry in the type map cache. - */ -void -logicalrep_typmap_update(LogicalRepTyp *remotetyp) -{ - MemoryContext oldctx; - LogicalRepTyp *entry; - bool found; - - if (LogicalRepTypMap == NULL) - logicalrep_relmap_init(); - - /* - * HASH_ENTER returns the existing entry if present or creates a new one. - */ - entry = hash_search(LogicalRepTypMap, (void *) &remotetyp->remoteid, - HASH_ENTER, &found); - - if (found) - logicalrep_typmap_free_entry(entry); - - /* Make cached copy of the data */ - entry->remoteid = remotetyp->remoteid; - oldctx = MemoryContextSwitchTo(LogicalRepRelMapContext); - entry->nspname = pstrdup(remotetyp->nspname); - entry->typname = pstrdup(remotetyp->typname); - MemoryContextSwitchTo(oldctx); -} - -/* - * Fetch type name from the cache by remote type OID. - * - * Return a substitute value if we cannot find the data type; no message is - * sent to the log in that case, because this is used by error callback - * already. - */ -char * -logicalrep_typmap_gettypname(Oid remoteid) -{ - LogicalRepTyp *entry; - bool found; - - /* Internal types are mapped directly. */ - if (remoteid < FirstBootstrapObjectId) - { - if (!get_typisdefined(remoteid)) - { - /* - * This can be caused by having a publisher with a higher - * PostgreSQL major version than the subscriber. - */ - return psprintf("unrecognized %u", remoteid); - } - - return format_type_be(remoteid); - } - - if (LogicalRepTypMap == NULL) - { - /* - * If the typemap is not initialized yet, we cannot possibly attempt - * to search the hash table; but there's no way we know the type - * locally yet, since we haven't received a message about this type, - * so this is the best we can do. - */ - return psprintf("unrecognized %u", remoteid); - } - - /* search the mapping */ - entry = hash_search(LogicalRepTypMap, (void *) &remoteid, - HASH_FIND, &found); - if (!found) - return psprintf("unrecognized %u", remoteid); - - Assert(OidIsValid(entry->remoteid)); - return psprintf("%s.%s", entry->nspname, entry->typname); -} diff -Nru postgresql-10-10.17/src/backend/replication/logical/reorderbuffer.c postgresql-10-10.19/src/backend/replication/logical/reorderbuffer.c --- postgresql-10-10.17/src/backend/replication/logical/reorderbuffer.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/logical/reorderbuffer.c 2021-11-08 22:05:38.000000000 +0000 @@ -353,6 +353,9 @@ txn->invalidations = NULL; } + /* Reset the toast hash */ + ReorderBufferToastReset(rb, txn); + pfree(txn); } @@ -413,6 +416,7 @@ break; /* no data in addition to the struct itself */ case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM: + case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT: case REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID: case REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID: break; @@ -1331,7 +1335,7 @@ ent = (ReorderBufferTupleCidEnt *) hash_search(txn->tuplecid_hash, (void *) &key, - HASH_ENTER | HASH_FIND, + HASH_ENTER, &found); if (!found) { @@ -1621,8 +1625,8 @@ change_done: /* - * Either speculative insertion was confirmed, or it was - * unsuccessful and the record isn't needed anymore. + * If speculative insertion was confirmed, the record isn't + * needed anymore. */ if (specinsert != NULL) { @@ -1664,6 +1668,32 @@ specinsert = change; break; + case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT: + + /* + * Abort for speculative insertion arrived. So cleanup the + * specinsert tuple and toast hash. + * + * Note that we get the spec abort change for each toast + * entry but we need to perform the cleanup only the first + * time we get it for the main table. + */ + if (specinsert != NULL) + { + /* + * We must clean the toast hash before processing a + * completely new tuple to avoid confusion about the + * previous tuple's toast chunks. + */ + Assert(change->data.tp.clear_toast_afterwards); + ReorderBufferToastReset(rb, txn); + + /* We don't need this record anymore. */ + ReorderBufferReturnChange(rb, specinsert); + specinsert = NULL; + } + break; + case REORDER_BUFFER_CHANGE_MESSAGE: rb->message(rb, txn, change->lsn, true, change->data.msg.prefix, @@ -1739,16 +1769,8 @@ } } - /* - * There's a speculative insertion remaining, just clean in up, it - * can't have been successful, otherwise we'd gotten a confirmation - * record. - */ - if (specinsert) - { - ReorderBufferReturnChange(rb, specinsert); - specinsert = NULL; - } + /* speculative insertion record must be freed by now */ + Assert(!specinsert); /* clean up the iterator */ ReorderBufferIterTXNFinish(rb, iterstate); @@ -2423,6 +2445,7 @@ break; } case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM: + case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT: case REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID: case REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID: /* ReorderBufferChange contains everything important */ @@ -2716,6 +2739,7 @@ } /* the base struct contains all the data, easy peasy */ case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM: + case REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT: case REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID: case REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID: break; @@ -2971,8 +2995,8 @@ toast_rel = RelationIdGetRelation(relation->rd_rel->reltoastrelid); if (!RelationIsValid(toast_rel)) - elog(ERROR, "could not open relation with OID %u", - relation->rd_rel->reltoastrelid); + elog(ERROR, "could not open toast relation with OID %u (base relation \"%s\")", + relation->rd_rel->reltoastrelid, RelationGetRelationName(relation)); toast_desc = RelationGetDescr(toast_rel); diff -Nru postgresql-10-10.17/src/backend/replication/logical/snapbuild.c postgresql-10-10.19/src/backend/replication/logical/snapbuild.c --- postgresql-10-10.17/src/backend/replication/logical/snapbuild.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/logical/snapbuild.c 2021-11-08 22:05:38.000000000 +0000 @@ -697,6 +697,8 @@ void SnapBuildClearExportedSnapshot(void) { + ResourceOwner tmpResOwner; + /* nothing exported, that is the usual case */ if (!ExportInProgress) return; @@ -704,10 +706,24 @@ if (!IsTransactionState()) elog(ERROR, "clearing exported snapshot in wrong transaction state"); - /* make sure nothing could have ever happened */ + /* + * AbortCurrentTransaction() takes care of resetting the snapshot state, + * so remember SavedResourceOwnerDuringExport. + */ + tmpResOwner = SavedResourceOwnerDuringExport; + + /* make sure nothing could have ever happened */ AbortCurrentTransaction(); - CurrentResourceOwner = SavedResourceOwnerDuringExport; + CurrentResourceOwner = tmpResOwner; +} + +/* + * Clear snapshot export state during transaction abort. + */ +void +SnapBuildResetExportedSnapshotState(void) +{ SavedResourceOwnerDuringExport = NULL; ExportInProgress = false; } diff -Nru postgresql-10-10.17/src/backend/replication/logical/tablesync.c postgresql-10-10.19/src/backend/replication/logical/tablesync.c --- postgresql-10-10.17/src/backend/replication/logical/tablesync.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/logical/tablesync.c 2021-11-08 22:05:38.000000000 +0000 @@ -304,7 +304,7 @@ MyLogicalRepWorker->relstate_lsn, true); - walrcv_endstreaming(wrconn, &tli); + walrcv_endstreaming(LogRepWorkerWalRcvConn, &tli); finish_sync_worker(); } else @@ -600,7 +600,7 @@ for (;;) { /* Try read the data. */ - len = walrcv_receive(wrconn, &buf, &fd); + len = walrcv_receive(LogRepWorkerWalRcvConn, &buf, &fd); CHECK_FOR_INTERRUPTS(); @@ -678,7 +678,8 @@ " AND c.relkind = 'r'", quote_literal_cstr(nspname), quote_literal_cstr(relname)); - res = walrcv_exec(wrconn, cmd.data, 2, tableRow); + res = walrcv_exec(LogRepWorkerWalRcvConn, cmd.data, + lengthof(tableRow), tableRow); if (res->status != WALRCV_OK_TUPLES) ereport(ERROR, @@ -714,7 +715,8 @@ " AND a.attrelid = %u" " ORDER BY a.attnum", lrel->remoteid, lrel->remoteid); - res = walrcv_exec(wrconn, cmd.data, 4, attrRow); + res = walrcv_exec(LogRepWorkerWalRcvConn, cmd.data, + lengthof(attrRow), attrRow); if (res->status != WALRCV_OK_TUPLES) ereport(ERROR, @@ -784,7 +786,7 @@ initStringInfo(&cmd); appendStringInfo(&cmd, "COPY %s TO STDOUT", quote_qualified_identifier(lrel.nspname, lrel.relname)); - res = walrcv_exec(wrconn, cmd.data, 0, NULL); + res = walrcv_exec(LogRepWorkerWalRcvConn, cmd.data, 0, NULL); pfree(cmd.data); if (res->status != WALRCV_OK_COPY_OUT) ereport(ERROR, @@ -850,8 +852,9 @@ * application_name, so that it is different from the main apply worker, * so that synchronous replication can distinguish them. */ - wrconn = walrcv_connect(MySubscription->conninfo, true, slotname, &err); - if (wrconn == NULL) + LogRepWorkerWalRcvConn = walrcv_connect(MySubscription->conninfo, true, + slotname, &err); + if (LogRepWorkerWalRcvConn == NULL) ereport(ERROR, (errmsg("could not connect to the publisher: %s", err))); @@ -897,7 +900,7 @@ * inside the transaction so that we can use the snapshot made * by the slot to get existing data. */ - res = walrcv_exec(wrconn, + res = walrcv_exec(LogRepWorkerWalRcvConn, "BEGIN READ ONLY ISOLATION LEVEL " "REPEATABLE READ", 0, NULL); if (res->status != WALRCV_OK_COMMAND) @@ -914,14 +917,14 @@ * that is consistent with the lsn used by the slot to start * decoding. */ - walrcv_create_slot(wrconn, slotname, true, + walrcv_create_slot(LogRepWorkerWalRcvConn, slotname, true, CRS_USE_SNAPSHOT, origin_startpos); PushActiveSnapshot(GetTransactionSnapshot()); copy_table(rel); PopActiveSnapshot(); - res = walrcv_exec(wrconn, "COMMIT", 0, NULL); + res = walrcv_exec(LogRepWorkerWalRcvConn, "COMMIT", 0, NULL); if (res->status != WALRCV_OK_COMMAND) ereport(ERROR, (errmsg("table copy could not finish transaction on publisher"), diff -Nru postgresql-10-10.17/src/backend/replication/logical/worker.c postgresql-10-10.19/src/backend/replication/logical/worker.c --- postgresql-10-10.17/src/backend/replication/logical/worker.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/logical/worker.c 2021-11-08 22:05:38.000000000 +0000 @@ -102,14 +102,13 @@ typedef struct SlotErrCallbackArg { LogicalRepRelMapEntry *rel; - int local_attnum; int remote_attnum; } SlotErrCallbackArg; static MemoryContext ApplyMessageContext = NULL; MemoryContext ApplyContext = NULL; -WalReceiverConn *wrconn = NULL; +WalReceiverConn *LogRepWorkerWalRcvConn = NULL; Subscription *MySubscription = NULL; bool MySubscriptionValid = false; @@ -278,36 +277,23 @@ } /* - * Error callback to give more context info about type conversion failure. + * Error callback to give more context info about data conversion failures + * while reading data from the remote server. */ static void slot_store_error_callback(void *arg) { SlotErrCallbackArg *errarg = (SlotErrCallbackArg *) arg; LogicalRepRelMapEntry *rel; - char *remotetypname; - Oid remotetypoid, - localtypoid; /* Nothing to do if remote attribute number is not set */ if (errarg->remote_attnum < 0) return; rel = errarg->rel; - remotetypoid = rel->remoterel.atttyps[errarg->remote_attnum]; - - /* Fetch remote type name from the LogicalRepTypMap cache */ - remotetypname = logicalrep_typmap_gettypname(remotetypoid); - - /* Fetch local type OID from the local sys cache */ - localtypoid = get_atttype(rel->localreloid, errarg->local_attnum + 1); - - errcontext("processing remote data for replication target relation \"%s.%s\" column \"%s\", " - "remote type %s, local type %s", + errcontext("processing remote data for replication target relation \"%s.%s\" column \"%s\"", rel->remoterel.nspname, rel->remoterel.relname, - rel->remoterel.attnames[errarg->remote_attnum], - remotetypname, - format_type_be(localtypoid)); + rel->remoterel.attnames[errarg->remote_attnum]); } /* @@ -328,7 +314,6 @@ /* Push callback + info on the error context stack */ errarg.rel = rel; - errarg.local_attnum = -1; errarg.remote_attnum = -1; errcallback.callback = slot_store_error_callback; errcallback.arg = (void *) &errarg; @@ -347,7 +332,6 @@ Oid typinput; Oid typioparam; - errarg.local_attnum = i; errarg.remote_attnum = remoteattnum; getTypeInputInfo(att->atttypid, &typinput, &typioparam); @@ -356,7 +340,6 @@ typioparam, att->atttypmod); slot->tts_isnull[i] = false; - errarg.local_attnum = -1; errarg.remote_attnum = -1; } else @@ -412,7 +395,6 @@ /* For error reporting, push callback + info on the error context stack */ errarg.rel = rel; - errarg.local_attnum = -1; errarg.remote_attnum = -1; errcallback.callback = slot_store_error_callback; errcallback.arg = (void *) &errarg; @@ -436,7 +418,6 @@ Oid typinput; Oid typioparam; - errarg.local_attnum = i; errarg.remote_attnum = remoteattnum; getTypeInputInfo(att->atttypid, &typinput, &typioparam); @@ -445,7 +426,6 @@ typioparam, att->atttypmod); slot->tts_isnull[i] = false; - errarg.local_attnum = -1; errarg.remote_attnum = -1; } else @@ -491,7 +471,14 @@ logicalrep_read_commit(s, &commit_data); - Assert(commit_data.commit_lsn == remote_final_lsn); + if (commit_data.commit_lsn != remote_final_lsn) + ereport(ERROR, + (errcode(ERRCODE_PROTOCOL_VIOLATION), + errmsg_internal("incorrect commit LSN %X/%X in commit message (expected %X/%X)", + (uint32) (commit_data.commit_lsn >> 32), + (uint32) commit_data.commit_lsn, + (uint32) (remote_final_lsn >> 32), + (uint32) remote_final_lsn))); /* The synchronization worker runs in single transaction. */ if (IsTransactionState() && !am_tablesync_worker()) @@ -562,8 +549,7 @@ /* * Handle TYPE message. * - * Note we don't do local mapping here, that's done when the type is - * actually used. + * This is now vestigial; we read the info and discard it. */ static void apply_handle_type(StringInfo s) @@ -571,7 +557,6 @@ LogicalRepTyp typ; logicalrep_read_typ(s, &typ); - logicalrep_typmap_update(&typ); } /* @@ -1104,7 +1089,7 @@ MemoryContextSwitchTo(ApplyMessageContext); - len = walrcv_receive(wrconn, &buf, &fd); + len = walrcv_receive(LogRepWorkerWalRcvConn, &buf, &fd); if (len != 0) { @@ -1184,7 +1169,7 @@ MemoryContextReset(ApplyMessageContext); } - len = walrcv_receive(wrconn, &buf, &fd); + len = walrcv_receive(LogRepWorkerWalRcvConn, &buf, &fd); } } @@ -1214,7 +1199,7 @@ { TimeLineID tli; - walrcv_endstreaming(wrconn, &tli); + walrcv_endstreaming(LogRepWorkerWalRcvConn, &tli); break; } @@ -1381,7 +1366,8 @@ (uint32) (flushpos >> 32), (uint32) flushpos ); - walrcv_send(wrconn, reply_message->data, reply_message->len); + walrcv_send(LogRepWorkerWalRcvConn, + reply_message->data, reply_message->len); if (recvpos > last_recvpos) last_recvpos = recvpos; @@ -1682,9 +1668,9 @@ origin_startpos = replorigin_session_get_progress(false); CommitTransactionCommand(); - wrconn = walrcv_connect(MySubscription->conninfo, true, MySubscription->name, - &err); - if (wrconn == NULL) + LogRepWorkerWalRcvConn = walrcv_connect(MySubscription->conninfo, true, + MySubscription->name, &err); + if (LogRepWorkerWalRcvConn == NULL) ereport(ERROR, (errmsg("could not connect to the publisher: %s", err))); @@ -1692,9 +1678,8 @@ * We don't really use the output identify_system for anything but it * does some initializations on the upstream so let's still call it. */ - (void) walrcv_identify_system(wrconn, &startpointTLI, + (void) walrcv_identify_system(LogRepWorkerWalRcvConn, &startpointTLI, &server_version); - } /* @@ -1713,7 +1698,7 @@ options.proto.logical.publication_names = MySubscription->publications; /* Start normal logical streaming replication. */ - walrcv_startstreaming(wrconn, &options); + walrcv_startstreaming(LogRepWorkerWalRcvConn, &options); /* Run the main loop. */ LogicalRepApplyLoop(origin_startpos); diff -Nru postgresql-10-10.17/src/backend/replication/walreceiver.c postgresql-10-10.19/src/backend/replication/walreceiver.c --- postgresql-10-10.17/src/backend/replication/walreceiver.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/walreceiver.c 2021-11-08 22:05:38.000000000 +0000 @@ -118,6 +118,7 @@ static void XLogWalRcvProcessMsg(unsigned char type, char *buf, Size len); static void XLogWalRcvWrite(char *buf, Size nbytes, XLogRecPtr recptr); static void XLogWalRcvFlush(bool dying); +static void XLogWalRcvClose(XLogRecPtr recptr); static void XLogWalRcvSendReply(bool force, bool requestReply); static void XLogWalRcvSendHSFeedback(bool immed); static void ProcessWalSndrMessage(XLogRecPtr walEnd, TimestampTz sendTime); @@ -920,46 +921,16 @@ { int segbytes; - if (recvFile < 0 || !XLByteInSeg(recptr, recvSegNo)) - { - bool use_existent; - - /* - * fsync() and close current file before we switch to next one. We - * would otherwise have to reopen this file to fsync it later - */ - if (recvFile >= 0) - { - char xlogfname[MAXFNAMELEN]; - - XLogWalRcvFlush(false); - - /* - * XLOG segment files will be re-read by recovery in startup - * process soon, so we don't advise the OS to release cache - * pages associated with the file like XLogFileClose() does. - */ - if (close(recvFile) != 0) - ereport(PANIC, - (errcode_for_file_access(), - errmsg("could not close log segment %s: %m", - XLogFileNameP(recvFileTLI, recvSegNo)))); + /* Close the current segment if it's completed */ + if (recvFile >= 0 && !XLByteInSeg(recptr, recvSegNo)) + XLogWalRcvClose(recptr); - /* - * Create .done file forcibly to prevent the streamed segment - * from being archived later. - */ - XLogFileName(xlogfname, recvFileTLI, recvSegNo); - if (XLogArchiveMode != ARCHIVE_MODE_ALWAYS) - XLogArchiveForceDone(xlogfname); - else - XLogArchiveNotify(xlogfname); - } - recvFile = -1; + if (recvFile < 0) + { + bool use_existent = true; /* Create/use new log file */ XLByteToSeg(recptr, recvSegNo); - use_existent = true; recvFile = XLogFileInit(recvSegNo, &use_existent, true); recvFileTLI = ThisTimeLineID; recvOff = 0; @@ -1011,6 +982,15 @@ LogstreamResult.Write = recptr; } + + /* + * Close the current segment if it's fully written up in the last cycle of + * the loop, to create its archive notification file soon. Otherwise WAL + * archiving of the segment will be delayed until any data in the next + * segment is received and written. + */ + if (recvFile >= 0 && !XLByteInSeg(recptr, recvSegNo)) + XLogWalRcvClose(recptr); } /* @@ -1066,6 +1046,52 @@ } /* + * Close the current segment. + * + * Flush the segment to disk before closing it. Otherwise we have to + * reopen and fsync it later. + * + * Create an archive notification file since the segment is known completed. + */ +static void +XLogWalRcvClose(XLogRecPtr recptr) +{ + char xlogfname[MAXFNAMELEN]; + + Assert(recvFile >= 0 && !XLByteInSeg(recptr, recvSegNo)); + + /* + * fsync() and close current file before we switch to next one. We would + * otherwise have to reopen this file to fsync it later + */ + XLogWalRcvFlush(false); + + XLogFileName(xlogfname, recvFileTLI, recvSegNo); + + /* + * XLOG segment files will be re-read by recovery in startup process soon, + * so we don't advise the OS to release cache pages associated with the + * file like XLogFileClose() does. + */ + if (close(recvFile) != 0) + ereport(PANIC, + (errcode_for_file_access(), + errmsg("could not close log segment %s: %m", + xlogfname))); + + /* + * Create .done file forcibly to prevent the streamed segment from being + * archived later. + */ + if (XLogArchiveMode != ARCHIVE_MODE_ALWAYS) + XLogArchiveForceDone(xlogfname); + else + XLogArchiveNotify(xlogfname); + + recvFile = -1; +} + +/* * Send reply message to primary, indicating our current WAL locations, oldest * xmin and the current time. * diff -Nru postgresql-10-10.17/src/backend/replication/walsender.c postgresql-10-10.19/src/backend/replication/walsender.c --- postgresql-10-10.17/src/backend/replication/walsender.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/replication/walsender.c 2021-11-08 22:05:38.000000000 +0000 @@ -1453,6 +1453,9 @@ CHECK_FOR_INTERRUPTS(); + /* + * Parse the command. + */ cmd_context = AllocSetContextCreate(CurrentMemoryContext, "Replication command context", ALLOCSET_DEFAULT_SIZES); @@ -1463,33 +1466,49 @@ if (parse_rc != 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - (errmsg_internal("replication command parser returned %d", - parse_rc)))); + errmsg_internal("replication command parser returned %d", + parse_rc))); + replication_scanner_finish(); cmd_node = replication_parse_result; /* - * Log replication command if log_replication_commands is enabled. Even - * when it's disabled, log the command with DEBUG1 level for backward - * compatibility. Note that SQL commands are not logged here, and will be - * logged later if log_statement is enabled. + * If it's a SQL command, just clean up our mess and return false; the + * caller will take care of executing it. + */ + if (IsA(cmd_node, SQLCmd)) + { + if (MyDatabaseId == InvalidOid) + ereport(ERROR, + (errmsg("cannot execute SQL commands in WAL sender for physical replication"))); + + MemoryContextSwitchTo(old_context); + MemoryContextDelete(cmd_context); + + /* Tell the caller that this wasn't a WalSender command. */ + return false; + } + + /* + * Report query to various monitoring facilities. For this purpose, we + * report replication commands just like SQL commands. */ - if (cmd_node->type != T_SQLCmd) - ereport(log_replication_commands ? LOG : DEBUG1, - (errmsg("received replication command: %s", cmd_string))); + debug_query_string = cmd_string; + + pgstat_report_activity(STATE_RUNNING, cmd_string); /* - * CREATE_REPLICATION_SLOT ... LOGICAL exports a snapshot. If it was - * called outside of transaction the snapshot should be cleared here. + * Log replication command if log_replication_commands is enabled. Even + * when it's disabled, log the command with DEBUG1 level for backward + * compatibility. */ - if (!IsTransactionBlock()) - SnapBuildClearExportedSnapshot(); + ereport(log_replication_commands ? LOG : DEBUG1, + (errmsg("received replication command: %s", cmd_string))); /* - * For aborted transactions, don't allow anything except pure SQL, the - * exec_simple_query() will handle it correctly. + * Disallow replication commands in aborted transaction blocks. */ - if (IsAbortedTransactionBlockState() && !IsA(cmd_node, SQLCmd)) + if (IsAbortedTransactionBlockState()) ereport(ERROR, (errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION), errmsg("current transaction is aborted, " @@ -1505,9 +1524,6 @@ initStringInfo(&reply_message); initStringInfo(&tmpbuf); - /* Report to pgstat that this process is running */ - pgstat_report_activity(STATE_RUNNING, NULL); - switch (cmd_node->type) { case T_IdentifySystemCmd: @@ -1557,17 +1573,6 @@ } break; - case T_SQLCmd: - if (MyDatabaseId == InvalidOid) - ereport(ERROR, - (errmsg("cannot execute SQL commands in WAL sender for physical replication"))); - - /* Report to pgstat that this process is now idle */ - pgstat_report_activity(STATE_IDLE, NULL); - - /* Tell the caller that this wasn't a WalSender command. */ - return false; - default: elog(ERROR, "unrecognized replication command node tag: %u", cmd_node->type); @@ -1582,6 +1587,7 @@ /* Report to pgstat that this process is now idle */ pgstat_report_activity(STATE_IDLE, NULL); + debug_query_string = NULL; return true; } diff -Nru postgresql-10-10.17/src/backend/rewrite/rewriteHandler.c postgresql-10-10.19/src/backend/rewrite/rewriteHandler.c --- postgresql-10-10.17/src/backend/rewrite/rewriteHandler.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/rewrite/rewriteHandler.c 2021-11-08 22:05:38.000000000 +0000 @@ -526,6 +526,9 @@ * * This could possibly be fixed by using some sort of internally * generated ID, instead of names, to link CTE RTEs to their CTEs. + * However, decompiling the results would be quite confusing; note the + * merge of hasRecursive flags below, which could change the apparent + * semantics of such redundantly-named CTEs. */ foreach(lc, parsetree->cteList) { @@ -547,6 +550,26 @@ /* OK, it's safe to combine the CTE lists */ sub_action->cteList = list_concat(sub_action->cteList, copyObject(parsetree->cteList)); + /* ... and don't forget about the associated flags */ + sub_action->hasRecursive |= parsetree->hasRecursive; + sub_action->hasModifyingCTE |= parsetree->hasModifyingCTE; + + /* + * If rule_action is different from sub_action (i.e., the rule action + * is an INSERT...SELECT), then we might have just added some + * data-modifying CTEs that are not at the top query level. This is + * disallowed by the parser and we mustn't generate such trees here + * either, so throw an error. + * + * Conceivably such cases could be supported by attaching the original + * query's CTEs to rule_action not sub_action. But to do that, we'd + * have to increment ctelevelsup in RTEs and SubLinks copied from the + * original query. For now, it doesn't seem worth the trouble. + */ + if (sub_action->hasModifyingCTE && rule_action != sub_action) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("INSERT...SELECT rule actions are not supported for queries having data-modifying statements in WITH"))); } /* @@ -3431,15 +3454,29 @@ /* * Currently we can only handle unconditional, single-statement DO - * INSTEAD rules correctly; we have to get exactly one Query out of - * the rewrite operation to stuff back into the CTE node. + * INSTEAD rules correctly; we have to get exactly one non-utility + * Query out of the rewrite operation to stuff back into the CTE node. */ if (list_length(newstuff) == 1) { - /* Push the single Query back into the CTE node */ + /* Must check it's not a utility command */ ctequery = linitial_node(Query, newstuff); + if (!(ctequery->commandType == CMD_SELECT || + ctequery->commandType == CMD_UPDATE || + ctequery->commandType == CMD_INSERT || + ctequery->commandType == CMD_DELETE)) + { + /* + * Currently it could only be NOTIFY; this error message will + * need work if we ever allow other utility commands in rules. + */ + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("DO INSTEAD NOTIFY rules are not supported for data-modifying statements in WITH"))); + } /* WITH queries should never be canSetTag */ Assert(!ctequery->canSetTag); + /* Push the single Query back into the CTE node */ cte->ctequery = (Node *) ctequery; } else if (newstuff == NIL) diff -Nru postgresql-10-10.17/src/backend/statistics/dependencies.c postgresql-10-10.19/src/backend/statistics/dependencies.c --- postgresql-10-10.17/src/backend/statistics/dependencies.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/statistics/dependencies.c 2021-11-08 22:05:38.000000000 +0000 @@ -29,6 +29,8 @@ #include "utils/fmgroids.h" #include "utils/fmgrprotos.h" #include "utils/lsyscache.h" +#include "utils/memutils.h" +#include "utils/selfuncs.h" #include "utils/syscache.h" #include "utils/typcache.h" @@ -321,11 +323,6 @@ group_size++; } - pfree(items); - pfree(values); - pfree(isnull); - pfree(mss); - /* Compute the 'degree of validity' as (supporting/total). */ return (n_supporting_rows * 1.0 / numrows); } @@ -358,6 +355,7 @@ /* result */ MVDependencies *dependencies = NULL; + MemoryContext cxt; numattrs = bms_num_members(attrs); @@ -372,6 +370,11 @@ Assert(numattrs >= 2); + /* tracks memory allocated by dependency_degree calls */ + cxt = AllocSetContextCreate(CurrentMemoryContext, + "dependency_degree cxt", + ALLOCSET_DEFAULT_SIZES); + /* * We'll try build functional dependencies starting from the smallest ones * covering just 2 columns, to the largest ones, covering all columns @@ -390,10 +393,17 @@ { double degree; MVDependency *d; + MemoryContext oldcxt; + + /* release memory used by dependency degree calculation */ + oldcxt = MemoryContextSwitchTo(cxt); /* compute how valid the dependency seems */ degree = dependency_degree(numrows, rows, k, dependency, stats, attrs); + MemoryContextSwitchTo(oldcxt); + MemoryContextReset(cxt); + /* * if the dependency seems entirely invalid, don't store it it */ @@ -435,6 +445,8 @@ DependencyGenerator_free(DependencyGenerator); } + MemoryContextDelete(cxt); + return dependencies; } diff -Nru postgresql-10-10.17/src/backend/statistics/extended_stats.c postgresql-10-10.19/src/backend/statistics/extended_stats.c --- postgresql-10-10.17/src/backend/statistics/extended_stats.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/statistics/extended_stats.c 2021-11-08 22:05:38.000000000 +0000 @@ -74,13 +74,15 @@ MemoryContext cxt; MemoryContext oldcxt; - cxt = AllocSetContextCreate(CurrentMemoryContext, "stats ext", - ALLOCSET_DEFAULT_SIZES); - oldcxt = MemoryContextSwitchTo(cxt); - pg_stext = heap_open(StatisticExtRelationId, RowExclusiveLock); stats = fetch_statentries_for_relation(pg_stext, RelationGetRelid(onerel)); + /* memory context for building each statistics object */ + cxt = AllocSetContextCreate(CurrentMemoryContext, + "stats ext", + ALLOCSET_DEFAULT_SIZES); + oldcxt = MemoryContextSwitchTo(cxt); + foreach(lc, stats) { StatExtEntry *stat = (StatExtEntry *) lfirst(lc); @@ -127,12 +129,17 @@ /* store the statistics in the catalog */ statext_store(pg_stext, stat->statOid, ndistinct, dependencies, stats); - } - heap_close(pg_stext, RowExclusiveLock); + /* free the data used for building this statistics object */ + MemoryContextReset(cxt); + } MemoryContextSwitchTo(oldcxt); MemoryContextDelete(cxt); + + list_free(stats); + + heap_close(pg_stext, RowExclusiveLock); } /* diff -Nru postgresql-10-10.17/src/backend/storage/buffer/bufmgr.c postgresql-10-10.19/src/backend/storage/buffer/bufmgr.c --- postgresql-10-10.17/src/backend/storage/buffer/bufmgr.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/storage/buffer/bufmgr.c 2021-11-08 22:05:38.000000000 +0000 @@ -726,7 +726,16 @@ /* Substitute proper block number if caller asked for P_NEW */ if (isExtend) + { blockNum = smgrnblocks(smgr, forkNum); + /* Fail if relation is already at maximum possible length */ + if (blockNum == P_NEW) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("cannot extend relation %s beyond %u blocks", + relpath(smgr->smgr_rnode, forkNum), + P_NEW))); + } if (isLocalBuf) { diff -Nru postgresql-10-10.17/src/backend/storage/ipc/procarray.c postgresql-10-10.19/src/backend/storage/ipc/procarray.c --- postgresql-10-10.17/src/backend/storage/ipc/procarray.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/storage/ipc/procarray.c 2021-11-08 22:05:38.000000000 +0000 @@ -557,13 +557,13 @@ /* Walk the list and clear all XIDs. */ while (nextidx != INVALID_PGPROCNO) { - PGPROC *proc = &allProcs[nextidx]; + PGPROC *nextproc = &allProcs[nextidx]; PGXACT *pgxact = &allPgXact[nextidx]; - ProcArrayEndTransactionInternal(proc, pgxact, proc->procArrayGroupMemberXid); + ProcArrayEndTransactionInternal(nextproc, pgxact, nextproc->procArrayGroupMemberXid); /* Move to next proc in list. */ - nextidx = pg_atomic_read_u32(&proc->procArrayGroupNext); + nextidx = pg_atomic_read_u32(&nextproc->procArrayGroupNext); } /* We're done with the lock now. */ @@ -578,18 +578,18 @@ */ while (wakeidx != INVALID_PGPROCNO) { - PGPROC *proc = &allProcs[wakeidx]; + PGPROC *nextproc = &allProcs[wakeidx]; - wakeidx = pg_atomic_read_u32(&proc->procArrayGroupNext); - pg_atomic_write_u32(&proc->procArrayGroupNext, INVALID_PGPROCNO); + wakeidx = pg_atomic_read_u32(&nextproc->procArrayGroupNext); + pg_atomic_write_u32(&nextproc->procArrayGroupNext, INVALID_PGPROCNO); /* ensure all previous writes are visible before follower continues. */ pg_write_barrier(); - proc->procArrayGroupMember = false; + nextproc->procArrayGroupMember = false; - if (proc != MyProc) - PGSemaphoreUnlock(proc->sem); + if (nextproc != MyProc) + PGSemaphoreUnlock(nextproc->sem); } } @@ -3290,24 +3290,41 @@ /* * ExpireAllKnownAssignedTransactionIds - * Remove all entries in KnownAssignedXids + * Remove all entries in KnownAssignedXids and reset lastOverflowedXid. */ void ExpireAllKnownAssignedTransactionIds(void) { LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); KnownAssignedXidsRemovePreceding(InvalidTransactionId); + + /* + * Reset lastOverflowedXid. Currently, lastOverflowedXid has no use after + * the call of this function. But do this for unification with what + * ExpireOldKnownAssignedTransactionIds() do. + */ + procArray->lastOverflowedXid = InvalidTransactionId; LWLockRelease(ProcArrayLock); } /* * ExpireOldKnownAssignedTransactionIds - * Remove KnownAssignedXids entries preceding the given XID + * Remove KnownAssignedXids entries preceding the given XID and + * potentially reset lastOverflowedXid. */ void ExpireOldKnownAssignedTransactionIds(TransactionId xid) { LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); + + /* + * Reset lastOverflowedXid if we know all transactions that have been + * possibly running are being gone. Not doing so could cause an incorrect + * lastOverflowedXid value, which makes extra snapshots be marked as + * suboverflowed. + */ + if (TransactionIdPrecedes(procArray->lastOverflowedXid, xid)) + procArray->lastOverflowedXid = InvalidTransactionId; KnownAssignedXidsRemovePreceding(xid); LWLockRelease(ProcArrayLock); } diff -Nru postgresql-10-10.17/src/backend/storage/large_object/inv_api.c postgresql-10-10.19/src/backend/storage/large_object/inv_api.c --- postgresql-10-10.17/src/backend/storage/large_object/inv_api.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/storage/large_object/inv_api.c 2021-11-08 22:05:38.000000000 +0000 @@ -256,10 +256,12 @@ /* * inv_open -- access an existing large object. * - * Returns: - * Large object descriptor, appropriately filled in. The descriptor - * and subsidiary data are allocated in the specified memory context, - * which must be suitably long-lived for the caller's purposes. + * Returns a large object descriptor, appropriately filled in. + * The descriptor and subsidiary data are allocated in the specified + * memory context, which must be suitably long-lived for the caller's + * purposes. If the returned descriptor has a snapshot associated + * with it, the caller must ensure that it also lives long enough, + * e.g. by calling RegisterSnapshotOnOwner */ LargeObjectDesc * inv_open(Oid lobjId, int flags, MemoryContext mcxt) @@ -290,22 +292,20 @@ (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) - snapshot = RegisterSnapshotOnOwner(snapshot, - TopTransactionResourceOwner); - - /* All set, create a descriptor */ + /* OK to create a descriptor */ retval = (LargeObjectDesc *) MemoryContextAlloc(mcxt, sizeof(LargeObjectDesc)); retval->id = lobjId; - retval->subid = GetCurrentSubTransactionId(); retval->offset = 0; + retval->flags = descflags; + + /* caller sets if needed, not used by the functions in this file */ + retval->subid = InvalidSubTransactionId; + + /* + * The snapshot (if any) is just the currently active snapshot. The + * caller will replace it with a longer-lived copy if needed. + */ retval->snapshot = snapshot; retval->flags = descflags; @@ -320,10 +320,6 @@ inv_close(LargeObjectDesc *obj_desc) { Assert(PointerIsValid(obj_desc)); - - UnregisterSnapshotFromOwner(obj_desc->snapshot, - TopTransactionResourceOwner); - pfree(obj_desc); } diff -Nru postgresql-10-10.17/src/backend/storage/lmgr/lmgr.c postgresql-10-10.19/src/backend/storage/lmgr/lmgr.c --- postgresql-10-10.17/src/backend/storage/lmgr/lmgr.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/storage/lmgr/lmgr.c 2021-11-08 22:05:38.000000000 +0000 @@ -822,9 +822,10 @@ * To do this, obtain the current list of lockers, and wait on their VXIDs * until they are finished. * - * Note we don't try to acquire the locks on the given locktags, only the VXIDs - * of its lock holders; if somebody grabs a conflicting lock on the objects - * after we obtained our initial list of lockers, we will not wait for them. + * Note we don't try to acquire the locks on the given locktags, only the + * VXIDs and XIDs of their lock holders; if somebody grabs a conflicting lock + * on the objects after we obtained our initial list of lockers, we will not + * wait for them. */ void WaitForLockersMultiple(List *locktags, LOCKMODE lockmode) diff -Nru postgresql-10-10.17/src/backend/storage/lmgr/lock.c postgresql-10-10.19/src/backend/storage/lmgr/lock.c --- postgresql-10-10.17/src/backend/storage/lmgr/lock.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/storage/lmgr/lock.c 2021-11-08 22:05:38.000000000 +0000 @@ -2784,8 +2784,12 @@ * * The result array is palloc'd and is terminated with an invalid VXID. * - * Of course, the result could be out of date by the time it's returned, - * so use of this function has to be thought about carefully. + * Of course, the result could be out of date by the time it's returned, so + * use of this function has to be thought about carefully. Similarly, a + * PGPROC with no "lxid" will be considered non-conflicting regardless of any + * lock it holds. Existing callers don't care about a locker after that + * locker's pg_xact updates complete. CommitTransaction() clears "lxid" after + * pg_xact updates and before releasing locks. * * Note we never include the current xact's vxid in the result array, * since an xact never blocks itself. @@ -3086,17 +3090,112 @@ } /* + * CheckForSessionAndXactLocks + * Check to see if transaction holds both session-level and xact-level + * locks on the same object; if so, throw an error. + * + * If we have both session- and transaction-level locks on the same object, + * PREPARE TRANSACTION must 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. + * + * Since the LOCALLOCK table stores a separate entry for each lockmode, + * we can't implement this check by examining LOCALLOCK entries in isolation. + * We must build a transient hashtable that is indexed by locktag only. + */ +static void +CheckForSessionAndXactLocks(void) +{ + typedef struct + { + LOCKTAG lock; /* identifies the lockable object */ + bool sessLock; /* is any lockmode held at session level? */ + bool xactLock; /* is any lockmode held at xact level? */ + } PerLockTagEntry; + + HASHCTL hash_ctl; + HTAB *lockhtab; + HASH_SEQ_STATUS status; + LOCALLOCK *locallock; + + /* Create a local hash table keyed by LOCKTAG only */ + hash_ctl.keysize = sizeof(LOCKTAG); + hash_ctl.entrysize = sizeof(PerLockTagEntry); + hash_ctl.hcxt = CurrentMemoryContext; + + lockhtab = hash_create("CheckForSessionAndXactLocks table", + 256, /* arbitrary initial size */ + &hash_ctl, + HASH_ELEM | HASH_BLOBS | HASH_CONTEXT); + + /* Scan local lock table to find entries for each LOCKTAG */ + hash_seq_init(&status, LockMethodLocalHash); + + while ((locallock = (LOCALLOCK *) hash_seq_search(&status)) != NULL) + { + LOCALLOCKOWNER *lockOwners = locallock->lockOwners; + PerLockTagEntry *hentry; + bool found; + int i; + + /* + * Ignore VXID locks. We don't want those to be held by prepared + * transactions, since they aren't meaningful after a restart. + */ + if (locallock->tag.lock.locktag_type == LOCKTAG_VIRTUALTRANSACTION) + continue; + + /* Ignore it if we don't actually hold the lock */ + if (locallock->nLocks <= 0) + continue; + + /* Otherwise, find or make an entry in lockhtab */ + hentry = (PerLockTagEntry *) hash_search(lockhtab, + (void *) &locallock->tag.lock, + HASH_ENTER, &found); + if (!found) /* initialize, if newly created */ + hentry->sessLock = hentry->xactLock = false; + + /* Scan to see if we hold lock at session or xact level or both */ + for (i = locallock->numLockOwners - 1; i >= 0; i--) + { + if (lockOwners[i].owner == NULL) + hentry->sessLock = true; + else + hentry->xactLock = true; + } + + /* + * We can throw error immediately when we see both types of locks; no + * need to wait around to see if there are more violations. + */ + if (hentry->sessLock && hentry->xactLock) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot PREPARE while holding both session-level and transaction-level locks on the same object"))); + } + + /* Success, so clean up */ + hash_destroy(lockhtab); +} + +/* * AtPrepare_Locks * Do the preparatory work for a PREPARE: make 2PC state file records * for all locks currently held. * * 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 - * 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). + * For the most part, we don't need to touch shared memory for this --- + * all the necessary state information is in the locallock table. + * Fast-path locks are an exception, however: we move any such locks to + * the main table before allowing PREPARE TRANSACTION to succeed. */ void AtPrepare_Locks(void) @@ -3104,12 +3203,10 @@ HASH_SEQ_STATUS status; LOCALLOCK *locallock; - /* - * For the most part, we don't need to touch shared memory for this --- - * all the necessary state information is in the locallock table. - * Fast-path locks are an exception, however: we move any such locks to - * the main table before allowing PREPARE TRANSACTION to succeed. - */ + /* First, verify there aren't locks of both xact and session level */ + CheckForSessionAndXactLocks(); + + /* Now do the per-locallock cleanup work */ hash_seq_init(&status, LockMethodLocalHash); while ((locallock = (LOCALLOCK *) hash_seq_search(&status)) != NULL) @@ -3145,19 +3242,7 @@ 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. - */ + /* This can't happen, because we already checked it */ if (haveSessionLock) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -4322,36 +4407,79 @@ } /* + * XactLockForVirtualXact + * + * If TransactionIdIsValid(xid), this is essentially XactLockTableWait(xid, + * NULL, NULL, XLTW_None) or ConditionalXactLockTableWait(xid). Unlike those + * functions, it assumes "xid" is never a subtransaction and that "xid" is + * prepared, committed, or aborted. + * + * If !TransactionIdIsValid(xid), this locks every prepared XID having been + * known as "vxid" before its PREPARE TRANSACTION. + */ +static bool +XactLockForVirtualXact(VirtualTransactionId vxid, + TransactionId xid, bool wait) +{ + bool more = false; + + /* There is no point to wait for 2PCs if you have no 2PCs. */ + if (max_prepared_xacts == 0) + return true; + + do + { + LockAcquireResult lar; + LOCKTAG tag; + + /* Clear state from previous iterations. */ + if (more) + { + xid = InvalidTransactionId; + more = false; + } + + /* If we have no xid, try to find one. */ + if (!TransactionIdIsValid(xid)) + xid = TwoPhaseGetXidByVirtualXID(vxid, &more); + if (!TransactionIdIsValid(xid)) + { + Assert(!more); + return true; + } + + /* Check or wait for XID completion. */ + SET_LOCKTAG_TRANSACTION(tag, xid); + lar = LockAcquire(&tag, ShareLock, false, !wait); + if (lar == LOCKACQUIRE_NOT_AVAIL) + return false; + LockRelease(&tag, ShareLock, false); + } while (more); + + return true; +} + +/* * VirtualXactLock * - * If wait = true, wait until the given VXID has been released, and then - * return true. + * If wait = true, wait as long as the given VXID or any XID acquired by the + * same transaction is still running. Then, return true. * - * If wait = false, just check whether the VXID is still running, and return - * true or false. + * If wait = false, just check whether that VXID or one of those XIDs is still + * running, and return true or false. */ bool VirtualXactLock(VirtualTransactionId vxid, bool wait) { LOCKTAG tag; PGPROC *proc; + TransactionId xid = InvalidTransactionId; Assert(VirtualTransactionIdIsValid(vxid)); - if (VirtualTransactionIdIsPreparedXact(vxid)) - { - LockAcquireResult lar; - - /* - * Prepared transactions don't hold vxid locks. The - * LocalTransactionId is always a normal, locked XID. - */ - SET_LOCKTAG_TRANSACTION(tag, vxid.localTransactionId); - lar = LockAcquire(&tag, ShareLock, false, !wait); - if (lar != LOCKACQUIRE_NOT_AVAIL) - LockRelease(&tag, ShareLock, false); - return lar != LOCKACQUIRE_NOT_AVAIL; - } + if (VirtualTransactionIdIsRecoveredPreparedXact(vxid)) + /* no vxid lock; localTransactionId is a normal, locked XID */ + return XactLockForVirtualXact(vxid, vxid.localTransactionId, wait); SET_LOCKTAG_VIRTUALTRANSACTION(tag, vxid); @@ -4365,7 +4493,7 @@ */ proc = BackendIdGetProc(vxid.backendId); if (proc == NULL) - return true; + return XactLockForVirtualXact(vxid, InvalidTransactionId, wait); /* * We must acquire this lock before checking the backendId and lxid @@ -4374,12 +4502,12 @@ */ LWLockAcquire(&proc->backendLock, LW_EXCLUSIVE); - /* If the transaction has ended, our work here is done. */ if (proc->backendId != vxid.backendId || proc->fpLocalTransactionId != vxid.localTransactionId) { + /* VXID ended */ LWLockRelease(&proc->backendLock); - return true; + return XactLockForVirtualXact(vxid, InvalidTransactionId, wait); } /* @@ -4426,6 +4554,16 @@ proc->fpVXIDLock = false; } + /* + * If the proc has an XID now, we'll avoid a TwoPhaseGetXidByVirtualXID() + * search. The proc might have assigned this XID but not yet locked it, + * in which case the proc will lock this XID before releasing the VXID. + * The backendLock critical section excludes VirtualXactLockTableCleanup(), + * so we won't save an XID of a different VXID. It doesn't matter whether + * we save this before or after setting up the primary lock table entry. + */ + xid = ProcGlobal->allPgXact[proc->pgprocno].xid; + /* Done with proc->fpLockBits */ LWLockRelease(&proc->backendLock); @@ -4433,7 +4571,7 @@ (void) LockAcquire(&tag, ShareLock, false, false); LockRelease(&tag, ShareLock, false); - return true; + return XactLockForVirtualXact(vxid, xid, wait); } /* diff -Nru postgresql-10-10.17/src/backend/storage/lmgr/lwlock.c postgresql-10-10.19/src/backend/storage/lmgr/lwlock.c --- postgresql-10-10.17/src/backend/storage/lmgr/lwlock.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/storage/lmgr/lwlock.c 2021-11-08 22:05:38.000000000 +0000 @@ -1211,14 +1211,10 @@ /* * Wait until awakened. * - * Since we share the process wait semaphore with the regular lock - * manager and ProcWaitForSignal, and we may need to acquire an LWLock - * while one of those is pending, it is possible that we get awakened - * for a reason other than being signaled by LWLockRelease. If so, - * loop back and wait again. Once we've gotten the LWLock, - * re-increment the sema by the number of additional signals received, - * so that the lock manager or signal manager will see the received - * signal when it next waits. + * It is possible that we get awakened for a reason other than being + * signaled by LWLockRelease. If so, loop back and wait again. Once + * we've gotten the LWLock, re-increment the sema by the number of + * additional signals received. */ LOG_LWDEBUG("LWLockAcquire", lock, "waiting"); @@ -1378,8 +1374,7 @@ { /* * Wait until awakened. Like in LWLockAcquire, be prepared for - * bogus wakeups, because we share the semaphore with - * ProcWaitForSignal. + * bogus wakeups. */ LOG_LWDEBUG("LWLockAcquireOrWait", lock, "waiting"); @@ -1588,14 +1583,10 @@ /* * Wait until awakened. * - * Since we share the process wait semaphore with the regular lock - * manager and ProcWaitForSignal, and we may need to acquire an LWLock - * while one of those is pending, it is possible that we get awakened - * for a reason other than being signaled by LWLockRelease. If so, - * loop back and wait again. Once we've gotten the LWLock, - * re-increment the sema by the number of additional signals received, - * so that the lock manager or signal manager will see the received - * signal when it next waits. + * It is possible that we get awakened for a reason other than being + * signaled by LWLockRelease. If so, loop back and wait again. Once + * we've gotten the LWLock, re-increment the sema by the number of + * additional signals received. */ LOG_LWDEBUG("LWLockWaitForVar", lock, "waiting"); diff -Nru postgresql-10-10.17/src/backend/storage/lmgr/README.barrier postgresql-10-10.19/src/backend/storage/lmgr/README.barrier --- postgresql-10-10.17/src/backend/storage/lmgr/README.barrier 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/storage/lmgr/README.barrier 2021-11-08 22:05:38.000000000 +0000 @@ -103,7 +103,7 @@ Although this code will work, it is needlessly inefficient. On systems with strong memory ordering (such as x86), the CPU never reorders loads with other -loads, nor stores with other stores. It can, however, allow a load to +loads, nor stores with other stores. It can, however, allow a load to be performed before a subsequent store. To avoid emitting unnecessary memory instructions, we provide two additional primitives: pg_read_barrier(), and pg_write_barrier(). When a memory barrier is being used to separate two @@ -155,18 +155,16 @@ the CPU will execute that instruction by reading the current value of foo, adding one to it, and then storing the result back to the original address. If two CPUs try to do this simultaneously, both may do their reads before -either one does their writes. Eventually we might be able to use an atomic -fetch-and-add instruction for this specific case on architectures that support -it, but we can't rely on that being available everywhere, and we currently -have no support for it at all. Use a lock. +either one does their writes. Such a case could be made safe by using an +atomic variable and an atomic add. See port/atomics.h. 2. Eight-byte loads and stores aren't necessarily atomic. We assume in various places in the source code that an aligned four-byte load or store is atomic, and that other processes therefore won't see a half-set value. Sadly, the same can't be said for eight-byte value: on some platforms, an aligned eight-byte load or store will generate two four-byte operations. If -you need an atomic eight-byte read or write, you must make it atomic with a -lock. +you need an atomic eight-byte read or write, you must either serialize access +with a lock or use an atomic variable. 3. No ordering guarantees. While memory barriers ensure that any given process performs loads and stores to shared memory in order, they don't diff -Nru postgresql-10-10.17/src/backend/storage/smgr/md.c postgresql-10-10.19/src/backend/storage/smgr/md.c --- postgresql-10-10.17/src/backend/storage/smgr/md.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/storage/smgr/md.c 2021-11-08 22:05:38.000000000 +0000 @@ -549,7 +549,8 @@ /* * If a relation manages to grow to 2^32-1 blocks, refuse to extend it any * more --- we mustn't create a block whose number actually is - * InvalidBlockNumber. + * InvalidBlockNumber. (Note that this failure should be unreachable + * because of upstream checks in bufmgr.c.) */ if (blocknum == InvalidBlockNumber) ereport(ERROR, diff -Nru postgresql-10-10.17/src/backend/tcop/postgres.c postgresql-10-10.19/src/backend/tcop/postgres.c --- postgresql-10-10.17/src/backend/tcop/postgres.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/tcop/postgres.c 2021-11-08 22:05:38.000000000 +0000 @@ -579,7 +579,7 @@ { /* * Don't mess with whereToSendOutput if ProcessInterrupts wouldn't - * do anything. + * service ProcDiePending. */ if (InterruptHoldoffCount == 0 && CritSectionCount == 0) { @@ -2861,6 +2861,12 @@ * If an interrupt condition is pending, and it's safe to service it, * then clear the flag and accept the interrupt. Called only when * InterruptPending is true. + * + * Note: if INTERRUPTS_CAN_BE_PROCESSED() is true, then ProcessInterrupts + * is guaranteed to clear the InterruptPending flag before returning. + * (This is not the same as guaranteeing that it's still clear when we + * return; another interrupt could have arrived. But we promise that + * any pre-existing one will have been serviced.) */ void ProcessInterrupts(void) @@ -2964,8 +2970,12 @@ if (QueryCancelPending && QueryCancelHoldoffCount != 0) { /* - * Re-arm InterruptPending so that we process the cancel request - * as soon as we're done reading the message. + * Re-arm InterruptPending so that we process the cancel request as + * soon as we're done reading the message. (XXX this is seriously + * ugly: it complicates INTERRUPTS_CAN_BE_PROCESSED(), and it means we + * can't use that macro directly as the initial test in this function, + * meaning that this code also creates opportunities for other bugs to + * appear.) */ InterruptPending = true; } diff -Nru postgresql-10-10.17/src/backend/utils/adt/date.c postgresql-10-10.19/src/backend/utils/adt/date.c --- postgresql-10-10.17/src/backend/utils/adt/date.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/date.c 2021-11-08 22:05:38.000000000 +0000 @@ -2721,6 +2721,8 @@ struct pg_tm *tm; tm = pg_localtime(&now, tzp); + tm->tm_year += 1900; /* adjust to PG conventions */ + tm->tm_mon += 1; tz = DetermineTimeZoneAbbrevOffset(tm, tzname, tzp); } else diff -Nru postgresql-10-10.17/src/backend/utils/adt/dbsize.c postgresql-10-10.19/src/backend/utils/adt/dbsize.c --- postgresql-10-10.17/src/backend/utils/adt/dbsize.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/dbsize.c 2021-11-08 22:05:38.000000000 +0000 @@ -31,8 +31,8 @@ #include "utils/relmapper.h" #include "utils/syscache.h" -/* Divide by two and round towards positive infinity. */ -#define half_rounded(x) (((x) + ((x) < 0 ? 0 : 1)) / 2) +/* Divide by two and round away from zero */ +#define half_rounded(x) (((x) + ((x) < 0 ? -1 : 1)) / 2) /* Return physical size of directory contents, or 0 if dir doesn't exist */ static int64 @@ -547,25 +547,29 @@ snprintf(buf, sizeof(buf), INT64_FORMAT " bytes", size); else { - size >>= 9; /* keep one extra bit for rounding */ + /* + * We use divide instead of bit shifting so that behavior matches for + * both positive and negative size values. + */ + size /= (1 << 9); /* keep one extra bit for rounding */ if (Abs(size) < limit2) snprintf(buf, sizeof(buf), INT64_FORMAT " kB", half_rounded(size)); else { - size >>= 10; + size /= (1 << 10); if (Abs(size) < limit2) snprintf(buf, sizeof(buf), INT64_FORMAT " MB", half_rounded(size)); else { - size >>= 10; + size /= (1 << 10); if (Abs(size) < limit2) snprintf(buf, sizeof(buf), INT64_FORMAT " GB", half_rounded(size)); else { - size >>= 10; + size /= (1 << 10); snprintf(buf, sizeof(buf), INT64_FORMAT " TB", half_rounded(size)); } @@ -634,15 +638,14 @@ } static Numeric -numeric_shift_right(Numeric n, unsigned count) +numeric_truncated_divide(Numeric n, int64 divisor) { Datum d = NumericGetDatum(n); - Datum divisor_int64; Datum divisor_numeric; Datum result; - divisor_int64 = Int64GetDatum((int64) (1 << count)); - divisor_numeric = DirectFunctionCall1(int8_numeric, divisor_int64); + divisor_numeric = DirectFunctionCall1(int8_numeric, + Int64GetDatum(divisor)); result = DirectFunctionCall2(numeric_div_trunc, d, divisor_numeric); return DatumGetNumeric(result); } @@ -665,8 +668,8 @@ else { /* keep one extra bit for rounding */ - /* size >>= 9 */ - size = numeric_shift_right(size, 9); + /* size /= (1 << 9) */ + size = numeric_truncated_divide(size, 1 << 9); if (numeric_is_less(numeric_absolute(size), limit2)) { @@ -675,8 +678,9 @@ } else { - /* size >>= 10 */ - size = numeric_shift_right(size, 10); + /* size /= (1 << 10) */ + size = numeric_truncated_divide(size, 1 << 10); + if (numeric_is_less(numeric_absolute(size), limit2)) { size = numeric_half_rounded(size); @@ -684,8 +688,8 @@ } else { - /* size >>= 10 */ - size = numeric_shift_right(size, 10); + /* size /= (1 << 10) */ + size = numeric_truncated_divide(size, 1 << 10); if (numeric_is_less(numeric_absolute(size), limit2)) { @@ -694,8 +698,8 @@ } else { - /* size >>= 10 */ - size = numeric_shift_right(size, 10); + /* size /= (1 << 10) */ + size = numeric_truncated_divide(size, 1 << 10); size = numeric_half_rounded(size); result = psprintf("%s TB", numeric_to_cstring(size)); } @@ -926,7 +930,11 @@ { Oid reltablespace = PG_GETARG_OID(0); Oid relfilenode = PG_GETARG_OID(1); - Oid heaprel = InvalidOid; + Oid heaprel; + + /* test needed so RelidByRelfilenode doesn't misbehave */ + if (!OidIsValid(relfilenode)) + PG_RETURN_NULL(); heaprel = RelidByRelfilenode(reltablespace, relfilenode); diff -Nru postgresql-10-10.17/src/backend/utils/adt/formatting.c postgresql-10-10.19/src/backend/utils/adt/formatting.c --- postgresql-10-10.17/src/backend/utils/adt/formatting.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/formatting.c 2021-11-08 22:05:38.000000000 +0000 @@ -84,6 +84,10 @@ #ifdef USE_ICU #include +/* ICU might have a different definition of "bool", don't buy it */ +#ifdef bool +#undef bool +#endif #endif #include "catalog/pg_collation.h" diff -Nru postgresql-10-10.17/src/backend/utils/adt/numeric.c postgresql-10-10.19/src/backend/utils/adt/numeric.c --- postgresql-10-10.17/src/backend/utils/adt/numeric.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/numeric.c 2021-11-08 22:05:38.000000000 +0000 @@ -202,6 +202,7 @@ */ #define NUMERIC_DSCALE_MASK 0x3FFF +#define NUMERIC_DSCALE_MAX NUMERIC_DSCALE_MASK #define NUMERIC_SIGN(n) \ (NUMERIC_IS_SHORT(n) ? \ @@ -379,16 +380,6 @@ static NumericVar const_two = {1, 0, NUMERIC_POS, 0, NULL, const_two_data}; -#if DEC_DIGITS == 4 || DEC_DIGITS == 2 -static NumericDigit const_ten_data[1] = {10}; -static NumericVar const_ten = -{1, 0, NUMERIC_POS, 0, NULL, const_ten_data}; -#elif DEC_DIGITS == 1 -static NumericDigit const_ten_data[1] = {1}; -static NumericVar const_ten = -{1, 1, NUMERIC_POS, 0, NULL, const_ten_data}; -#endif - #if DEC_DIGITS == 4 static NumericDigit const_zero_point_five_data[1] = {5000}; #elif DEC_DIGITS == 2 @@ -519,6 +510,7 @@ static void power_var(NumericVar *base, NumericVar *exp, NumericVar *result); static void power_var_int(NumericVar *base, int exp, NumericVar *result, int rscale); +static void power_ten_int(int exp, NumericVar *result); static int cmp_abs(NumericVar *var1, NumericVar *var2); static int cmp_abs_common(const NumericDigit *var1digits, int var1ndigits, @@ -2341,7 +2333,11 @@ * Unlike add_var() and sub_var(), mul_var() will round its result. In the * case of numeric_mul(), which is invoked for the * operator on numerics, * we request exact representation for the product (rscale = sum(dscale of - * arg1, dscale of arg2)). + * arg1, dscale of arg2)). If the exact result has more digits after the + * decimal point than can be stored in a numeric, we round it. Rounding + * after computing the exact result ensures that the final result is + * correctly rounded (rounding in mul_var() using a truncated product + * would not guarantee this). */ init_var_from_num(num1, &arg1); init_var_from_num(num2, &arg2); @@ -2349,6 +2345,9 @@ init_var(&result); mul_var(&arg1, &arg2, &result, arg1.dscale + arg2.dscale); + if (result.dscale > NUMERIC_DSCALE_MAX) + round_var(&result, NUMERIC_DSCALE_MAX); + res = make_result(&result); free_var(&result); @@ -2844,7 +2843,9 @@ /* * The SQL spec requires that we emit a particular SQLSTATE error code for * certain error conditions. Specifically, we don't return a - * divide-by-zero error code for 0 ^ -1. + * divide-by-zero error code for 0 ^ -1. Raising a negative number to a + * non-integer power must produce the same error code, but that case is + * handled in power_var(). */ if (cmp_var(&arg1, &const_zero) == 0 && cmp_var(&arg2, &const_zero) < 0) @@ -2852,12 +2853,6 @@ (errcode(ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION), errmsg("zero raised to a negative power is undefined"))); - if (cmp_var(&arg1, &const_zero) < 0 && - cmp_var(&arg2, &arg2_trunc) != 0) - ereport(ERROR, - (errcode(ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION), - errmsg("a negative number raised to a non-integer power yields a complex result"))); - /* * Call power_var() to compute and return the result; note it handles * scale selection itself. @@ -2944,7 +2939,6 @@ static int32 numericvar_to_int32(NumericVar *var) { - int32 result; int64 val; if (!numericvar_to_int64(var, &val)) @@ -2952,16 +2946,13 @@ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("integer out of range"))); - /* Down-convert to int4 */ - result = (int32) val; - - /* Test for overflow by reverse-conversion. */ - if ((int64) result != val) + if (unlikely(val < PG_INT32_MIN) || unlikely(val > PG_INT32_MAX)) ereport(ERROR, (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("integer out of range"))); - return result; + /* Down-convert to int4 */ + return (int32) val; } Datum @@ -3049,15 +3040,14 @@ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("smallint out of range"))); - /* Down-convert to int2 */ - result = (int16) val; - - /* Test for overflow by reverse-conversion. */ - if ((int64) result != val) + if (unlikely(val < PG_INT16_MIN) || unlikely(val > PG_INT16_MAX)) ereport(ERROR, (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("smallint out of range"))); + /* Down-convert to int2 */ + result = (int16) val; + PG_RETURN_INT16(result); } @@ -5847,9 +5837,7 @@ get_str_from_var_sci(NumericVar *var, int rscale) { int32 exponent; - NumericVar denominator; - NumericVar significand; - int denom_scale; + NumericVar tmp_var; size_t len; char *str; char *sig_out; @@ -5886,25 +5874,16 @@ } /* - * The denominator is set to 10 raised to the power of the exponent. - * - * We then divide var by the denominator to get the significand, rounding - * to rscale decimal digits in the process. + * Divide var by 10^exponent to get the significand, rounding to rscale + * decimal digits in the process. */ - if (exponent < 0) - denom_scale = -exponent; - else - denom_scale = 0; - - init_var(&denominator); - init_var(&significand); + init_var(&tmp_var); - power_var_int(&const_ten, exponent, &denominator, denom_scale); - div_var(var, &denominator, &significand, rscale, true); - sig_out = get_str_from_var(&significand); + power_ten_int(exponent, &tmp_var); + div_var(var, &tmp_var, &tmp_var, rscale, true); + sig_out = get_str_from_var(&tmp_var); - free_var(&denominator); - free_var(&significand); + free_var(&tmp_var); /* * Allocate space for the result. @@ -7702,12 +7681,18 @@ */ val = numericvar_to_double_no_overflow(&x); - /* Guard against overflow */ + /* Guard against overflow/underflow */ /* If you change this limit, see also power_var()'s limit */ if (Abs(val) >= NUMERIC_MAX_RESULT_SCALE * 3) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("value overflows numeric format"))); + { + if (val > 0) + ereport(ERROR, + (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), + errmsg("value overflows numeric format"))); + zero_var(result); + result->dscale = rscale; + return; + } /* decimal weight = log10(e^x) = x * log10(e) */ dweight = (int) (val * 0.434294481903252); @@ -8052,10 +8037,13 @@ static void power_var(NumericVar *base, NumericVar *exp, NumericVar *result) { + int res_sign; + NumericVar abs_base; NumericVar ln_base; NumericVar ln_num; int ln_dweight; int rscale; + int sig_digits; int local_rscale; double val; @@ -8067,10 +8055,7 @@ if (numericvar_to_int64(exp, &expval64)) { - int expval = (int) expval64; - - /* Test for overflow by reverse-conversion. */ - if ((int64) expval == expval64) + if (expval64 >= PG_INT32_MIN && expval64 <= PG_INT32_MAX) { /* Okay, select rscale */ rscale = NUMERIC_MIN_SIG_DIGITS; @@ -8078,7 +8063,7 @@ rscale = Max(rscale, NUMERIC_MIN_DISPLAY_SCALE); rscale = Min(rscale, NUMERIC_MAX_DISPLAY_SCALE); - power_var_int(base, expval, result, rscale); + power_var_int(base, (int) expval64, result, rscale); return; } } @@ -8095,9 +8080,40 @@ return; } + init_var(&abs_base); init_var(&ln_base); init_var(&ln_num); + /* + * If base is negative, insist that exp be an integer. The result is then + * positive if exp is even and negative if exp is odd. + */ + if (base->sign == NUMERIC_NEG) + { + /* + * Check that exp is an integer. This error code is defined by the + * SQL standard, and matches other errors in numeric_power(). + */ + if (exp->ndigits > 0 && exp->ndigits > exp->weight + 1) + ereport(ERROR, + (errcode(ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION), + errmsg("a negative number raised to a non-integer power yields a complex result"))); + + /* Test if exp is odd or even */ + if (exp->ndigits > 0 && exp->ndigits == exp->weight + 1 && + (exp->digits[exp->ndigits - 1] & 1)) + res_sign = NUMERIC_NEG; + else + res_sign = NUMERIC_POS; + + /* Then work with abs(base) below */ + set_var_from_var(base, &abs_base); + abs_base.sign = NUMERIC_POS; + base = &abs_base; + } + else + res_sign = NUMERIC_POS; + /*---------- * Decide on the scale for the ln() calculation. For this we need an * estimate of the weight of the result, which we obtain by doing an @@ -8118,9 +8134,13 @@ */ ln_dweight = estimate_ln_dweight(base); + /* + * Set the scale for the low-precision calculation, computing ln(base) to + * around 8 significant digits. Note that ln_dweight may be as small as + * -SHRT_MAX, so the scale may exceed NUMERIC_MAX_DISPLAY_SCALE here. + */ local_rscale = 8 - ln_dweight; local_rscale = Max(local_rscale, NUMERIC_MIN_DISPLAY_SCALE); - local_rscale = Min(local_rscale, NUMERIC_MAX_DISPLAY_SCALE); ln_var(base, &ln_base, local_rscale); @@ -8128,11 +8148,17 @@ val = numericvar_to_double_no_overflow(&ln_num); - /* initial overflow test with fuzz factor */ + /* initial overflow/underflow test with fuzz factor */ if (Abs(val) > NUMERIC_MAX_RESULT_SCALE * 3.01) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("value overflows numeric format"))); + { + if (val > 0) + ereport(ERROR, + (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), + errmsg("value overflows numeric format"))); + zero_var(result); + result->dscale = NUMERIC_MAX_DISPLAY_SCALE; + return; + } val *= 0.434294481903252; /* approximate decimal result weight */ @@ -8143,8 +8169,12 @@ rscale = Max(rscale, NUMERIC_MIN_DISPLAY_SCALE); rscale = Min(rscale, NUMERIC_MAX_DISPLAY_SCALE); + /* significant digits required in the result */ + sig_digits = rscale + (int) val; + sig_digits = Max(sig_digits, 0); + /* set the scale for the real exp * ln(base) calculation */ - local_rscale = rscale + (int) val - ln_dweight + 8; + local_rscale = sig_digits - ln_dweight + 8; local_rscale = Max(local_rscale, NUMERIC_MIN_DISPLAY_SCALE); /* and do the real calculation */ @@ -8155,8 +8185,12 @@ exp_var(&ln_num, result, rscale); + if (res_sign == NUMERIC_NEG && result->ndigits > 0) + result->sign = NUMERIC_NEG; + free_var(&ln_num); free_var(&ln_base); + free_var(&abs_base); } /* @@ -8335,6 +8369,34 @@ round_var(result, rscale); } +/* + * power_ten_int() - + * + * Raise ten to the power of exp, where exp is an integer. Note that unlike + * power_var_int(), this does no overflow/underflow checking or rounding. + */ +static void +power_ten_int(int exp, NumericVar *result) +{ + /* Construct the result directly, starting from 10^0 = 1 */ + set_var_from_var(&const_one, result); + + /* Scale needed to represent the result exactly */ + result->dscale = exp < 0 ? -exp : 0; + + /* Base-NBASE weight of result and remaining exponent */ + if (exp >= 0) + result->weight = exp / DEC_DIGITS; + else + result->weight = (exp + 1) / DEC_DIGITS - 1; + + exp -= result->weight * DEC_DIGITS; + + /* Final adjustment of the result's single NBASE digit */ + while (exp-- > 0) + result->digits[0] *= 10; +} + /* ---------------------------------------------------------------------- * diff -Nru postgresql-10-10.17/src/backend/utils/adt/pg_locale.c postgresql-10-10.19/src/backend/utils/adt/pg_locale.c --- postgresql-10-10.17/src/backend/utils/adt/pg_locale.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/pg_locale.c 2021-11-08 22:05:38.000000000 +0000 @@ -67,6 +67,10 @@ #ifdef USE_ICU #include +/* ICU might have a different definition of "bool", don't buy it */ +#ifdef bool +#undef bool +#endif #endif #ifdef WIN32 diff -Nru postgresql-10-10.17/src/backend/utils/adt/rangetypes_selfuncs.c postgresql-10-10.19/src/backend/utils/adt/rangetypes_selfuncs.c --- postgresql-10-10.17/src/backend/utils/adt/rangetypes_selfuncs.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/rangetypes_selfuncs.c 2021-11-08 22:05:38.000000000 +0000 @@ -621,7 +621,7 @@ * * This function is used in scalar operator selectivity estimation. Another * goal of this function is to find a histogram bin where to stop - * interpolation of portion of bounds which are less or equal to given bound. + * interpolation of portion of bounds which are less than or equal to given bound. */ static int rbound_bsearch(TypeCacheEntry *typcache, RangeBound *value, RangeBound *hist, diff -Nru postgresql-10-10.17/src/backend/utils/adt/rangetypes_spgist.c postgresql-10-10.19/src/backend/utils/adt/rangetypes_spgist.c --- postgresql-10-10.17/src/backend/utils/adt/rangetypes_spgist.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/rangetypes_spgist.c 2021-11-08 22:05:38.000000000 +0000 @@ -513,7 +513,7 @@ /* * Range A is overleft to range B if upper bound of A is - * less or equal to upper bound of B. + * less than or equal to upper bound of B. */ maxUpper = &upper; break; @@ -532,7 +532,7 @@ /* * Range A is overright to range B if lower bound of A is - * greater or equal to lower bound of B. + * greater than or equal to lower bound of B. */ minLower = &lower; break; @@ -609,7 +609,7 @@ /* * Non-empty range A contains non-empty range B if lower * bound of A is lower or equal to lower bound of range B - * and upper bound of range A is greater or equal to upper + * and upper bound of range A is greater than or equal to upper * bound of range A. * * All non-empty ranges contain an empty range. diff -Nru postgresql-10-10.17/src/backend/utils/adt/selfuncs.c postgresql-10-10.19/src/backend/utils/adt/selfuncs.c --- postgresql-10-10.17/src/backend/utils/adt/selfuncs.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/selfuncs.c 2021-11-08 22:05:38.000000000 +0000 @@ -4920,7 +4920,8 @@ * of learning something even with it. */ if (subquery->setOperations || - subquery->groupClause) + subquery->groupClause || + subquery->groupingSets) return; /* @@ -5242,46 +5243,72 @@ /* * If we have most-common-values info, look for extreme MCVs. This is * needed even if we also have a histogram, since the histogram excludes - * the MCVs. However, usually the MCVs will not be the extreme values, so - * avoid unnecessary data copying. + * the MCVs. However, if we *only* have MCVs and no histogram, we should + * be pretty wary of deciding that that is a full representation of the + * data. Proceed only if the MCVs represent the whole table (to within + * roundoff error). */ if (get_attstatsslot(&sslot, vardata->statsTuple, STATISTIC_KIND_MCV, InvalidOid, - ATTSTATSSLOT_VALUES)) + have_data ? ATTSTATSSLOT_VALUES : + (ATTSTATSSLOT_VALUES | ATTSTATSSLOT_NUMBERS))) { - bool tmin_is_mcv = false; - bool tmax_is_mcv = false; - FmgrInfo opproc; + bool use_mcvs = have_data; - fmgr_info(opfuncoid, &opproc); + if (!have_data) + { + double sumcommon = 0.0; + double nullfrac; + int i; + + for (i = 0; i < sslot.nnumbers; i++) + sumcommon += sslot.numbers[i]; + nullfrac = ((Form_pg_statistic) GETSTRUCT(vardata->statsTuple))->stanullfrac; + if (sumcommon + nullfrac > 0.99999) + use_mcvs = true; + } - for (i = 0; i < sslot.nvalues; i++) + if (use_mcvs) { - if (!have_data) - { - tmin = tmax = sslot.values[i]; - tmin_is_mcv = tmax_is_mcv = have_data = true; - continue; - } - if (DatumGetBool(FunctionCall2Coll(&opproc, - DEFAULT_COLLATION_OID, - sslot.values[i], tmin))) - { - tmin = sslot.values[i]; - tmin_is_mcv = true; - } - if (DatumGetBool(FunctionCall2Coll(&opproc, - DEFAULT_COLLATION_OID, - tmax, sslot.values[i]))) + /* + * Usually the MCVs will not be the extreme values, so avoid + * unnecessary data copying. + */ + bool tmin_is_mcv = false; + bool tmax_is_mcv = false; + FmgrInfo opproc; + + fmgr_info(opfuncoid, &opproc); + + for (i = 0; i < sslot.nvalues; i++) { - tmax = sslot.values[i]; - tmax_is_mcv = true; + if (!have_data) + { + tmin = tmax = sslot.values[i]; + tmin_is_mcv = tmax_is_mcv = have_data = true; + continue; + } + if (DatumGetBool(FunctionCall2Coll(&opproc, + DEFAULT_COLLATION_OID, + sslot.values[i], tmin))) + { + tmin = sslot.values[i]; + tmin_is_mcv = true; + } + if (DatumGetBool(FunctionCall2Coll(&opproc, + DEFAULT_COLLATION_OID, + tmax, sslot.values[i]))) + { + tmax = sslot.values[i]; + tmax_is_mcv = true; + } } + if (tmin_is_mcv) + tmin = datumCopy(tmin, typByVal, typLen); + if (tmax_is_mcv) + tmax = datumCopy(tmax, typByVal, typLen); } - if (tmin_is_mcv) - tmin = datumCopy(tmin, typByVal, typLen); - if (tmax_is_mcv) - tmax = datumCopy(tmax, typByVal, typLen); + free_attstatsslot(&sslot); } diff -Nru postgresql-10-10.17/src/backend/utils/adt/tsquery.c postgresql-10-10.19/src/backend/utils/adt/tsquery.c --- postgresql-10-10.17/src/backend/utils/adt/tsquery.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/tsquery.c 2021-11-08 22:05:38.000000000 +0000 @@ -163,7 +163,7 @@ else if (errno == ERANGE || l < 0 || l > MAXENTRYPOS) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("distance in phrase operator should not be greater than %d", + errmsg("distance in phrase operator must be an integer value between zero and %d inclusive", MAXENTRYPOS))); else { diff -Nru postgresql-10-10.17/src/backend/utils/adt/tsquery_op.c postgresql-10-10.19/src/backend/utils/adt/tsquery_op.c --- postgresql-10-10.17/src/backend/utils/adt/tsquery_op.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/adt/tsquery_op.c 2021-11-08 22:05:38.000000000 +0000 @@ -120,7 +120,7 @@ if (distance < 0 || distance > MAXENTRYPOS) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("distance in phrase operator should be non-negative and less than %d", + errmsg("distance in phrase operator must be an integer value between zero and %d inclusive", MAXENTRYPOS))); if (a->size == 0) { diff -Nru postgresql-10-10.17/src/backend/utils/cache/inval.c postgresql-10-10.19/src/backend/utils/cache/inval.c --- postgresql-10-10.17/src/backend/utils/cache/inval.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/cache/inval.c 2021-11-08 22:05:38.000000000 +0000 @@ -65,6 +65,20 @@ * (XXX is it worth testing likewise for duplicate catcache flush entries? * Probably not.) * + * Many subsystems own higher-level caches that depend on relcache and/or + * catcache, and they register callbacks here to invalidate their caches. + * While building a higher-level cache entry, a backend may receive a + * callback for the being-built entry or one of its dependencies. This + * implies the new higher-level entry would be born stale, and it might + * remain stale for the life of the backend. Many caches do not prevent + * that. They rely on DDL for can't-miss catalog changes taking + * AccessExclusiveLock on suitable objects. (For a change made with less + * locking, backends might never read the change.) The relation cache, + * however, needs to reflect changes from CREATE INDEX CONCURRENTLY no later + * than the beginning of the next transaction. Hence, when a relevant + * invalidation callback arrives during a build, relcache.c reattempts that + * build. Caches with similar needs could do likewise. + * * If a relcache flush is issued for a system relation that we preload * from the relcache init file, we must also delete the init file so that * it will be rebuilt during the next backend restart. The actual work of @@ -584,7 +598,7 @@ int i; if (msg->rc.relId == InvalidOid) - RelationCacheInvalidate(); + RelationCacheInvalidate(false); else RelationCacheInvalidateEntry(msg->rc.relId); @@ -642,11 +656,17 @@ void InvalidateSystemCaches(void) { + InvalidateSystemCachesExtended(false); +} + +void +InvalidateSystemCachesExtended(bool debug_discard) +{ int i; InvalidateCatalogSnapshot(); ResetCatalogCaches(); - RelationCacheInvalidate(); /* gets smgr and relmap too */ + RelationCacheInvalidate(debug_discard); /* gets smgr and relmap too */ for (i = 0; i < syscache_callback_count; i++) { @@ -717,7 +737,7 @@ if (recursion_depth < 3) { recursion_depth++; - InvalidateSystemCaches(); + InvalidateSystemCachesExtended(true); recursion_depth--; } } diff -Nru postgresql-10-10.17/src/backend/utils/cache/relcache.c postgresql-10-10.19/src/backend/utils/cache/relcache.c --- postgresql-10-10.17/src/backend/utils/cache/relcache.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/cache/relcache.c 2021-11-08 22:05:38.000000000 +0000 @@ -143,6 +143,24 @@ static long relcacheInvalsReceived = 0L; /* + * in_progress_list is a stack of ongoing RelationBuildDesc() calls. CREATE + * INDEX CONCURRENTLY makes catalog changes under ShareUpdateExclusiveLock. + * It critically relies on each backend absorbing those changes no later than + * next transaction start. Hence, RelationBuildDesc() loops until it finishes + * without accepting a relevant invalidation. (Most invalidation consumers + * don't do this.) + */ +typedef struct inprogressent +{ + Oid reloid; /* OID of relation being built */ + bool invalidated; /* whether an invalidation arrived for it */ +} InProgressEnt; + +static InProgressEnt *in_progress_list; +static int in_progress_list_len; +static int in_progress_list_maxlen; + +/* * eoxact_list[] stores the OIDs of relations that (might) need AtEOXact * cleanup work. This list intentionally has limited size; if it overflows, * we fall back to scanning the whole hashtable. There is no value in a very @@ -1197,11 +1215,27 @@ static Relation RelationBuildDesc(Oid targetRelId, bool insertIt) { + int in_progress_offset; Relation relation; Oid relid; HeapTuple pg_class_tuple; Form_pg_class relp; + /* Register to catch invalidation messages */ + if (in_progress_list_len >= in_progress_list_maxlen) + { + int allocsize; + + allocsize = in_progress_list_maxlen * 2; + in_progress_list = repalloc(in_progress_list, + allocsize * sizeof(*in_progress_list)); + in_progress_list_maxlen = allocsize; + } + in_progress_offset = in_progress_list_len++; + in_progress_list[in_progress_offset].reloid = targetRelId; +retry: + in_progress_list[in_progress_offset].invalidated = false; + /* * find the tuple in pg_class corresponding to the given relation id */ @@ -1211,7 +1245,11 @@ * if no such tuple exists, return NULL */ if (!HeapTupleIsValid(pg_class_tuple)) + { + Assert(in_progress_offset + 1 == in_progress_list_len); + in_progress_list_len--; return NULL; + } /* * get information from the pg_class_tuple @@ -1356,6 +1394,21 @@ heap_freetuple(pg_class_tuple); /* + * If an invalidation arrived mid-build, start over. Between here and the + * end of this function, don't add code that does or reasonably could read + * system catalogs. That range must be free from invalidation processing + * for the !insertIt case. For the insertIt case, RelationCacheInsert() + * will enroll this relation in ordinary relcache invalidation processing, + */ + if (in_progress_list[in_progress_offset].invalidated) + { + RelationDestroyRelation(relation, false); + goto retry; + } + Assert(in_progress_offset + 1 == in_progress_list_len); + in_progress_list_len--; + + /* * Insert newly created relation into relcache hash table, if requested. * * There is one scenario in which we might find a hashtable entry already @@ -1701,15 +1754,15 @@ /* First time through: initialize the opclass cache */ HASHCTL ctl; + /* Also make sure CacheMemoryContext exists */ + if (!CacheMemoryContext) + CreateCacheMemoryContext(); + MemSet(&ctl, 0, sizeof(ctl)); ctl.keysize = sizeof(Oid); ctl.entrysize = sizeof(OpClassCacheEnt); OpClassCache = hash_create("Operator class cache", 64, &ctl, HASH_ELEM | HASH_BLOBS); - - /* Also make sure CacheMemoryContext exists */ - if (!CacheMemoryContext) - CreateCacheMemoryContext(); } opcentry = (OpClassCacheEnt *) hash_search(OpClassCache, @@ -1718,16 +1771,10 @@ if (!found) { - /* Need to allocate memory for new entry */ + /* Initialize new entry */ opcentry->valid = false; /* until known OK */ opcentry->numSupport = numSupport; - - if (numSupport > 0) - opcentry->supportProcs = (RegProcedure *) - MemoryContextAllocZero(CacheMemoryContext, - numSupport * sizeof(RegProcedure)); - else - opcentry->supportProcs = NULL; + opcentry->supportProcs = NULL; /* filled below */ } else { @@ -1735,13 +1782,15 @@ } /* - * When testing for cache-flush hazards, we intentionally disable the - * operator class cache and force reloading of the info on each call. This - * is helpful because we want to test the case where a cache flush occurs - * while we are loading the info, and it's very hard to provoke that if - * this happens only once per opclass per backend. + * When aggressively testing cache-flush hazards, we disable the operator + * class cache and force reloading of the info on each call. This models + * no real-world behavior, since the cache entries are never invalidated + * otherwise. However it can be helpful for detecting bugs in the cache + * loading logic itself, such as reliance on a non-nailed index. Given + * the limited use-case and the fact that this adds a great deal of + * expense, we enable it only in CLOBBER_CACHE_RECURSIVELY mode. */ -#if defined(CLOBBER_CACHE_ALWAYS) +#if defined(CLOBBER_CACHE_RECURSIVELY) opcentry->valid = false; #endif @@ -1749,8 +1798,15 @@ return opcentry; /* - * Need to fill in new entry. - * + * Need to fill in new entry. First allocate space, unless we already did + * so in some previous attempt. + */ + if (opcentry->supportProcs == NULL && numSupport > 0) + opcentry->supportProcs = (RegProcedure *) + MemoryContextAllocZero(CacheMemoryContext, + numSupport * sizeof(RegProcedure)); + + /* * To avoid infinite recursion during startup, force heap scans if we're * looking up info for the opclasses used by the indexes we would like to * reference here. @@ -2569,6 +2625,14 @@ /* Build temporary entry, but don't link it into hashtable */ newrel = RelationBuildDesc(save_relid, false); + + /* + * Between here and the end of the swap, don't add code that does or + * reasonably could read system catalogs. That range must be free + * from invalidation processing. See RelationBuildDesc() manipulation + * of in_progress_list. + */ + if (newrel == NULL) { /* @@ -2760,6 +2824,14 @@ relcacheInvalsReceived++; RelationFlushRelation(relation); } + else + { + int i; + + for (i = 0; i < in_progress_list_len; i++) + if (in_progress_list[i].reloid == relationId) + in_progress_list[i].invalidated = true; + } } /* @@ -2791,9 +2863,14 @@ * 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. + * + * After those two phases of work having immediate effects, we normally + * signal any RelationBuildDesc() on the stack to start over. However, we + * don't do this if called as part of debug_discard_caches. Otherwise, + * RelationBuildDesc() would become an infinite loop. */ void -RelationCacheInvalidate(void) +RelationCacheInvalidate(bool debug_discard) { HASH_SEQ_STATUS status; RelIdCacheEnt *idhentry; @@ -2801,6 +2878,7 @@ List *rebuildFirstList = NIL; List *rebuildList = NIL; ListCell *l; + int i; /* * Reload relation mapping data before starting to reconstruct cache. @@ -2887,6 +2965,11 @@ RelationClearRelation(relation, true); } list_free(rebuildList); + + if (!debug_discard) + /* Any RelationBuildDesc() on the stack must start over. */ + for (i = 0; i < in_progress_list_len; i++) + in_progress_list[i].invalidated = true; } /* @@ -2960,6 +3043,13 @@ int i; /* + * Forget in_progress_list. This is relevant when we're aborting due to + * an error during RelationBuildDesc(). + */ + Assert(in_progress_list_len == 0 || !isCommit); + in_progress_list_len = 0; + + /* * Unless the eoxact_list[] overflowed, we only need to examine the rels * listed in it. Otherwise fall back on a hash_seq_search scan. * @@ -3109,6 +3199,14 @@ int i; /* + * Forget in_progress_list. This is relevant when we're aborting due to + * an error during RelationBuildDesc(). We don't commit subtransactions + * during RelationBuildDesc(). + */ + Assert(in_progress_list_len == 0 || !isCommit); + in_progress_list_len = 0; + + /* * Unless the eoxact_list[] overflowed, we only need to examine the rels * listed in it. Otherwise fall back on a hash_seq_search scan. Same * logic as in AtEOXact_RelationCache. @@ -3594,6 +3692,7 @@ RelationCacheInitialize(void) { HASHCTL ctl; + int allocsize; /* * make sure cache memory context exists @@ -3611,6 +3710,15 @@ &ctl, HASH_ELEM | HASH_BLOBS); /* + * reserve enough in_progress_list slots for many cases + */ + allocsize = 4; + in_progress_list = + MemoryContextAlloc(CacheMemoryContext, + allocsize * sizeof(*in_progress_list)); + in_progress_list_maxlen = allocsize; + + /* * relation mapper needs to be initialized too */ RelationMapInitialize(); diff -Nru postgresql-10-10.17/src/backend/utils/cache/relmapper.c postgresql-10-10.19/src/backend/utils/cache/relmapper.c --- postgresql-10-10.17/src/backend/utils/cache/relmapper.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/cache/relmapper.c 2021-11-08 22:05:38.000000000 +0000 @@ -123,7 +123,7 @@ bool add_okay); static void merge_map_updates(RelMapFile *map, const RelMapFile *updates, bool add_okay); -static void load_relmap_file(bool shared); +static void load_relmap_file(bool shared, bool lock_held); static void write_relmap_file(bool shared, RelMapFile *newmap, bool write_wal, bool send_sinval, bool preserve_files, Oid dbid, Oid tsid, const char *dbpath); @@ -389,12 +389,12 @@ if (shared) { if (shared_map.magic == RELMAPPER_FILEMAGIC) - load_relmap_file(true); + load_relmap_file(true, false); } else { if (local_map.magic == RELMAPPER_FILEMAGIC) - load_relmap_file(false); + load_relmap_file(false, false); } } @@ -409,9 +409,9 @@ RelationMapInvalidateAll(void) { if (shared_map.magic == RELMAPPER_FILEMAGIC) - load_relmap_file(true); + load_relmap_file(true, false); if (local_map.magic == RELMAPPER_FILEMAGIC) - load_relmap_file(false); + load_relmap_file(false, false); } /* @@ -590,7 +590,7 @@ /* * Load the shared map file, die on error. */ - load_relmap_file(true); + load_relmap_file(true, false); } /* @@ -611,7 +611,7 @@ /* * Load the local map file, die on error. */ - load_relmap_file(false); + load_relmap_file(false, false); } /* @@ -623,7 +623,7 @@ * Note that the local case requires DatabasePath to be set up. */ static void -load_relmap_file(bool shared) +load_relmap_file(bool shared, bool lock_held) { RelMapFile *map; char mapfilename[MAXPGPATH]; @@ -653,12 +653,15 @@ mapfilename))); /* - * Note: we could take RelationMappingLock in shared mode here, but it - * seems unnecessary since our read() should be atomic against any - * concurrent updater's write(). If the file is updated shortly after we - * look, the sinval signaling mechanism will make us re-read it before we - * are able to access any relation that's affected by the change. + * Grab the lock to prevent the file from being updated while we read it, + * unless the caller is already holding the lock. If the file is updated + * shortly after we look, the sinval signaling mechanism will make us + * re-read it before we are able to access any relation that's affected by + * the change. */ + if (!lock_held) + LWLockAcquire(RelationMappingLock, LW_SHARED); + pgstat_report_wait_start(WAIT_EVENT_RELATION_MAP_READ); if (read(fd, map, sizeof(RelMapFile)) != sizeof(RelMapFile)) ereport(FATAL, @@ -667,6 +670,9 @@ mapfilename))); pgstat_report_wait_end(); + if (!lock_held) + LWLockRelease(RelationMappingLock); + CloseTransientFile(fd); /* check for correct magic number, etc */ @@ -887,7 +893,7 @@ LWLockAcquire(RelationMappingLock, LW_EXCLUSIVE); /* Be certain we see any other updates just made */ - load_relmap_file(shared); + load_relmap_file(shared, true); /* Prepare updated data in a local variable */ if (shared) @@ -942,12 +948,13 @@ * preserve files, either. * * There shouldn't be anyone else updating relmaps during WAL replay, - * so we don't bother to take the RelationMappingLock. We would need - * to do so if load_relmap_file needed to interlock against writers. + * but grab the lock to interlock against load_relmap_file(). */ + LWLockAcquire(RelationMappingLock, LW_EXCLUSIVE); write_relmap_file((xlrec->dbid == InvalidOid), &newmap, false, true, false, xlrec->dbid, xlrec->tsid, dbpath); + LWLockRelease(RelationMappingLock); pfree(dbpath); } diff -Nru postgresql-10-10.17/src/backend/utils/misc/guc-file.c postgresql-10-10.19/src/backend/utils/misc/guc-file.c --- postgresql-10-10.17/src/backend/utils/misc/guc-file.c 2021-05-10 20:58:58.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/misc/guc-file.c 2021-11-08 22:25:41.000000000 +0000 @@ -2348,6 +2348,8 @@ continue; if (gconf->context < PGC_SIGHUP) { + /* The removal can't be effective without a restart */ + gconf->status |= GUC_PENDING_RESTART; ereport(elevel, (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM), errmsg("parameter \"%s\" cannot be changed without restarting the server", diff -Nru postgresql-10-10.17/src/backend/utils/misc/guc-file.l postgresql-10-10.19/src/backend/utils/misc/guc-file.l --- postgresql-10-10.17/src/backend/utils/misc/guc-file.l 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/misc/guc-file.l 2021-11-08 22:05:38.000000000 +0000 @@ -345,6 +345,8 @@ continue; if (gconf->context < PGC_SIGHUP) { + /* The removal can't be effective without a restart */ + gconf->status |= GUC_PENDING_RESTART; ereport(elevel, (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM), errmsg("parameter \"%s\" cannot be changed without restarting the server", diff -Nru postgresql-10-10.17/src/backend/utils/sort/tuplesort.c postgresql-10-10.19/src/backend/utils/sort/tuplesort.c --- postgresql-10-10.17/src/backend/utils/sort/tuplesort.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/backend/utils/sort/tuplesort.c 2021-11-08 22:05:38.000000000 +0000 @@ -4458,6 +4458,10 @@ static void free_sort_tuple(Tuplesortstate *state, SortTuple *stup) { - FREEMEM(state, GetMemoryChunkSpace(stup->tuple)); - pfree(stup->tuple); + if (stup->tuple) + { + FREEMEM(state, GetMemoryChunkSpace(stup->tuple)); + pfree(stup->tuple); + stup->tuple = NULL; + } } diff -Nru postgresql-10-10.17/src/bin/initdb/findtimezone.c postgresql-10-10.19/src/bin/initdb/findtimezone.c --- postgresql-10-10.17/src/bin/initdb/findtimezone.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/initdb/findtimezone.c 2021-11-08 22:05:38.000000000 +0000 @@ -195,6 +195,7 @@ tm.tm_mday = day; tm.tm_mon = month - 1; tm.tm_year = year - 1900; + tm.tm_isdst = -1; return mktime(&tm); } @@ -735,10 +736,12 @@ /* * This list was built from the contents of the registry at * HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time - * Zones on Windows 7, Windows 10, and Windows Server 2019. + * Zones on Windows 7, Windows 10, and Windows Server 2019. Some recent + * additions have been made by comparing to the CLDR project's + * windowsZones.xml file. * - * The zones have been matched to IANA timezones by looking at the cities - * listed in the win32 display name (in the comment here) in most cases. + * The zones have been matched to IANA timezones based on CLDR's mapping + * for "territory 001". */ { /* (UTC+04:30) Kabul */ @@ -748,12 +751,12 @@ { /* (UTC-09:00) Alaska */ "Alaskan Standard Time", "Alaskan Daylight Time", - "US/Alaska" + "America/Anchorage" }, { /* (UTC-10:00) Aleutian Islands */ "Aleutian Standard Time", "Aleutian Daylight Time", - "US/Aleutan" + "America/Adak" }, { /* (UTC+07:00) Barnaul, Gorno-Altaysk */ @@ -763,12 +766,12 @@ { /* (UTC+03:00) Kuwait, Riyadh */ "Arab Standard Time", "Arab Daylight Time", - "Asia/Kuwait" + "Asia/Riyadh" }, { /* (UTC+04:00) Abu Dhabi, Muscat */ "Arabian Standard Time", "Arabian Daylight Time", - "Asia/Muscat" + "Asia/Dubai" }, { /* (UTC+03:00) Baghdad */ @@ -793,7 +796,7 @@ { /* (UTC-04:00) Atlantic Time (Canada) */ "Atlantic Standard Time", "Atlantic Daylight Time", - "Canada/Atlantic" + "America/Halifax" }, { /* (UTC+09:30) Darwin */ @@ -808,7 +811,7 @@ { /* (UTC+10:00) Canberra, Melbourne, Sydney */ "AUS Eastern Standard Time", "AUS Eastern Daylight Time", - "Australia/Canberra" + "Australia/Sydney" }, { /* (UTC+04:00) Baku */ @@ -823,7 +826,7 @@ { /* (UTC-03:00) Salvador */ "Bahia Standard Time", "Bahia Daylight Time", - "America/Salvador" + "America/Bahia" }, { /* (UTC+06:00) Dhaka */ @@ -831,29 +834,24 @@ "Asia/Dhaka" }, { - /* (UTC+11:00) Bougainville Island */ - "Bougainville Standard Time", "Bougainville Daylight Time", - "Pacific/Bougainville" - }, - { /* (UTC+03:00) Minsk */ "Belarus Standard Time", "Belarus Daylight Time", "Europe/Minsk" }, { + /* (UTC+11:00) Bougainville Island */ + "Bougainville Standard Time", "Bougainville Daylight Time", + "Pacific/Bougainville" + }, + { /* (UTC-01:00) Cabo Verde Is. */ "Cabo Verde Standard Time", "Cabo Verde Daylight Time", "Atlantic/Cape_Verde" }, { - /* (UTC+12:45) Chatham Islands */ - "Chatham Islands Standard Time", "Chatham Islands Daylight Time", - "Pacific/Chatham" - }, - { /* (UTC-06:00) Saskatchewan */ "Canada Central Standard Time", "Canada Central Daylight Time", - "Canada/Saskatchewan" + "America/Regina" }, { /* (UTC-01:00) Cape Verde Is. */ @@ -863,23 +861,22 @@ { /* (UTC+04:00) Yerevan */ "Caucasus Standard Time", "Caucasus Daylight Time", - "Asia/Baku" + "Asia/Yerevan" }, { /* (UTC+09:30) Adelaide */ "Cen. Australia Standard Time", "Cen. Australia Daylight Time", "Australia/Adelaide" }, - /* Central America (other than Mexico) generally does not observe DST */ { /* (UTC-06:00) Central America */ "Central America Standard Time", "Central America Daylight Time", - "CST6" + "America/Guatemala" }, { /* (UTC+06:00) Astana */ "Central Asia Standard Time", "Central Asia Daylight Time", - "Asia/Dhaka" + "Asia/Almaty" }, { /* (UTC-04:00) Cuiaba */ @@ -889,22 +886,22 @@ { /* (UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague */ "Central Europe Standard Time", "Central Europe Daylight Time", - "Europe/Belgrade" + "Europe/Budapest" }, { /* (UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb */ "Central European Standard Time", "Central European Daylight Time", - "Europe/Sarajevo" + "Europe/Warsaw" }, { /* (UTC+11:00) Solomon Is., New Caledonia */ "Central Pacific Standard Time", "Central Pacific Daylight Time", - "Pacific/Noumea" + "Pacific/Guadalcanal" }, { /* (UTC-06:00) Central Time (US & Canada) */ "Central Standard Time", "Central Daylight Time", - "US/Central" + "America/Chicago" }, { /* (UTC-06:00) Guadalajara, Mexico City, Monterrey */ @@ -912,9 +909,19 @@ "America/Mexico_City" }, { + /* (UTC+12:45) Chatham Islands */ + "Chatham Islands Standard Time", "Chatham Islands Daylight Time", + "Pacific/Chatham" + }, + { /* (UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi */ "China Standard Time", "China Daylight Time", - "Asia/Hong_Kong" + "Asia/Shanghai" + }, + { + /* (UTC) Coordinated Universal Time */ + "Coordinated Universal Time", "Coordinated Universal Time", + "UTC" }, { /* (UTC-05:00) Havana */ @@ -924,7 +931,7 @@ { /* (UTC-12:00) International Date Line West */ "Dateline Standard Time", "Dateline Daylight Time", - "Etc/UTC+12" + "Etc/GMT+12" }, { /* (UTC+03:00) Nairobi */ @@ -939,27 +946,27 @@ { /* (UTC+02:00) Chisinau */ "E. Europe Standard Time", "E. Europe Daylight Time", - "Europe/Bucharest" + "Europe/Chisinau" }, { /* (UTC-03:00) Brasilia */ "E. South America Standard Time", "E. South America Daylight Time", - "America/Araguaina" + "America/Sao_Paulo" + }, + { + /* (UTC-06:00) Easter Island */ + "Easter Island Standard Time", "Easter Island Daylight Time", + "Pacific/Easter" }, { /* (UTC-05:00) Eastern Time (US & Canada) */ "Eastern Standard Time", "Eastern Daylight Time", - "US/Eastern" + "America/New_York" }, { /* (UTC-05:00) Chetumal */ "Eastern Standard Time (Mexico)", "Eastern Daylight Time (Mexico)", - "America/Mexico_City" - }, - { - /* (UTC-06:00) Easter Island */ - "Easter Island Standard Time", "Easter Island Daylight Time", - "Pacific/Easter" + "America/Cancun" }, { /* (UTC+02:00) Cairo */ @@ -968,7 +975,7 @@ }, { /* (UTC+05:00) Ekaterinburg */ - "Ekaterinburg Standard Time (RTZ 4)", "Ekaterinburg Daylight Time", + "Ekaterinburg Standard Time", "Ekaterinburg Daylight Time", "Asia/Yekaterinburg" }, { @@ -979,7 +986,7 @@ { /* (UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius */ "FLE Standard Time", "FLE Daylight Time", - "Europe/Helsinki" + "Europe/Kiev" }, { /* (UTC+04:00) Tbilisi */ @@ -997,24 +1004,31 @@ "America/Godthab" }, { + /* + * Windows uses this zone name in various places that lie near the + * prime meridian, but are not in the UK. However, most people + * probably think that "Greenwich" means UK civil time, or maybe even + * straight-up UTC. Atlantic/Reykjavik is a decent match for that + * interpretation because Iceland hasn't observed DST since 1968. + */ /* (UTC+00:00) Monrovia, Reykjavik */ "Greenwich Standard Time", "Greenwich Daylight Time", - "Africa/Casablanca" + "Atlantic/Reykjavik" }, { /* (UTC+02:00) Athens, Bucharest */ "GTB Standard Time", "GTB Daylight Time", - "Europe/Athens" + "Europe/Bucharest" }, { /* (UTC-05:00) Haiti */ "Haiti Standard Time", "Haiti Daylight Time", - "US/Eastern" + "America/Port-au-Prince" }, { /* (UTC-10:00) Hawaii */ "Hawaiian Standard Time", "Hawaiian Daylight Time", - "US/Hawaii" + "Pacific/Honolulu" }, { /* (UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi */ @@ -1028,6 +1042,11 @@ }, { /* (UTC+02:00) Jerusalem */ + "Israel Standard Time", "Israel Daylight Time", + "Asia/Jerusalem" + }, + { + /* (UTC+02:00) Jerusalem (old spelling of zone name) */ "Jerusalem Standard Time", "Jerusalem Daylight Time", "Asia/Jerusalem" }, @@ -1037,6 +1056,11 @@ "Asia/Amman" }, { + /* (UTC+02:00) Kaliningrad */ + "Kaliningrad Standard Time", "Kaliningrad Daylight Time", + "Europe/Kaliningrad" + }, + { /* (UTC+12:00) Petropavlovsk-Kamchatsky - Old */ "Kamchatka Standard Time", "Kamchatka Daylight Time", "Asia/Kamchatka" @@ -1072,6 +1096,11 @@ "America/Punta_Arenas" }, { + /* (UTC+08:00) Kuala Lumpur, Singapore */ + "Malay Peninsula Standard Time", "Malay Peninsula Daylight Time", + "Asia/Kuala_Lumpur" + }, + { /* (UTC-09:30) Marquesas Islands */ "Marquesas Standard Time", "Marquesas Daylight Time", "Pacific/Marquesas" @@ -1114,7 +1143,7 @@ { /* (UTC-07:00) Mountain Time (US & Canada) */ "Mountain Standard Time", "Mountain Daylight Time", - "US/Mountain" + "America/Denver" }, { /* (UTC-07:00) Chihuahua, La Paz, Mazatlan */ @@ -1127,7 +1156,7 @@ "Asia/Rangoon" }, { - /* (UTC+06:00) Novosibirsk (RTZ 5) */ + /* (UTC+07:00) Novosibirsk */ "N. Central Asia Standard Time", "N. Central Asia Daylight Time", "Asia/Novosibirsk" }, @@ -1149,7 +1178,7 @@ { /* (UTC-03:30) Newfoundland */ "Newfoundland Standard Time", "Newfoundland Daylight Time", - "Canada/Newfoundland" + "America/St_Johns" }, { /* (UTC+11:00) Norfolk Island */ @@ -1157,7 +1186,7 @@ "Pacific/Norfolk" }, { - /* (UTC+08:00) Irkutsk, Ulaan Bataar */ + /* (UTC+08:00) Irkutsk */ "North Asia East Standard Time", "North Asia East Daylight Time", "Asia/Irkutsk" }, @@ -1189,7 +1218,7 @@ { /* (UTC-08:00) Pacific Time (US & Canada) */ "Pacific Standard Time", "Pacific Daylight Time", - "US/Pacific" + "America/Los_Angeles" }, { /* (UTC-08:00) Baja California */ @@ -1214,7 +1243,22 @@ { /* (UTC+01:00) Brussels, Copenhagen, Madrid, Paris */ "Romance Standard Time", "Romance Daylight Time", - "Europe/Brussels" + "Europe/Paris" + }, + { + /* (UTC+04:00) Izhevsk, Samara */ + "Russia Time Zone 3", "Russia Time Zone 3", + "Europe/Samara" + }, + { + /* (UTC+11:00) Chokurdakh */ + "Russia Time Zone 10", "Russia Time Zone 10", + "Asia/Srednekolymsk" + }, + { + /* (UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky */ + "Russia Time Zone 11", "Russia Time Zone 11", + "Asia/Kamchatka" }, { /* (UTC+02:00) Kaliningrad */ @@ -1272,14 +1316,14 @@ "Asia/Anadyr" }, { - /* (UTC+03:00) Moscow, St. Petersburg, Volgograd */ + /* (UTC+03:00) Moscow, St. Petersburg */ "Russian Standard Time", "Russian Daylight Time", "Europe/Moscow" }, { /* (UTC-03:00) Cayenne, Fortaleza */ "SA Eastern Standard Time", "SA Eastern Daylight Time", - "America/Buenos_Aires" + "America/Cayenne" }, { /* (UTC-05:00) Bogota, Lima, Quito, Rio Branco */ @@ -1289,7 +1333,7 @@ { /* (UTC-04:00) Georgetown, La Paz, Manaus, San Juan */ "SA Western Standard Time", "SA Western Daylight Time", - "America/Caracas" + "America/La_Paz" }, { /* (UTC-03:00) Saint Pierre and Miquelon */ @@ -1297,9 +1341,14 @@ "America/Miquelon" }, { + /* (UTC+11:00) Sakhalin */ + "Sakhalin Standard Time", "Sakhalin Daylight Time", + "Asia/Sakhalin" + }, + { /* (UTC+13:00) Samoa */ "Samoa Standard Time", "Samoa Daylight Time", - "Pacific/Samoa" + "Pacific/Apia" }, { /* (UTC+00:00) Sao Tome */ @@ -1318,18 +1367,18 @@ }, { /* (UTC+08:00) Kuala Lumpur, Singapore */ - "Malay Peninsula Standard Time", "Malay Peninsula Daylight Time", - "Asia/Kuala_Lumpur" - }, - { - /* (UTC+11:00) Sakhalin */ - "Sakhalin Standard Time", "Sakhalin Daylight Time", - "Asia/Sakhalin" + "Singapore Standard Time", "Singapore Daylight Time", + "Asia/Singapore" }, { /* (UTC+02:00) Harare, Pretoria */ "South Africa Standard Time", "South Africa Daylight Time", - "Africa/Harare" + "Africa/Johannesburg" + }, + { + /* (UTC+02:00) Juba */ + "South Sudan Standard Time", "South Sudan Daylight Time", + "Africa/Juba" }, { /* (UTC+05:30) Sri Jayawardenepura */ @@ -1367,16 +1416,16 @@ "Asia/Tokyo" }, { - /* (UTC+13:00) Nuku'alofa */ - "Tonga Standard Time", "Tonga Daylight Time", - "Pacific/Tongatapu" - }, - { /* (UTC+07:00) Tomsk */ "Tomsk Standard Time", "Tomsk Daylight Time", "Asia/Tomsk" }, { + /* (UTC+13:00) Nuku'alofa */ + "Tonga Standard Time", "Tonga Daylight Time", + "Pacific/Tongatapu" + }, + { /* (UTC+09:00) Chita */ "Transbaikal Standard Time", "Transbaikal Daylight Time", "Asia/Chita" @@ -1388,66 +1437,66 @@ }, { /* (UTC-05:00) Turks and Caicos */ - "Turks and Caicos Standard Time", "Turks and Caicos Daylight Time", + "Turks And Caicos Standard Time", "Turks And Caicos Daylight Time", "America/Grand_Turk" }, { /* (UTC+08:00) Ulaanbaatar */ "Ulaanbaatar Standard Time", "Ulaanbaatar Daylight Time", - "Asia/Ulaanbaatar", + "Asia/Ulaanbaatar" }, { /* (UTC-05:00) Indiana (East) */ "US Eastern Standard Time", "US Eastern Daylight Time", - "US/Eastern" + "America/Indianapolis" }, { /* (UTC-07:00) Arizona */ "US Mountain Standard Time", "US Mountain Daylight Time", - "US/Arizona" + "America/Phoenix" }, { /* (UTC) Coordinated Universal Time */ - "Coordinated Universal Time", "Coordinated Universal Time", + "UTC", "UTC", "UTC" }, { /* (UTC+12:00) Coordinated Universal Time+12 */ "UTC+12", "UTC+12", - "Etc/GMT+12" + "Etc/GMT-12" }, { /* (UTC+13:00) Coordinated Universal Time+13 */ "UTC+13", "UTC+13", - "Etc/GMT+13" + "Etc/GMT-13" }, { /* (UTC-02:00) Coordinated Universal Time-02 */ "UTC-02", "UTC-02", - "Etc/GMT-02" + "Etc/GMT+2" }, { /* (UTC-08:00) Coordinated Universal Time-08 */ "UTC-08", "UTC-08", - "Etc/GMT-08" + "Etc/GMT+8" }, { /* (UTC-09:00) Coordinated Universal Time-09 */ "UTC-09", "UTC-09", - "Etc/GMT-09" + "Etc/GMT+9" }, { /* (UTC-11:00) Coordinated Universal Time-11 */ "UTC-11", "UTC-11", - "Etc/GMT-11" + "Etc/GMT+11" }, { /* (UTC-04:00) Caracas */ "Venezuela Standard Time", "Venezuela Daylight Time", - "America/Caracas", + "America/Caracas" }, { - /* (UTC+10:00) Vladivostok (RTZ 9) */ + /* (UTC+10:00) Vladivostok */ "Vladivostok Standard Time", "Vladivostok Daylight Time", "Asia/Vladivostok" }, @@ -1461,18 +1510,15 @@ "W. Australia Standard Time", "W. Australia Daylight Time", "Australia/Perth" }, -#ifdef NOT_USED - /* Could not find a match for this one (just a guess). Excluded for now. */ { /* (UTC+01:00) West Central Africa */ "W. Central Africa Standard Time", "W. Central Africa Daylight Time", - "WAT" + "Africa/Lagos" }, -#endif { /* (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna */ "W. Europe Standard Time", "W. Europe Daylight Time", - "CET" + "Europe/Berlin" }, { /* (UTC+07:00) Hovd */ @@ -1482,7 +1528,7 @@ { /* (UTC+05:00) Ashgabat, Tashkent */ "West Asia Standard Time", "West Asia Daylight Time", - "Asia/Karachi" + "Asia/Tashkent" }, { /* (UTC+02:00) Gaza, Hebron */ @@ -1490,9 +1536,14 @@ "Asia/Gaza" }, { + /* (UTC+02:00) Gaza, Hebron */ + "West Bank Standard Time", "West Bank Daylight Time", + "Asia/Hebron" + }, + { /* (UTC+10:00) Guam, Port Moresby */ "West Pacific Standard Time", "West Pacific Daylight Time", - "Pacific/Guam" + "Pacific/Port_Moresby" }, { /* (UTC+09:00) Yakutsk */ @@ -1500,6 +1551,11 @@ "Asia/Yakutsk" }, { + /* (UTC-07:00) Yukon */ + "Yukon Standard Time", "Yukon Daylight Time", + "America/Whitehorse" + }, + { NULL, NULL, NULL } }; diff -Nru postgresql-10-10.17/src/bin/initdb/po/fr.po postgresql-10-10.19/src/bin/initdb/po/fr.po --- postgresql-10-10.17/src/bin/initdb/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/initdb/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -170,7 +170,7 @@ #: ../../common/username.c:60 #, c-format msgid "user name lookup failure: error code %lu" -msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu" +msgstr "échec de la recherche du nom d'utilisateur : code d'erreur %lu" #: ../../common/wait_error.c:45 #, c-format @@ -454,7 +454,7 @@ "%s initializes a PostgreSQL database cluster.\n" "\n" msgstr "" -"%s initialise un cluster PostgreSQL.\n" +"%s initialise une instance PostgreSQL.\n" "\n" #: initdb.c:2281 @@ -480,41 +480,41 @@ #, 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" +" -A, --auth=MÉTHODE méthode d'authentification par défaut pour les\n" +" connexions locales\n" #: initdb.c:2285 #, c-format msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n" msgstr "" -" --auth-host=MÉTHODE méthode d'authentification par défaut pour les\n" -" connexions locales TCP/IP\n" +" --auth-host=MÉTHODE méthode d'authentification par défaut pour les\n" +" connexions locales TCP/IP\n" #: initdb.c:2286 #, c-format msgid " --auth-local=METHOD default authentication method for local-socket connections\n" msgstr "" -" --auth-local=MÉTHODE méthode d'authentification par défaut pour les\n" -" connexions locales socket\n" +" --auth-local=MÉTHODE méthode d'authentification par défaut pour les\n" +" connexions locales socket\n" #: initdb.c:2287 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" -msgstr " [-D, --pgdata=]RÉP_DONNÉES emplacement du cluster\n" +msgstr " [-D, --pgdata=]RÉP_DONNÉES emplacement de l'instance\n" #: initdb.c:2288 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr "" -" -E, --encoding=ENCODAGE initialise l'encodage par défaut des nouvelles\n" -" bases de données\n" +" -E, --encoding=ENCODAGE initialise l'encodage par défaut des nouvelles\n" +" bases de données\n" #: initdb.c:2289 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr "" -" --locale=LOCALE initialise la locale par défaut pour les\n" -" nouvelles bases de données\n" +" --locale=LOCALE initialise la locale par défaut pour les\n" +" nouvelles bases de données\n" #: initdb.c:2290 #, c-format @@ -526,22 +526,22 @@ msgstr "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" " --lc-monetary=, --lc-numeric=, --lc-time=LOCALE\n" -" initialise la locale par défaut dans la\n" -" catégorie respective pour les nouvelles bases\n" -" de données (les valeurs par défaut sont prises\n" -" dans l'environnement)\n" +" initialise la locale par défaut dans la\n" +" catégorie respective pour les nouvelles bases\n" +" de données (les valeurs par défaut sont prises\n" +" dans l'environnement)\n" #: initdb.c:2294 #, c-format msgid " --no-locale equivalent to --locale=C\n" -msgstr " --no-locale équivalent à --locale=C\n" +msgstr " --no-locale équivalent à --locale=C\n" #: initdb.c:2295 #, 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" +" --pwfile=FICHIER lit le mot de passe du nouveau\n" +" super-utilisateur à partir de ce fichier\n" #: initdb.c:2296 #, c-format @@ -549,26 +549,25 @@ " -T, --text-search-config=CFG\n" " default text search configuration\n" msgstr "" -" -T, --text-search-config=CFG\n" -" configuration par défaut de la recherche plein\n" -" texte\n" +" -T, --text-search-config=CFG configuration par défaut de la recherche plein\n" +" texte\n" #: initdb.c:2298 #, c-format msgid " -U, --username=NAME database superuser name\n" -msgstr " -U, --username=NOM nom du super-utilisateur de la base de données\n" +msgstr " -U, --username=UTILISATEUR nom du super-utilisateur de la base de données\n" #: initdb.c:2299 #, 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" +" -W, --pwprompt demande un mot de passe pour le nouveau\n" +" super-utilisateur\n" #: initdb.c:2300 #, c-format msgid " -X, --waldir=WALDIR location for the write-ahead log directory\n" -msgstr " -X, --waldir=RÉP_WAL emplacement du répertoire des transactions\n" +msgstr " -X, --waldir=RÉP_WAL emplacement du répertoire des transactions\n" #: initdb.c:2301 #, c-format @@ -582,39 +581,43 @@ #: initdb.c:2302 #, c-format msgid " -d, --debug generate lots of debugging output\n" -msgstr " -d, --debug engendre un grand nombre de traces de débogage\n" +msgstr " -d, --debug engendre un grand nombre de traces de débogage\n" #: initdb.c:2303 #, c-format msgid " -k, --data-checksums use data page checksums\n" -msgstr " -k, --data-checksums utilise les sommes de contrôle pour les pages de données\n" +msgstr "" +" -k, --data-checksums active les sommes de contrôle pour les blocs des\n" +" fichiers de données\n" #: initdb.c:2304 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr "" -" -L RÉPERTOIRE indique où trouver les fichiers servant à la\n" -" création du cluster\n" +" -L RÉPERTOIRE indique où trouver les fichiers servant à la\n" +" création de l'instance\n" #: initdb.c:2305 #, c-format msgid " -n, --no-clean do not clean up after errors\n" -msgstr " -n, --noclean ne nettoie pas après des erreurs\n" +msgstr " -n, --noclean ne nettoie pas après des erreurs\n" #: initdb.c:2306 #, c-format msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" -msgstr " -N, --nosync n'attend pas que les modifications soient proprement écrites sur disque\n" +msgstr "" +" -N, --nosync n'attend pas que les modifications soient\n" +" proprement écrites sur disque\n" #: initdb.c:2307 #, c-format msgid " -s, --show show internal settings\n" -msgstr " -s, --show affiche la configuration interne\n" +msgstr " -s, --show affiche la configuration interne\n" #: initdb.c:2308 #, c-format msgid " -S, --sync-only only sync data directory\n" -msgstr " -S, --sync-only synchronise uniquement le répertoire des données\n" +msgstr " -S, --sync-only synchronise uniquement le répertoire des données\n" #: initdb.c:2309 #, c-format @@ -628,12 +631,12 @@ #: initdb.c:2310 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" #: initdb.c:2311 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" #: initdb.c:2312 #, c-format diff -Nru postgresql-10-10.17/src/bin/initdb/po/ru.po postgresql-10-10.19/src/bin/initdb/po/ru.po --- postgresql-10-10.17/src/bin/initdb/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/initdb/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -6,13 +6,13 @@ # Sergey Burladyan , 2009. # Andrey Sudnik , 2010. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: initdb (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-08-10 10:42+0300\n" -"PO-Revision-Date: 2020-10-29 15:03+0300\n" +"POT-Creation-Date: 2021-04-12 06:59+0300\n" +"PO-Revision-Date: 2021-08-14 07:49+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -867,7 +867,7 @@ #: initdb.c:2722 initdb.c:2807 initdb.c:3164 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s: нет доступа к каталогу \"%s\": %s\n" +msgstr "%s: ошибка доступа к каталогу \"%s\": %s\n" #: initdb.c:2746 #, c-format @@ -994,11 +994,11 @@ "Каталог данных может повредиться при сбое операционной системы.\n" #. translator: This is a placeholder in a shell command. -#: initdb.c:3267 +#: initdb.c:3270 msgid "logfile" msgstr "файл_журнала" -#: initdb.c:3269 +#: initdb.c:3272 #, c-format msgid "" "\n" diff -Nru postgresql-10-10.17/src/bin/initdb/po/sv.po postgresql-10-10.19/src/bin/initdb/po/sv.po --- postgresql-10-10.17/src/bin/initdb/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/initdb/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,5 +1,5 @@ # Swedish message translation file for initdb -# Dennis Björklund , 2004, 2005, 2006, 2017, 2018, 2019, 2020. +# Dennis Björklund , 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # Magnus Hagander , 2007. # Peter Eisentraut , 2009. # Mats Erik Andersson , 2014. @@ -10,14 +10,15 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-08-27 22:16+0000\n" -"PO-Revision-Date: 2020-08-30 11:23+0200\n" +"POT-Creation-Date: 2021-11-07 09:44+0000\n" +"PO-Revision-Date: 2021-11-07 09:53+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -444,11 +445,11 @@ "Rerun %s and either do not specify an encoding explicitly,\n" "or choose a matching combination.\n" msgstr "" -"Teckenkodningen du har valt (%s) och kodningen svarande\n" -"mot lokalnamnet (%s), de passar inte ihop. Detta kan leda\n" -"till problem för funktioner som arbetar med strängar. Detta\n" -"undgås genom att utföra %s igen och då låta bli bli att\n" -"sätta kodning, eller i annat fall att välja bättre teckensats.\n" +"Teckenkodningen du har valt (%s) och teckenkodningen som\n" +"valda lokalen använder (%s) passar inte ihop. Detta kommer leda\n" +"till problem för funktioner som arbetar med strängar.\n" +"Kör %s igen och låt bli ange teckenkodning eller välj\n" +"en kombination som passar ihop.\n" #: initdb.c:2280 #, c-format @@ -481,17 +482,17 @@ #: initdb.c:2284 #, c-format msgid " -A, --auth=METHOD default authentication method for local connections\n" -msgstr " -A, --auth=METOD förvald autentiseringsmetod för alla förbindelser\n" +msgstr " -A, --auth=METOD förvald autentiseringsmetod för alla anslutningar\n" #: initdb.c:2285 #, c-format msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n" -msgstr " --auth-host=METOD autentiseringsmetod för TCP/IP-förbindelser\n" +msgstr " --auth-host=METOD autentiseringsmetod för TCP/IP-anslutningar\n" #: initdb.c:2286 #, c-format msgid " --auth-local=METHOD default authentication method for local-socket connections\n" -msgstr " --auth-local=METOD autentiseringsmetod för förbindelser via unix-uttag\n" +msgstr " --auth-local=METOD autentiseringsmetod för anslutningar via unix-uttag\n" #: initdb.c:2287 #, c-format @@ -945,11 +946,11 @@ "Datakatalogen kan komma att fördärvas om operativsystemet störtar.\n" #. translator: This is a placeholder in a shell command. -#: initdb.c:3267 +#: initdb.c:3270 msgid "logfile" msgstr "loggfil" -#: initdb.c:3269 +#: initdb.c:3272 #, c-format msgid "" "\n" diff -Nru postgresql-10-10.17/src/bin/pg_archivecleanup/po/fr.po postgresql-10-10.19/src/bin/pg_archivecleanup/po/fr.po --- postgresql-10-10.17/src/bin/pg_archivecleanup/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_archivecleanup/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -69,7 +69,7 @@ "%s removes older WAL files from PostgreSQL archives.\n" "\n" msgstr "" -"%s supprime les anciens fichiers WAL des archives de PostgreSQL.\n" +"%s supprime les journaux de transactions archivés devenus inutiles.\n" "\n" #: pg_archivecleanup.c:263 @@ -126,9 +126,10 @@ " archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n" msgstr "" "\n" -"Pour utiliser comme archive_cleanup_command dans recovery.conf quand standby_mode = on :\n" +"Pour utiliser comme archive_cleanup_command dans recovery.conf quand\n" +"standby_mode = on :\n" " archive_cleanup_command = 'pg_archivecleanup [OPTION]... EMPLACEMENTARCHIVE %%r'\n" -"e.g.\n" +"Par exemple :\n" " archive_cleanup_command = 'pg_archivecleanup /mnt/serveur/reparchives %%r'\n" #: pg_archivecleanup.c:276 @@ -141,7 +142,7 @@ msgstr "" "\n" "Ou pour utiliser comme nettoyeur autonome d'archives :\n" -"e.g.\n" +"Par exemple :\n" " pg_archivecleanup /mnt/serveur/reparchives 000000010000000000000010.00000020.backup\n" #: pg_archivecleanup.c:280 diff -Nru postgresql-10-10.17/src/bin/pg_archivecleanup/po/sv.po postgresql-10-10.19/src/bin/pg_archivecleanup/po/sv.po --- postgresql-10-10.17/src/bin/pg_archivecleanup/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_archivecleanup/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,20 +1,21 @@ # Swedish message translation file for pg_archivecleanup # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-08-05 02:15+0000\n" -"PO-Revision-Date: 2017-08-05 07:55+0200\n" +"POT-Creation-Date: 2021-11-07 09:45+0000\n" +"PO-Revision-Date: 2021-11-07 10:36+0100\n" "Last-Translator: FDennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: pg_archivecleanup.c:72 #, c-format @@ -171,6 +172,3 @@ #, c-format msgid "%s: keeping WAL file \"%s\" and later\n" msgstr "%s: behåller WAL-fil \"%s\" och senare\n" - -#~ msgid "%s: too many parameters\n" -#~ msgstr "%s: för många parametrar\n" diff -Nru postgresql-10-10.17/src/bin/pg_basebackup/po/fr.po postgresql-10-10.19/src/bin/pg_basebackup/po/fr.po --- postgresql-10-10.17/src/bin/pg_basebackup/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_basebackup/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -148,7 +148,8 @@ "%s takes a base backup of a running PostgreSQL server.\n" "\n" msgstr "" -"%s prend une sauvegarde binaire d'un serveur PostgreSQL en cours d'exécution.\n" +"%s prend une sauvegarde binaire d'un serveur PostgreSQL en cours\n" +"d'exécution.\n" "\n" #: pg_basebackup.c:334 pg_receivewal.c:76 pg_recvlogical.c:77 @@ -173,12 +174,12 @@ #: pg_basebackup.c:337 #, c-format msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" -msgstr " -D, --pgdata=RÉPERTOIRE reçoit la sauvegarde de base dans ce répertoire\n" +msgstr " -D, --pgdata=RÉPERTOIRE reçoit la sauvegarde de base dans ce répertoire\n" #: pg_basebackup.c:338 #, c-format msgid " -F, --format=p|t output format (plain (default), tar)\n" -msgstr " -F, --format=p|t format en sortie (plain (par défaut), tar)\n" +msgstr " -F, --format=p|t format en sortie (plain (par défaut), tar)\n" #: pg_basebackup.c:339 #, c-format @@ -186,26 +187,28 @@ " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" " (in kB/s, or use suffix \"k\" or \"M\")\n" msgstr "" -" -r, --max-rate=TAUX taux maximum de transfert du répertoire de\n" -" données (en Ko/s, ou utiliser le suffixe « k »\n" -" ou « M »)\n" +" -r, --max-rate=TAUX taux maximum de transfert du répertoire de\n" +" données (en Ko/s, ou utiliser le suffixe « k »\n" +" ou « M »)\n" #: pg_basebackup.c:341 #, c-format msgid "" " -R, --write-recovery-conf\n" " write recovery.conf for replication\n" -msgstr " -R, --write-recovery-conf écrit le recovery.conf pour la réplication\n" +msgstr " -R, --write-recovery-conf écrit le recovery.conf pour la réplication\n" #: pg_basebackup.c:343 pg_receivewal.c:84 #, c-format msgid " -S, --slot=SLOTNAME replication slot to use\n" -msgstr " -S, --slot=NOMREP slot de réplication à utiliser\n" +msgstr " -S, --slot=NOMREP slot de réplication à utiliser\n" #: pg_basebackup.c:344 #, c-format msgid " --no-slot prevent creation of temporary replication slot\n" -msgstr " --no-slot empêche la création de slots de réplication temporaires\n" +msgstr "" +" --no-slot empêche la création de slots de réplication\n" +" temporaires\n" #: pg_basebackup.c:345 #, c-format @@ -214,7 +217,7 @@ " relocate tablespace in OLDDIR to NEWDIR\n" msgstr "" " -T, --tablespace-mapping=ANCIENREP=NOUVEAUREP\n" -" déplacer le répertoire ANCIENREP en NOUVEAUREP\n" +" déplace le répertoire ANCIENREP en NOUVEAUREP\n" #: pg_basebackup.c:347 #, c-format @@ -223,27 +226,27 @@ " include required WAL files with specified method\n" msgstr "" " -X, --wal-method=none|fetch|stream\n" -" inclut les journaux de transactions requis avec\n" -" la méthode spécifiée\n" +" inclut les journaux de transactions requis avec\n" +" la méthode spécifiée\n" #: pg_basebackup.c:349 #, c-format msgid " --waldir=WALDIR location for the write-ahead log directory\n" msgstr "" -" --waldir=RÉP_WAL emplacement du répertoire des journaux de\n" -" transactions\n" +" --waldir=RÉP_WAL emplacement du répertoire des journaux de\n" +" transactions\n" #: pg_basebackup.c:350 #, c-format msgid " -z, --gzip compress tar output\n" -msgstr " -z, --gzip compresse la sortie tar\n" +msgstr " -z, --gzip compresse la sortie tar\n" #: pg_basebackup.c:351 #, c-format msgid " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr "" -" -Z, --compress=0-9 compresse la sortie tar avec le niveau de\n" -" compression indiqué\n" +" -Z, --compress=0-9 compresse la sortie tar avec le niveau de\n" +" compression indiqué\n" #: pg_basebackup.c:352 #, c-format @@ -259,42 +262,44 @@ msgid "" " -c, --checkpoint=fast|spread\n" " set fast or spread checkpointing\n" -msgstr " -c, --checkpoint=fast|spread exécute un CHECKPOINT rapide ou réparti\n" +msgstr " -c, --checkpoint=fast|spread exécute un CHECKPOINT rapide ou réparti\n" #: pg_basebackup.c:355 #, c-format msgid " -l, --label=LABEL set backup label\n" -msgstr " -l, --label=LABEL configure le label de sauvegarde\n" +msgstr " -l, --label=LABEL configure le label de sauvegarde\n" #: pg_basebackup.c:356 #, c-format msgid " -n, --no-clean do not clean up after errors\n" -msgstr " -n, --no-clean ne nettoie pas en cas d'erreur\n" +msgstr " -n, --no-clean ne nettoie pas en cas d'erreur\n" #: pg_basebackup.c:357 #, c-format msgid " -N, --no-sync do not wait for changes to be written safely to disk\n" -msgstr " -N, --no-sync n'attend pas que les modifications soient proprement écrites sur disque\n" +msgstr "" +" -N, --no-sync n'attend pas que les modifications soient\n" +" proprement écrites sur disque\n" #: pg_basebackup.c:358 #, c-format msgid " -P, --progress show progress information\n" -msgstr " -P, --progress affiche la progression de la sauvegarde\n" +msgstr " -P, --progress affiche la progression de la sauvegarde\n" #: pg_basebackup.c:359 pg_receivewal.c:86 pg_recvlogical.c:98 #, c-format msgid " -v, --verbose output verbose messages\n" -msgstr " -v, --verbose affiche des messages verbeux\n" +msgstr " -v, --verbose affiche des messages verbeux\n" #: pg_basebackup.c:360 pg_receivewal.c:87 pg_recvlogical.c:99 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" #: pg_basebackup.c:361 pg_receivewal.c:89 pg_recvlogical.c:100 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" #: pg_basebackup.c:362 pg_receivewal.c:90 pg_recvlogical.c:101 #, c-format @@ -308,21 +313,20 @@ #: pg_basebackup.c:363 pg_receivewal.c:91 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" -msgstr " -d, --dbname=CONNSTR chaîne de connexion\n" +msgstr " -d, --dbname=CHAÎNE_CONNEX chaîne de connexion\n" #: pg_basebackup.c:364 pg_receivewal.c:92 pg_recvlogical.c:103 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" -" répertoire des sockets\n" +" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" +" répertoire des sockets\n" #: pg_basebackup.c:365 pg_receivewal.c:93 pg_recvlogical.c:104 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr "" -" -p, --port=PORT numéro de port du serveur de bases de\n" -" données\n" +" -p, --port=PORT numéro de port du serveur de bases de données\n" #: pg_basebackup.c:366 #, c-format @@ -336,19 +340,19 @@ #: pg_basebackup.c:368 pg_receivewal.c:94 pg_recvlogical.c:105 #, c-format msgid " -U, --username=NAME connect as specified database user\n" -msgstr " -U, --username=NOM se connecte avec cet utilisateur\n" +msgstr " -U, --username=UTILISATEUR se connecte avec cet utilisateur\n" #: pg_basebackup.c:369 pg_receivewal.c:95 pg_recvlogical.c:106 #, c-format msgid " -w, --no-password never prompt for password\n" -msgstr " -w, --no-password ne demande jamais le mot de passe\n" +msgstr " -w, --no-password ne demande jamais le mot de passe\n" #: pg_basebackup.c:370 pg_receivewal.c:96 pg_recvlogical.c:107 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" -" -W, --password force la demande du mot de passe (devrait arriver\n" -" automatiquement)\n" +" -W, --password force la demande du mot de passe (devrait\n" +" survenir automatiquement)\n" #: pg_basebackup.c:371 pg_receivewal.c:100 pg_recvlogical.c:108 #, c-format @@ -784,20 +788,20 @@ #, c-format msgid " -D, --directory=DIR receive write-ahead log files into this directory\n" msgstr "" -" -D, --directory=RÉP reçoit les journaux de transactions dans ce\n" -" répertoire\n" +" -D, --directory=RÉP reçoit les journaux de transactions dans ce\n" +" répertoire\n" #: pg_receivewal.c:80 pg_recvlogical.c:88 #, c-format msgid " --if-not-exists do not error if slot already exists when creating a slot\n" msgstr "" -" --if-not-exists ne pas renvoyer une erreur si le slot existe\\n\n" -" déjà lors de sa création\n" +" --if-not-exists ne renvoie pas d'erreur si le slot existe déjà\n" +" lors de sa création\n" #: pg_receivewal.c:81 pg_recvlogical.c:90 #, c-format msgid " -n, --no-loop do not loop on connection lost\n" -msgstr " -n, --no-loop ne boucle pas en cas de perte de la connexion\n" +msgstr " -n, --no-loop ne boucle pas en cas de perte de la connexion\n" #: pg_receivewal.c:82 pg_recvlogical.c:95 #, c-format @@ -805,22 +809,22 @@ " -s, --status-interval=SECS\n" " time between status packets sent to server (default: %d)\n" msgstr "" -" -s, --status-interval=SECS durée entre l'envoi de paquets de statut au\n" -" (par défaut %d)\n" +" -s, --status-interval=SECS durée entre l'envoi de paquets de statut au\n" +" serveur (par défaut %d)\n" #: pg_receivewal.c:85 #, c-format msgid " --synchronous flush write-ahead log immediately after writing\n" msgstr "" -" --synchronous vide le journal de transactions immédiatement\n" -" après son écriture\n" +" --synchronous demande au système d'écrire le journal de\n" +" transactions sur disque immédiatement\n" #: pg_receivewal.c:88 #, c-format msgid " -Z, --compress=0-9 compress logs with given compression level\n" msgstr "" -" -Z, --compress=0-9 compresse la sortie tar avec le niveau de\n" -" compression indiqué\n" +" -Z, --compress=0-9 compresse la sortie tar avec le niveau de\n" +" compression indiqué\n" #: pg_receivewal.c:97 #, c-format @@ -835,15 +839,15 @@ #, c-format msgid " --create-slot create a new replication slot (for the slot's name see --slot)\n" msgstr "" -" --create-slot créer un nouveau slot de réplication (pour le\n" -" nom du slot, voir --slot)\n" +" --create-slot créer un nouveau slot de réplication (pour le\n" +" nom du slot, voir --slot)\n" #: pg_receivewal.c:99 pg_recvlogical.c:81 #, c-format msgid " --drop-slot drop the replication slot (for the slot's name see --slot)\n" msgstr "" -" --drop-slot supprimer un nouveau slot de réplication (pour\n" -" le nom du slot, voir --slot)\n" +" --drop-slot supprimer un nouveau slot de réplication (pour\n" +" le nom du slot, voir --slot)\n" #: pg_receivewal.c:111 #, c-format @@ -961,18 +965,20 @@ #, c-format msgid " --start start streaming in a replication slot (for the slot's name see --slot)\n" msgstr "" -" --start lance le flux dans un slot de réplication (pour\n" -" le nom du slot, voir --slot)\n" +" --start lance le flux dans un slot de réplication (pour\n" +" le nom du slot, voir --slot)\n" #: pg_recvlogical.c:84 #, c-format msgid " -E, --endpos=LSN exit after receiving the specified LSN\n" -msgstr " -E, --endpos=LSN quitte après avoir reçu le LSN spécifié\n" +msgstr " -E, --endpos=LSN quitte après avoir reçu le LSN spécifié\n" #: pg_recvlogical.c:85 #, c-format msgid " -f, --file=FILE receive log into this file, - for stdout\n" -msgstr " -f, --file=NOMFICHIER trace la réception dans ce fichier, - pour stdout\n" +msgstr "" +" -f, --file=FICHIER trace la réception dans ce fichier,\n" +" - pour stdout\n" #: pg_recvlogical.c:86 #, c-format @@ -980,15 +986,15 @@ " -F --fsync-interval=SECS\n" " time between fsyncs to the output file (default: %d)\n" msgstr "" -" -F --fsync-interval=SECS durée entre les fsyncs vers le fichier de sortie\n" -" (par défaut %d)\n" +" -F --fsync-interval=SECS durée entre les fsyncs vers le fichier de\n" +" sortie (par défaut %d)\n" #: pg_recvlogical.c:89 #, c-format msgid " -I, --startpos=LSN where in an existing slot should the streaming start\n" msgstr "" -" -I, --startpos=LSN position de début du streaming dans le slot\n" -" existant\n" +" -I, --startpos=LSN position de début du streaming dans le slot\n" +" existant\n" #: pg_recvlogical.c:91 #, c-format @@ -997,25 +1003,25 @@ " pass option NAME with optional value VALUE to the\n" " output plugin\n" msgstr "" -" -o, --option=NOM[=VALEUR] passe l'option NAME avec la valeur optionnelle\n" -" VALEUR au plugin en sortie\n" +" -o, --option=NOM[=VALEUR] passe l'option NOM avec la valeur optionnelle\n" +" VALEUR au plugin en sortie\n" #: pg_recvlogical.c:94 #, c-format msgid " -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n" msgstr "" -" -P, --plugin=PLUGIN utilise le plugin PLUGIN en sortie\n" -" (par défaut %s)\n" +" -P, --plugin=PLUGIN utilise le plugin PLUGIN en sortie\n" +" (par défaut %s)\n" #: pg_recvlogical.c:97 #, c-format msgid " -S, --slot=SLOTNAME name of the logical replication slot\n" -msgstr " -S, --slot=NOMSLOT nom du slot de réplication logique\n" +msgstr " -S, --slot=NOMSLOT nom du slot de réplication logique\n" #: pg_recvlogical.c:102 #, c-format msgid " -d, --dbname=DBNAME database to connect to\n" -msgstr " -d, --dbname=NOMBASE base de données de connexion\n" +msgstr " -d, --dbname=BASE base de données de connexion\n" #: pg_recvlogical.c:135 #, c-format diff -Nru postgresql-10-10.17/src/bin/pg_basebackup/po/ru.po postgresql-10-10.19/src/bin/pg_basebackup/po/ru.po --- postgresql-10-10.17/src/bin/pg_basebackup/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_basebackup/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,13 +1,13 @@ # Russian message translation file for pg_basebackup # Copyright (C) 2012-2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: pg_basebackup (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-11-09 07:36+0300\n" -"PO-Revision-Date: 2020-11-09 08:27+0300\n" +"POT-Creation-Date: 2021-08-09 23:07+0300\n" +"PO-Revision-Date: 2021-08-14 07:50+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -50,8 +50,8 @@ msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: не удалось открыть файл \"%s\": %s\n" -#: ../../common/file_utils.c:304 ../../common/file_utils.c:376 receivelog.c:804 -#: receivelog.c:1061 +#: ../../common/file_utils.c:304 ../../common/file_utils.c:376 receivelog.c:814 +#: receivelog.c:1071 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: не удалось синхронизировать с ФС файл \"%s\": %s\n" @@ -109,7 +109,7 @@ #: pg_basebackup.c:202 #, c-format msgid "%s: WAL directory \"%s\" not removed at user's request\n" -msgstr "%s: каталог данных WAL \"%s\" не был удалён по запросу пользователя\n" +msgstr "%s: каталог WAL \"%s\" не был удалён по запросу пользователя\n" #: pg_basebackup.c:208 #, c-format @@ -421,7 +421,7 @@ #: pg_basebackup.c:700 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s: нет доступа к каталогу \"%s\": %s\n" +msgstr "%s: ошибка доступа к каталогу \"%s\": %s\n" #: pg_basebackup.c:762 #, c-format @@ -512,14 +512,14 @@ msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: не удалось закрыть сжатый файл \"%s\": %s\n" -#: pg_basebackup.c:1148 pg_recvlogical.c:657 receivelog.c:223 receivelog.c:308 -#: receivelog.c:714 +#: pg_basebackup.c:1148 pg_recvlogical.c:657 receivelog.c:233 receivelog.c:318 +#: receivelog.c:724 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: не удалось закрыть файл \"%s\": %s\n" #: pg_basebackup.c:1159 pg_basebackup.c:1381 pg_recvlogical.c:453 -#: pg_recvlogical.c:631 receivelog.c:1009 +#: pg_recvlogical.c:631 receivelog.c:1019 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: не удалось прочитать данные COPY: %s" @@ -578,8 +578,8 @@ "%s: начинается базовое резервное копирование, ожидается завершение " "контрольной точки\n" -#: pg_basebackup.c:1809 pg_recvlogical.c:270 receivelog.c:492 receivelog.c:563 -#: receivelog.c:603 streamutil.c:278 streamutil.c:386 streamutil.c:432 +#: pg_basebackup.c:1809 pg_recvlogical.c:270 receivelog.c:502 receivelog.c:573 +#: receivelog.c:613 streamutil.c:278 streamutil.c:386 streamutil.c:432 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: не удалось передать команду репликации \"%s\": %s" @@ -770,14 +770,12 @@ #: pg_basebackup.c:2375 #, c-format msgid "%s: WAL directory location can only be specified in plain mode\n" -msgstr "" -"%s: расположение каталога журнала WAL можно указать только в режиме plain\n" +msgstr "%s: расположение каталога WAL можно указать только в режиме plain\n" #: pg_basebackup.c:2386 #, c-format msgid "%s: WAL directory location must be an absolute path\n" -msgstr "" -"%s: расположение каталога журнала WAL должно определяться абсолютным путём\n" +msgstr "%s: расположение каталога WAL должно определяться абсолютным путём\n" #: pg_basebackup.c:2398 pg_receivewal.c:631 #, c-format @@ -1080,7 +1078,7 @@ msgstr "" "%s: подтверждается запись до %X/%X, синхронизация с ФС до %X/%X (слот %s)\n" -#: pg_recvlogical.c:160 receivelog.c:351 +#: pg_recvlogical.c:160 receivelog.c:361 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: не удалось отправить пакет ответа: %s" @@ -1105,28 +1103,28 @@ msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: не удалось открыть файл журнала \"%s\": %s\n" -#: pg_recvlogical.c:376 receivelog.c:914 +#: pg_recvlogical.c:376 receivelog.c:924 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: неверный сокет: %s" -#: pg_recvlogical.c:430 receivelog.c:943 +#: pg_recvlogical.c:430 receivelog.c:953 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: ошибка в select(): %s\n" -#: pg_recvlogical.c:439 receivelog.c:995 +#: pg_recvlogical.c:439 receivelog.c:1005 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: не удалось получить данные из потока WAL: %s" -#: pg_recvlogical.c:481 pg_recvlogical.c:533 receivelog.c:1040 -#: receivelog.c:1107 +#: pg_recvlogical.c:481 pg_recvlogical.c:533 receivelog.c:1050 +#: receivelog.c:1117 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: заголовок потока слишком мал: %d\n" -#: pg_recvlogical.c:517 receivelog.c:874 +#: pg_recvlogical.c:517 receivelog.c:884 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: нераспознанный заголовок потока: \"%c\"\n" @@ -1136,7 +1134,7 @@ msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: не удалось записать %u Б в файл журнала \"%s\": %s\n" -#: pg_recvlogical.c:643 receivelog.c:667 receivelog.c:705 +#: pg_recvlogical.c:643 receivelog.c:677 receivelog.c:715 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: неожиданный конец потока репликации: %s" @@ -1204,25 +1202,25 @@ msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: не удалось создать файл статуса архива \"%s\": %s\n" -#: receivelog.c:119 +#: receivelog.c:122 #, c-format msgid "%s: could not get size of write-ahead log file \"%s\": %s\n" msgstr "%s: не удалось получить размер файла журнала предзаписи \"%s\": %s\n" -#: receivelog.c:130 +#: receivelog.c:134 #, c-format msgid "%s: could not open existing write-ahead log file \"%s\": %s\n" msgstr "" "%s: не удалось открыть существующий файл журнала предзаписи \"%s\": %s\n" -#: receivelog.c:139 +#: receivelog.c:144 #, c-format msgid "%s: could not fsync existing write-ahead log file \"%s\": %s\n" msgstr "" "%s: не удалось сбросить на диск существующий файл журнала предзаписи \"%s\": " "%s\n" -#: receivelog.c:154 +#: receivelog.c:161 #, c-format msgid "%s: write-ahead log file \"%s\" has %d byte, should be 0 or %d\n" msgid_plural "" @@ -1234,39 +1232,39 @@ msgstr[2] "" "%s: файл журнала предзаписи \"%s\" имеет размер %d Б, а должен - 0 или %d\n" -#: receivelog.c:169 +#: receivelog.c:177 #, c-format msgid "%s: could not open write-ahead log file \"%s\": %s\n" msgstr "%s: не удалось открыть файл журнала предзаписи \"%s\": %s\n" -#: receivelog.c:196 +#: receivelog.c:206 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: не удалось определить текущую позицию в файле \"%s\": %s\n" -#: receivelog.c:211 +#: receivelog.c:221 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "" "%s: файл \"%s%s\" не переименовывается, так как это не полный сегмент\n" -#: receivelog.c:280 +#: receivelog.c:290 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "" "%s: сервер сообщил неожиданное имя файла истории для линии времени %u: %s\n" -#: receivelog.c:288 +#: receivelog.c:298 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: не удалось создать файл истории линии времени \"%s\": %s\n" -#: receivelog.c:295 +#: receivelog.c:305 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: не удалось записать файл истории линии времени \"%s\": %s\n" -#: receivelog.c:385 +#: receivelog.c:395 #, c-format msgid "" "%s: incompatible server version %s; client does not support streaming from " @@ -1275,7 +1273,7 @@ "%s: несовместимая версия сервера %s; клиент не поддерживает репликацию с " "серверов версии ниже %s\n" -#: receivelog.c:395 +#: receivelog.c:405 #, c-format msgid "" "%s: incompatible server version %s; client does not support streaming from " @@ -1284,7 +1282,7 @@ "%s: несовместимая версия сервера %s; клиент не поддерживает репликацию с " "серверов версии выше %s\n" -#: receivelog.c:500 streamutil.c:287 streamutil.c:326 +#: receivelog.c:510 streamutil.c:287 streamutil.c:326 #, c-format msgid "" "%s: could not identify system: got %d rows and %d fields, expected %d rows " @@ -1293,7 +1291,7 @@ "%s: не удалось идентифицировать систему; получено строк: %d, полей: %d " "(ожидалось: %d и %d (или более))\n" -#: receivelog.c:508 +#: receivelog.c:518 #, c-format msgid "" "%s: system identifier does not match between base backup and streaming " @@ -1302,17 +1300,17 @@ "%s: системный идентификатор базовой резервной копии отличается от " "идентификатора потоковой передачи\n" -#: receivelog.c:516 +#: receivelog.c:526 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: на сервере нет начальной линии времени %u\n" -#: receivelog.c:535 +#: receivelog.c:545 #, c-format msgid "%s: could not create temporary replication slot \"%s\": %s" msgstr "%s: не удалось создать временный слот репликации \"%s\": %s" -#: receivelog.c:576 +#: receivelog.c:586 #, c-format msgid "" "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d " @@ -1321,14 +1319,14 @@ "%s: сервер вернул неожиданный ответ на команду TIMELINE_HISTORY; получено " "строк: %d, полей: %d, а ожидалось строк: %d, полей: %d\n" -#: receivelog.c:648 +#: receivelog.c:658 #, c-format msgid "" "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "" "%s: сервер неожиданно сообщил линию времени %u после линии времени %u\n" -#: receivelog.c:655 +#: receivelog.c:665 #, c-format msgid "" "%s: server stopped streaming timeline %u at %X/%X, but reported next " @@ -1337,12 +1335,12 @@ "%s: сервер прекратил передачу линии времени %u в %X/%X, но сообщил, что " "следующая линии времени %u начнётся в %X/%X\n" -#: receivelog.c:696 +#: receivelog.c:706 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: поток репликации закончился до точки останова\n" -#: receivelog.c:745 +#: receivelog.c:755 #, c-format msgid "" "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, " @@ -1351,29 +1349,29 @@ "%s: сервер вернул неожиданный набор данных после конца линии времени; " "получено строк: %d, полей: %d, а ожидалось строк: %d, полей: %d\n" -#: receivelog.c:755 +#: receivelog.c:765 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "" "%s: не удалось разобрать начальную точку следующей линии времени \"%s\"\n" -#: receivelog.c:1126 +#: receivelog.c:1136 #, c-format msgid "%s: received write-ahead log record for offset %u with no file open\n" msgstr "" "%s: получена запись журнала предзаписи по смещению %u, но файл не открыт\n" -#: receivelog.c:1137 +#: receivelog.c:1147 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: получено смещение данных WAL %08x, но ожидалось %08x\n" -#: receivelog.c:1172 +#: receivelog.c:1182 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%s: не удалось записать %u Б в файл WAL \"%s\": %s\n" -#: receivelog.c:1197 receivelog.c:1238 receivelog.c:1269 +#: receivelog.c:1207 receivelog.c:1248 receivelog.c:1279 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: не удалось отправить пакет \"конец COPY\": %s" @@ -1426,36 +1424,36 @@ "%s: удалить слот репликации \"%s\" не получилось; получено строк: %d, полей: " "%d (ожидалось: %d и %d)\n" -#: walmethods.c:438 walmethods.c:926 +#: walmethods.c:467 walmethods.c:974 msgid "could not compress data" msgstr "не удалось сжать данные" -#: walmethods.c:470 +#: walmethods.c:499 msgid "could not reset compression stream" msgstr "не удалось сбросить поток сжатых данных" -#: walmethods.c:567 +#: walmethods.c:607 msgid "could not initialize compression library" msgstr "не удалось инициализировать библиотеку сжатия" -#: walmethods.c:579 +#: walmethods.c:619 msgid "implementation error: tar files can't have more than one open file" msgstr "" "ошибка реализации: в файлах tar не может быть больше одно открытого файла" -#: walmethods.c:593 +#: walmethods.c:633 msgid "could not create tar header" msgstr "не удалось создать заголовок tar" -#: walmethods.c:607 walmethods.c:647 walmethods.c:842 walmethods.c:853 +#: walmethods.c:649 walmethods.c:689 walmethods.c:890 walmethods.c:901 msgid "could not change compression parameters" msgstr "не удалось изменить параметры сжатия" -#: walmethods.c:729 +#: walmethods.c:777 msgid "unlink not supported with compression" msgstr "со сжатием закрытие файла с удалением не поддерживается" -#: walmethods.c:951 +#: walmethods.c:999 msgid "could not close compression stream" msgstr "не удалось закрыть поток сжатых данных" diff -Nru postgresql-10-10.17/src/bin/pg_basebackup/po/sv.po postgresql-10-10.19/src/bin/pg_basebackup/po/sv.po --- postgresql-10-10.17/src/bin/pg_basebackup/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_basebackup/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,16 +1,16 @@ # SWEDISH message translation file for pg_basebackup # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017, 2018. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2018-05-06 12:25+0000\n" -"PO-Revision-Date: 2018-05-06 09:31-0400\n" +"POT-Creation-Date: 2021-11-07 09:44+0000\n" +"PO-Revision-Date: 2021-11-07 06:43+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: SWEDISH \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -50,8 +50,8 @@ msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: kunde inte öppna fil \"%s\": %s\n" -#: ../../common/file_utils.c:304 ../../common/file_utils.c:376 receivelog.c:804 -#: receivelog.c:1061 +#: ../../common/file_utils.c:304 ../../common/file_utils.c:376 receivelog.c:814 +#: receivelog.c:1071 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: kunde inte utföra fsync på filen \"%s\": %s\n" @@ -355,400 +355,390 @@ msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: kunde inte läsa från klart rör (pipe): %s\n" -#: pg_basebackup.c:422 pg_basebackup.c:557 pg_basebackup.c:2015 -#: streamutil.c:309 +#: pg_basebackup.c:422 pg_basebackup.c:560 pg_basebackup.c:2025 +#: streamutil.c:308 #, c-format msgid "%s: could not parse write-ahead log location \"%s\"\n" msgstr "%s: kunde inte parsa write-ahead-logg-plats \"%s\"\n" -#: pg_basebackup.c:520 pg_receivewal.c:428 +#: pg_basebackup.c:523 pg_receivewal.c:428 #, c-format msgid "%s: could not finish writing WAL files: %s\n" msgstr "%s: kunde inte slutföra skrivning av WAL-filer: %s\n" -#: pg_basebackup.c:570 +#: pg_basebackup.c:573 #, c-format msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: kunde inte skapa rör (pipe) för bakgrundsprocess: %s\n" -#: pg_basebackup.c:610 pg_basebackup.c:666 pg_basebackup.c:1433 +#: pg_basebackup.c:613 pg_basebackup.c:669 pg_basebackup.c:1445 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: kunde inte skapa katalogen \"%s\": %s\n" -#: pg_basebackup.c:629 +#: pg_basebackup.c:632 #, c-format msgid "%s: could not create background process: %s\n" msgstr "%s: kunde inte skapa bakgrundsprocess: %s\n" -#: pg_basebackup.c:641 +#: pg_basebackup.c:644 #, c-format msgid "%s: could not create background thread: %s\n" msgstr "%s: kunde inte skapa bakgrundstråd: %s\n" -#: pg_basebackup.c:689 +#: pg_basebackup.c:692 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: katalogen \"%s\" existerar men är inte tom.\n" -#: pg_basebackup.c:697 +#: pg_basebackup.c:700 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: kunde inte komma åt katalogen \"%s\": %s\n" -#: pg_basebackup.c:759 +#: pg_basebackup.c:762 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" msgstr[0] "%*s/%s kB (100%%), %d/%d tablespace %*s" msgstr[1] "%*s/%s kB (100%%), %d/%d tablespace %*s" -#: pg_basebackup.c:771 +#: pg_basebackup.c:774 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" msgstr[0] "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgstr[1] "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" -#: pg_basebackup.c:787 +#: pg_basebackup.c:790 #, 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:809 +#: pg_basebackup.c:812 #, c-format msgid "%s: transfer rate \"%s\" is not a valid value\n" msgstr "%s: överföringshastighet \"%s\" är inte ett giltigt värde\n" -#: pg_basebackup.c:816 +#: pg_basebackup.c:819 #, c-format msgid "%s: invalid transfer rate \"%s\": %s\n" msgstr "%s: ogiltig överföringshastighet \"%s\": %s\n" -#: pg_basebackup.c:826 +#: pg_basebackup.c:829 #, c-format msgid "%s: transfer rate must be greater than zero\n" msgstr "%s: överföringshastigheten måste vara större än noll\n" -#: pg_basebackup.c:860 +#: pg_basebackup.c:863 #, c-format msgid "%s: invalid --max-rate unit: \"%s\"\n" msgstr "%s: ogiltig enhet för --max-rate: \"%s\"\n" -#: pg_basebackup.c:869 +#: pg_basebackup.c:872 #, c-format msgid "%s: transfer rate \"%s\" exceeds integer range\n" msgstr "%s: överföringshastighet \"%s\" överskrider heltalsintervall\n" -#: pg_basebackup.c:881 +#: pg_basebackup.c:884 #, c-format msgid "%s: transfer rate \"%s\" is out of range\n" msgstr "%s: överföringshastighet \"%s\" är utanför sitt intervall\n" -#: pg_basebackup.c:905 +#: pg_basebackup.c:912 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: kunde inte skriva till komprimerad fil \"%s\": %s\n" -#: pg_basebackup.c:915 pg_basebackup.c:1527 pg_basebackup.c:1693 +#: pg_basebackup.c:926 pg_basebackup.c:1543 pg_basebackup.c:1709 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: kunde inte skriva till fil \"%s\": %s\n" -#: pg_basebackup.c:974 pg_basebackup.c:995 pg_basebackup.c:1023 +#: pg_basebackup.c:985 pg_basebackup.c:1006 pg_basebackup.c:1034 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s: kunde inte sätta komprimeringsnivå %d: %s\n" -#: pg_basebackup.c:1044 +#: pg_basebackup.c:1055 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: kunde inte skapa komprimerad fil \"%s\": %s\n" -#: pg_basebackup.c:1055 pg_basebackup.c:1487 pg_basebackup.c:1686 +#: pg_basebackup.c:1066 pg_basebackup.c:1499 pg_basebackup.c:1702 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: kunde inte skapa fil \"%s\": %s\n" -#: pg_basebackup.c:1067 pg_basebackup.c:1340 +#: pg_basebackup.c:1078 pg_basebackup.c:1352 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: kunde inte hämta COPY-data-ström: %s" -#: pg_basebackup.c:1124 +#: pg_basebackup.c:1135 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: kunde inte stänga komprimerad fil \"%s\": %s\n" -#: pg_basebackup.c:1137 pg_recvlogical.c:631 receivelog.c:223 receivelog.c:308 -#: receivelog.c:714 +#: pg_basebackup.c:1148 pg_recvlogical.c:657 receivelog.c:233 receivelog.c:318 +#: receivelog.c:724 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: kunde inte stänga fil \"%s\": %s\n" -#: pg_basebackup.c:1148 pg_basebackup.c:1369 pg_recvlogical.c:453 -#: receivelog.c:1009 +#: pg_basebackup.c:1159 pg_basebackup.c:1381 pg_recvlogical.c:453 +#: pg_recvlogical.c:631 receivelog.c:1019 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: kunde inte läsa COPY-data: %s" -#: pg_basebackup.c:1383 +#: pg_basebackup.c:1395 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: ogiltig tar-block-header-storlek: %d\n" -#: pg_basebackup.c:1441 +#: pg_basebackup.c:1453 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: kunde inte sätta rättigheter på katalog \"%s\": %s\n" -#: pg_basebackup.c:1465 +#: pg_basebackup.c:1477 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "%s: kunde inte skapa symbolisk länk från \"%s\" till \"%s\": %s\n" -#: pg_basebackup.c:1474 +#: pg_basebackup.c:1486 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: okänd länkindikator \"%c\"\n" -#: pg_basebackup.c:1494 +#: pg_basebackup.c:1506 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: kunde inte sätta rättigheter på fil \"%s\": %s\n" -#: pg_basebackup.c:1553 +#: pg_basebackup.c:1569 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: COPY-ström avslutade innan sista filen var klar\n" -#: pg_basebackup.c:1581 pg_basebackup.c:1601 pg_basebackup.c:1608 -#: pg_basebackup.c:1661 +#: pg_basebackup.c:1597 pg_basebackup.c:1617 pg_basebackup.c:1624 +#: pg_basebackup.c:1677 #, c-format msgid "%s: out of memory\n" msgstr "%s: slut på minne\n" -#: pg_basebackup.c:1734 +#: pg_basebackup.c:1750 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: inkompatibel serverversion %s\n" -#: pg_basebackup.c:1749 +#: pg_basebackup.c:1765 #, c-format msgid "HINT: use -X none or -X fetch to disable log streaming\n" msgstr "TIPS: använd -X none eller -X fetch för att stänga av logg-strömning\n" -#: pg_basebackup.c:1775 +#: pg_basebackup.c:1791 #, c-format msgid "%s: initiating base backup, waiting for checkpoint to complete\n" msgstr "%s: initierar basbackup, väntar på att checkpoint skall gå klart\n" -#: pg_basebackup.c:1793 pg_recvlogical.c:270 receivelog.c:492 receivelog.c:563 -#: receivelog.c:603 streamutil.c:279 streamutil.c:387 streamutil.c:433 +#: pg_basebackup.c:1809 pg_recvlogical.c:270 receivelog.c:502 receivelog.c:573 +#: receivelog.c:613 streamutil.c:278 streamutil.c:386 streamutil.c:432 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: kunde inte skicka replikeringskommando \"%s\": %s" -#: pg_basebackup.c:1804 +#: pg_basebackup.c:1820 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: kunde inte initiera basbackup: %s" -#: pg_basebackup.c:1811 +#: pg_basebackup.c:1827 #, c-format msgid "%s: server returned unexpected response to BASE_BACKUP command; got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: servern retunerade ett oväntat svar på BASE_BACKUP-kommandot; fick %d rader och %d fält, förväntade %d rader och %d fält\n" -#: pg_basebackup.c:1819 +#: pg_basebackup.c:1835 #, c-format msgid "%s: checkpoint completed\n" msgstr "%s: checkpoint klar\n" -#: pg_basebackup.c:1834 +#: pg_basebackup.c:1850 #, c-format msgid "%s: write-ahead log start point: %s on timeline %u\n" msgstr "%s: write-ahead-loggen startposition: %s på tidslinje %u\n" -#: pg_basebackup.c:1843 +#: pg_basebackup.c:1859 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: kunde inte hämta backup-header: %s" -#: pg_basebackup.c:1849 +#: pg_basebackup.c:1865 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: ingen data returnerades från servern\n" -#: pg_basebackup.c:1881 +#: pg_basebackup.c:1897 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" msgstr "%s: kunde bara skriva en endaste tablespace till stdout, databasen har %d\n" -#: pg_basebackup.c:1893 +#: pg_basebackup.c:1909 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: startar bakgrunds-WAL-mottagare\n" -#: pg_basebackup.c:1924 +#: pg_basebackup.c:1940 #, c-format msgid "%s: could not get write-ahead log end position from server: %s" msgstr "%s: kunde inte hämta write-ahead-loggens slutposition från servern: %s" -#: pg_basebackup.c:1931 +#: pg_basebackup.c:1947 #, c-format msgid "%s: no write-ahead log end position returned from server\n" msgstr "%s: ingen write-ahead-logg-slutposition returnerad från servern\n" -#: pg_basebackup.c:1937 +#: pg_basebackup.c:1953 #, c-format msgid "%s: write-ahead log end point: %s\n" msgstr "%s: write-ahead-logg-slutposition: %s\n" -#: pg_basebackup.c:1943 +#: pg_basebackup.c:1959 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: sista mottagning misslyckades: %s" -#: pg_basebackup.c:1967 +#: pg_basebackup.c:1983 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: väntat på att bakgrundsprocess skall avsluta strömmande ...\n" -#: pg_basebackup.c:1973 +#: pg_basebackup.c:1989 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s: kunde inte skicka kommando till bakgrundsrör (pipe): %s\n" -#: pg_basebackup.c:1982 +#: pg_basebackup.c:1998 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: kunde inte vänta på barnprocess: %s\n" -#: pg_basebackup.c:1988 +#: pg_basebackup.c:2004 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: barn %d dog, förväntade %d\n" -#: pg_basebackup.c:1994 -#, c-format -msgid "%s: child process did not exit normally\n" -msgstr "%s: barnprocess avslutade inte normalt\n" - -#: pg_basebackup.c:2000 -#, c-format -msgid "%s: child process exited with error %d\n" -msgstr "%s: barnprocess avslutade med fel %d\n" - -#: pg_basebackup.c:2027 +#: pg_basebackup.c:2037 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: kunde inte vänta på barntråd: %s\n" -#: pg_basebackup.c:2034 +#: pg_basebackup.c:2044 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: kunde inte hämta barntrådens slutstatus: %s\n" -#: pg_basebackup.c:2040 +#: pg_basebackup.c:2050 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: barntråd avslutade med fel %u\n" -#: pg_basebackup.c:2078 +#: pg_basebackup.c:2088 #, c-format msgid "%s: base backup completed\n" msgstr "%s: basbackup klar\n" -#: pg_basebackup.c:2155 +#: pg_basebackup.c:2165 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: ogiltigt utdataformat \"%s\", måste vara \"plain\" eller \"tar\"\n" -#: pg_basebackup.c:2200 +#: pg_basebackup.c:2210 #, c-format msgid "%s: invalid wal-method option \"%s\", must be \"fetch\", \"stream\", or \"none\"\n" msgstr "%s: ogiltig wal-metod-flagga \"%s\", måste vara \"fetch\", \"stream\" eller \"none\"\n" -#: pg_basebackup.c:2228 pg_receivewal.c:556 +#: pg_basebackup.c:2238 pg_receivewal.c:556 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: ogiltig komprimeringsnivå \"%s\"\n" -#: pg_basebackup.c:2240 +#: pg_basebackup.c:2250 #, c-format msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "%s: ogiltigt checkpoint-argument \"%s\", måste vara \"fast\" eller \"spread\"\n" -#: pg_basebackup.c:2267 pg_receivewal.c:538 pg_recvlogical.c:825 +#: pg_basebackup.c:2277 pg_receivewal.c:538 pg_recvlogical.c:851 #, c-format msgid "%s: invalid status interval \"%s\"\n" msgstr "%s: ogiltigt status-intervall \"%s\"\n" -#: pg_basebackup.c:2283 pg_basebackup.c:2297 pg_basebackup.c:2308 -#: pg_basebackup.c:2321 pg_basebackup.c:2331 pg_basebackup.c:2341 -#: pg_basebackup.c:2353 pg_basebackup.c:2367 pg_basebackup.c:2378 +#: pg_basebackup.c:2293 pg_basebackup.c:2307 pg_basebackup.c:2318 +#: pg_basebackup.c:2331 pg_basebackup.c:2341 pg_basebackup.c:2351 +#: pg_basebackup.c:2363 pg_basebackup.c:2377 pg_basebackup.c:2388 #: pg_receivewal.c:579 pg_receivewal.c:593 pg_receivewal.c:601 -#: pg_receivewal.c:611 pg_receivewal.c:622 pg_recvlogical.c:852 -#: pg_recvlogical.c:866 pg_recvlogical.c:877 pg_recvlogical.c:885 -#: pg_recvlogical.c:893 pg_recvlogical.c:901 pg_recvlogical.c:909 -#: pg_recvlogical.c:917 pg_recvlogical.c:927 +#: pg_receivewal.c:611 pg_receivewal.c:622 pg_recvlogical.c:878 +#: pg_recvlogical.c:892 pg_recvlogical.c:903 pg_recvlogical.c:911 +#: pg_recvlogical.c:919 pg_recvlogical.c:927 pg_recvlogical.c:935 +#: pg_recvlogical.c:943 pg_recvlogical.c:953 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Försök med \"%s --help\" för mer information.\n" -#: pg_basebackup.c:2295 pg_receivewal.c:591 pg_recvlogical.c:864 +#: pg_basebackup.c:2305 pg_receivewal.c:591 pg_recvlogical.c:890 #, 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_basebackup.c:2307 pg_receivewal.c:621 +#: pg_basebackup.c:2317 pg_receivewal.c:621 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: ingen målkatalog angiven\n" -#: pg_basebackup.c:2319 +#: pg_basebackup.c:2329 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: bara backupper i tar-läge kan komprimeras\n" -#: pg_basebackup.c:2329 +#: pg_basebackup.c:2339 #, c-format msgid "%s: cannot stream write-ahead logs in tar mode to stdout\n" msgstr "%s: kan inte strömma write-ahead-logg i tar-läge till stdout\n" -#: pg_basebackup.c:2339 +#: pg_basebackup.c:2349 #, c-format msgid "%s: replication slots can only be used with WAL streaming\n" msgstr "%s: replikerings-slot kan bara användas med WAL-strömning\n" -#: pg_basebackup.c:2351 +#: pg_basebackup.c:2361 #, c-format msgid "%s: --no-slot cannot be used with slot name\n" msgstr "%s: --no-slot kan inte användas tillsammans med slot-namn\n" -#: pg_basebackup.c:2365 +#: pg_basebackup.c:2375 #, c-format msgid "%s: WAL directory location can only be specified in plain mode\n" msgstr "%s: WAL-katalogplats kan bara anges i läget \"plain\"\n" -#: pg_basebackup.c:2376 +#: pg_basebackup.c:2386 #, c-format msgid "%s: WAL directory location must be an absolute path\n" msgstr "%s: WAL-katalogen måste vara en absolut sökväg.\n" -#: pg_basebackup.c:2388 pg_receivewal.c:631 +#: pg_basebackup.c:2398 pg_receivewal.c:631 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: detta bygge stöder inte komprimering\n" -#: pg_basebackup.c:2428 +#: pg_basebackup.c:2438 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: kunde inte skapa symbolisk länk \"%s\": %s\n" -#: pg_basebackup.c:2433 +#: pg_basebackup.c:2443 #, c-format msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: symlänkar stöds inte på denna plattform\n" @@ -874,7 +864,7 @@ msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgstr "%s: startar logg-strömning vid %X/%X (tidslinje %u)\n" -#: pg_receivewal.c:519 pg_recvlogical.c:762 +#: pg_receivewal.c:519 pg_recvlogical.c:788 #, c-format msgid "%s: invalid port number \"%s\"\n" msgstr "%s: ogiltigt portnummer \"%s\"\n" @@ -895,23 +885,23 @@ msgid "%s: replication connection using slot \"%s\" is unexpectedly database specific\n" msgstr "%s: replikeringsanslutning som använder slot \"%s\" är oväntat databasspecifik\n" -#: pg_receivewal.c:686 pg_recvlogical.c:967 +#: pg_receivewal.c:686 pg_recvlogical.c:993 #, c-format msgid "%s: dropping replication slot \"%s\"\n" msgstr "%s: slänger replikeringsslot \"%s\"\n" -#: pg_receivewal.c:699 pg_recvlogical.c:979 +#: pg_receivewal.c:699 pg_recvlogical.c:1005 #, c-format msgid "%s: creating replication slot \"%s\"\n" msgstr "%s: skapar replikeringsslot \"%s\"\n" -#: pg_receivewal.c:726 pg_recvlogical.c:1005 +#: pg_receivewal.c:726 pg_recvlogical.c:1031 #, c-format msgid "%s: disconnected\n" msgstr "%s: nerkopplad\n" #. translator: check source for value for %d -#: pg_receivewal.c:733 pg_recvlogical.c:1012 +#: pg_receivewal.c:733 pg_recvlogical.c:1038 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" msgstr "%s: nerkopplad; väntar %d sekunder för att försöka igen\n" @@ -994,7 +984,7 @@ msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" msgstr "%s: bekräftar skrivning fram till %X/%X, flush till %X/%X (slot %s)\n" -#: pg_recvlogical.c:160 receivelog.c:351 +#: pg_recvlogical.c:160 receivelog.c:361 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: kunde inte skicka feedback-paket: %s" @@ -1019,28 +1009,28 @@ msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: kunde inte öppna logg-fil \"%s\": %s\n" -#: pg_recvlogical.c:376 receivelog.c:914 +#: pg_recvlogical.c:376 receivelog.c:924 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: ogiltigt uttag: %s" -#: pg_recvlogical.c:430 receivelog.c:943 +#: pg_recvlogical.c:430 receivelog.c:953 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: select() misslyckades: %s\n" -#: pg_recvlogical.c:439 receivelog.c:995 +#: pg_recvlogical.c:439 receivelog.c:1005 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: kunde inte ta emot data från WAL-ström: %s" -#: pg_recvlogical.c:481 pg_recvlogical.c:533 receivelog.c:1040 -#: receivelog.c:1107 +#: pg_recvlogical.c:481 pg_recvlogical.c:533 receivelog.c:1050 +#: receivelog.c:1117 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: strömningsheader för liten: %d\n" -#: pg_recvlogical.c:517 receivelog.c:874 +#: pg_recvlogical.c:517 receivelog.c:884 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: okänd strömningsheader: \"%c\"\n" @@ -1050,62 +1040,62 @@ msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: kunde inte skriva %u byte till loggfil \"%s\": %s\n" -#: pg_recvlogical.c:617 receivelog.c:667 receivelog.c:705 +#: pg_recvlogical.c:643 receivelog.c:677 receivelog.c:715 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: oväntad terminering av replikeringsström: %s" -#: pg_recvlogical.c:741 +#: pg_recvlogical.c:767 #, c-format msgid "%s: invalid fsync interval \"%s\"\n" msgstr "%s: ogiltigt fsync-intervall \"%s\"\n" -#: pg_recvlogical.c:782 +#: pg_recvlogical.c:808 #, c-format msgid "%s: could not parse start position \"%s\"\n" msgstr "%s: kunde inte parsa startposition \"%s\"\n" -#: pg_recvlogical.c:792 +#: pg_recvlogical.c:818 #, c-format msgid "%s: could not parse end position \"%s\"\n" msgstr "%s: kunde inte parsa slutposition \"%s\"\n" -#: pg_recvlogical.c:876 +#: pg_recvlogical.c:902 #, c-format msgid "%s: no slot specified\n" msgstr "%s: ingen slot angiven\n" -#: pg_recvlogical.c:884 +#: pg_recvlogical.c:910 #, c-format msgid "%s: no target file specified\n" msgstr "%s: ingen målfil angiven\n" -#: pg_recvlogical.c:892 +#: pg_recvlogical.c:918 #, c-format msgid "%s: no database specified\n" msgstr "%s: ingen databas angiven\n" -#: pg_recvlogical.c:900 +#: pg_recvlogical.c:926 #, c-format msgid "%s: at least one action needs to be specified\n" msgstr "%s: minst en handling måste anges\n" -#: pg_recvlogical.c:908 +#: pg_recvlogical.c:934 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "%s: kan inte använda --create-slot eller --start tillsammans med --drop-slot\n" -#: pg_recvlogical.c:916 +#: pg_recvlogical.c:942 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "%s: kan inte använda --create-slot eller --drop-slot tillsammans med --startpos\n" -#: pg_recvlogical.c:925 +#: pg_recvlogical.c:951 #, c-format msgid "%s: --endpos may only be specified with --start\n" msgstr "%s: --endpos får bara anges tillsammans med --start\n" -#: pg_recvlogical.c:957 +#: pg_recvlogical.c:983 #, c-format msgid "%s: could not establish database-specific replication connection\n" msgstr "%s: kunde inte upprätta databasspecifik replikeringsanslutning\n" @@ -1115,134 +1105,134 @@ msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: kunde inte skapa arkivstatusfil \"%s\": %s\n" -#: receivelog.c:119 +#: receivelog.c:122 #, c-format msgid "%s: could not get size of write-ahead log file \"%s\": %s\n" msgstr "%s: kunde inte hämta storleken på write-ahead-logg-fil \"%s\": %s\n" -#: receivelog.c:130 +#: receivelog.c:134 #, c-format msgid "%s: could not open existing write-ahead log file \"%s\": %s\n" msgstr "%s: kunde inte öppna existerande write-ahead-logg-fil \"%s\": %s\n" -#: receivelog.c:139 +#: receivelog.c:144 #, c-format msgid "%s: could not fsync existing write-ahead log file \"%s\": %s\n" msgstr "%s: kunde inte fsync:a befintlig write-ahead-logg-fil \"%s\": %s\n" -#: receivelog.c:154 +#: receivelog.c:161 #, c-format msgid "%s: write-ahead log file \"%s\" has %d byte, should be 0 or %d\n" msgid_plural "%s: write-ahead log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr[0] "%s: write-ahead-logg-fil \"%s\" har %d byte, skall vara 0 eller %d\n" msgstr[1] "%s: write-ahead-logg-fil \"%s\" har %d byte, skall vara 0 eller %d\n" -#: receivelog.c:169 +#: receivelog.c:177 #, c-format msgid "%s: could not open write-ahead log file \"%s\": %s\n" msgstr "%s: kunde inte öppna write-ahead-logg-fil \"%s\": %s\n" -#: receivelog.c:196 +#: receivelog.c:206 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: kunde inte fastställa sökposition i fil \"%s\": %s\n" -#: receivelog.c:211 +#: receivelog.c:221 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "%s: byter inte namn på \"%s%s\", segmentet är inte komplett\n" -#: receivelog.c:280 +#: receivelog.c:290 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "%s: servern rapporterade oväntat historikfilnamn för tidslinje %u: %s\n" -#: receivelog.c:288 +#: receivelog.c:298 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: kunde inte skapa tidslinjehistorikfil \"%s\": %s\n" -#: receivelog.c:295 +#: receivelog.c:305 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: kunde inte skriva tidslinjehistorikfil \"%s\": %s\n" -#: receivelog.c:385 +#: receivelog.c:395 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions older than %s\n" msgstr "%s: inkompatibel serverversion %s; klienten stöder inte stömning från serverversioner äldre än %s\n" -#: receivelog.c:395 +#: receivelog.c:405 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions newer than %s\n" msgstr "%s: inkompatibel serverversion %s; klienten stöder inte stömning från serverversioner nyare än %s\n" -#: receivelog.c:500 streamutil.c:288 streamutil.c:327 +#: receivelog.c:510 streamutil.c:287 streamutil.c:326 #, c-format msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n" msgstr "%s: kunde inte identifiera systemet: fick %d rader och %d fält, förväntade %d rader och %d eller fler fält\n" -#: receivelog.c:508 +#: receivelog.c:518 #, c-format msgid "%s: system identifier does not match between base backup and streaming connection\n" msgstr "%s: systemidentifieraren matchar inte mellan basbackup och strömningsanslutning\n" -#: receivelog.c:516 +#: receivelog.c:526 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: starttidslinje %u finns inte tillgänglig i servern\n" -#: receivelog.c:535 +#: receivelog.c:545 #, c-format msgid "%s: could not create temporary replication slot \"%s\": %s" msgstr "%s: kunde inte skapa temporär replikeringsslot \"%s\": %s" -#: receivelog.c:576 +#: receivelog.c:586 #, c-format msgid "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: oväntat svar på TIMELINE_HISTORY-kommando: fick %d rader och %d fält, förväntade %d rader och %d fält\n" -#: receivelog.c:648 +#: receivelog.c:658 #, c-format msgid "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "%s: servern rapporterade oväntad nästa tidslinje %u, följer på tidslinje %u\n" -#: receivelog.c:655 +#: receivelog.c:665 #, c-format msgid "%s: server stopped streaming timeline %u at %X/%X, but reported next timeline %u to begin at %X/%X\n" msgstr "%s: servern stoppade strömning av tidslinje %u vid %X/%X men rapporterade nästa tidslinje %u skulle börja vid %X/%X\n" -#: receivelog.c:696 +#: receivelog.c:706 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: replikeringsström avslutades innan stoppunkt\n" -#: receivelog.c:745 +#: receivelog.c:755 #, c-format msgid "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: oväntad resultatmängd efter slut-på-tidslinje: fick %d rader och %d fält, förväntade %d rader och %d fält\n" -#: receivelog.c:755 +#: receivelog.c:765 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "%s: kunde inte parsa nästa tidslinjens startpunkt \"%s\"\n" -#: receivelog.c:1126 +#: receivelog.c:1136 #, c-format msgid "%s: received write-ahead log record for offset %u with no file open\n" msgstr "%s: tog emot write-ahead-logg-post för offset %u utan att ha någon öppen fil\n" -#: receivelog.c:1137 +#: receivelog.c:1147 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: fick WAL-data-offset %08x, förväntade %08x\n" -#: receivelog.c:1172 +#: receivelog.c:1182 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%s: kunde inte skriva %u byte till WAL-fil \"%s\": %s\n" -#: receivelog.c:1197 receivelog.c:1238 receivelog.c:1269 +#: receivelog.c:1207 receivelog.c:1248 receivelog.c:1279 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: kunde inte skicka \"copy-end\"-paket: %s" @@ -1258,62 +1248,62 @@ #: streamutil.c:193 #, c-format -msgid "%s: could not connect to server: %s" -msgstr "%s: kunde inte ansluta till server: %s" +msgid "%s: %s" +msgstr "%s: %s" -#: streamutil.c:222 +#: streamutil.c:221 #, c-format msgid "%s: could not clear search_path: %s" msgstr "%s: kunde inte nollställa search_path: %s" -#: streamutil.c:239 +#: streamutil.c:238 #, c-format msgid "%s: could not determine server setting for integer_datetimes\n" msgstr "%s: kunde inte lista ut serverns inställning för integer_datetimes\n" -#: streamutil.c:248 +#: streamutil.c:247 #, c-format msgid "%s: integer_datetimes compile flag does not match server\n" msgstr "%s: kompileringsflaggan integer_datetimes matchar inte servern\n" -#: streamutil.c:399 +#: streamutil.c:398 #, c-format msgid "%s: could not create replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: kunde inte skapa replikeringsslot \"%s\": fick %d rader och %d fält, förväntade %d rader och %d fält\n" -#: streamutil.c:444 +#: streamutil.c:443 #, c-format msgid "%s: could not drop replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: kunde inte slänga replikeringsslot \"%s\": fick %d rader och %d fält, förväntade %d rader och %d fält\n" -#: walmethods.c:435 walmethods.c:904 +#: walmethods.c:467 walmethods.c:974 msgid "could not compress data" msgstr "kunde inte komprimera data" -#: walmethods.c:459 +#: walmethods.c:499 msgid "could not reset compression stream" msgstr "kunde inte nollställa komprimeringsström" -#: walmethods.c:560 +#: walmethods.c:607 msgid "could not initialize compression library" msgstr "kunde inte initierar komprimeringsbibliotek" -#: walmethods.c:572 +#: walmethods.c:619 msgid "implementation error: tar files can't have more than one open file" msgstr "implementationsfel: tar-filer kan inte ha mer än en öppen fil" -#: walmethods.c:586 +#: walmethods.c:633 msgid "could not create tar header" msgstr "kunde inte skapa tar-header" -#: walmethods.c:600 walmethods.c:638 walmethods.c:827 walmethods.c:838 +#: walmethods.c:649 walmethods.c:689 walmethods.c:890 walmethods.c:901 msgid "could not change compression parameters" msgstr "kunde inte ändra komprimeringsparametrar" -#: walmethods.c:720 +#: walmethods.c:777 msgid "unlink not supported with compression" msgstr "unlink stöds inte med komprimering" -#: walmethods.c:920 +#: walmethods.c:999 msgid "could not close compression stream" msgstr "kunde inte stänga komprimeringsström" diff -Nru postgresql-10-10.17/src/bin/pg_basebackup/receivelog.c postgresql-10-10.19/src/bin/pg_basebackup/receivelog.c --- postgresql-10-10.17/src/bin/pg_basebackup/receivelog.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_basebackup/receivelog.c 2021-11-08 22:05:38.000000000 +0000 @@ -91,26 +91,29 @@ open_walfile(StreamCtl *stream, XLogRecPtr startpoint) { Walfile *f; - char fn[MAXPGPATH]; + char *fn; ssize_t size; XLogSegNo segno; XLByteToSeg(startpoint, segno); XLogFileName(current_walfile_name, stream->timeline, segno); - snprintf(fn, sizeof(fn), "%s%s", current_walfile_name, - stream->partial_suffix ? stream->partial_suffix : ""); + /* Note that this considers the compression used if necessary */ + fn = stream->walmethod->get_file_name(current_walfile_name, + stream->partial_suffix); /* * When streaming to files, if an existing file exists we verify that it's * either empty (just created), or a complete XLogSegSize segment (in * which case it has been created and padded). Anything else indicates a - * corrupt file. + * corrupt file. Compressed files have no need for padding, so just ignore + * this case. * * When streaming to tar, no file with this name will exist before, so we * never have to verify a size. */ - if (stream->walmethod->existsfile(fn)) + if (stream->walmethod->compression() == 0 && + stream->walmethod->existsfile(fn)) { size = stream->walmethod->get_file_size(fn); if (size < 0) @@ -118,6 +121,7 @@ fprintf(stderr, _("%s: could not get size of write-ahead log file \"%s\": %s\n"), progname, fn, stream->walmethod->getlasterror()); + pg_free(fn); return false; } if (size == XLogSegSize) @@ -129,6 +133,7 @@ fprintf(stderr, _("%s: could not open existing write-ahead log file \"%s\": %s\n"), progname, fn, stream->walmethod->getlasterror()); + pg_free(fn); return false; } @@ -138,11 +143,13 @@ fprintf(stderr, _("%s: could not fsync existing write-ahead log file \"%s\": %s\n"), progname, fn, stream->walmethod->getlasterror()); + pg_free(fn); stream->walmethod->close(f, CLOSE_UNLINK); return false; } walfile = f; + pg_free(fn); return true; } if (size != 0) @@ -155,6 +162,7 @@ "%s: write-ahead log file \"%s\" has %d bytes, should be 0 or %d\n", size), progname, fn, (int) size, XLogSegSize); + pg_free(fn); return false; } /* File existed and was empty, so fall through and open */ @@ -168,9 +176,11 @@ fprintf(stderr, _("%s: could not open write-ahead log file \"%s\": %s\n"), progname, fn, stream->walmethod->getlasterror()); + pg_free(fn); return false; } + pg_free(fn); walfile = f; return true; } diff -Nru postgresql-10-10.17/src/bin/pg_basebackup/walmethods.c postgresql-10-10.19/src/bin/pg_basebackup/walmethods.c --- postgresql-10-10.17/src/bin/pg_basebackup/walmethods.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_basebackup/walmethods.c 2021-11-08 22:05:38.000000000 +0000 @@ -68,20 +68,33 @@ return strerror(errno); } +static char * +dir_get_file_name(const char *pathname, const char *temp_suffix) +{ + char *filename = pg_malloc0(MAXPGPATH * sizeof(char)); + + snprintf(filename, MAXPGPATH, "%s%s%s", + pathname, dir_data->compression > 0 ? ".gz" : "", + temp_suffix ? temp_suffix : ""); + + return filename; +} + static Walfile dir_open_for_write(const char *pathname, const char *temp_suffix, size_t pad_to_size) { static char tmppath[MAXPGPATH]; + char *filename; int fd; DirectoryMethodFile *f; #ifdef HAVE_LIBZ gzFile gzfp = NULL; #endif - snprintf(tmppath, sizeof(tmppath), "%s/%s%s%s", - dir_data->basedir, pathname, - dir_data->compression > 0 ? ".gz" : "", - temp_suffix ? temp_suffix : ""); + filename = dir_get_file_name(pathname, temp_suffix); + snprintf(tmppath, sizeof(tmppath), "%s/%s", + dir_data->basedir, filename); + pg_free(filename); /* * Open a file for non-compressed as well as compressed files. Tracking @@ -232,26 +245,34 @@ /* Build path to the current version of the file */ if (method == CLOSE_NORMAL && df->temp_suffix) { + char *filename; + char *filename2; + /* * If we have a temp prefix, normal operation is to rename the * file. */ - snprintf(tmppath, sizeof(tmppath), "%s/%s%s%s", - dir_data->basedir, df->pathname, - dir_data->compression > 0 ? ".gz" : "", - df->temp_suffix); - snprintf(tmppath2, sizeof(tmppath2), "%s/%s%s", - dir_data->basedir, df->pathname, - dir_data->compression > 0 ? ".gz" : ""); + filename = dir_get_file_name(df->pathname, df->temp_suffix); + snprintf(tmppath, sizeof(tmppath), "%s/%s", + dir_data->basedir, filename); + pg_free(filename); + + /* permanent name, so no need for the prefix */ + filename2 = dir_get_file_name(df->pathname, NULL); + snprintf(tmppath2, sizeof(tmppath2), "%s/%s", + dir_data->basedir, filename2); + pg_free(filename2); r = durable_rename(tmppath, tmppath2, progname); } else if (method == CLOSE_UNLINK) { + char *filename; + /* Unlink the file once it's closed */ - snprintf(tmppath, sizeof(tmppath), "%s/%s%s%s", - dir_data->basedir, df->pathname, - dir_data->compression > 0 ? ".gz" : "", - df->temp_suffix ? df->temp_suffix : ""); + filename = dir_get_file_name(df->pathname, df->temp_suffix); + snprintf(tmppath, sizeof(tmppath), "%s/%s", + dir_data->basedir, filename); + pg_free(filename); r = unlink(tmppath); } else @@ -313,6 +334,12 @@ return statbuf.st_size; } +static int +dir_compression(void) +{ + return dir_data->compression; +} + static bool dir_existsfile(const char *pathname) { @@ -355,6 +382,8 @@ method->write = dir_write; method->get_current_pos = dir_get_current_pos; method->get_file_size = dir_get_file_size; + method->get_file_name = dir_get_file_name; + method->compression = dir_compression; method->close = dir_close; method->sync = dir_sync; method->existsfile = dir_existsfile; @@ -527,11 +556,22 @@ return true; } +static char * +tar_get_file_name(const char *pathname, const char *temp_suffix) +{ + char *filename = pg_malloc0(MAXPGPATH * sizeof(char)); + + snprintf(filename, MAXPGPATH, "%s%s", + pathname, temp_suffix ? temp_suffix : ""); + + return filename; +} + static Walfile tar_open_for_write(const char *pathname, const char *temp_suffix, size_t pad_to_size) { int save_errno; - static char tmppath[MAXPGPATH]; + char *tmppath; tar_clear_error(); @@ -582,18 +622,20 @@ tar_data->currentfile = pg_malloc0(sizeof(TarMethodFile)); - snprintf(tmppath, sizeof(tmppath), "%s%s", - pathname, temp_suffix ? temp_suffix : ""); + tmppath = tar_get_file_name(pathname, temp_suffix); /* Create a header with size set to 0 - we will fill out the size on close */ if (tarCreateHeader(tar_data->currentfile->header, tmppath, NULL, 0, S_IRUSR | S_IWUSR, 0, 0, time(NULL)) != TAR_OK) { pg_free(tar_data->currentfile); + pg_free(tmppath); tar_data->currentfile = NULL; tar_set_error("could not create tar header"); return NULL; } + pg_free(tmppath); + #ifdef HAVE_LIBZ if (tar_data->compression) { @@ -684,6 +726,12 @@ return -1; } +static int +tar_compression(void) +{ + return tar_data->compression; +} + static off_t tar_get_current_pos(Walfile f) { @@ -988,6 +1036,8 @@ method->write = tar_write; method->get_current_pos = tar_get_current_pos; method->get_file_size = tar_get_file_size; + method->get_file_name = tar_get_file_name; + method->compression = tar_compression; method->close = tar_close; method->sync = tar_sync; method->existsfile = tar_existsfile; diff -Nru postgresql-10-10.17/src/bin/pg_basebackup/walmethods.h postgresql-10-10.19/src/bin/pg_basebackup/walmethods.h --- postgresql-10-10.17/src/bin/pg_basebackup/walmethods.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_basebackup/walmethods.h 2021-11-08 22:05:38.000000000 +0000 @@ -53,6 +53,15 @@ ssize_t (*get_file_size) (const char *pathname); /* + * Return the name of the current file to work on in pg_malloc()'d string, + * without the base directory. This is useful for logging. + */ + char *(*get_file_name) (const char *pathname, const char *temp_suffix); + + /* Return the level of compression */ + int (*compression) (void); + + /* * Write count number of bytes to the file, and return the number of bytes * actually written or -1 for error. */ diff -Nru postgresql-10-10.17/src/bin/pgbench/t/022_cic.pl postgresql-10-10.19/src/bin/pgbench/t/022_cic.pl --- postgresql-10-10.17/src/bin/pgbench/t/022_cic.pl 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/src/bin/pgbench/t/022_cic.pl 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,93 @@ + +# Copyright (c) 2021, PostgreSQL Global Development Group + +# Test CREATE INDEX CONCURRENTLY with concurrent modifications +use strict; +use warnings; + +use Config; +use PostgresNode; +use TestLib; + +use Test::More tests => 4; + +my ($node, $result); + +# +# Test set-up +# +$node = get_new_node('CIC_test'); +$node->init; +$node->append_conf('postgresql.conf', 'lock_timeout = 180000'); +$node->start; +$node->safe_psql('postgres', q(CREATE TABLE tbl(i int))); +$node->safe_psql('postgres', q(CREATE INDEX idx ON tbl(i))); +$node->safe_psql( + 'postgres', q( + CREATE FUNCTION heapallindexed() RETURNS void AS $$ + DECLARE + count_seqscan int; + count_idxscan int; + BEGIN + count_seqscan := (SELECT count(*) FROM tbl); + SET enable_seqscan = off; + count_idxscan := (SELECT count(*) FROM tbl); + RESET enable_seqscan; + IF count_seqscan <> count_idxscan THEN + RAISE 'seqscan found % rows, but idxscan found % rows', + count_seqscan, count_idxscan; + END IF; + END + $$ LANGUAGE plpgsql; +)); + +# +# Stress CIC with pgbench +# + +# Run background pgbench with CIC. We cannot mix-in this script into single +# pgbench: CIC will deadlock with itself occasionally. +my $pgbench_out = ''; +my $pgbench_timer = IPC::Run::timeout(180); +my $pgbench_h = $node->background_pgbench( + '--no-vacuum --client=1 --transactions=200', + { + '002_pgbench_concurrent_cic' => q( + DROP INDEX CONCURRENTLY idx; + CREATE INDEX CONCURRENTLY idx ON tbl(i); + BEGIN ISOLATION LEVEL REPEATABLE READ; + SELECT heapallindexed(); + ROLLBACK; + ) + }, + \$pgbench_out, + $pgbench_timer); + +# Run pgbench. +$node->pgbench( + '--no-vacuum --client=5 --transactions=200', + 0, + [qr{actually processed}], + [qr{^$}], + 'concurrent INSERTs', + { + '002_pgbench_concurrent_transaction' => q( + BEGIN; + INSERT INTO tbl VALUES(0); + COMMIT; + ), + '002_pgbench_concurrent_transaction_savepoints' => q( + BEGIN; + SAVEPOINT s1; + INSERT INTO tbl VALUES(0); + COMMIT; + ) + }); + +$pgbench_h->pump_nb; +$pgbench_h->finish(); +unlike($pgbench_out, qr/aborted in command/, "pgbench with CIC works"); + +# done +$node->stop; +done_testing(); diff -Nru postgresql-10-10.17/src/bin/pgbench/t/023_cic_2pc.pl postgresql-10-10.19/src/bin/pgbench/t/023_cic_2pc.pl --- postgresql-10-10.17/src/bin/pgbench/t/023_cic_2pc.pl 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/src/bin/pgbench/t/023_cic_2pc.pl 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,205 @@ + +# Copyright (c) 2021, PostgreSQL Global Development Group + +# Test CREATE INDEX CONCURRENTLY with concurrent prepared-xact modifications +use strict; +use warnings; + +use Config; +use PostgresNode; +use TestLib; + +use Test::More tests => 6; + +my ($node, $result); + +# +# Test set-up +# +$node = get_new_node('CIC_2PC_test'); +$node->init; +$node->append_conf('postgresql.conf', 'max_prepared_transactions = 10'); +$node->append_conf('postgresql.conf', 'lock_timeout = 180000'); +$node->start; +$node->safe_psql('postgres', q(CREATE TABLE tbl(i int))); +$node->safe_psql( + 'postgres', q( + CREATE FUNCTION heapallindexed() RETURNS void AS $$ + DECLARE + count_seqscan int; + count_idxscan int; + BEGIN + count_seqscan := (SELECT count(*) FROM tbl); + SET enable_seqscan = off; + count_idxscan := (SELECT count(*) FROM tbl); + RESET enable_seqscan; + IF count_seqscan <> count_idxscan THEN + RAISE 'seqscan found % rows, but idxscan found % rows', + count_seqscan, count_idxscan; + END IF; + END + $$ LANGUAGE plpgsql; +)); + + +# +# Run 3 overlapping 2PC transactions with CIC +# +# We have two concurrent background psql processes: $main_h for INSERTs and +# $cic_h for CIC. Also, we use non-background psql for some COMMIT PREPARED +# statements. +# + +my $main_in = ''; +my $main_out = ''; +my $main_timer = IPC::Run::timeout(180); + +my $main_h = + $node->background_psql('postgres', \$main_in, \$main_out, + $main_timer, on_error_stop => 1); +$main_in .= q( +BEGIN; +INSERT INTO tbl VALUES(0); +\echo syncpoint1 +); +pump $main_h until $main_out =~ /syncpoint1/ || $main_timer->is_expired; + +my $cic_in = ''; +my $cic_out = ''; +my $cic_timer = IPC::Run::timeout(180); +my $cic_h = + $node->background_psql('postgres', \$cic_in, \$cic_out, + $cic_timer, on_error_stop => 1); +$cic_in .= q( +\echo start +CREATE INDEX CONCURRENTLY idx ON tbl(i); +); +pump $cic_h until $cic_out =~ /start/ || $cic_timer->is_expired; + +$main_in .= q( +PREPARE TRANSACTION 'a'; +); + +$main_in .= q( +BEGIN; +INSERT INTO tbl VALUES(0); +\echo syncpoint2 +); +pump $main_h until $main_out =~ /syncpoint2/ || $main_timer->is_expired; + +$node->safe_psql('postgres', q(COMMIT PREPARED 'a';)); + +$main_in .= q( +PREPARE TRANSACTION 'b'; +BEGIN; +INSERT INTO tbl VALUES(0); +\echo syncpoint3 +); +pump $main_h until $main_out =~ /syncpoint3/ || $main_timer->is_expired; + +$node->safe_psql('postgres', q(COMMIT PREPARED 'b';)); + +$main_in .= q( +PREPARE TRANSACTION 'c'; +COMMIT PREPARED 'c'; +); +$main_h->pump_nb; + +$main_h->finish; +$cic_h->finish; + +$result = $node->psql('postgres', + q(BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT heapallindexed())); +is($result, '0', 'all indexed after overlapping 2PC'); + + +# +# Server restart shall not change whether prepared xact blocks CIC +# + +$node->safe_psql( + 'postgres', q( +BEGIN; +INSERT INTO tbl VALUES(0); +PREPARE TRANSACTION 'spans_restart'; +BEGIN; +CREATE TABLE unused (); +PREPARE TRANSACTION 'persists_forever'; +)); +$node->restart; + +my $reindex_in = ''; +my $reindex_out = ''; +my $reindex_timer = IPC::Run::timeout(180); +my $reindex_h = + $node->background_psql('postgres', \$reindex_in, \$reindex_out, + $reindex_timer, on_error_stop => 1); +$reindex_in .= q( +\echo start +DROP INDEX CONCURRENTLY idx; +CREATE INDEX CONCURRENTLY idx ON tbl(i); +); +pump $reindex_h until $reindex_out =~ /start/ || $reindex_timer->is_expired; + +$node->safe_psql('postgres', "COMMIT PREPARED 'spans_restart'"); +$reindex_h->finish; +$result = $node->psql('postgres', + q(BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT heapallindexed())); +is($result, '0', 'all indexed after 2PC and restart'); + + +# +# Stress CIC+2PC with pgbench +# + +# Fix broken index first +$node->safe_psql('postgres', q(REINDEX TABLE tbl;)); + +# Run background pgbench with CIC. We cannot mix-in this script into single +# pgbench: CIC will deadlock with itself occasionally. +my $pgbench_out = ''; +my $pgbench_timer = IPC::Run::timeout(180); +my $pgbench_h = $node->background_pgbench( + '--no-vacuum --client=1 --transactions=100', + { + '002_pgbench_concurrent_cic' => q( + DROP INDEX CONCURRENTLY idx; + CREATE INDEX CONCURRENTLY idx ON tbl(i); + BEGIN ISOLATION LEVEL REPEATABLE READ; + SELECT heapallindexed(); + ROLLBACK; + ) + }, + \$pgbench_out, + $pgbench_timer); + +# Run pgbench. +$node->pgbench( + '--no-vacuum --client=5 --transactions=100', + 0, + [qr{actually processed}], + [qr{^$}], + 'concurrent INSERTs w/ 2PC', + { + '002_pgbench_concurrent_2pc' => q( + BEGIN; + INSERT INTO tbl VALUES(0); + PREPARE TRANSACTION 'c:client_id'; + COMMIT PREPARED 'c:client_id'; + ), + '002_pgbench_concurrent_2pc_savepoint' => q( + BEGIN; + SAVEPOINT s1; + INSERT INTO tbl VALUES(0); + PREPARE TRANSACTION 'c:client_id'; + COMMIT PREPARED 'c:client_id'; + ) + }); + +$pgbench_h->pump_nb; +$pgbench_h->finish(); +unlike($pgbench_out, qr/aborted in command/, "pgbench with CIC works"); + +# done +$node->stop; +done_testing(); diff -Nru postgresql-10-10.17/src/bin/pg_config/po/fr.po postgresql-10-10.19/src/bin/pg_config/po/fr.po --- postgresql-10-10.17/src/bin/pg_config/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_config/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -122,8 +122,7 @@ #, c-format msgid " --pkgincludedir show location of other C header files\n" msgstr "" -" --pkgincludedir affiche l'emplacement des autres fichiers d'en-tête\n" -" C\n" +" --pkgincludedir affiche l'emplacement des autres fichiers d'en-tête C\n" #: pg_config.c:84 #, c-format @@ -182,7 +181,7 @@ " PostgreSQL was built\n" msgstr "" " --configure affiche les options passées au script « configure »\n" -" à la construction de PostgreSQL\n" +" lors de la construction de PostgreSQL\n" #: pg_config.c:94 #, c-format @@ -274,7 +273,7 @@ #: pg_config.c:153 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s : n'a pas pu trouver son propre exécutable\n" +msgstr "%s : n'a pas pu trouver l'exécutable du programme\n" #: pg_config.c:180 #, c-format diff -Nru postgresql-10-10.17/src/bin/pg_config/po/ru.po postgresql-10-10.19/src/bin/pg_config/po/ru.po --- postgresql-10-10.17/src/bin/pg_config/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_config/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -5,7 +5,7 @@ # Serguei A. Mokhov , 2004-2005. # Sergey Burladyan , 2009, 2012. # Andrey Sudnik , 2010. -# Alexander Lakhin , 2012-2016, 2017, 2019, 2020. +# Alexander Lakhin , 2012-2016, 2017, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: pg_config (PostgreSQL current)\n" diff -Nru postgresql-10-10.17/src/bin/pg_config/po/sv.po postgresql-10-10.19/src/bin/pg_config/po/sv.po --- postgresql-10-10.17/src/bin/pg_config/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_config/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,19 +1,20 @@ # Swedish message translation file for pg_config. -# Dennis Björklund , 2004, 2005, 2006, 2017. +# Dennis Björklund , 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # Mats Erik Andersson , 2014. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-07-13 23:45+0000\n" -"PO-Revision-Date: 2017-07-20 21:37+0200\n" +"POT-Creation-Date: 2021-11-07 09:43+0000\n" +"PO-Revision-Date: 2021-11-07 06:44+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../../common/config_info.c:130 ../../common/config_info.c:138 #: ../../common/config_info.c:146 ../../common/config_info.c:154 diff -Nru postgresql-10-10.17/src/bin/pg_controldata/po/fr.po postgresql-10-10.19/src/bin/pg_controldata/po/fr.po --- postgresql-10-10.17/src/bin/pg_controldata/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_controldata/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -59,8 +59,7 @@ "%s displays control information of a PostgreSQL database cluster.\n" "\n" msgstr "" -"%s affiche les informations de contrôle du cluster de bases de données\n" -"PostgreSQL.\n" +"%s affiche les informations de contrôle de l'instance PostgreSQL.\n" "\n" #: pg_controldata.c:34 @@ -85,17 +84,17 @@ #: pg_controldata.c:37 #, c-format msgid " [-D] DATADIR data directory\n" -msgstr " [-D] RÉPDONNEES répertoire de la base de données\n" +msgstr " [-D] RÉP_DONNEES répertoire de la base de données\n" #: pg_controldata.c:38 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version et quitte\n" +msgstr " -V, --version affiche la version et quitte\n" #: pg_controldata.c:39 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide et quitte\n" +msgstr " -?, --help affiche cette aide et quitte\n" #: pg_controldata.c:40 #, c-format @@ -224,7 +223,7 @@ #: pg_controldata.c:220 #, c-format msgid "Latest checkpoint's REDO WAL file: %s\n" -msgstr "Dernier fichier WAL du rejeu du point de restauration : %s\n" +msgstr "Dernier fichier WAL du rejeu du point de contrrôle : %s\n" #: pg_controldata.c:222 #, c-format @@ -234,7 +233,7 @@ #: pg_controldata.c:224 #, c-format msgid "Latest checkpoint's PrevTimeLineID: %u\n" -msgstr "Dernier PrevTimeLineID du point de restauration : %u\n" +msgstr "Dernier PrevTimeLineID du point de contrôle : %u\n" #: pg_controldata.c:226 #, c-format diff -Nru postgresql-10-10.17/src/bin/pg_controldata/po/ru.po postgresql-10-10.19/src/bin/pg_controldata/po/ru.po --- postgresql-10-10.17/src/bin/pg_controldata/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_controldata/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -4,13 +4,13 @@ # Serguei A. Mokhov , 2002-2004. # Oleg Bartunov , 2004. # Andrey Sudnik , 2011. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: pg_controldata (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2018-10-01 13:03+0300\n" -"PO-Revision-Date: 2020-05-08 15:51+0300\n" +"PO-Revision-Date: 2021-08-14 07:04+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -106,8 +106,8 @@ "\n" msgstr "" "\n" -"Если каталог данных не задан, используется значение переменной окружения " -"PGDATA.\n" +"Если каталог данных (КАТ_ДАННЫХ) не задан, используется значение\n" +"переменной окружения PGDATA.\n" "\n" #: pg_controldata.c:42 diff -Nru postgresql-10-10.17/src/bin/pg_controldata/po/sv.po postgresql-10-10.19/src/bin/pg_controldata/po/sv.po --- postgresql-10-10.17/src/bin/pg_controldata/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_controldata/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,6 +1,6 @@ # Swedish message translation file for pg_controldata # This file is put in the public domain. -# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018. +# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # Mats Erik Andersson , 2014. # # Use these quotes: "%s" @@ -9,14 +9,15 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2018-08-25 19:15+0000\n" -"PO-Revision-Date: 2018-08-26 07:32+0200\n" +"POT-Creation-Date: 2021-11-07 09:45+0000\n" +"PO-Revision-Date: 2021-11-07 10:37+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../../common/controldata_utils.c:62 #, c-format @@ -463,9 +464,3 @@ #, c-format msgid "Mock authentication nonce: %s\n" msgstr "Fejkat authentiseringsvärde: %s\n" - -#~ msgid "floating-point numbers" -#~ msgstr "flyttal" - -#~ msgid "%s: could not read file \"%s\": read %d bytes, expected %d\n" -#~ msgstr "%s: kunde inte läsa fil \"%s\": läste %d byte, förväntade %d\n" diff -Nru postgresql-10-10.17/src/bin/pg_ctl/pg_ctl.c postgresql-10-10.19/src/bin/pg_ctl/pg_ctl.c --- postgresql-10-10.17/src/bin/pg_ctl/pg_ctl.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_ctl/pg_ctl.c 2021-11-08 22:05:38.000000000 +0000 @@ -449,7 +449,7 @@ static pgpid_t start_postmaster(void) { - char cmd[MAXPGPATH]; + char *cmd; #ifndef WIN32 pgpid_t pm_pid; @@ -480,12 +480,12 @@ * has the same PID as the current child process. */ if (log_file != NULL) - snprintf(cmd, MAXPGPATH, "exec \"%s\" %s%s < \"%s\" >> \"%s\" 2>&1", - exec_path, pgdata_opt, post_opts, - DEVNULL, log_file); + cmd = psprintf("exec \"%s\" %s%s < \"%s\" >> \"%s\" 2>&1", + exec_path, pgdata_opt, post_opts, + DEVNULL, log_file); else - snprintf(cmd, MAXPGPATH, "exec \"%s\" %s%s < \"%s\" 2>&1", - exec_path, pgdata_opt, post_opts, DEVNULL); + cmd = psprintf("exec \"%s\" %s%s < \"%s\" 2>&1", + exec_path, pgdata_opt, post_opts, DEVNULL); (void) execl("/bin/sh", "/bin/sh", "-c", cmd, (char *) NULL); @@ -506,11 +506,11 @@ PROCESS_INFORMATION pi; if (log_file != NULL) - snprintf(cmd, MAXPGPATH, "CMD /C \"\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1\"", - exec_path, pgdata_opt, post_opts, DEVNULL, log_file); + cmd = psprintf("CMD /C \"\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1\"", + exec_path, pgdata_opt, post_opts, DEVNULL, log_file); else - snprintf(cmd, MAXPGPATH, "CMD /C \"\"%s\" %s%s < \"%s\" 2>&1\"", - exec_path, pgdata_opt, post_opts, DEVNULL); + cmd = psprintf("CMD /C \"\"%s\" %s%s < \"%s\" 2>&1\"", + exec_path, pgdata_opt, post_opts, DEVNULL); if (!CreateRestrictedProcess(cmd, &pi, false)) { @@ -757,7 +757,7 @@ static void do_init(void) { - char cmd[MAXPGPATH]; + char *cmd; if (exec_path == NULL) exec_path = find_other_exec_or_die(argv0, "initdb", "initdb (PostgreSQL) " PG_VERSION "\n"); @@ -769,11 +769,11 @@ post_opts = ""; if (!silent_mode) - snprintf(cmd, MAXPGPATH, "\"%s\" %s%s", - exec_path, pgdata_opt, post_opts); + cmd = psprintf("\"%s\" %s%s", + exec_path, pgdata_opt, post_opts); else - snprintf(cmd, MAXPGPATH, "\"%s\" %s%s > \"%s\"", - exec_path, pgdata_opt, post_opts, DEVNULL); + cmd = psprintf("\"%s\" %s%s > \"%s\"", + exec_path, pgdata_opt, post_opts, DEVNULL); if (system(cmd) != 0) { @@ -2006,9 +2006,9 @@ static void adjust_data_dir(void) { - char cmd[MAXPGPATH], - filename[MAXPGPATH], - *my_exec_path; + char filename[MAXPGPATH]; + char *my_exec_path, + *cmd; FILE *fd; /* do nothing if we're working without knowledge of data dir */ @@ -2038,10 +2038,10 @@ my_exec_path = pg_strdup(exec_path); /* it's important for -C to be the first option, see main.c */ - snprintf(cmd, MAXPGPATH, "\"%s\" -C data_directory %s%s", - my_exec_path, - pgdata_opt ? pgdata_opt : "", - post_opts ? post_opts : ""); + cmd = psprintf("\"%s\" -C data_directory %s%s", + my_exec_path, + pgdata_opt ? pgdata_opt : "", + post_opts ? post_opts : ""); fd = popen(cmd, "r"); if (fd == NULL || fgets(filename, sizeof(filename), fd) == NULL) diff -Nru postgresql-10-10.17/src/bin/pg_ctl/po/fr.po postgresql-10-10.19/src/bin/pg_ctl/po/fr.po --- postgresql-10-10.17/src/bin/pg_ctl/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_ctl/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -176,8 +176,8 @@ "but was not the same version as %s.\n" "Check your installation.\n" msgstr "" -"Le programme « %s », trouvé par « %s », n'est pas de la même version\n" -"que %s.\n" +"Le programme « %s » a été trouvé par « %s »\n" +"mais n'est pas de la même version que %s.\n" "Vérifiez votre installation.\n" #: pg_ctl.c:780 @@ -496,7 +496,7 @@ #: pg_ctl.c:1858 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o OPTIONS]\n" -msgstr " %s init[db] [-D RÉP_DONNÉES] [-s] [-o OPTIONS]\n" +msgstr " %s init[db] [-D RÉP_DONNÉES] [-s] [-o OPTIONS]\n" #: pg_ctl.c:1859 #, c-format @@ -504,7 +504,7 @@ " %s start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]\n" " [-o OPTIONS] [-p PATH] [-c]\n" msgstr "" -" %s start [-D RÉP_DONNÉES] [-l NOM_FICHIER] [-W] [-t SECS] [-s]\n" +" %s start [-D RÉP_DONNÉES] [-l FICHIER] [-W] [-t SECS] [-s]\n" " [-o OPTIONS] [-p CHEMIN] [-c]\n" #: pg_ctl.c:1861 @@ -593,22 +593,22 @@ #: pg_ctl.c:1881 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" #: pg_ctl.c:1882 #, c-format msgid " -w, --wait wait until operation completes (default)\n" -msgstr " -w, --wait attend la fin de l'opération (par défaut)\n" +msgstr " -w, --wait attend la fin de l'opération (par défaut)\n" #: pg_ctl.c:1883 #, c-format msgid " -W, --no-wait do not wait until operation completes\n" -msgstr " -W, --no-wait n'attend pas la fin de l'opération\n" +msgstr " -W, --no-wait n'attend pas la fin de l'opération\n" #: pg_ctl.c:1884 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" #: pg_ctl.c:1885 #, c-format @@ -638,8 +638,7 @@ #, 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" +" -l, --log=FICHIER écrit (ou ajoute) le journal du serveur dans FICHIER\n" #: pg_ctl.c:1894 #, c-format @@ -647,7 +646,7 @@ " -o, --options=OPTIONS command line options to pass to postgres\n" " (PostgreSQL server executable) or initdb\n" msgstr "" -" -o, --options=OPTIONS options de la ligne de commande à passer à\n" +" -o, --options=OPTIONS options de la ligne de commande à passer à\n" " postgres (exécutable du serveur PostgreSQL)\n" " ou à initdb\n" @@ -689,7 +688,9 @@ #: pg_ctl.c:1902 #, c-format msgid " fast quit directly, with proper shutdown (default)\n" -msgstr " fast quitte directement, et arrête correctement (par défaut)\n" +msgstr "" +" fast quitte directement, et arrête correctement (par\n" +" défaut)\n" #: pg_ctl.c:1903 #, c-format @@ -897,7 +898,7 @@ #~ msgid " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" #~ msgstr "" -#~ " %s start [-w] [-t SECS] [-D RÉP_DONNÉES] [-s] [-l NOM_FICHIER]\n" +#~ " %s start [-w] [-t SECS] [-D RÉP_DONNÉES] [-s] [-l FICHIER]\n" #~ " [-o \"OPTIONS\"]\n" #~ msgid "%s: could not wait for server because of misconfiguration\n" diff -Nru postgresql-10-10.17/src/bin/pg_ctl/po/ru.po postgresql-10-10.19/src/bin/pg_ctl/po/ru.po --- postgresql-10-10.17/src/bin/pg_ctl/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_ctl/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -6,13 +6,13 @@ # Sergey Burladyan , 2009, 2012. # Andrey Sudnik , 2010. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: pg_ctl (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2020-08-10 10:42+0300\n" -"PO-Revision-Date: 2020-10-29 15:01+0300\n" +"PO-Revision-Date: 2021-08-14 07:35+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -112,7 +112,7 @@ #: pg_ctl.c:266 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s: нет доступа к каталогу \"%s\": %s\n" +msgstr "%s: ошибка доступа к каталогу \"%s\": %s\n" #: pg_ctl.c:279 #, c-format @@ -168,7 +168,7 @@ "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Программа \"%s\" необходима для %s, но не найдена\n" +"Программа \"%s\" нужна для %s, но она не найдена\n" "в каталоге \"%s\".\n" "Проверьте правильность установки СУБД.\n" diff -Nru postgresql-10-10.17/src/bin/pg_ctl/po/sv.po postgresql-10-10.19/src/bin/pg_ctl/po/sv.po --- postgresql-10-10.17/src/bin/pg_ctl/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_ctl/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,5 +1,5 @@ # Swedish message translation file for pg_ctl -# Dennis Björklund , 2004, 2005, 2006, 2017, 2018, 2019, 2020. +# Dennis Björklund , 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # Magnus Hagander , 2010. # Mats Erik Andersson , 2013, 2014. # @@ -9,14 +9,15 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-08-27 22:15+0000\n" -"PO-Revision-Date: 2020-08-30 11:22+0200\n" +"POT-Creation-Date: 2021-11-07 09:43+0000\n" +"PO-Revision-Date: 2021-11-07 06:46+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -309,7 +310,7 @@ #: pg_ctl.c:1077 msgid "server signaled\n" -msgstr "servern är singalerad\n" +msgstr "servern är signalerad\n" #: pg_ctl.c:1102 #, c-format diff -Nru postgresql-10-10.17/src/bin/pg_dump/pg_backup_archiver.c postgresql-10-10.19/src/bin/pg_dump/pg_backup_archiver.c --- postgresql-10-10.17/src/bin/pg_dump/pg_backup_archiver.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/pg_backup_archiver.c 2021-11-08 22:05:38.000000000 +0000 @@ -3675,7 +3675,6 @@ vmin, vrev; int fmt; - struct tm crtm; /* * If we haven't already read the header, do so. @@ -3743,6 +3742,8 @@ if (AH->version >= K_VERS_1_4) { + struct tm crtm; + crtm.tm_sec = ReadInt(AH); crtm.tm_min = ReadInt(AH); crtm.tm_hour = ReadInt(AH); @@ -3751,12 +3752,33 @@ crtm.tm_year = ReadInt(AH); crtm.tm_isdst = ReadInt(AH); - AH->archdbname = ReadStr(AH); - + /* + * Newer versions of glibc have mktime() report failure if tm_isdst is + * inconsistent with the prevailing timezone, e.g. tm_isdst = 1 when + * TZ=UTC. This is problematic when restoring an archive under a + * different timezone setting. If we get a failure, try again with + * tm_isdst set to -1 ("don't know"). + * + * XXX with or without this hack, we reconstruct createDate + * incorrectly when the prevailing timezone is different from + * pg_dump's. Next time we bump the archive version, we should flush + * this representation and store a plain seconds-since-the-Epoch + * timestamp instead. + */ AH->createDate = mktime(&crtm); - if (AH->createDate == (time_t) -1) - write_msg(modulename, "WARNING: invalid creation date in header\n"); + { + crtm.tm_isdst = -1; + AH->createDate = mktime(&crtm); + if (AH->createDate == (time_t) -1) + write_msg(modulename, + "WARNING: invalid creation date in header\n"); + } + } + + if (AH->version >= K_VERS_1_4) + { + AH->archdbname = ReadStr(AH); } if (AH->version >= K_VERS_1_10) diff -Nru postgresql-10-10.17/src/bin/pg_dump/pg_backup_directory.c postgresql-10-10.19/src/bin/pg_dump/pg_backup_directory.c --- postgresql-10-10.17/src/bin/pg_dump/pg_backup_directory.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/pg_backup_directory.c 2021-11-08 22:05:38.000000000 +0000 @@ -442,42 +442,42 @@ { Oid oid; lclContext *ctx = (lclContext *) AH->formatData; - char fname[MAXPGPATH]; + char tocfname[MAXPGPATH]; char line[MAXPGPATH]; StartRestoreBlobs(AH); - setFilePath(AH, fname, "blobs.toc"); + setFilePath(AH, tocfname, "blobs.toc"); - ctx->blobsTocFH = cfopen_read(fname, PG_BINARY_R); + ctx->blobsTocFH = cfopen_read(tocfname, PG_BINARY_R); if (ctx->blobsTocFH == NULL) exit_horribly(modulename, "could not open large object TOC file \"%s\" for input: %s\n", - fname, strerror(errno)); + tocfname, strerror(errno)); /* Read the blobs TOC file line-by-line, and process each blob */ while ((cfgets(ctx->blobsTocFH, line, MAXPGPATH)) != NULL) { - char fname[MAXPGPATH]; + char blobfname[MAXPGPATH + 1]; char path[MAXPGPATH]; - /* Can't overflow because line and fname are the same length. */ - if (sscanf(line, "%u %s\n", &oid, fname) != 2) + /* Can't overflow because line and blobfname are the same length. */ + if (sscanf(line, "%u %" CppAsString2(MAXPGPATH) "s\n", &oid, blobfname) != 2) exit_horribly(modulename, "invalid line in large object TOC file \"%s\": \"%s\"\n", - fname, line); + tocfname, line); StartRestoreBlob(AH, oid, AH->public.ropt->dropSchema); - snprintf(path, MAXPGPATH, "%s/%s", ctx->directory, fname); + snprintf(path, MAXPGPATH, "%s/%s", ctx->directory, blobfname); _PrintFileData(AH, path); EndRestoreBlob(AH, oid); } if (!cfeof(ctx->blobsTocFH)) exit_horribly(modulename, "error reading large object TOC file \"%s\"\n", - fname); + tocfname); if (cfclose(ctx->blobsTocFH) != 0) exit_horribly(modulename, "could not close large object TOC file \"%s\": %s\n", - fname, strerror(errno)); + tocfname, strerror(errno)); ctx->blobsTocFH = NULL; diff -Nru postgresql-10-10.17/src/bin/pg_dump/pg_dump.c postgresql-10-10.19/src/bin/pg_dump/pg_dump.c --- postgresql-10-10.17/src/bin/pg_dump/pg_dump.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/pg_dump.c 2021-11-08 22:05:38.000000000 +0000 @@ -250,7 +250,7 @@ static char *getFormattedOperatorName(Archive *fout, const char *oproid); static char *convertTSFunction(Archive *fout, Oid funcOid); static Oid findLastBuiltinOid_V71(Archive *fout, const char *); -static char *getFormattedTypeName(Archive *fout, Oid oid, OidOptions opts); +static const char *getFormattedTypeName(Archive *fout, Oid oid, OidOptions opts); static void getBlobs(Archive *fout); static void dumpBlob(Archive *fout, BlobInfo *binfo); static int dumpBlobs(Archive *fout, void *arg); @@ -3177,7 +3177,7 @@ /* * getPolicies - * get information about policies on a dumpable table. + * get information about all RLS policies on dumpable tables. */ void getPolicies(Archive *fout, TableInfo tblinfo[], int numTables) @@ -3187,6 +3187,7 @@ PolicyInfo *polinfo; int i_oid; int i_tableoid; + int i_polrelid; int i_polname; int i_polcmd; int i_polpermissive; @@ -3202,6 +3203,10 @@ query = createPQExpBuffer(); + /* + * First, check which tables have RLS enabled. We represent RLS being + * enabled on a table by creating a PolicyInfo object with null polname. + */ for (i = 0; i < numTables; i++) { TableInfo *tbinfo = &tblinfo[i]; @@ -3210,16 +3215,6 @@ if (!(tbinfo->dobj.dump & DUMP_COMPONENT_POLICY)) continue; - if (g_verbose) - write_msg(NULL, "reading row security enabled for table \"%s.%s\"\n", - tbinfo->dobj.namespace->dobj.name, - tbinfo->dobj.name); - - /* - * Get row security enabled information for the table. We represent - * RLS being enabled on a table by creating a PolicyInfo object with - * null polname. - */ if (tbinfo->rowsec) { /* @@ -3241,52 +3236,36 @@ polinfo->polqual = NULL; polinfo->polwithcheck = NULL; } + } - if (g_verbose) - write_msg(NULL, "reading policies for table \"%s.%s\"\n", - tbinfo->dobj.namespace->dobj.name, - tbinfo->dobj.name); - - resetPQExpBuffer(query); - - /* Get the policies for the table. */ - if (fout->remoteVersion >= 100000) - appendPQExpBuffer(query, - "SELECT oid, tableoid, pol.polname, pol.polcmd, pol.polpermissive, " - "CASE WHEN pol.polroles = '{0}' THEN NULL ELSE " - " pg_catalog.array_to_string(ARRAY(SELECT pg_catalog.quote_ident(rolname) from pg_catalog.pg_roles WHERE oid = ANY(pol.polroles)), ', ') END AS polroles, " - "pg_catalog.pg_get_expr(pol.polqual, pol.polrelid) AS polqual, " - "pg_catalog.pg_get_expr(pol.polwithcheck, pol.polrelid) AS polwithcheck " - "FROM pg_catalog.pg_policy pol " - "WHERE polrelid = '%u'", - tbinfo->dobj.catId.oid); - else - appendPQExpBuffer(query, - "SELECT oid, tableoid, pol.polname, pol.polcmd, 't' as polpermissive, " - "CASE WHEN pol.polroles = '{0}' THEN NULL ELSE " - " pg_catalog.array_to_string(ARRAY(SELECT pg_catalog.quote_ident(rolname) from pg_catalog.pg_roles WHERE oid = ANY(pol.polroles)), ', ') END AS polroles, " - "pg_catalog.pg_get_expr(pol.polqual, pol.polrelid) AS polqual, " - "pg_catalog.pg_get_expr(pol.polwithcheck, pol.polrelid) AS polwithcheck " - "FROM pg_catalog.pg_policy pol " - "WHERE polrelid = '%u'", - tbinfo->dobj.catId.oid); - res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); + /* + * Now, read all RLS policies, and create PolicyInfo objects for all those + * that are of interest. + */ + if (g_verbose) + write_msg(NULL, "reading row-level security policies\n"); - ntups = PQntuples(res); + printfPQExpBuffer(query, + "SELECT oid, tableoid, pol.polrelid, pol.polname, pol.polcmd, "); + if (fout->remoteVersion >= 100000) + appendPQExpBuffer(query, "pol.polpermissive, "); + else + appendPQExpBuffer(query, "'t' as polpermissive, "); + appendPQExpBuffer(query, + "CASE WHEN pol.polroles = '{0}' THEN NULL ELSE " + " pg_catalog.array_to_string(ARRAY(SELECT pg_catalog.quote_ident(rolname) from pg_catalog.pg_roles WHERE oid = ANY(pol.polroles)), ', ') END AS polroles, " + "pg_catalog.pg_get_expr(pol.polqual, pol.polrelid) AS polqual, " + "pg_catalog.pg_get_expr(pol.polwithcheck, pol.polrelid) AS polwithcheck " + "FROM pg_catalog.pg_policy pol"); - if (ntups == 0) - { - /* - * No explicit policies to handle (only the default-deny policy, - * which is handled as part of the table definition). Clean up - * and return. - */ - PQclear(res); - continue; - } + res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); + ntups = PQntuples(res); + if (ntups > 0) + { i_oid = PQfnumber(res, "oid"); i_tableoid = PQfnumber(res, "tableoid"); + i_polrelid = PQfnumber(res, "polrelid"); i_polname = PQfnumber(res, "polname"); i_polcmd = PQfnumber(res, "polcmd"); i_polpermissive = PQfnumber(res, "polpermissive"); @@ -3298,6 +3277,16 @@ for (j = 0; j < ntups; j++) { + Oid polrelid = atooid(PQgetvalue(res, j, i_polrelid)); + TableInfo *tbinfo = findTableByOid(polrelid); + + /* + * Ignore row security on tables not to be dumped. (This will + * result in some harmless wasted slots in polinfo[].) + */ + if (!(tbinfo->dobj.dump & DUMP_COMPONENT_POLICY)) + continue; + polinfo[j].dobj.objType = DO_POLICY; polinfo[j].dobj.catId.tableoid = atooid(PQgetvalue(res, j, i_tableoid)); @@ -3327,8 +3316,10 @@ polinfo[j].polwithcheck = pg_strdup(PQgetvalue(res, j, i_polwithcheck)); } - PQclear(res); } + + PQclear(res); + destroyPQExpBuffer(query); } @@ -4625,6 +4616,7 @@ tyinfo[i].dobj.namespace = findNamespace(fout, atooid(PQgetvalue(res, i, i_typnamespace))); + tyinfo[i].ftypname = NULL; /* may get filled later */ tyinfo[i].rolname = pg_strdup(PQgetvalue(res, i, i_rolname)); tyinfo[i].typacl = pg_strdup(PQgetvalue(res, i, i_typacl)); tyinfo[i].rtypacl = pg_strdup(PQgetvalue(res, i, i_rtypacl)); @@ -6353,7 +6345,7 @@ */ if (tblinfo[i].dobj.dump && (tblinfo[i].relkind == RELKIND_RELATION || - tblinfo->relkind == RELKIND_PARTITIONED_TABLE) && + tblinfo[i].relkind == RELKIND_PARTITIONED_TABLE) && (tblinfo[i].dobj.dump & DUMP_COMPONENTS_REQUIRING_LOCK)) { resetPQExpBuffer(query); @@ -8975,9 +8967,26 @@ PQExpBuffer initacl_subquery = createPQExpBuffer(); PQExpBuffer initracl_subquery = createPQExpBuffer(); + /* + * Global entries (with defaclnamespace=0) replace the hard-wired + * default ACL for their object type. We should dump them as deltas + * from the default ACL, since that will be used as a starting point + * for interpreting the ALTER DEFAULT PRIVILEGES commands. On the + * other hand, non-global entries can only add privileges not revoke + * them. We must dump those as-is (i.e., as deltas from an empty + * ACL). We implement that by passing NULL as the object type for + * acldefault(), which works because acldefault() is STRICT. + * + * We can use defaclobjtype as the object type for acldefault(), + * except for the case of 'S' (DEFACLOBJ_SEQUENCE) which must be + * converted to 's'. + */ buildACLQueries(acl_subquery, racl_subquery, initacl_subquery, initracl_subquery, "defaclacl", "defaclrole", - "CASE WHEN defaclobjtype = 'S' THEN 's' ELSE defaclobjtype END::\"char\"", + "CASE WHEN defaclnamespace = 0 THEN" + " CASE WHEN defaclobjtype = 'S' THEN 's'::\"char\"" + " ELSE defaclobjtype END " + "ELSE NULL END", dopt->binary_upgrade); appendPQExpBuffer(query, "SELECT d.oid, d.tableoid, " @@ -10269,13 +10278,9 @@ } if (OidIsValid(tyinfo->typelem)) - { - char *elemType; - - elemType = getFormattedTypeName(fout, tyinfo->typelem, zeroAsOpaque); - appendPQExpBuffer(q, ",\n ELEMENT = %s", elemType); - free(elemType); - } + appendPQExpBuffer(q, ",\n ELEMENT = %s", + getFormattedTypeName(fout, tyinfo->typelem, + zeroAsOpaque)); if (strcmp(typcategory, "U") != 0) { @@ -11074,7 +11079,7 @@ for (j = 0; j < nallargs; j++) { Oid typid; - char *typname; + const char *typname; const char *argmode; const char *argname; @@ -11113,7 +11118,6 @@ argname ? fmtId(argname) : "", argname ? " " : "", typname); - free(typname); } appendPQExpBufferChar(&fn, ')'); return fn.data; @@ -11142,15 +11146,12 @@ appendPQExpBuffer(&fn, "%s(", finfo->dobj.name); for (j = 0; j < finfo->nargs; j++) { - char *typname; - if (j > 0) appendPQExpBufferStr(&fn, ", "); - typname = getFormattedTypeName(fout, finfo->argtypes[j], - zeroAsOpaque); - appendPQExpBufferStr(&fn, typname); - free(typname); + appendPQExpBufferStr(&fn, + getFormattedTypeName(fout, finfo->argtypes[j], + zeroAsOpaque)); } appendPQExpBufferChar(&fn, ')'); return fn.data; @@ -11193,7 +11194,6 @@ char *prorows; char *proparallel; char *lanname; - char *rettypename; int nallargs; char **allargtypes = NULL; char **argmodes = NULL; @@ -11491,14 +11491,10 @@ if (funcresult) appendPQExpBuffer(q, "RETURNS %s", funcresult); else - { - rettypename = getFormattedTypeName(fout, finfo->prorettype, - zeroAsOpaque); appendPQExpBuffer(q, "RETURNS %s%s", (proretset[0] == 't') ? "SETOF " : "", - rettypename); - free(rettypename); - } + getFormattedTypeName(fout, finfo->prorettype, + zeroAsOpaque)); appendPQExpBuffer(q, "\n LANGUAGE %s", fmtId(lanname)); @@ -11700,8 +11696,8 @@ PQExpBuffer labelq; PQExpBuffer castargs; FuncInfo *funcInfo = NULL; - char *sourceType; - char *targetType; + const char *sourceType; + const char *targetType; /* Skip if not to be dumped */ if (!cast->dobj.dump || dopt->dataOnly) @@ -11788,9 +11784,6 @@ NULL, "", cast->dobj.catId, 0, cast->dobj.dumpId); - free(sourceType); - free(targetType); - destroyPQExpBuffer(defqry); destroyPQExpBuffer(delqry); destroyPQExpBuffer(labelq); @@ -11811,7 +11804,7 @@ FuncInfo *fromsqlFuncInfo = NULL; FuncInfo *tosqlFuncInfo = NULL; char *lanname; - char *transformType; + const char *transformType; /* Skip if not to be dumped */ if (!transform->dobj.dump || dopt->dataOnly) @@ -11917,7 +11910,6 @@ transform->dobj.catId, 0, transform->dobj.dumpId); free(lanname); - free(transformType); destroyPQExpBuffer(defqry); destroyPQExpBuffer(delqry); destroyPQExpBuffer(labelq); @@ -13204,17 +13196,11 @@ { appendPQExpBufferChar(&buf, '('); for (j = 0; j < agginfo->aggfn.nargs; j++) - { - char *typname; - - typname = getFormattedTypeName(fout, agginfo->aggfn.argtypes[j], - zeroAsOpaque); - appendPQExpBuffer(&buf, "%s%s", (j > 0) ? ", " : "", - typname); - free(typname); - } + getFormattedTypeName(fout, + agginfo->aggfn.argtypes[j], + zeroAsOpaque)); appendPQExpBufferChar(&buf, ')'); } return buf.data; @@ -17686,11 +17672,12 @@ * This does not guarantee to schema-qualify the output, so it should not * be used to create the target object name for CREATE or ALTER commands. * - * TODO: there might be some value in caching the results. + * Note that the result is cached and must not be freed by the caller. */ -static char * +static const char * getFormattedTypeName(Archive *fout, Oid oid, OidOptions opts) { + TypeInfo *typeInfo; char *result; PQExpBuffer query; PGresult *res; @@ -17698,15 +17685,20 @@ if (oid == 0) { if ((opts & zeroAsOpaque) != 0) - return pg_strdup(g_opaque_type); + return g_opaque_type; else if ((opts & zeroAsAny) != 0) - return pg_strdup("'any'"); + return "'any'"; else if ((opts & zeroAsStar) != 0) - return pg_strdup("*"); + return "*"; else if ((opts & zeroAsNone) != 0) - return pg_strdup("NONE"); + return "NONE"; } + /* see if we have the result cached in the type's TypeInfo record */ + typeInfo = findTypeByOid(oid); + if (typeInfo && typeInfo->ftypname) + return typeInfo->ftypname; + query = createPQExpBuffer(); appendPQExpBuffer(query, "SELECT pg_catalog.format_type('%u'::pg_catalog.oid, NULL)", oid); @@ -17719,6 +17711,15 @@ PQclear(res); destroyPQExpBuffer(query); + /* + * Cache the result for re-use in later requests, if possible. If we + * don't have a TypeInfo for the type, the string will be leaked once the + * caller is done with it ... but that case really should not happen, so + * leaking if it does seems acceptable. + */ + if (typeInfo) + typeInfo->ftypname = result; + return result; } diff -Nru postgresql-10-10.17/src/bin/pg_dump/pg_dump.h postgresql-10-10.19/src/bin/pg_dump/pg_dump.h --- postgresql-10-10.17/src/bin/pg_dump/pg_dump.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/pg_dump.h 2021-11-08 22:05:38.000000000 +0000 @@ -166,9 +166,11 @@ DumpableObject dobj; /* - * Note: dobj.name is the pg_type.typname entry. format_type() might - * produce something different than typname + * Note: dobj.name is the raw pg_type.typname entry. ftypname is the + * result of format_type(), which will be quoted if needed, and might be + * schema-qualified too. */ + char *ftypname; char *rolname; /* name of owner, or empty string */ char *typacl; char *rtypacl; diff -Nru postgresql-10-10.17/src/bin/pg_dump/po/de.po postgresql-10-10.19/src/bin/pg_dump/po/de.po --- postgresql-10-10.17/src/bin/pg_dump/po/de.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/po/de.po 2021-11-08 22:05:38.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-11-08 11:44+0000\n" +"POT-Creation-Date: 2021-11-06 16:58+0000\n" "PO-Revision-Date: 2020-05-11 09:07+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" @@ -93,207 +93,207 @@ msgid "child process exited with unrecognized status %d" msgstr "Kindprozess hat mit unbekanntem Status %d beendet" -#: common.c:121 +#: common.c:124 #, c-format msgid "reading extensions\n" msgstr "lese Erweiterungen\n" -#: common.c:126 +#: common.c:129 #, c-format msgid "identifying extension members\n" msgstr "identifiziere Erweiterungselemente\n" -#: common.c:130 +#: common.c:133 #, c-format msgid "reading schemas\n" msgstr "lese Schemas\n" -#: common.c:141 +#: common.c:144 #, c-format msgid "reading user-defined tables\n" msgstr "lese benutzerdefinierte Tabellen\n" -#: common.c:149 +#: common.c:152 #, c-format msgid "reading user-defined functions\n" msgstr "lese benutzerdefinierte Funktionen\n" -#: common.c:155 +#: common.c:158 #, c-format msgid "reading user-defined types\n" msgstr "lese benutzerdefinierte Typen\n" -#: common.c:161 +#: common.c:164 #, c-format msgid "reading procedural languages\n" msgstr "lese prozedurale Sprachen\n" -#: common.c:165 +#: common.c:168 #, c-format msgid "reading user-defined aggregate functions\n" msgstr "lese benutzerdefinierte Aggregatfunktionen\n" -#: common.c:169 +#: common.c:172 #, c-format msgid "reading user-defined operators\n" msgstr "lese benutzerdefinierte Operatoren\n" -#: common.c:174 +#: common.c:177 #, c-format msgid "reading user-defined access methods\n" msgstr "lese benutzerdefinierte Zugriffsmethoden\n" -#: common.c:178 +#: common.c:181 #, c-format msgid "reading user-defined operator classes\n" msgstr "lese benutzerdefinierte Operatorklassen\n" -#: common.c:182 +#: common.c:185 #, c-format msgid "reading user-defined operator families\n" msgstr "lese benutzerdefinierte Operatorfamilien\n" -#: common.c:186 +#: common.c:189 #, c-format msgid "reading user-defined text search parsers\n" msgstr "lese benutzerdefinierte Textsuche-Parser\n" -#: common.c:190 +#: common.c:193 #, c-format msgid "reading user-defined text search templates\n" msgstr "lese benutzerdefinierte Textsuche-Templates\n" -#: common.c:194 +#: common.c:197 #, c-format msgid "reading user-defined text search dictionaries\n" msgstr "lese benutzerdefinierte Textsuchewörterbücher\n" -#: common.c:198 +#: common.c:201 #, c-format msgid "reading user-defined text search configurations\n" msgstr "lese benutzerdefinierte Textsuchekonfigurationen\n" -#: common.c:202 +#: common.c:205 #, c-format msgid "reading user-defined foreign-data wrappers\n" msgstr "lese benutzerdefinierte Fremddaten-Wrapper\n" -#: common.c:206 +#: common.c:209 #, c-format msgid "reading user-defined foreign servers\n" msgstr "lese benutzerdefinierte Fremdserver\n" -#: common.c:210 +#: common.c:213 #, c-format msgid "reading default privileges\n" msgstr "lese Vorgabeprivilegien\n" -#: common.c:214 +#: common.c:217 #, c-format msgid "reading user-defined collations\n" msgstr "lese benutzerdefinierte Sortierfolgen\n" -#: common.c:219 +#: common.c:222 #, c-format msgid "reading user-defined conversions\n" msgstr "lese benutzerdefinierte Konversionen\n" -#: common.c:223 +#: common.c:226 #, c-format msgid "reading type casts\n" msgstr "lese Typumwandlungen\n" -#: common.c:227 +#: common.c:230 #, c-format msgid "reading transforms\n" msgstr "lese Transformationen\n" -#: common.c:231 +#: common.c:234 #, c-format msgid "reading table inheritance information\n" msgstr "lese Tabellenvererbungsinformationen\n" -#: common.c:235 +#: common.c:238 #, c-format msgid "reading event triggers\n" msgstr "lese Ereignistrigger\n" -#: common.c:240 +#: common.c:243 #, c-format msgid "finding extension tables\n" msgstr "finde Erweiterungstabellen\n" -#: common.c:245 +#: common.c:248 #, c-format msgid "finding inheritance relationships\n" msgstr "lese Vererbungsbeziehungen\n" -#: common.c:249 +#: common.c:252 #, c-format msgid "reading column info for interesting tables\n" msgstr "lese Spalteninfo für interessante Tabellen\n" -#: common.c:253 +#: common.c:256 #, c-format msgid "flagging inherited columns in subtables\n" msgstr "markiere vererbte Spalten in abgeleiteten Tabellen\n" -#: common.c:257 +#: common.c:260 #, c-format msgid "reading indexes\n" msgstr "lese Indexe\n" -#: common.c:261 +#: common.c:264 #, c-format msgid "reading extended statistics\n" msgstr "lese erweiterte Statistiken\n" -#: common.c:265 +#: common.c:268 #, c-format msgid "reading constraints\n" msgstr "lese Constraints\n" -#: common.c:269 +#: common.c:272 #, c-format msgid "reading triggers\n" msgstr "lese Trigger\n" -#: common.c:273 +#: common.c:276 #, c-format msgid "reading rewrite rules\n" msgstr "lese Umschreiberegeln\n" -#: common.c:277 +#: common.c:280 #, c-format msgid "reading policies\n" msgstr "lese Policies\n" -#: common.c:281 +#: common.c:284 #, c-format msgid "reading publications\n" msgstr "lese Publikationen\n" -#: common.c:285 +#: common.c:290 #, c-format msgid "reading publication membership\n" msgstr "lese Publikationsmitgliedschaft\n" -#: common.c:289 +#: common.c:294 #, c-format msgid "reading subscriptions\n" msgstr "lese Subskriptionen\n" -#: common.c:925 +#: common.c:941 #, 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:967 +#: common.c:983 #, 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:982 +#: common.c:998 #, 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" @@ -340,13 +340,13 @@ msgstr "konnte Komprimierungsbibliothek nicht schließen: %s\n" #: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:587 -#: pg_backup_tar.c:564 pg_backup_tar.c:568 +#: pg_backup_tar.c:558 pg_backup_tar.c:562 #, c-format msgid "could not read from input file: %s\n" msgstr "konnte nicht aus Eingabedatei lesen: %s\n" #: compress_io.c:641 pg_backup_custom.c:584 pg_backup_directory.c:564 -#: pg_backup_tar.c:807 pg_backup_tar.c:831 +#: pg_backup_tar.c:801 pg_backup_tar.c:825 #, c-format msgid "could not read from input file: end of file\n" msgstr "konnte nicht aus Eingabedatei lesen: Dateiende\n" @@ -566,7 +566,7 @@ msgstr[0] "%d Large Object wiederhergestellt\n" msgstr[1] "%d Large Objects wiederhergestellt\n" -#: pg_backup_archiver.c:1317 pg_backup_tar.c:749 +#: pg_backup_archiver.c:1317 pg_backup_tar.c:743 #, c-format msgid "restoring large object with OID %u\n" msgstr "Wiederherstellung von Large Object mit OID %u\n" @@ -671,248 +671,248 @@ msgid "attempting to ascertain archive format\n" msgstr "versuche Archivformat zu ermitteln\n" -#: pg_backup_archiver.c:2139 pg_backup_archiver.c:2149 +#: pg_backup_archiver.c:2140 pg_backup_archiver.c:2150 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "Verzeichnisname zu lang: »%s«\n" -#: pg_backup_archiver.c:2157 +#: pg_backup_archiver.c:2158 #, c-format msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" msgstr "Verzeichnis »%s« scheint kein gültiges Archiv zu sein (»toc.dat« existiert nicht)\n" -#: pg_backup_archiver.c:2165 pg_backup_custom.c:177 pg_backup_custom.c:770 +#: pg_backup_archiver.c:2166 pg_backup_custom.c:177 pg_backup_custom.c:770 #: pg_backup_directory.c:209 pg_backup_directory.c:401 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "konnte Eingabedatei »%s« nicht öffnen: %s\n" -#: pg_backup_archiver.c:2173 pg_backup_custom.c:184 +#: pg_backup_archiver.c:2174 pg_backup_custom.c:184 #, c-format msgid "could not open input file: %s\n" msgstr "konnte Eingabedatei nicht öffnen: %s\n" -#: pg_backup_archiver.c:2180 +#: pg_backup_archiver.c:2181 #, c-format msgid "could not read input file: %s\n" msgstr "konnte Eingabedatei nicht lesen: %s\n" -#: pg_backup_archiver.c:2182 +#: pg_backup_archiver.c:2183 #, 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:2267 +#: pg_backup_archiver.c:2215 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "Eingabedatei ist anscheinend ein Dump im Textformat. Bitte verwenden Sie psql.\n" -#: pg_backup_archiver.c:2273 +#: pg_backup_archiver.c:2221 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "Eingabedatei scheint kein gültiges Archiv zu sein (zu kurz?)\n" -#: pg_backup_archiver.c:2279 +#: pg_backup_archiver.c:2227 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "Eingabedatei scheint kein gültiges Archiv zu sein\n" -#: pg_backup_archiver.c:2299 +#: pg_backup_archiver.c:2236 #, c-format msgid "could not close input file: %s\n" msgstr "konnte Eingabedatei nicht schließen: %s\n" -#: pg_backup_archiver.c:2317 +#: pg_backup_archiver.c:2258 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "erstelle AH für %s, Format %d\n" -#: pg_backup_archiver.c:2416 +#: pg_backup_archiver.c:2357 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "nicht erkanntes Dateiformat »%d«\n" -#: pg_backup_archiver.c:2471 pg_backup_archiver.c:4364 +#: pg_backup_archiver.c:2412 pg_backup_archiver.c:4327 #, c-format msgid "finished item %d %s %s\n" msgstr "Element %d %s %s abgeschlossen\n" -#: pg_backup_archiver.c:2475 pg_backup_archiver.c:4377 +#: pg_backup_archiver.c:2416 pg_backup_archiver.c:4340 #, c-format msgid "worker process failed: exit code %d\n" msgstr "Arbeitsprozess fehlgeschlagen: Code %d\n" -#: pg_backup_archiver.c:2595 +#: pg_backup_archiver.c:2536 #, 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:2711 +#: pg_backup_archiver.c:2652 #, 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:2747 +#: pg_backup_archiver.c:2688 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "nicht erkannte Kodierung »%s«\n" -#: pg_backup_archiver.c:2752 +#: pg_backup_archiver.c:2693 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "ungültiger ENCODING-Eintrag: %s\n" -#: pg_backup_archiver.c:2770 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "ungültiger STDSTRINGS-Eintrag: %s\n" -#: pg_backup_archiver.c:2795 +#: pg_backup_archiver.c:2736 #, c-format msgid "schema \"%s\" not found\n" msgstr "Schema »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2802 +#: pg_backup_archiver.c:2743 #, c-format msgid "table \"%s\" not found\n" msgstr "Tabelle »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2809 +#: pg_backup_archiver.c:2750 #, c-format msgid "index \"%s\" not found\n" msgstr "Index »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2816 +#: pg_backup_archiver.c:2757 #, c-format msgid "function \"%s\" not found\n" msgstr "Funktion »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2823 +#: pg_backup_archiver.c:2764 #, c-format msgid "trigger \"%s\" not found\n" msgstr "Trigger »%s« nicht gefunden\n" -#: pg_backup_archiver.c:3135 +#: pg_backup_archiver.c:3076 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "konnte Sitzungsbenutzer nicht auf »%s« setzen: %s" -#: pg_backup_archiver.c:3167 +#: pg_backup_archiver.c:3108 #, c-format msgid "could not set default_with_oids: %s" msgstr "konnte default_with_oids nicht setzen: %s" -#: pg_backup_archiver.c:3314 +#: pg_backup_archiver.c:3255 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "konnte search_path nicht auf »%s« setzen: %s" -#: pg_backup_archiver.c:3376 +#: pg_backup_archiver.c:3317 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "konnte default_tablespace nicht auf »%s« setzen: %s" -#: pg_backup_archiver.c:3469 pg_backup_archiver.c:3662 +#: pg_backup_archiver.c:3410 pg_backup_archiver.c:3603 #, 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:3752 +#: pg_backup_archiver.c:3692 #, c-format msgid "did not find magic string in file header\n" msgstr "magische Zeichenkette im Dateikopf nicht gefunden\n" -#: pg_backup_archiver.c:3765 +#: pg_backup_archiver.c:3706 #, 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:3770 +#: pg_backup_archiver.c:3711 #, 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:3774 +#: pg_backup_archiver.c:3715 #, c-format msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "WARNUNG: Archiv wurde auf einer Maschine mit größeren Integers erstellt; einige Operationen könnten fehlschlagen\n" -#: pg_backup_archiver.c:3784 +#: pg_backup_archiver.c:3725 #, 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:3800 +#: pg_backup_archiver.c:3740 #, c-format msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "WARNUNG: Archiv ist komprimiert, aber diese Installation unterstützt keine Komprimierung -- keine Daten verfügbar\n" -#: pg_backup_archiver.c:3818 +#: pg_backup_archiver.c:3775 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "WARNUNG: ungültiges Erstellungsdatum im Kopf\n" -#: pg_backup_archiver.c:3891 +#: pg_backup_archiver.c:3854 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "Eintritt in restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3955 +#: pg_backup_archiver.c:3918 #, c-format msgid "processing item %d %s %s\n" msgstr "verarbeite Element %d %s %s\n" -#: pg_backup_archiver.c:4009 +#: pg_backup_archiver.c:3972 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "Eintritt in restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:4030 +#: pg_backup_archiver.c:3993 #, c-format msgid "entering main parallel loop\n" msgstr "Eintritt in Hauptparallelschleife\n" -#: pg_backup_archiver.c:4041 +#: pg_backup_archiver.c:4004 #, c-format msgid "skipping item %d %s %s\n" msgstr "Element %d %s %s wird übersprungen\n" -#: pg_backup_archiver.c:4051 +#: pg_backup_archiver.c:4014 #, c-format msgid "launching item %d %s %s\n" msgstr "starte Element %d %s %s\n" -#: pg_backup_archiver.c:4105 +#: pg_backup_archiver.c:4068 #, c-format msgid "finished main parallel loop\n" msgstr "Hauptparallelschleife beendet\n" -#: pg_backup_archiver.c:4123 +#: pg_backup_archiver.c:4086 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "Eintritt in restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:4141 +#: pg_backup_archiver.c:4104 #, c-format msgid "processing missed item %d %s %s\n" msgstr "verarbeite verpasstes Element %d %s %s\n" -#: pg_backup_archiver.c:4320 +#: pg_backup_archiver.c:4283 #, c-format msgid "no item ready\n" msgstr "kein Element bereit\n" -#: pg_backup_archiver.c:4539 +#: pg_backup_archiver.c:4502 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "übertrage Abhängigkeit %d -> %d an %d\n" -#: pg_backup_archiver.c:4620 +#: pg_backup_archiver.c:4583 #, c-format msgid "reducing dependencies for %d\n" msgstr "reduziere Abhängigkeiten für %d\n" -#: pg_backup_archiver.c:4672 +#: pg_backup_archiver.c:4635 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "Tabelle »%s« konnte nicht erzeugt werden, ihre Daten werden nicht wiederhergestellt werden\n" @@ -932,7 +932,7 @@ msgid "unrecognized data block type (%d) while searching archive\n" msgstr "unerkannter Datenblocktyp (%d) beim Suchen im Archiv gefunden\n" -#: pg_backup_custom.c:462 pg_backup_tar.c:1100 pg_backup_tar.c:1107 +#: pg_backup_custom.c:462 pg_backup_tar.c:1094 pg_backup_tar.c:1101 #, c-format msgid "error during file seek: %s\n" msgstr "Fehler beim Suchen in Datei: %s\n" @@ -963,7 +963,7 @@ msgstr "unerkannter Datenblocktyp %d beim Wiederherstellen des Archivs gefunden\n" #: pg_backup_custom.c:705 pg_backup_custom.c:759 pg_backup_custom.c:844 -#: pg_backup_tar.c:1104 +#: pg_backup_tar.c:1098 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "konnte Positionszeiger in Archivdatei nicht ermitteln: %s\n" @@ -1192,7 +1192,7 @@ msgid "could not open TOC file for output: %s\n" msgstr "konnte Inhaltsverzeichnisdatei nicht zur Ausgabe öffnen: %s\n" -#: pg_backup_tar.c:210 pg_backup_tar.c:366 +#: pg_backup_tar.c:210 pg_backup_tar.c:360 #, c-format msgid "compression is not supported by tar archive format\n" msgstr "Komprimierung ist im Tar-Format nicht unterstützt\n" @@ -1207,89 +1207,89 @@ msgid "could not open TOC file for input: %s\n" msgstr "konnte Inhaltsverzeichnisdatei nicht zur Eingabe öffnen: %s\n" -#: pg_backup_tar.c:352 +#: pg_backup_tar.c:346 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "konnte Datei »%s« nicht im Archiv finden\n" -#: pg_backup_tar.c:418 +#: pg_backup_tar.c:412 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "konnte keine temporären Dateinamen erzeugen: %s\n" -#: pg_backup_tar.c:429 +#: pg_backup_tar.c:423 #, c-format msgid "could not open temporary file\n" msgstr "konnte temporäre Datei nicht öffnen\n" -#: pg_backup_tar.c:456 +#: pg_backup_tar.c:450 #, c-format msgid "could not close tar member\n" msgstr "konnte Tar-Mitglied nicht schließen\n" -#: pg_backup_tar.c:581 +#: pg_backup_tar.c:575 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "interner Fehler -- weder th noch fh in tarReadRaw() angegeben\n" -#: pg_backup_tar.c:704 +#: pg_backup_tar.c:698 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "unerwartete Syntax der COPY-Anweisung: »%s«\n" -#: pg_backup_tar.c:974 +#: pg_backup_tar.c:968 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "Large Object hat ungültige Oid (%u)\n" -#: pg_backup_tar.c:1122 +#: pg_backup_tar.c:1116 #, c-format msgid "could not close temporary file: %s\n" msgstr "konnte temporäre Datei nicht schließen: %s\n" -#: pg_backup_tar.c:1132 +#: pg_backup_tar.c:1126 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "tatsächliche Dateilänge (%s) stimmt nicht mit erwarteter Länge (%s) überein\n" -#: pg_backup_tar.c:1169 +#: pg_backup_tar.c:1163 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "bewege Position von %s auf nächstes Mitglied bei Position %s\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1174 #, c-format msgid "now at file position %s\n" msgstr "jetzt bei Dateiposition %s\n" -#: pg_backup_tar.c:1189 pg_backup_tar.c:1219 +#: pg_backup_tar.c:1183 pg_backup_tar.c:1213 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "konnte Kopf für Datei »%s« im Tar-Archiv nicht finden\n" -#: pg_backup_tar.c:1203 +#: pg_backup_tar.c:1197 #, c-format msgid "skipping tar member %s\n" msgstr "Tar-Mitglied %s übersprungen\n" -#: pg_backup_tar.c:1207 +#: pg_backup_tar.c:1201 #, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" msgstr "Ausgabe der Daten in anderer Reihenfolge wird in diesem Archivformat nicht unterstützt: »%s« wird benötigt, aber es kommt vor »%s« in der Archivdatei.\n" -#: pg_backup_tar.c:1253 +#: pg_backup_tar.c:1247 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "unvollständiger Tar-Dateikopf gefunden (%lu Byte)\n" msgstr[1] "unvollständiger Tar-Dateikopf gefunden (%lu Bytes)\n" -#: pg_backup_tar.c:1294 +#: pg_backup_tar.c:1288 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "Inhaltsverzeichniseintrag %s bei %s (Länge %s, Prüfsumme %d)\n" -#: pg_backup_tar.c:1305 +#: pg_backup_tar.c:1299 #, c-format msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "beschädigter Tar-Kopf in %s gefunden (%d erwartet, %d berechnet), Dateiposition %s\n" @@ -1846,341 +1846,331 @@ msgid "error reading large object %u: %s" msgstr "Fehler beim Lesen von Large Object %u: %s" -#: pg_dump.c:3214 -#, c-format -msgid "reading row security enabled for table \"%s.%s\"\n" -msgstr "lese Einstellung von Sicherheit auf Zeilenebene für Tabelle »%s.%s«\n" - #: pg_dump.c:3246 #, c-format -msgid "reading policies for table \"%s.%s\"\n" -msgstr "lese Policys von Tabelle »%s.%s«\n" +msgid "reading row-level security policies\n" +msgstr "lese Policys für Sicherheit auf Zeilenebene\n" -#: pg_dump.c:3398 +#: pg_dump.c:3389 #, c-format msgid "unexpected policy command type: %c\n" msgstr "unerwarteter Policy-Befehlstyp: %c\n" -#: pg_dump.c:3527 +#: pg_dump.c:3521 #, c-format msgid "WARNING: owner of publication \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Publikation »%s« scheint ungültig zu sein\n" -#: pg_dump.c:3658 -#, c-format -msgid "reading publication membership for table \"%s.%s\"\n" -msgstr "lese Publikationsmitgliedschaft für Tabelle »%s.%s«\n" - -#: pg_dump.c:3804 +#: pg_dump.c:3801 #, c-format msgid "WARNING: subscriptions not dumped because current user is not a superuser\n" msgstr "WARNUNG: Subskriptionen werden nicht ausgegeben, weil der aktuelle Benutzer kein Superuser ist\n" -#: pg_dump.c:3858 +#: pg_dump.c:3855 #, c-format msgid "WARNING: owner of subscription \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Subskription »%s« scheint ungültig zu sein\n" -#: pg_dump.c:3903 +#: pg_dump.c:3900 #, c-format msgid "WARNING: could not parse subpublications array\n" msgstr "WARNUNG: konnte subpublications-Array nicht interpretieren\n" -#: pg_dump.c:4190 +#: pg_dump.c:4187 #, c-format msgid "could not find parent extension for %s %s\n" msgstr "konnte Erweiterung, zu der %s %s gehört, nicht finden\n" -#: pg_dump.c:4345 +#: pg_dump.c:4342 #, 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:4368 +#: pg_dump.c:4365 #, c-format msgid "schema with OID %u does not exist\n" msgstr "Schema mit OID %u existiert nicht\n" -#: pg_dump.c:4693 +#: pg_dump.c:4691 #, 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:4778 +#: pg_dump.c:4776 #, 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:5080 +#: pg_dump.c:5078 #, 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:5164 +#: pg_dump.c:5162 #, 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:5328 +#: pg_dump.c:5326 #, 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:5584 +#: pg_dump.c:5582 #, 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:6362 +#: pg_dump.c:6360 #, 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:6404 pg_dump.c:16446 +#: pg_dump.c:6402 pg_dump.c:16438 #, c-format msgid "failed sanity check, parent table with OID %u of sequence with OID %u not found\n" msgstr "Sanity-Check fehlgeschlagen, Elterntabelle mit OID %u von Sequenz mit OID %u nicht gefunden\n" -#: pg_dump.c:6544 +#: pg_dump.c:6542 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "lese Indexe von Tabelle »%s.%s«\n" -#: pg_dump.c:6874 +#: pg_dump.c:6872 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "lese Fremdschlüssel-Constraints von Tabelle »%s.%s«\n" -#: pg_dump.c:7083 +#: pg_dump.c:7081 #, c-format msgid "failed sanity check, parent table with OID %u of pg_rewrite entry with OID %u not found\n" msgstr "Sanity-Check fehlgeschlagen, Elterntabelle mit OID %u von pg_rewrite-Eintrag mit OID %u nicht gefunden\n" -#: pg_dump.c:7167 +#: pg_dump.c:7165 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "lese Trigger von Tabelle »%s.%s«\n" -#: pg_dump.c:7300 +#: pg_dump.c:7298 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "Anfrage ergab NULL als Name der Tabelle auf die sich Fremdschlüssel-Trigger »%s« von Tabelle »%s« bezieht (OID der Tabelle: %u)\n" -#: pg_dump.c:7854 +#: pg_dump.c:7852 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "finde Spalten und Typen von Tabelle »%s.%s«\n" -#: pg_dump.c:8019 +#: pg_dump.c:8017 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "ungültige Spaltennummerierung in Tabelle »%s«\n" -#: pg_dump.c:8055 +#: pg_dump.c:8053 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "finde DEFAULT-Ausdrücke von Tabelle »%s.%s«\n" -#: pg_dump.c:8078 +#: pg_dump.c:8076 #, 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:8144 +#: pg_dump.c:8142 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "finde Check-Constraints für Tabelle »%s.%s«\n" -#: pg_dump.c:8193 +#: pg_dump.c:8191 #, 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:8197 +#: pg_dump.c:8195 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Die Systemkataloge sind wahrscheinlich verfälscht.)\n" -#: pg_dump.c:9746 +#: pg_dump.c:9761 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "WARNUNG: typtype des Datentypen »%s« scheint ungültig zu sein\n" -#: pg_dump.c:11092 +#: pg_dump.c:11103 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "WARNUNG: unsinniger Wert in proargmodes-Array\n" -#: pg_dump.c:11413 +#: pg_dump.c:11419 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "WARNUNG: konnte proallargtypes-Array nicht interpretieren\n" -#: pg_dump.c:11429 +#: pg_dump.c:11435 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "WARNUNG: konnte proargmodes-Array nicht interpretieren\n" -#: pg_dump.c:11443 +#: pg_dump.c:11449 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "WARNUNG: konnte proargnames-Array nicht interpretieren\n" -#: pg_dump.c:11454 +#: pg_dump.c:11460 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "WARNUNG: konnte proconfig-Array nicht interpretieren\n" -#: pg_dump.c:11525 +#: pg_dump.c:11527 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "ungültiger provolatile-Wert für Funktion »%s«\n" -#: pg_dump.c:11569 pg_dump.c:13541 +#: pg_dump.c:11571 pg_dump.c:13533 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "ungültiger proparallel-Wert für Funktion »%s«\n" -#: pg_dump.c:11709 pg_dump.c:11819 pg_dump.c:11826 +#: pg_dump.c:11711 pg_dump.c:11818 pg_dump.c:11825 #, c-format msgid "could not find function definition for function with OID %u\n" msgstr "konnte Funktionsdefinition für Funktion mit OID %u nicht finden\n" -#: pg_dump.c:11748 +#: pg_dump.c:11750 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_cast.castfunc oder pg_cast.castmethod\n" -#: pg_dump.c:11751 +#: pg_dump.c:11753 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_cast.castmethod\n" -#: pg_dump.c:11845 +#: pg_dump.c:11844 #, c-format msgid "WARNING: bogus transform definition, at least one of trffromsql and trftosql should be nonzero\n" msgstr "WARNUNG: unsinnige Transformationsdefinition, mindestens eins von trffromsql und trftosql sollte nicht null sein\n" -#: pg_dump.c:11862 +#: pg_dump.c:11861 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_transform.trffromsql\n" -#: pg_dump.c:11883 +#: pg_dump.c:11882 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_transform.trftosql\n" -#: pg_dump.c:12199 +#: pg_dump.c:12197 #, 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:12264 +#: pg_dump.c:12262 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "WARNUNG: ungültiger Typ »%c« für Zugriffsmethode »%s«\n" -#: pg_dump.c:13016 +#: pg_dump.c:13014 #, c-format msgid "unrecognized collation provider: %s\n" msgstr "unbekannter Sortierfolgen-Provider: %s\n" -#: pg_dump.c:13451 +#: pg_dump.c:13443 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "WARNUNG: Aggregatfunktion %s konnte für diese Datenbankversion nicht korrekt ausgegeben werden - ignoriert\n" -#: pg_dump.c:14251 +#: pg_dump.c:14243 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "unbekannter Objekttyp in den Vorgabeprivilegien: %d\n" -#: pg_dump.c:14269 +#: pg_dump.c:14261 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "konnte Vorgabe-ACL-Liste (%s) nicht interpretieren\n" -#: pg_dump.c:14356 +#: pg_dump.c:14348 #, c-format msgid "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "konnte initiale GRANT-ACL-Liste (%s) oder initiale REVOKE-ACL-Liste (%s) für Objekt »%s« (%s) nicht interpretieren\n" -#: pg_dump.c:14365 +#: pg_dump.c:14357 #, c-format msgid "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "konnte GRANT-ACL-Liste (%s) oder REVOKE-ACL-Liste (%s) für Objekt »%s« (%s) nicht interpretieren\n" -#: pg_dump.c:14877 +#: pg_dump.c:14869 #, 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:14880 +#: pg_dump.c:14872 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "Anfrage um die Definition der Sicht »%s« zu ermitteln lieferte mehr als eine Definition\n" -#: pg_dump.c:14887 +#: pg_dump.c:14879 #, 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:15418 +#: pg_dump.c:15410 #, c-format msgid "invalid number of parents %d for table \"%s\"\n" msgstr "ungültige Anzahl Eltern %d für Tabelle »%s«\n" -#: pg_dump.c:15751 +#: pg_dump.c:15743 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "ungültige Spaltennummer %d in Tabelle »%s«\n" -#: pg_dump.c:15953 +#: pg_dump.c:15945 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "fehlender Index für Constraint »%s«\n" -#: pg_dump.c:16154 +#: pg_dump.c:16146 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "unbekannter Constraint-Typ: %c\n" -#: pg_dump.c:16290 pg_dump.c:16511 +#: pg_dump.c:16282 pg_dump.c:16503 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "Anfrage nach Daten der Sequenz %s ergab %d Zeile (erwartete 1)\n" msgstr[1] "Anfrage nach Daten der Sequenz %s ergab %d Zeilen (erwartete 1)\n" -#: pg_dump.c:16324 +#: pg_dump.c:16316 #, c-format msgid "unrecognized sequence type: %s\n" msgstr "unbekannter Sequenztyp: %s\n" -#: pg_dump.c:16609 +#: pg_dump.c:16601 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "unerwarteter tgtype-Wert: %d\n" -#: pg_dump.c:16683 +#: pg_dump.c:16675 #, 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:16919 +#: pg_dump.c:16911 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "Anfrage nach Regel »%s« der Tabelle »%s« fehlgeschlagen: falsche Anzahl Zeilen zurückgegeben\n" -#: pg_dump.c:17300 +#: pg_dump.c:17292 #, c-format msgid "reading dependency data\n" msgstr "lese Abhängigkeitsdaten\n" -#: pg_dump.c:17777 +#: pg_dump.c:17784 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "WARNUNG: konnte reloptions-Array nicht interpretieren\n" diff -Nru postgresql-10-10.17/src/bin/pg_dump/po/fr.po postgresql-10-10.19/src/bin/pg_dump/po/fr.po --- postgresql-10-10.17/src/bin/pg_dump/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-11-02 15:14+0000\n" -"PO-Revision-Date: 2020-11-02 16:18+0100\n" +"POT-Creation-Date: 2021-09-01 06:00+0000\n" +"PO-Revision-Date: 2021-09-01 10:34+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: PostgreSQLfr \n" "Language: fr\n" @@ -18,7 +18,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.4.1\n" +"X-Generator: Poedit 3.0\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -96,212 +96,208 @@ msgid "child process exited with unrecognized status %d" msgstr "le processus fils a quitté avec un statut %d non reconnu" -#: common.c:121 +#: common.c:124 #, c-format msgid "reading extensions\n" msgstr "lecture des extensions\n" -#: common.c:126 +#: common.c:129 #, c-format msgid "identifying extension members\n" msgstr "identification des membres d'extension\n" -#: common.c:130 +#: common.c:133 #, c-format msgid "reading schemas\n" msgstr "lecture des schémas\n" -#: common.c:141 +#: common.c:144 #, c-format msgid "reading user-defined tables\n" msgstr "lecture des tables utilisateur\n" -#: common.c:149 +#: common.c:152 #, c-format msgid "reading user-defined functions\n" msgstr "lecture des fonctions utilisateur\n" -#: common.c:155 +#: common.c:158 #, c-format msgid "reading user-defined types\n" msgstr "lecture des types utilisateur\n" -#: common.c:161 +#: common.c:164 #, c-format msgid "reading procedural languages\n" msgstr "lecture des langages procéduraux\n" -#: common.c:165 +#: common.c:168 #, c-format msgid "reading user-defined aggregate functions\n" msgstr "lecture des fonctions d'aggrégats utilisateur\n" -#: common.c:169 +#: common.c:172 #, c-format msgid "reading user-defined operators\n" msgstr "lecture des opérateurs utilisateur\n" -#: common.c:174 +#: common.c:177 #, c-format msgid "reading user-defined access methods\n" msgstr "lecture des méthodes d'accès définis par les utilisateurs\n" -#: common.c:178 +#: common.c:181 #, c-format msgid "reading user-defined operator classes\n" msgstr "lecture des classes d'opérateurs utilisateur\n" -#: common.c:182 +#: common.c:185 #, c-format msgid "reading user-defined operator families\n" msgstr "lecture des familles d'opérateurs utilisateur\n" -#: common.c:186 +#: common.c:189 #, c-format msgid "reading user-defined text search parsers\n" msgstr "lecture des analyseurs utilisateur pour la recherche plein texte\n" -#: common.c:190 +#: common.c:193 #, c-format msgid "reading user-defined text search templates\n" msgstr "lecture des modèles utilisateur pour la recherche plein texte\n" -#: common.c:194 +#: common.c:197 #, c-format msgid "reading user-defined text search dictionaries\n" -msgstr "" -"lecture des dictionnaires utilisateur pour la recherche plein texte\n" +msgstr "lecture des dictionnaires utilisateur pour la recherche plein texte\n" -#: common.c:198 +#: common.c:201 #, c-format msgid "reading user-defined text search configurations\n" -msgstr "" -"lecture des configurations utilisateur pour la recherche plein texte\n" +msgstr "lecture des configurations utilisateur pour la recherche plein texte\n" -#: common.c:202 +#: common.c:205 #, c-format msgid "reading user-defined foreign-data wrappers\n" msgstr "lecture des wrappers de données distantes utilisateur\n" -#: common.c:206 +#: common.c:209 #, c-format msgid "reading user-defined foreign servers\n" msgstr "lecture des serveurs distants utilisateur\n" -#: common.c:210 +#: common.c:213 #, c-format msgid "reading default privileges\n" msgstr "lecture des droits par défaut\n" -#: common.c:214 +#: common.c:217 #, c-format msgid "reading user-defined collations\n" msgstr "lecture des collationnements utilisateurs\n" -#: common.c:219 +#: common.c:222 #, c-format msgid "reading user-defined conversions\n" msgstr "lecture des conversions utilisateur\n" -#: common.c:223 +#: common.c:226 #, c-format msgid "reading type casts\n" msgstr "lecture des transtypages\n" -#: common.c:227 +#: common.c:230 #, c-format msgid "reading transforms\n" msgstr "lecture des transformations\n" -#: common.c:231 +#: common.c:234 #, c-format msgid "reading table inheritance information\n" msgstr "lecture des informations d'héritage des tables\n" -#: common.c:235 +#: common.c:238 #, c-format msgid "reading event triggers\n" msgstr "lecture des déclencheurs sur évènement\n" -#: common.c:240 +#: common.c:243 #, c-format msgid "finding extension tables\n" msgstr "recherche des tables d'extension\n" -#: common.c:245 +#: common.c:248 #, c-format msgid "finding inheritance relationships\n" msgstr "recherche des relations d'héritage\n" -#: common.c:249 +#: common.c:252 #, c-format msgid "reading column info for interesting tables\n" msgstr "lecture des informations de colonnes des tables intéressantes\n" -#: common.c:253 +#: common.c:256 #, c-format msgid "flagging inherited columns in subtables\n" msgstr "marquage des colonnes héritées dans les sous-tables\n" -#: common.c:257 +#: common.c:260 #, c-format msgid "reading indexes\n" msgstr "lecture des index\n" -#: common.c:261 +#: common.c:264 #, c-format msgid "reading extended statistics\n" msgstr "lecture des statistiques étendues\n" -#: common.c:265 +#: common.c:268 #, c-format msgid "reading constraints\n" msgstr "lecture des contraintes\n" -#: common.c:269 +#: common.c:272 #, c-format msgid "reading triggers\n" msgstr "lecture des déclencheurs\n" -#: common.c:273 +#: common.c:276 #, c-format msgid "reading rewrite rules\n" msgstr "lecture des règles de réécriture\n" -#: common.c:277 +#: common.c:280 #, c-format msgid "reading policies\n" msgstr "lecture des politiques\n" -#: common.c:281 +#: common.c:284 #, c-format msgid "reading publications\n" msgstr "lecture des publications\n" -#: common.c:285 +#: common.c:290 #, c-format msgid "reading publication membership\n" msgstr "lecture des appartenances aux publications\n" -#: common.c:289 +#: common.c:294 #, c-format msgid "reading subscriptions\n" msgstr "lecture des souscriptions\n" -#: common.c:925 +#: common.c:941 #, c-format -msgid "" -"failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" +msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "" -"vérification échouée, OID %u parent de la table « %s » (OID %u) " -"introuvable\n" +"vérification échouée, OID %u parent de la table « %s » (OID %u) introuvable\n" -#: common.c:967 +#: common.c:983 #, 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:982 +#: common.c:998 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "" @@ -349,14 +345,14 @@ msgid "could not close compression library: %s\n" msgstr "n'a pas pu fermer la bibliothèque de compression : %s\n" -#: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:587 -#: pg_backup_tar.c:564 pg_backup_tar.c:568 +#: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:587 pg_backup_tar.c:558 +#: pg_backup_tar.c:562 #, 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" #: compress_io.c:641 pg_backup_custom.c:584 pg_backup_directory.c:564 -#: pg_backup_tar.c:807 pg_backup_tar.c:831 +#: pg_backup_tar.c:801 pg_backup_tar.c:825 #, c-format msgid "could not read from input file: end of file\n" msgstr "n'a pas pu lire à partir du fichier en entrée : fin du fichier\n" @@ -394,14 +390,14 @@ #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" -"This usually means that someone requested an ACCESS EXCLUSIVE lock on the " -"table after the pg_dump parent process had gotten the initial ACCESS SHARE " -"lock on the table.\n" +"This usually means that someone requested an ACCESS EXCLUSIVE lock on the table " +"after the pg_dump parent process had gotten the initial ACCESS SHARE lock on the " +"table.\n" msgstr "" "impossible d'obtenir un verrou sur la relationn « %s »\n" -"Cela signifie en général que quelqu'un à demandé un verrou ACCESS " -"EXCLUSIVE sur la table après que pg_dump ait obtenu son verrou ACCESS " -"SHARE initial sur la table.\n" +"Cela signifie en général que quelqu'un à demandé un verrou ACCESS EXCLUSIVE sur " +"la table après que pg_dump ait obtenu son verrou ACCESS SHARE initial sur la " +"table.\n" #: parallel.c:1425 #, c-format @@ -467,8 +463,8 @@ #, c-format msgid "WARNING: archive items not in correct section order\n" msgstr "" -"ATTENTION : les éléments de l'archive ne sont pas dans l'ordre correct de " -"la section\n" +"ATTENTION : les éléments de l'archive ne sont pas dans l'ordre correct de la " +"section\n" #: pg_backup_archiver.c:313 #, c-format @@ -489,8 +485,7 @@ #: pg_backup_archiver.c:363 #, c-format -msgid "" -"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +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" @@ -528,11 +523,9 @@ #: pg_backup_archiver.c:606 #, c-format -msgid "" -"WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" +msgid "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" msgstr "" -"ATTENTION : n'a pas pu trouver où insérer IF EXISTS dans l'instruction « " -"%s »\n" +"ATTENTION : n'a pas pu trouver où insérer IF EXISTS dans l'instruction « %s »\n" #: pg_backup_archiver.c:769 pg_backup_archiver.c:771 #, c-format @@ -582,8 +575,8 @@ #: pg_backup_archiver.c:1040 #, c-format msgid "" -"internal error -- WriteData cannot be called outside the context of a " -"DataDumper routine\n" +"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" @@ -592,8 +585,7 @@ #, c-format msgid "large-object output not supported in chosen format\n" msgstr "" -"la sauvegarde des « Large Objects » n'est pas supportée dans le format " -"choisi\n" +"la sauvegarde des « Large Objects » n'est pas supportée dans le format choisi\n" #: pg_backup_archiver.c:1296 #, c-format @@ -602,7 +594,7 @@ msgstr[0] "restauration de %d « Large Object »\n" msgstr[1] "restauration de %d « Large Objects »\n" -#: pg_backup_archiver.c:1317 pg_backup_tar.c:749 +#: pg_backup_archiver.c:1317 pg_backup_tar.c:743 #, c-format msgid "restoring large object with OID %u\n" msgstr "restauration du « Large Object » d'OID %u\n" @@ -612,7 +604,7 @@ msgid "could not create large object %u: %s" msgstr "n'a pas pu créer le « Large Object » %u : %s" -#: pg_backup_archiver.c:1334 pg_dump.c:3154 +#: pg_backup_archiver.c:1334 pg_dump.c:3151 #, c-format msgid "could not open large object %u: %s" msgstr "n'a pas pu ouvrir le « Large Object » %u : %s" @@ -632,15 +624,13 @@ 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:1461 pg_backup_directory.c:225 -#: pg_backup_directory.c:613 +#: pg_backup_archiver.c:1461 pg_backup_directory.c:225 pg_backup_directory.c:613 #, 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:1575 pg_backup_custom.c:158 pg_backup_directory.c:336 -#: pg_backup_directory.c:599 pg_backup_directory.c:664 -#: pg_backup_directory.c:684 +#: pg_backup_directory.c:599 pg_backup_directory.c:664 pg_backup_directory.c:684 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » : %s\n" @@ -654,16 +644,13 @@ #, 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" +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:1690 #, 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" +msgstr "n'a pas pu écrire le « Large Object » (résultat : %lu, attendu : %lu)\n" #: pg_backup_archiver.c:1783 #, c-format @@ -710,193 +697,190 @@ msgid "attempting to ascertain archive format\n" msgstr "tentative d'identification du format de l'archive\n" -#: pg_backup_archiver.c:2139 pg_backup_archiver.c:2149 +#: pg_backup_archiver.c:2140 pg_backup_archiver.c:2150 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "nom du répertoire trop long : « %s »\n" -#: pg_backup_archiver.c:2157 +#: pg_backup_archiver.c:2158 #, c-format msgid "" -"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does " -"not exist)\n" +"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" +"le répertoire « %s » ne semble pas être une archive valide (« toc.dat » n'existe " +"pas)\n" -#: pg_backup_archiver.c:2165 pg_backup_custom.c:177 pg_backup_custom.c:770 +#: pg_backup_archiver.c:2166 pg_backup_custom.c:177 pg_backup_custom.c:770 #: pg_backup_directory.c:209 pg_backup_directory.c:401 #, 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:2173 pg_backup_custom.c:184 +#: pg_backup_archiver.c:2174 pg_backup_custom.c:184 #, 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:2180 +#: pg_backup_archiver.c:2181 #, 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:2182 +#: pg_backup_archiver.c:2183 #, 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:2267 +#: pg_backup_archiver.c:2215 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "" -"Le fichier en entrée semble être une sauvegarde au format texte. Merci " -"d'utiliser psql.\n" +"Le fichier en entrée semble être une sauvegarde au format texte. Merci d'utiliser " +"psql.\n" -#: pg_backup_archiver.c:2273 +#: pg_backup_archiver.c:2221 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" -msgstr "" -"le fichier en entrée ne semble pas être une archive valide (trop petit ?)\n" +msgstr "le fichier en entrée ne semble pas être une archive valide (trop petit ?)\n" -#: pg_backup_archiver.c:2279 +#: pg_backup_archiver.c:2227 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "le fichier en entrée ne semble pas être une archive valide\n" -#: pg_backup_archiver.c:2299 +#: pg_backup_archiver.c:2236 #, 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:2317 +#: pg_backup_archiver.c:2258 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "allocation d'AH pour %s, format %d\n" -#: pg_backup_archiver.c:2416 +#: pg_backup_archiver.c:2357 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "format de fichier « %d » non reconnu\n" -#: pg_backup_archiver.c:2471 pg_backup_archiver.c:4364 +#: pg_backup_archiver.c:2412 pg_backup_archiver.c:4327 #, c-format msgid "finished item %d %s %s\n" msgstr "élément terminé %d %s %s\n" -#: pg_backup_archiver.c:2475 pg_backup_archiver.c:4377 +#: pg_backup_archiver.c:2416 pg_backup_archiver.c:4340 #, 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:2595 +#: pg_backup_archiver.c:2536 #, 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" +msgstr "ID %d de l'entrée en dehors de la plage -- peut-être un TOC corrompu\n" -#: pg_backup_archiver.c:2711 +#: pg_backup_archiver.c:2652 #, 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:2747 +#: pg_backup_archiver.c:2688 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "encodage « %s » non reconnu\n" -#: pg_backup_archiver.c:2752 +#: pg_backup_archiver.c:2693 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "élément ENCODING invalide : %s\n" -#: pg_backup_archiver.c:2770 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "élément STDSTRINGS invalide : %s\n" -#: pg_backup_archiver.c:2795 +#: pg_backup_archiver.c:2736 #, c-format msgid "schema \"%s\" not found\n" msgstr "schéma « %s » non trouvé\n" -#: pg_backup_archiver.c:2802 +#: pg_backup_archiver.c:2743 #, c-format msgid "table \"%s\" not found\n" msgstr "table « %s » non trouvée\n" -#: pg_backup_archiver.c:2809 +#: pg_backup_archiver.c:2750 #, c-format msgid "index \"%s\" not found\n" msgstr "index « %s » non trouvé\n" -#: pg_backup_archiver.c:2816 +#: pg_backup_archiver.c:2757 #, c-format msgid "function \"%s\" not found\n" msgstr "fonction « %s » non trouvée\n" -#: pg_backup_archiver.c:2823 +#: pg_backup_archiver.c:2764 #, c-format msgid "trigger \"%s\" not found\n" msgstr "trigger « %s » non trouvé\n" -#: pg_backup_archiver.c:3135 +#: pg_backup_archiver.c:3076 #, 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:3167 +#: pg_backup_archiver.c:3108 #, c-format msgid "could not set default_with_oids: %s" msgstr "n'a pas pu configurer default_with_oids : %s" -#: pg_backup_archiver.c:3314 +#: pg_backup_archiver.c:3255 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "n'a pas pu configurer search_path à « %s » : %s" -#: pg_backup_archiver.c:3376 +#: pg_backup_archiver.c:3317 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "n'a pas pu configurer default_tablespace à %s : %s" -#: pg_backup_archiver.c:3469 pg_backup_archiver.c:3662 +#: pg_backup_archiver.c:3410 pg_backup_archiver.c:3603 #, 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" +"ATTENTION : ne sait pas comment initialiser le propriétaire du type d'objet « %s " +"»\n" -#: pg_backup_archiver.c:3752 +#: pg_backup_archiver.c:3692 #, c-format msgid "did not find magic string in file header\n" msgstr "n'a pas trouver la chaîne magique dans le fichier d'en-tête\n" -#: pg_backup_archiver.c:3765 +#: pg_backup_archiver.c:3706 #, 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:3770 +#: pg_backup_archiver.c:3711 #, 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:3774 +#: pg_backup_archiver.c:3715 #, c-format msgid "" -"WARNING: archive was made on a machine with larger integers, some " -"operations might fail\n" +"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" +"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:3784 +#: pg_backup_archiver.c:3725 #, 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:3800 +#: pg_backup_archiver.c:3740 #, c-format msgid "" "WARNING: archive is compressed, but this installation does not support " @@ -905,77 +889,76 @@ "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:3818 +#: pg_backup_archiver.c:3775 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "ATTENTION : date de création invalide dans l'en-tête\n" -#: pg_backup_archiver.c:3891 +#: pg_backup_archiver.c:3854 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "entrée dans restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3955 +#: pg_backup_archiver.c:3918 #, c-format msgid "processing item %d %s %s\n" msgstr "traitement de l'élément %d %s %s\n" -#: pg_backup_archiver.c:4009 +#: pg_backup_archiver.c:3972 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "entrée dans restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:4030 +#: pg_backup_archiver.c:3993 #, c-format msgid "entering main parallel loop\n" msgstr "entrée dans la boucle parallèle principale\n" -#: pg_backup_archiver.c:4041 +#: pg_backup_archiver.c:4004 #, c-format msgid "skipping item %d %s %s\n" msgstr "omission de l'élément %d %s %s\n" -#: pg_backup_archiver.c:4051 +#: pg_backup_archiver.c:4014 #, c-format msgid "launching item %d %s %s\n" msgstr "élément de lancement %d %s %s\n" -#: pg_backup_archiver.c:4105 +#: pg_backup_archiver.c:4068 #, c-format msgid "finished main parallel loop\n" msgstr "fin de la boucle parallèle principale\n" -#: pg_backup_archiver.c:4123 +#: pg_backup_archiver.c:4086 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "entrée dans restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:4141 +#: pg_backup_archiver.c:4104 #, 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:4320 +#: pg_backup_archiver.c:4283 #, c-format msgid "no item ready\n" msgstr "aucun élément prêt\n" -#: pg_backup_archiver.c:4539 +#: pg_backup_archiver.c:4502 #, 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:4620 +#: pg_backup_archiver.c:4583 #, c-format msgid "reducing dependencies for %d\n" msgstr "réduction des dépendances pour %d\n" -#: pg_backup_archiver.c:4672 +#: pg_backup_archiver.c:4635 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "" -"la table « %s » n'a pas pu être créée, ses données ne seront pas " -"restaurées\n" +"la table « %s » n'a pas pu être créée, ses données ne seront pas restaurées\n" #. translator: this is a module name #: pg_backup_custom.c:93 @@ -994,7 +977,7 @@ "type de bloc de données non reconnu (%d) lors de la recherche dans\n" "l'archive\n" -#: pg_backup_custom.c:462 pg_backup_tar.c:1100 pg_backup_tar.c:1107 +#: pg_backup_custom.c:462 pg_backup_tar.c:1094 pg_backup_tar.c:1101 #, c-format msgid "error during file seek: %s\n" msgstr "erreur lors du parcours du fichier : %s\n" @@ -1002,27 +985,23 @@ #: pg_backup_custom.c:472 #, 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" +"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'a pas pu trouver l'identifiant de bloc %d dans l'archive -\n" -"il est possible que cela soit dû à une demande de restauration dans un " -"ordre\n" +"il est possible que cela soit dû à une demande de restauration dans un ordre\n" "différent, qui n'a pas pu être géré à cause d'un manque d'information de\n" "position dans l'archive\n" #: pg_backup_custom.c:477 #, 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" +"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'a pas pu trouver l'identifiant de bloc %d dans l'archive -\n" -"il est possible que cela soit dû à une demande de restauration dans un " -"ordre\n" -"différent, ce qui ne peut pas être géré à cause d'un fichier non gérable " -"en\n" +"il est possible que cela soit dû à une demande de restauration dans un ordre\n" +"différent, ce qui ne peut pas être géré à cause d'un fichier non gérable en\n" "recherche\n" #: pg_backup_custom.c:482 @@ -1035,23 +1014,20 @@ #: pg_backup_custom.c:489 #, 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" +msgstr "ID de bloc inattendu (%d) lors de la lecture des données -- %d attendu\n" #: pg_backup_custom.c:503 #, 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" +"type de bloc de données %d non reconnu lors de la restauration de l'archive\n" #: pg_backup_custom.c:705 pg_backup_custom.c:759 pg_backup_custom.c:844 -#: pg_backup_tar.c:1104 +#: pg_backup_tar.c:1098 #, 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" +"n'a pas pu déterminer la position de recherche dans le fichier d'archive : %s\n" #: pg_backup_custom.c:723 pg_backup_custom.c:764 #, c-format @@ -1072,15 +1048,14 @@ #, c-format msgid "parallel restore from non-seekable file is not supported\n" msgstr "" -"la restauration parallélisée n'est pas supportée à partir de fichiers sans " -"table de matière\n" +"la restauration parallélisée n'est pas supportée à partir de fichiers sans table " +"de matière\n" #: pg_backup_custom.c:774 #, c-format 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" +"n'a pas pu initialiser la recherche de position dans le fichier d'archive : %s\n" #: pg_backup_custom.c:792 #, c-format @@ -1091,8 +1066,7 @@ #, c-format msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "" -"ATTENTION : ftell ne correspond pas à la position attendue -- ftell " -"utilisé\n" +"ATTENTION : ftell ne correspond pas à la position attendue -- ftell utilisé\n" #. translator: this is a module name #: pg_backup_db.c:30 @@ -1184,23 +1158,18 @@ msgid "COPY failed for table \"%s\": %s" msgstr "COPY échoué pour la table « %s » : %s" -#: pg_backup_db.c:533 pg_dump.c:1859 +#: pg_backup_db.c:533 pg_dump.c:1856 #, c-format msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" msgstr "" -"ATTENTION: résultats supplémentaires non attendus durant l'exécution de " -"COPY sur la table « %s »\n" - -#: pg_backup_db.c:594 -#, c-format -msgid "LOCK TABLE failed for \"%s\": %s" -msgstr "LOCK TABLE échoué pour la table « %s » : %s" +"ATTENTION: résultats supplémentaires non attendus durant l'exécution de COPY sur " +"la table « %s »\n" -#: pg_backup_db.c:612 +#: pg_backup_db.c:545 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:620 +#: pg_backup_db.c:553 msgid "could not commit database transaction" msgstr "n'a pas pu valider la transaction de la base de données" @@ -1229,8 +1198,7 @@ msgid "could not create directory \"%s\": %s\n" msgstr "n'a pas pu créer le répertoire « %s » : %s\n" -#: pg_backup_directory.c:360 pg_backup_directory.c:505 -#: pg_backup_directory.c:541 +#: pg_backup_directory.c:360 pg_backup_directory.c:505 pg_backup_directory.c:541 #, c-format msgid "could not write to output file: %s\n" msgstr "n'a pas pu écrire dans le fichier de sauvegarde : %s\n" @@ -1244,8 +1212,7 @@ #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "" -"n'a pas pu ouvrir le fichier sommaire « %s » du Large Object en entrée : " -"%s\n" +"n'a pas pu ouvrir le fichier sommaire « %s » du Large Object en entrée : %s\n" #: pg_backup_directory.c:466 #, c-format @@ -1292,7 +1259,7 @@ 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:210 pg_backup_tar.c:366 +#: pg_backup_tar.c:210 pg_backup_tar.c:360 #, c-format msgid "compression is not supported by tar archive format\n" msgstr "compression non supportée par le format des archives tar\n" @@ -1307,103 +1274,100 @@ 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:352 +#: pg_backup_tar.c:346 #, 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:418 +#: pg_backup_tar.c:412 #, 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:429 +#: pg_backup_tar.c:423 #, c-format msgid "could not open temporary file\n" msgstr "n'a pas pu ouvrir le fichier temporaire\n" -#: pg_backup_tar.c:456 +#: pg_backup_tar.c:450 #, c-format msgid "could not close tar member\n" msgstr "n'a pas pu fermer le membre de tar\n" -#: pg_backup_tar.c:581 +#: pg_backup_tar.c:575 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "erreur interne -- ni th ni fh ne sont précisés dans tarReadRaw()\n" -#: pg_backup_tar.c:704 +#: pg_backup_tar.c:698 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "syntaxe inattendue de l'instruction COPY : « %s »\n" -#: pg_backup_tar.c:974 +#: pg_backup_tar.c:968 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "OID invalide pour le « Large Object » (%u)\n" -#: pg_backup_tar.c:1122 +#: pg_backup_tar.c:1116 #, 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:1132 +#: pg_backup_tar.c:1126 #, 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" +"la longueur réelle du fichier (%s) ne correspond pas à ce qui était attendu\n" "(%s)\n" -#: pg_backup_tar.c:1169 +#: pg_backup_tar.c:1163 #, 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:1180 +#: pg_backup_tar.c:1174 #, c-format msgid "now at file position %s\n" msgstr "maintenant en position %s du fichier\n" -#: pg_backup_tar.c:1189 pg_backup_tar.c:1219 +#: pg_backup_tar.c:1183 pg_backup_tar.c:1213 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "n'a pas pu trouver l'en-tête du fichier « %s » dans l'archive tar\n" -#: pg_backup_tar.c:1203 +#: pg_backup_tar.c:1197 #, c-format msgid "skipping tar member %s\n" msgstr "omission du membre %s du tar\n" -#: pg_backup_tar.c:1207 +#: pg_backup_tar.c:1201 #, c-format msgid "" -"restoring data out of order is not supported in this archive format: \"%s" -"\" is required, but comes before \"%s\" in the archive file.\n" +"restoring data out of order is not supported in this archive format: \"%s\" is " +"required, but comes before \"%s\" in the archive file.\n" msgstr "" "la restauration désordonnée de données n'est pas supportée avec ce format\n" "d'archive : « %s » est requis mais vient avant « %s » dans le fichier\n" "d'archive.\n" -#: pg_backup_tar.c:1253 +#: pg_backup_tar.c:1247 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "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:1294 +#: pg_backup_tar.c:1288 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "entrée TOC %s à %s (longueur %s, somme de contrôle %d)\n" -#: pg_backup_tar.c:1305 +#: pg_backup_tar.c:1299 #, c-format -msgid "" -"corrupt tar header found in %s (expected %d, computed %d) file position " -"%s\n" +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" @@ -1433,15 +1397,13 @@ #: pg_dump.c:571 pg_dumpall.c:323 pg_restore.c:297 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "" -"%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" +msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" #: pg_dump.c:592 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" -"les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas " -"être\n" +"les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas être\n" "utilisées conjointement\n" #: pg_dump.c:598 @@ -1453,8 +1415,7 @@ #: pg_dump.c:604 #, c-format -msgid "" -"options --inserts/--column-inserts and -o/--oids cannot be used together\n" +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" @@ -1472,8 +1433,8 @@ #: pg_dump.c:632 #, c-format msgid "" -"WARNING: requested compression not available in this installation -- " -"archive will be uncompressed\n" +"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" @@ -1486,8 +1447,7 @@ #: pg_dump.c:651 #, c-format msgid "parallel backup only supported by the directory format\n" -msgstr "" -"la sauvegarde parallèle n'est supportée qu'avec le format répertoire\n" +msgstr "la sauvegarde parallèle n'est supportée qu'avec le format répertoire\n" #: pg_dump.c:706 #, c-format @@ -1496,18 +1456,16 @@ "Run with --no-synchronized-snapshots instead if you do not need\n" "synchronized snapshots.\n" msgstr "" -"Les snapshots synchronisés ne sont pas supportés par cette version " -"serveur.\n" -"Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas " -"besoin\n" +"Les snapshots synchronisés ne sont pas supportés par cette version serveur.\n" +"Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas besoin\n" "de snapshots synchronisés.\n" #: pg_dump.c:713 #, c-format msgid "Exported snapshots are not supported by this server version.\n" msgstr "" -"Les images exportées de la base ne sont pas supportées par cette version " -"du serveur.\n" +"Les images exportées de la base ne sont pas supportées par cette version du " +"serveur.\n" "\n" #: pg_dump.c:727 @@ -1543,7 +1501,7 @@ #: pg_dump.c:932 #, c-format msgid " %s [OPTION]... [DBNAME]\n" -msgstr " %s [OPTION]... [NOMBASE]\n" +msgstr " %s [OPTION]... [BASE]\n" #: pg_dump.c:934 pg_dumpall.c:580 pg_restore.c:452 #, c-format @@ -1557,14 +1515,12 @@ #: pg_dump.c:935 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" -msgstr "" -" -f, --file=NOMFICHIER nom du fichier ou du répertoire en sortie\n" +msgstr " -f, --file=FICHIER nom du fichier ou du répertoire en sortie\n" #: pg_dump.c:936 #, c-format msgid "" -" -F, --format=c|d|t|p output file format (custom, directory, " -"tar,\n" +" -F, --format=c|d|t|p output file format (custom, directory, tar,\n" " plain text (default))\n" msgstr "" " -F, --format=c|d|t|p format du fichier de sortie (personnalisé,\n" @@ -1574,9 +1530,8 @@ #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr "" -" -j, --jobs=NUMERO utilise ce nombre de jobs en parallèle " -"pour\n" -" la sauvegarde\n" +" -j, --jobs=NUMERO utilise ce nombre de jobs en parallèle pour la\n" +" sauvegarde\n" #: pg_dump.c:939 pg_dumpall.c:582 #, c-format @@ -1585,41 +1540,35 @@ #: pg_dump.c:940 pg_dumpall.c:583 #, c-format -msgid "" -" -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version affiche la version puis quitte\n" #: pg_dump.c:941 #, c-format -msgid "" -" -Z, --compress=0-9 compression level for compressed formats\n" +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" +" -Z, --compress=0-9 niveau de compression pour les formats compressés\n" #: pg_dump.c:942 pg_dumpall.c:584 #, c-format -msgid "" -" --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table " -"lock\n" +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" +" --lock-wait-timeout=DÉLAI échec après l'attente du DÉLAI pour un verrou\n" " de table\n" #: pg_dump.c:943 pg_dumpall.c:607 #, c-format msgid "" -" --no-sync do not wait for changes to be written " -"safely to disk\n" +" --no-sync do not wait for changes to be written safely to " +"disk\n" msgstr "" -" --no-sync n'attend pas que les modifications soient " -"proprement écrites sur disque\n" +" --no-sync n'attend pas que les modifications soient\n" +" proprement écrites sur disque\n" #: pg_dump.c:944 pg_dumpall.c:585 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" #: pg_dump.c:946 pg_dumpall.c:586 #, c-format @@ -1634,54 +1583,45 @@ #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr "" -" -a, --data-only sauvegarde uniquement les données, pas le\n" -" schéma\n" +" -a, --data-only sauvegarde uniquement les données, pas le schéma\n" #: pg_dump.c:948 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr "" -" -b, --blobs inclut les « Large Objects » dans la\n" -" sauvegarde\n" +" -b, --blobs inclut les « Large Objects » dans la sauvegarde\n" #: pg_dump.c:949 #, c-format msgid " -B, --no-blobs exclude large objects in dump\n" msgstr "" -" -B, --no-blobs exclut les « Large Objects » dans la\n" -" sauvegarde\n" +" -B, --no-blobs exclut les « Large Objects » dans la sauvegarde\n" #: pg_dump.c:950 pg_restore.c:463 #, c-format msgid "" -" -c, --clean clean (drop) database objects before " -"recreating\n" +" -c, --clean clean (drop) database objects before recreating\n" msgstr "" -" -c, --clean nettoie/supprime les objets de la base de\n" -" données avant de les créer\n" +" -c, --clean nettoie/supprime les objets de la base de données\n" +" avant de les créer\n" #: pg_dump.c:951 #, c-format -msgid "" -" -C, --create include commands to create database in " -"dump\n" +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" +" -C, --create inclut les commandes de création de la base dans\n" +" la sauvegarde\n" #: pg_dump.c:952 #, 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" +" -E, --encoding=ENCODAGE sauvegarde les données dans l'encodage ENCODAGE\n" #: pg_dump.c:953 #, 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" +msgstr " -n, --schema=SCHÉMA sauvegarde uniquement le schéma indiqué\n" #: pg_dump.c:954 #, c-format @@ -1699,32 +1639,28 @@ " -O, --no-owner skip restoration of object ownership in\n" " plain-text format\n" msgstr "" -" -O, --no-owner ne sauvegarde pas les propriétaires des\n" -" objets lors de l'utilisation du format " -"texte\n" +" -O, --no-owner ne sauvegarde pas les propriétaires des objets\n" +" lors de l'utilisation du format texte\n" #: pg_dump.c:958 pg_dumpall.c:593 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr "" -" -s, --schema-only sauvegarde uniquement la structure, pas " -"les\n" +" -s, --schema-only sauvegarde uniquement la structure, pas les\n" " données\n" #: pg_dump.c:959 #, c-format msgid "" -" -S, --superuser=NAME superuser user name to use in plain-text " -"format\n" +" -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" +" -S, --superuser=NOM indique le nom du super-utilisateur à utiliser\n" +" avec le format texte\n" #: pg_dump.c:960 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" -msgstr "" -" -t, --table=TABLE sauvegarde uniquement la table indiquée\n" +msgstr " -t, --table=TABLE sauvegarde uniquement la table indiquée\n" #: pg_dump.c:961 #, c-format @@ -1733,24 +1669,21 @@ #: pg_dump.c:962 pg_dumpall.c:596 #, c-format -msgid "" -" -x, --no-privileges do not dump privileges (grant/revoke)\n" +msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr "" -" -x, --no-privileges ne sauvegarde pas les droits sur les " -"objets\n" +" -x, --no-privileges ne sauvegarde pas les droits sur les objets\n" #: pg_dump.c:963 pg_dumpall.c:597 #, 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" +" --binary-upgrade à n'utiliser que par les outils de mise à jour\n" +" seulement\n" #: pg_dump.c:964 pg_dumpall.c:598 #, c-format msgid "" -" --column-inserts dump data as INSERT commands with column " -"names\n" +" --column-inserts dump data as INSERT commands with column names\n" msgstr "" " --column-inserts sauvegarde les données avec des commandes\n" " INSERT en précisant les noms des colonnes\n" @@ -1758,57 +1691,47 @@ #: pg_dump.c:965 pg_dumpall.c:599 #, c-format msgid "" -" --disable-dollar-quoting disable dollar quoting, use SQL standard " -"quoting\n" +" --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr "" -" --disable-dollar-quoting désactive l'utilisation des guillemets\n" -" dollar dans le but de respecter le " -"standard\n" -" SQL en matière de guillemets\n" +" --disable-dollar-quoting désactive l'utilisation des guillemets dollar\n" +" dans le but de respecter le standard SQL en\n" +" matière de guillemets\n" #: pg_dump.c:966 pg_dumpall.c:600 pg_restore.c:480 #, c-format -msgid "" -" --disable-triggers disable triggers during data-only restore\n" +msgid " --disable-triggers disable triggers during data-only restore\n" msgstr "" -" --disable-triggers désactive les triggers en mode de " -"restauration\n" +" --disable-triggers désactive les triggers en mode de restauration\n" " des données seules\n" #: pg_dump.c:967 #, c-format msgid "" -" --enable-row-security enable row security (dump only content user " -"has\n" +" --enable-row-security enable row security (dump only content user has\n" " access to)\n" msgstr "" -" --enable-row-security active la sécurité niveau ligne (et donc" -"\\n\n" -" sauvegarde uniquement le contenu visible par" -"\\n\n" +" --enable-row-security active la sécurité niveau ligne (et donc\n" +" sauvegarde uniquement le contenu visible par\n" " cet utilisateur)\n" #: pg_dump.c:969 #, c-format -msgid "" -" --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" +msgid " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" msgstr " --exclude-table-data=TABLE ne sauvegarde pas la table indiquée\n" #: pg_dump.c:970 pg_dumpall.c:601 pg_restore.c:482 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr "" -" --if-exists utilise IF EXISTS lors de la suppression " -"des objets\n" +" --if-exists utilise IF EXISTS lors de la suppression des\n" +" objets\n" #: pg_dump.c:971 pg_dumpall.c:602 #, c-format msgid "" -" --inserts dump data as INSERT commands, rather than " -"COPY\n" +" --inserts dump data as INSERT commands, rather than COPY\n" msgstr "" -" --inserts sauvegarde les données avec des " -"instructions\n" +" --inserts sauvegarde les données avec des instructions\n" " INSERT plutôt que COPY\n" #: pg_dump.c:972 pg_dumpall.c:603 @@ -1818,11 +1741,9 @@ #: pg_dump.c:973 pg_dumpall.c:605 #, c-format -msgid "" -" --no-security-labels do not dump security label assignments\n" +msgid " --no-security-labels do not dump security label assignments\n" msgstr "" -" --no-security-labels ne sauvegarde pas les affectations de " -"labels de\n" +" --no-security-labels ne sauvegarde pas les affectations de labels de\n" " sécurité\n" #: pg_dump.c:974 pg_dumpall.c:606 @@ -1833,32 +1754,29 @@ #: pg_dump.c:975 #, c-format msgid "" -" --no-synchronized-snapshots do not use synchronized snapshots in " -"parallel jobs\n" +" --no-synchronized-snapshots do not use synchronized snapshots in parallel " +"jobs\n" msgstr "" -" --no-synchronized-snapshots n'utilise pas de snapshots synchronisés " -"pour les jobs en parallèle\n" +" --no-synchronized-snapshots n'utilise pas de snapshots synchronisés pour les\n" +" jobs en parallèle\n" #: pg_dump.c:976 pg_dumpall.c:608 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr "" -" --no-tablespaces ne sauvegarde pas les affectations de\n" -" tablespaces\n" +" --no-tablespaces ne sauvegarde pas les affectations de tablespaces\n" #: pg_dump.c:977 pg_dumpall.c:609 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr "" -" --no-unlogged-table-data ne sauvegarde pas les données des tables " -"non\n" +" --no-unlogged-table-data ne sauvegarde pas les données des tables non\n" " journalisées\n" #: pg_dump.c:978 pg_dumpall.c:610 #, c-format msgid "" -" --quote-all-identifiers quote all identifiers, even if not key " -"words\n" +" --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr "" " --quote-all-identifiers met entre guillemets tous les identifiants\n" " même s'il ne s'agit pas de mots clés\n" @@ -1866,18 +1784,15 @@ #: pg_dump.c:979 #, c-format msgid "" -" --section=SECTION dump named section (pre-data, data, or post-" -"data)\n" +" --section=SECTION dump named section (pre-data, data, or post-data)\n" msgstr "" -" --section=SECTION sauvegarde la section indiquée (pre-data, " -"data\n" +" --section=SECTION sauvegarde la section indiquée (pre-data, data\n" " ou post-data)\n" #: pg_dump.c:980 #, c-format msgid "" -" --serializable-deferrable wait until the dump can run without " -"anomalies\n" +" --serializable-deferrable wait until the dump can run without anomalies\n" msgstr "" " --serializable-deferrable attend jusqu'à ce que la sauvegarde puisse\n" " s'exécuter sans anomalies\n" @@ -1885,34 +1800,28 @@ #: pg_dump.c:981 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" -msgstr "" -" --snapshot=SNAPSHOT utilise l'image donnée pour la sauvegarde\n" +msgstr " --snapshot=SNAPSHOT utilise l'image donnée pour la sauvegarde\n" #: pg_dump.c:982 pg_restore.c:490 #, c-format msgid "" -" --strict-names require table and/or schema include " -"patterns to\n" +" --strict-names require table and/or schema include patterns to\n" " match at least one entity each\n" msgstr "" -" --strict-names requiert que le motifs de table et/ou " -"schéma\n" -" correspondent à au moins une entité de " -"chaque\n" +" --strict-names requiert que les motifs de table et/ou schéma\n" +" correspondent à au moins une entité de chaque\n" #: pg_dump.c:984 pg_dumpall.c:611 pg_restore.c:492 #, c-format msgid "" " --use-set-session-authorization\n" -" use SET SESSION AUTHORIZATION commands " -"instead of\n" +" use SET SESSION AUTHORIZATION commands instead of\n" " ALTER OWNER commands to set ownership\n" msgstr "" " --use-set-session-authorization\n" -" utilise les commandes SET SESSION " -"AUTHORIZATION\n" -" au lieu des commandes ALTER OWNER pour\n" -" modifier les propriétaires\n" +" utilise les commandes SET SESSION AUTHORIZATION\n" +" au lieu des commandes ALTER OWNER pour modifier\n" +" les propriétaires\n" #: pg_dump.c:988 pg_dumpall.c:615 pg_restore.c:496 #, c-format @@ -1926,21 +1835,20 @@ #: pg_dump.c:989 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" -msgstr " -d, --dbname=NOMBASE base de données à sauvegarder\n" +msgstr " -d, --dbname=BASE base de données à sauvegarder\n" #: pg_dump.c:990 pg_dumpall.c:617 pg_restore.c:497 #, 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" +" -h, --host=HÔTE hôte du serveur de bases de données ou\n" " répertoire des sockets\n" #: pg_dump.c:991 pg_dumpall.c:619 pg_restore.c:498 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr "" -" -p, --port=PORT numéro de port du serveur de bases de\n" -" données\n" +" -p, --port=PORT numéro de port du serveur de bases de données\n" #: pg_dump.c:992 pg_dumpall.c:620 pg_restore.c:499 #, c-format @@ -1955,17 +1863,14 @@ #: pg_dump.c:994 pg_dumpall.c:622 pg_restore.c:501 #, c-format msgid "" -" -W, --password force password prompt (should happen " -"automatically)\n" +" -W, --password force password prompt (should happen automatically)\n" msgstr "" -" -W, --password force la demande du mot de passe (par\n" -" défaut)\n" +" -W, --password force la demande du mot de passe (par défaut)\n" #: pg_dump.c:995 pg_dumpall.c:623 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" -msgstr "" -" --role=NOMROLE exécute SET ROLE avant la sauvegarde\n" +msgstr " --role=ROLE exécute SET ROLE avant la sauvegarde\n" #: pg_dump.c:997 #, c-format @@ -1990,7 +1895,7 @@ msgid "invalid client encoding \"%s\" specified\n" msgstr "encodage client indiqué (« %s ») invalide\n" -#: pg_dump.c:1158 +#: pg_dump.c:1155 #, c-format msgid "" "Synchronized snapshots on standby servers are not supported by this server " @@ -1998,276 +1903,252 @@ "Run with --no-synchronized-snapshots instead if you do not need\n" "synchronized snapshots.\n" msgstr "" -"Les snapshots synchronisés sur les serveurs standbys ne sont pas supportés " -"par cette version serveur.\n" -"Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas " -"besoin\n" +"Les snapshots synchronisés sur les serveurs standbys ne sont pas supportés par " +"cette version serveur.\n" +"Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas besoin\n" "de snapshots synchronisés.\n" -#: pg_dump.c:1227 +#: pg_dump.c:1224 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "format de sortie « %s » invalide\n" -#: pg_dump.c:1265 +#: pg_dump.c:1262 #, c-format msgid "no matching schemas were found for pattern \"%s\"\n" msgstr "aucun schéma correspondant n'a été trouvé avec le motif « %s »\n" -#: pg_dump.c:1329 +#: pg_dump.c:1326 #, c-format msgid "no matching tables were found for pattern \"%s\"\n" msgstr "aucune table correspondante n'a été trouvée avec le motif « %s »\n" -#: pg_dump.c:1733 +#: pg_dump.c:1730 #, c-format msgid "dumping contents of table \"%s.%s\"\n" msgstr "sauvegarde du contenu de la table « %s.%s »\n" -#: pg_dump.c:1840 +#: pg_dump.c:1837 #, c-format -msgid "" -"Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" +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:1841 pg_dump.c:1851 +#: pg_dump.c:1838 pg_dump.c:1848 #, c-format msgid "Error message from server: %s" msgstr "Message d'erreur du serveur : %s" -#: pg_dump.c:1842 pg_dump.c:1852 +#: pg_dump.c:1839 pg_dump.c:1849 #, c-format msgid "The command was: %s\n" msgstr "La commande était : %s\n" -#: pg_dump.c:1850 +#: pg_dump.c:1847 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "" "La sauvegarde du contenu de la table « %s » a échoué : échec de\n" "PQgetResult().\n" -#: pg_dump.c:2494 +#: pg_dump.c:2491 #, c-format msgid "saving database definition\n" msgstr "sauvegarde de la définition de la base de données\n" -#: pg_dump.c:2804 +#: pg_dump.c:2801 #, c-format msgid "saving encoding = %s\n" msgstr "encodage de la sauvegarde = %s\n" -#: pg_dump.c:2831 +#: pg_dump.c:2828 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "standard_conforming_strings de la sauvegarde = %s\n" -#: pg_dump.c:2871 +#: pg_dump.c:2868 #, c-format msgid "could not parse result of current_schemas()\n" msgstr "n'a pas pu analyser le résultat de current_schema()\n" -#: pg_dump.c:2891 +#: pg_dump.c:2888 #, c-format msgid "saving search_path = %s\n" msgstr "sauvegarde de search_path = %s\n" -#: pg_dump.c:2934 +#: pg_dump.c:2931 #, c-format msgid "reading large objects\n" msgstr "lecture des « Large Objects »\n" -#: pg_dump.c:3122 +#: pg_dump.c:3119 #, c-format msgid "saving large objects\n" msgstr "sauvegarde des « Large Objects »\n" -#: pg_dump.c:3164 +#: pg_dump.c:3161 #, c-format msgid "error reading large object %u: %s" msgstr "erreur lors de la lecture du « Large Object » %u : %s" -#: pg_dump.c:3217 -#, c-format -msgid "reading row security enabled for table \"%s.%s\"\n" -msgstr "" -"lecture de l'activation de la sécurité niveau ligne pour la table « %s.%s " -"»\n" - -#: pg_dump.c:3249 +#: pg_dump.c:3246 #, c-format -msgid "reading policies for table \"%s.%s\"\n" -msgstr "lecture des politiques pour la table « %s.%s »\n" +msgid "reading row-level security policies\n" +msgstr "lecture des politiques de sécurité au niveau ligne\n" -#: pg_dump.c:3401 +#: pg_dump.c:3389 #, c-format msgid "unexpected policy command type: %c\n" msgstr "type de commande inattendu pour la politique : %c\n" -#: pg_dump.c:3530 +#: pg_dump.c:3521 #, c-format msgid "WARNING: owner of publication \"%s\" appears to be invalid\n" -msgstr "" -"ATTENTION : le propriétaire de la publication « %s » semble être invalide\n" +msgstr "ATTENTION : le propriétaire de la publication « %s » semble être invalide\n" -#: pg_dump.c:3661 +#: pg_dump.c:3801 #, c-format -msgid "reading publication membership for table \"%s.%s\"\n" -msgstr "lecture des appartenances aux publications pour la table « %s.%s »\n" - -#: pg_dump.c:3807 -#, c-format -msgid "" -"WARNING: subscriptions not dumped because current user is not a superuser\n" +msgid "WARNING: subscriptions not dumped because current user is not a superuser\n" msgstr "" -"ATTENTION : les souscriptions ne sont pas sauvegardées parce que " -"l'utilisateur courant n'est pas un superutilisateur\n" +"ATTENTION : les souscriptions ne sont pas sauvegardées parce que l'utilisateur " +"courant n'est pas un superutilisateur\n" -#: pg_dump.c:3861 +#: pg_dump.c:3855 #, c-format msgid "WARNING: owner of subscription \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : le propriétaire de la souscription « %s » semble être " -"invalide\n" +"ATTENTION : le propriétaire de la souscription « %s » semble être invalide\n" -#: pg_dump.c:3906 +#: pg_dump.c:3900 #, c-format msgid "WARNING: could not parse subpublications array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau de sous-publications\n" -#: pg_dump.c:4193 +#: pg_dump.c:4187 #, c-format msgid "could not find parent extension for %s %s\n" msgstr "n'a pas pu trouver l'extension parent pour %s %s\n" -#: pg_dump.c:4348 +#: pg_dump.c:4342 #, 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:4371 +#: pg_dump.c:4365 #, 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:4696 +#: pg_dump.c:4691 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : le propriétaire du type de données « %s » semble être " -"invalide\n" +"ATTENTION : le propriétaire du type de données « %s » semble être invalide\n" -#: pg_dump.c:4781 +#: pg_dump.c:4776 #, 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" +msgstr "ATTENTION : le propriétaire de l'opérateur « %s » semble être invalide\n" -#: pg_dump.c:5083 +#: pg_dump.c:5078 #, 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:5167 +#: pg_dump.c:5162 #, 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:5331 +#: pg_dump.c:5326 #, 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:5587 +#: pg_dump.c:5582 #, 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" +msgstr "ATTENTION : le propriétaire de la fonction « %s » semble être invalide\n" -#: pg_dump.c:6365 +#: pg_dump.c:6360 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" -msgstr "" -"ATTENTION : le propriétaire de la table « %s » semble être invalide\n" +msgstr "ATTENTION : le propriétaire de la table « %s » semble être invalide\n" -#: pg_dump.c:6407 pg_dump.c:16449 +#: pg_dump.c:6402 pg_dump.c:16444 #, c-format msgid "" -"failed sanity check, parent table with OID %u of sequence with OID %u not " -"found\n" +"failed sanity check, parent table with OID %u of sequence with OID %u not found\n" msgstr "" "vérification échouée, OID %u de la table parent de l'OID %u de la séquence " "introuvable\n" -#: pg_dump.c:6547 +#: pg_dump.c:6542 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "lecture des index de la table « %s.%s »\n" -#: pg_dump.c:6877 +#: pg_dump.c:6872 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "lecture des contraintes de clés étrangères pour la table « %s.%s »\n" -#: pg_dump.c:7086 +#: pg_dump.c:7081 #, c-format msgid "" -"failed sanity check, parent table with OID %u of pg_rewrite entry with OID " -"%u not found\n" +"failed sanity check, parent table with OID %u of pg_rewrite entry with OID %u not " +"found\n" msgstr "" -"vérification échouée, OID %u de la table parent de l'OID %u de l'entrée " -"de\n" +"vérification échouée, OID %u de la table parent de l'OID %u de l'entrée de\n" "pg_rewrite introuvable\n" -#: pg_dump.c:7170 +#: pg_dump.c:7165 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "lecture des triggers pour la table « %s.%s »\n" -#: pg_dump.c:7303 +#: pg_dump.c:7298 #, c-format msgid "" -"query produced null referenced table name for foreign key trigger \"%s\" " -"on table \"%s\" (OID of table: %u)\n" +"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" +"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:7857 +#: pg_dump.c:7852 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "recherche des colonnes et types de la table « %s.%s »\n" -#: pg_dump.c:8022 +#: pg_dump.c:8017 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "numérotation des colonnes invalide pour la table « %s »\n" -#: pg_dump.c:8058 +#: pg_dump.c:8053 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "recherche des expressions par défaut de la table « %s.%s »\n" -#: pg_dump.c:8081 +#: pg_dump.c:8076 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "valeur adnum %d invalide pour la table « %s »\n" -#: pg_dump.c:8147 +#: pg_dump.c:8142 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "recherche des contraintes de vérification pour la table « %s.%s »\n" -#: pg_dump.c:8196 +#: pg_dump.c:8191 #, 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" @@ -2278,230 +2159,219 @@ "%d contraintes de vérification attendues pour la table « %s » mais %d\n" "trouvées\n" -#: pg_dump.c:8200 +#: pg_dump.c:8195 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Les catalogues système sont peut-être corrompus.)\n" -#: pg_dump.c:9749 +#: pg_dump.c:9744 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : la colonne typtype du type de données « %s » semble être " -"invalide\n" +"ATTENTION : la colonne typtype du type de données « %s » semble être invalide\n" -#: pg_dump.c:11095 +#: pg_dump.c:11090 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "ATTENTION : valeur erronée dans le tableau proargmodes\n" -#: pg_dump.c:11416 +#: pg_dump.c:11411 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proallargtypes\n" -#: pg_dump.c:11432 +#: pg_dump.c:11427 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proargmodes\n" -#: pg_dump.c:11446 +#: pg_dump.c:11441 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proargnames\n" -#: pg_dump.c:11457 +#: pg_dump.c:11452 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proconfig\n" -#: pg_dump.c:11528 +#: pg_dump.c:11523 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "valeur provolatile non reconnue pour la fonction « %s »\n" -#: pg_dump.c:11572 pg_dump.c:13544 +#: pg_dump.c:11567 pg_dump.c:13539 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "valeur proparallel non reconnue pour la fonction « %s »\n" -#: pg_dump.c:11712 pg_dump.c:11822 pg_dump.c:11829 +#: pg_dump.c:11707 pg_dump.c:11817 pg_dump.c:11824 #, c-format msgid "could not find function definition for function with OID %u\n" msgstr "n'a pas pu trouver la définition de la fonction d'OID %u\n" -#: pg_dump.c:11751 +#: pg_dump.c:11746 #, c-format -msgid "" -"WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" +msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "" -"ATTENTION : valeur erronée dans le champ pg_cast.castfunc ou pg_cast." -"castmethod\n" +"ATTENTION : valeur erronée dans le champ pg_cast.castfunc ou pg_cast.castmethod\n" -#: pg_dump.c:11754 +#: pg_dump.c:11749 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "ATTENTION : valeur erronée dans pg_cast.castmethod\n" -#: pg_dump.c:11848 +#: pg_dump.c:11843 #, c-format msgid "" -"WARNING: bogus transform definition, at least one of trffromsql and " -"trftosql should be nonzero\n" +"WARNING: bogus transform definition, at least one of trffromsql and trftosql " +"should be nonzero\n" msgstr "" -"ATTENTION : définition de transformation invalide, au moins un de " -"trffromsql et trftosql ne doit pas valoir 0\n" +"ATTENTION : définition de transformation invalide, au moins un de trffromsql et " +"trftosql ne doit pas valoir 0\n" -#: pg_dump.c:11865 +#: pg_dump.c:11860 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "ATTENTION : valeur erronée dans pg_transform.trffromsql\n" -#: pg_dump.c:11886 +#: pg_dump.c:11881 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "ATTENTION : valeur erronée dans pg_transform.trftosql\n" -#: pg_dump.c:12202 +#: pg_dump.c:12197 #, 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:12267 +#: pg_dump.c:12262 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "ATTENTION : type « %c » invalide de la méthode d'accès « %s »\n" -#: pg_dump.c:13019 +#: pg_dump.c:13014 #, c-format msgid "unrecognized collation provider: %s\n" msgstr "fournisseur de collationnement non reconnu : %s\n" -#: pg_dump.c:13454 +#: pg_dump.c:13449 #, c-format msgid "" -"WARNING: aggregate function %s could not be dumped correctly for this " -"database version; ignored\n" +"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:14254 +#: pg_dump.c:14249 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "type d'objet inconnu dans les droits par défaut : %d\n" -#: pg_dump.c:14272 +#: pg_dump.c:14267 #, 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:14359 +#: pg_dump.c:14354 #, c-format msgid "" -"could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list " -"(%s) for object \"%s\" (%s)\n" +"could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for " +"object \"%s\" (%s)\n" msgstr "" -"n'a pas pu analyser la liste GRANT ACL initiale (%s) ou la liste REVOKE " -"ACL initiale (%s) de l'objet « %s » (%s)\n" +"n'a pas pu analyser la liste GRANT ACL initiale (%s) ou la liste REVOKE ACL " +"initiale (%s) de l'objet « %s » (%s)\n" -#: pg_dump.c:14368 +#: pg_dump.c:14363 #, c-format msgid "" "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s" "\" (%s)\n" msgstr "" -"n'a pas pu analyser la liste GRANT ACL (%s) ou REVOKE ACL (%s) de l'objet " -"« %s » (%s)\n" +"n'a pas pu analyser la liste GRANT ACL (%s) ou REVOKE ACL (%s) de l'objet « %s " +"» (%s)\n" -#: pg_dump.c:14880 +#: pg_dump.c:14875 #, 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" +"la requête permettant d'obtenir la définition de la vue « %s » n'a renvoyé\n" "aucune donnée\n" -#: pg_dump.c:14883 +#: pg_dump.c:14878 #, c-format msgid "" -"query to obtain definition of view \"%s\" returned more than one " -"definition\n" +"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:14890 +#: pg_dump.c:14885 #, 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:15421 +#: pg_dump.c:15416 #, c-format msgid "invalid number of parents %d for table \"%s\"\n" msgstr "nombre de parents invalide (%d) pour la table « %s »\n" -#: pg_dump.c:15754 +#: pg_dump.c:15749 #, 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:15956 +#: pg_dump.c:15951 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "index manquant pour la contrainte « %s »\n" -#: pg_dump.c:16157 +#: pg_dump.c:16152 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "type de contrainte inconnu : %c\n" -#: pg_dump.c:16293 pg_dump.c:16514 +#: pg_dump.c:16288 pg_dump.c:16509 #, 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" +msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "" -"la requête permettant d'obtenir les données de la séquence « %s » a " -"renvoyé\n" +"la requête permettant d'obtenir les données de la séquence « %s » a renvoyé\n" "%d ligne (une seule attendue)\n" msgstr[1] "" -"la requête permettant d'obtenir les données de la séquence « %s » a " -"renvoyé\n" +"la requête permettant d'obtenir les données de la séquence « %s » a renvoyé\n" "%d lignes (une seule attendue)\n" -#: pg_dump.c:16327 +#: pg_dump.c:16322 #, c-format msgid "unrecognized sequence type: %s\n" msgstr "type de séquence non reconnu : « %s »\n" -#: pg_dump.c:16612 +#: pg_dump.c:16607 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "valeur tgtype inattendue : %d\n" -#: pg_dump.c:16686 +#: pg_dump.c:16681 #, 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" +msgstr "chaîne argument invalide (%s) pour le trigger « %s » sur la table « %s »\n" -#: pg_dump.c:16922 +#: pg_dump.c:16917 #, c-format msgid "" -"query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " -"returned\n" +"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" +"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:17303 +#: pg_dump.c:17298 #, c-format msgid "reading dependency data\n" msgstr "lecture des données de dépendance\n" -#: pg_dump.c:17780 +#: pg_dump.c:17783 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau reloptions\n" @@ -2546,8 +2416,8 @@ #: pg_dump_sort.c:1242 #, c-format msgid "" -"You might not be able to restore the dump without using --disable-triggers " -"or temporarily dropping the constraints.\n" +"You might not be able to restore the dump without using --disable-triggers or " +"temporarily dropping the constraints.\n" msgstr "" "Il est possible que vous ne puissiez pas restaurer la sauvegarde sans\n" "utiliser --disable-triggers ou sans supprimer temporairement les\n" @@ -2556,19 +2426,16 @@ #: pg_dump_sort.c:1243 #, c-format msgid "" -"Consider using a full dump instead of a --data-only dump to avoid this " -"problem.\n" +"Consider using a full dump instead of a --data-only dump to avoid this problem.\n" msgstr "" -"Considérez l'utilisation d'une sauvegarde complète au lieu d'une " -"sauvegarde\n" +"Considérez l'utilisation d'une sauvegarde complète au lieu d'une sauvegarde\n" "des données seulement pour éviter ce problème.\n" #: pg_dump_sort.c:1255 #, c-format msgid "WARNING: could not resolve dependency loop among these items:\n" msgstr "" -"ATTENTION : n'a pas pu résoudre la boucle de dépendances parmi ces " -"éléments :\n" +"ATTENTION : n'a pas pu résoudre la boucle de dépendances parmi ces éléments :\n" #: pg_dumpall.c:191 #, c-format @@ -2577,8 +2444,7 @@ "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Le programme « pg_dump » est nécessaire à %s mais n'a pas été trouvé dans " -"le\n" +"Le programme « pg_dump » est nécessaire à %s mais n'a pas été trouvé dans le\n" "même répertoire que « %s ».\n" "Vérifiez votre installation.\n" @@ -2595,18 +2461,15 @@ #: pg_dumpall.c:333 #, c-format -msgid "" -"%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" +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" +"%s : les options « -g/--globals-only » et « -r/--roles-only » ne peuvent pas\n" "être utilisées conjointement\n" #: pg_dumpall.c:342 #, c-format msgid "" -"%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " -"together\n" +"%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" @@ -2619,11 +2482,9 @@ #: pg_dumpall.c:358 #, c-format msgid "" -"%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " -"together\n" +"%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" +"%s : les options « -r/--roles-only » et « -t/--tablespaces-only » ne peuvent\n" "pas être utilisées conjointement\n" #: pg_dumpall.c:414 pg_dumpall.c:2054 @@ -2663,24 +2524,20 @@ #: pg_dumpall.c:581 #, c-format msgid " -f, --file=FILENAME output file name\n" -msgstr " -f, --file=NOMFICHIER nom du fichier de sortie\n" +msgstr " -f, --file=FICHIER nom du fichier de sortie\n" #: pg_dumpall.c:588 #, c-format -msgid "" -" -c, --clean clean (drop) databases before recreating\n" +msgid " -c, --clean clean (drop) databases before recreating\n" msgstr "" -" -c, --clean nettoie (supprime) les bases de données " -"avant de\n" +" -c, --clean nettoie (supprime) les bases de données avant de\n" " les créer\n" #: pg_dumpall.c:589 #, c-format -msgid "" -" -g, --globals-only dump only global objects, no databases\n" +msgid " -g, --globals-only dump only global objects, no databases\n" msgstr "" -" -g, --globals-only sauvegarde uniquement les objets système, " -"pas\n" +" -g, --globals-only sauvegarde uniquement les objets système, pas\n" " le contenu des bases de données\n" #: pg_dumpall.c:591 pg_restore.c:472 @@ -2693,57 +2550,48 @@ #: pg_dumpall.c:592 #, c-format msgid "" -" -r, --roles-only dump only roles, no databases or " -"tablespaces\n" +" -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr "" -" -r, --roles-only sauvegarde uniquement les rôles, pas les " -"bases\n" +" -r, --roles-only sauvegarde uniquement les rôles, pas les bases\n" " de données ni les tablespaces\n" #: pg_dumpall.c:594 #, c-format -msgid "" -" -S, --superuser=NAME superuser user name to use in the dump\n" +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" +" -S, --superuser=NOM indique le nom du super-utilisateur à utiliser\n" " avec le format texte\n" #: pg_dumpall.c:595 #, c-format msgid "" -" -t, --tablespaces-only dump only tablespaces, no databases or " -"roles\n" +" -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr "" -" -t, --tablespaces-only sauvegarde uniquement les tablespaces, pas " -"les\n" +" -t, --tablespaces-only sauvegarde uniquement les tablespaces, pas les\n" " bases de données ni les rôles\n" #: pg_dumpall.c:604 #, c-format msgid " --no-role-passwords do not dump passwords for roles\n" msgstr "" -" --no-role-passwords ne sauvegarde pas les mots de passe des " -"rôles\n" +" --no-role-passwords ne sauvegarde pas les mots de passe des rôles\n" #: pg_dumpall.c:616 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr "" -" -d, --dbname=CHAINE_CONN connexion à l'aide de la chaîne de " -"connexion\n" +" -d, --dbname=CHAÎNE_CONNEX connexion à l'aide de la chaîne de connexion\n" #: pg_dumpall.c:618 #, c-format msgid " -l, --database=DBNAME alternative default database\n" -msgstr " -l, --database=NOM_BASE indique une autre base par défaut\n" +msgstr " -l, --database=BASE indique une autre base par défaut\n" #: pg_dumpall.c:625 #, c-format msgid "" "\n" -"If -f/--file is not used, then the SQL script will be written to the " -"standard\n" +"If -f/--file is not used, then the SQL script will be written to the standard\n" "output.\n" "\n" msgstr "" @@ -2760,15 +2608,13 @@ #: pg_dumpall.c:1231 #, 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" +msgstr "%s : n'a pas pu analyser la liste d'ACL (%s) pour le tablespace « %s »\n" #: pg_dumpall.c:1566 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "" -"%s : n'a pas pu analyser la liste d'ACL (%s) pour la base de données « %s " -"»\n" +"%s : n'a pas pu analyser la liste d'ACL (%s) pour la base de données « %s »\n" #: pg_dumpall.c:1806 #, c-format @@ -2829,11 +2675,9 @@ #: pg_restore.c:320 #, c-format -msgid "" -"%s: options -s/--schema-only and -a/--data-only cannot be used together\n" +msgid "%s: options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" -"%s : les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas " -"être\n" +"%s : les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas être\n" "utilisées conjointement\n" #: pg_restore.c:327 @@ -2862,11 +2706,9 @@ #: pg_restore.c:394 #, c-format -msgid "" -"unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"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" +"format d'archive « %s » non reconnu ; merci d'indiquer « c », « d » ou « t »\n" #: pg_restore.c:434 #, c-format @@ -2879,9 +2721,8 @@ "%s restores a PostgreSQL database from an archive created by pg_dump.\n" "\n" msgstr "" -"%s restaure une base de données PostgreSQL à partir d'une archive créée " -"par\n" -"pg_dump.\n" +"%s restaure une base de données PostgreSQL à partir d'une archive créée\n" +"par pg_dump.\n" "\n" #: pg_restore.c:450 @@ -2899,23 +2740,20 @@ #: pg_restore.c:454 #, c-format msgid " -f, --file=FILENAME output file name (- for stdout)\n" -msgstr "" -" -f, --file=NOMFICHIER nom du fichier de sortie (- for stdout)\n" +msgstr " -f, --file=FICHIER nom du fichier de sortie (- for stdout)\n" #: pg_restore.c:455 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr "" -" -F, --format=c|d|t format du fichier de sauvegarde (devrait " -"être\n" +" -F, --format=c|d|t format du fichier de sauvegarde (devrait être\n" " automatique)\n" #: pg_restore.c:456 #, 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" +" -l, --list affiche la table des matières de l'archive (TOC)\n" #: pg_restore.c:457 #, c-format @@ -2945,8 +2783,7 @@ #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr "" -" -a, --data-only restaure uniquement les données, pas la\n" -" structure\n" +" -a, --data-only restaure uniquement les données, pas la structure\n" #: pg_restore.c:464 #, c-format @@ -2955,11 +2792,9 @@ #: pg_restore.c:465 #, c-format -msgid "" -" -e, --exit-on-error exit on error, default is to continue\n" +msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr "" -" -e, --exit-on-error quitte en cas d'erreur, continue par " -"défaut\n" +" -e, --exit-on-error quitte en cas d'erreur, continue par défaut\n" #: pg_restore.c:466 #, c-format @@ -2968,12 +2803,10 @@ #: pg_restore.c:467 #, c-format -msgid "" -" -j, --jobs=NUM use this many parallel jobs to restore\n" +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" +" -j, --jobs=NUMERO utilise ce nombre de jobs en parallèle pour la\n" +" restauration\n" #: pg_restore.c:468 #, c-format @@ -2981,23 +2814,19 @@ " -L, --use-list=FILENAME use table of contents from this file for\n" " selecting/ordering output\n" msgstr "" -" -L, --use-list=NOMFICHIER utilise la table des matières à partir\n" -" de ce fichier pour sélectionner/trier\n" -" la sortie\n" +" -L, --use-list=FICHIER utilise la table des matières à partir de ce\n" +" fichier pour sélectionner/trier la sortie\n" #: pg_restore.c:470 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr "" -" -n, --schema=NOM restaure uniquement les objets de ce " -"schéma\n" +" -n, --schema=NOM restaure uniquement les objets de ce schéma\n" #: pg_restore.c:471 #, c-format -msgid "" -" -N, --exclude-schema=NAME do not restore objects in this schema\n" -msgstr "" -" -N, --exclude-schema=NOM ne restaure pas les objets de ce schéma\n" +msgid " -N, --exclude-schema=NAME do not restore objects in this schema\n" +msgstr " -N, --exclude-schema=SCHEMA ne restaure pas les objets de ce schéma\n" #: pg_restore.c:473 #, c-format @@ -3008,25 +2837,21 @@ #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr "" -" -s, --schema-only restaure uniquement la structure, pas les\n" -" données\n" +" -s, --schema-only restaure uniquement la structure, pas les données\n" #: pg_restore.c:475 #, c-format msgid "" -" -S, --superuser=NAME superuser user name to use for disabling " -"triggers\n" +" -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr "" -" -S, --superuser=NOM indique le nom du super-utilisateur à\n" -" utiliser pour désactiver les triggers\n" +" -S, --superuser=NOM indique le nom du super-utilisateur à utiliser\n" +" pour désactiver les triggers\n" #: pg_restore.c:476 #, c-format -msgid "" -" -t, --table=NAME restore named relation (table, view, etc.)\n" +msgid " -t, --table=NAME restore named relation (table, view, etc.)\n" msgstr "" -" -t, --table=NOM restaure la relation indiquée (table, vue, " -"etc)\n" +" -t, --table=NOM restaure la relation indiquée (table, vue, etc)\n" #: pg_restore.c:477 #, c-format @@ -3036,11 +2861,10 @@ #: pg_restore.c:478 #, c-format msgid "" -" -x, --no-privileges skip restoration of access privileges " -"(grant/revoke)\n" +" -x, --no-privileges skip restoration of access privileges (grant/" +"revoke)\n" msgstr "" -" -x, --no-privileges omet la restauration des droits sur les " -"objets\n" +" -x, --no-privileges omet la restauration des droits sur les objets\n" " (grant/revoke)\n" #: pg_restore.c:479 @@ -3056,8 +2880,7 @@ #: pg_restore.c:483 #, c-format msgid "" -" --no-data-for-failed-tables do not restore data of tables that could " -"not be\n" +" --no-data-for-failed-tables do not restore data of tables that could not be\n" " created\n" msgstr "" " --no-data-for-failed-tables ne restaure pas les données des tables qui\n" @@ -3071,8 +2894,7 @@ #: pg_restore.c:486 #, 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" +msgstr " --no-security-labels ne restaure pas les labels de sécurité\n" #: pg_restore.c:487 #, c-format @@ -3081,40 +2903,34 @@ #: pg_restore.c:488 #, c-format -msgid "" -" --no-tablespaces do not restore tablespace assignments\n" +msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr "" -" --no-tablespaces ne restaure pas les affectations de\n" -" tablespaces\n" +" --no-tablespaces ne restaure pas les affectations de tablespaces\n" #: pg_restore.c:489 #, c-format msgid "" -" --section=SECTION restore named section (pre-data, data, or " -"post-data)\n" +" --section=SECTION restore named section (pre-data, data, or post-" +"data)\n" msgstr "" -" --section=SECTION restaure la section indiquée (pre-data, " -"data\n" +" --section=SECTION restaure la section indiquée (pre-data, data\n" " ou post-data)\n" #: pg_restore.c:502 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" -msgstr "" -" --role=NOMROLE exécute SET ROLE avant la restauration\n" +msgstr " --role=ROLE exécute SET ROLE avant la restauration\n" #: pg_restore.c:504 #, c-format msgid "" "\n" -"The options -I, -n, -N, -P, -t, -T, and --section can be combined and " -"specified\n" +"The options -I, -n, -N, -P, -t, -T, and --section can be combined and specified\n" "multiple times to select multiple objects.\n" msgstr "" "\n" -"Les options -I, -n, -N, -P, -t, -T et --section peuvent être combinées et " -"indiquées\n" -"plusieurs fois pour sélectionner plusieurs objets.\n" +"Les options -I, -n, -N, -P, -t, -T et --section peuvent être combinées et\n" +"indiquées plusieurs fois pour sélectionner plusieurs objets.\n" #: pg_restore.c:507 #, c-format @@ -3124,327 +2940,311 @@ "\n" msgstr "" "\n" -"Si aucun nom de fichier n'est fourni en entrée, alors l'entrée standard " -"est\n" +"Si aucun nom de fichier n'est fourni en entrée, alors l'entrée standard est\n" "utilisée.\n" "\n" -#~ msgid "connecting to database \"%s\" as user \"%s\"\n" -#~ msgstr "" -#~ "connexion à la base de données « %s » en tant qu'utilisateur « %s »\n" +#~ msgid "child process was terminated by signal %s" +#~ msgstr "le processus fils a été terminé par le signal %s" -#~ msgid "failed to reconnect to database\n" -#~ msgstr "la reconnexion à la base de données a échoué\n" +#~ msgid "reading extended statistics for table \"%s.%s\"\n" +#~ msgstr "lecture des statistiques étendues pour la table « %s.%s »\n" -#~ msgid "could not reconnect to database: %s" -#~ msgstr "n'a pas pu se reconnecter à la base de données : %s" +#~ msgid "worker is terminating\n" +#~ msgstr "le worker est en cours d'arrêt\n" -#~ msgid "connection needs password\n" -#~ msgstr "la connexion nécessite un mot de passe\n" +#~ msgid "could not get relation name for OID %u: %s\n" +#~ msgstr "n'a pas pu obtenir le nom de la relation pour l'OID %u: %s\n" -#~ msgid "setting owner and privileges for %s \"%s.%s\"\n" -#~ msgstr "réglage du propriétaire et des droits pour %s « %s.%s»\n" +#~ msgid "unrecognized command on communication channel: %s\n" +#~ msgstr "commande inconnue sur le canal de communucation: %s\n" -#~ msgid "setting owner and privileges for %s \"%s\"\n" -#~ msgstr "réglage du propriétaire et des droits pour %s « %s »\n" +#~ msgid "terminated by user\n" +#~ msgstr "terminé par l'utilisateur\n" -#~ msgid "" -#~ "Synchronized snapshots are not supported on standby servers.\n" -#~ "Run with --no-synchronized-snapshots instead if you do not need\n" -#~ "synchronized snapshots.\n" -#~ msgstr "" -#~ "Les snapshots synchronisés ne sont pas supportés sur les serveurs de " -#~ "stadby.\n" -#~ "Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas " -#~ "besoin\n" -#~ "de snapshots synchronisés.\n" +#~ msgid "error in ListenToWorkers(): %s\n" +#~ msgstr "erreur dans ListenToWorkers(): %s\n" -#~ msgid "error processing a parallel work item\n" -#~ msgstr "erreur durant le traitement en parallèle d'un item\n" +#~ msgid "archive member too large for tar format\n" +#~ msgstr "membre de l'archive trop volumineux pour le format tar\n" -#~ msgid "could not find slot of finished worker\n" -#~ msgstr "" -#~ "n'a pas pu trouver l'emplacement du worker qui vient de terminer\n" +#~ msgid "could not open output file \"%s\" for writing\n" +#~ msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » en écriture\n" -#~ msgid "error during backup\n" -#~ msgstr "erreur lors de la sauvegarde\n" +#~ msgid "could not write to custom output routine\n" +#~ msgstr "n'a pas pu écrire vers la routine de sauvegarde personnalisée\n" -#~ msgid "" -#~ "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" +#~ msgid "unexpected end of file\n" +#~ msgstr "fin de fichier inattendu\n" -#~ 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" +#~ msgid "could not write byte: %s\n" +#~ msgstr "n'a pas pu écrire un octet : %s\n" -#~ msgid "could not change directory to \"%s\"" -#~ msgstr "n'a pas pu accéder au répertoire « %s »" +#~ msgid "could not write byte\n" +#~ msgstr "n'a pas pu écrire l'octet\n" -#~ msgid "cannot duplicate null pointer\n" -#~ msgstr "ne peut pas dupliquer un pointeur nul\n" +#~ msgid "could not write null block at end of tar archive\n" +#~ msgstr "n'a pas pu écrire le bloc nul à la fin de l'archive tar\n" -#~ msgid "worker process crashed: status %d\n" -#~ msgstr "crash du processus worker : statut %d\n" +#~ msgid "could not output padding at end of tar member\n" +#~ msgstr "n'a pas pu remplir la fin du membre de tar\n" -#~ msgid "parallel_restore should not return\n" -#~ msgstr "parallel_restore ne devrait pas retourner\n" +#~ 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" -#~ msgid "could not create worker thread: %s\n" -#~ msgstr "n'a pas pu créer le fil de travail: %s\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide puis quitte\n" -#~ msgid "could not parse version string \"%s\"\n" -#~ msgstr "n'a pas pu analyser la chaîne de version « %s »\n" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version puis quitte\n" -#~ msgid "%s: could not parse version \"%s\"\n" -#~ msgstr "%s : n'a pas pu analyser la version « %s »\n" +#~ msgid "*** aborted because of error\n" +#~ msgstr "*** interrompu du fait d'erreurs\n" -#~ msgid "-C and -c are incompatible options\n" -#~ msgstr "-C et -c sont des options incompatibles\n" +#~ msgid "missing pg_database entry for database \"%s\"\n" +#~ msgstr "entrée manquante dans pg_database pour la base de données « %s »\n" -#~ msgid "" -#~ "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" +#~ msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n" #~ msgstr "" -#~ "instruction COPY invalide -- n'a pas pu trouver « copy » dans la chaîne " -#~ "« %s »\n" +#~ "la requête a renvoyé plusieurs (%d) entrées pg_database pour la base de\n" +#~ "données « %s »\n" -#~ msgid "" -#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s" -#~ "\" starting at position %lu\n" +#~ msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" +#~ msgstr "dumpDatabase() : n'a pas pu trouver pg_largeobject.relfrozenxid\n" + +#~ msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" #~ msgstr "" -#~ "instruction COPY invalide -- n'a pas pu trouver « from stdin » dans la\n" -#~ "chaîne « %s » à partir de la position %lu\n" +#~ "dumpDatabase() : n'a pas pu trouver pg_largeobject_metadata.relfrozenxid\n" -#~ msgid "requested %d byte, got %d from lookahead and %d from file\n" +#~ msgid "query returned %d foreign server entry for foreign table \"%s\"\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" +#~ "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] "" -#~ "%d octets requis, %d obtenus de « lookahead » et %d du fichier\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" +#~ "la requête a renvoyé %d entrées de serveurs distants pour la table distante « " +#~ "%s »\n" -#~ msgid "query returned %d rows instead of one: %s\n" -#~ msgstr "la requête a renvoyé %d lignes au lieu d'une seule : %s\n" +#~ msgid "missing pg_database entry for this database\n" +#~ msgstr "entrée pg_database manquante pour cette base de données\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 "found more than one pg_database entry for this database\n" +#~ msgstr "a trouvé plusieurs entrées dans pg_database pour cette base de données\n" -#~ msgid "compression support is disabled in this format\n" -#~ msgstr "le support de la compression est désactivé avec ce format\n" +#~ msgid "could not find entry for pg_indexes in pg_class\n" +#~ msgstr "n'a pas pu trouver l'entrée de pg_indexes dans pg_class\n" -#~ msgid "could not parse ACL (%s) for large object %u" -#~ msgstr "n'a pas pu analyser la liste ACL (%s) du « Large Object » %u" +#~ msgid "found more than one entry for pg_indexes in pg_class\n" +#~ msgstr "a trouvé plusieurs entrées pour pg_indexes dans la table pg_class\n" -#~ msgid "saving large object properties\n" -#~ msgstr "sauvegarde des propriétés des « Large Objects »\n" +#~ msgid "SQL command failed\n" +#~ msgstr "la commande SQL a échoué\n" -#~ msgid "dumpBlobs(): could not open large object %u: %s" -#~ msgstr "dumpBlobs() : n'a pas pu ouvrir le « Large Object » %u : %s" +#~ msgid "file archiver" +#~ msgstr "programme d'archivage de fichiers" #~ msgid "" -#~ "dumping a specific TOC data block out of order is not supported without " -#~ "ID on this input stream (fseek required)\n" +#~ "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 "" -#~ "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" +#~ "ATTENTION :\n" +#~ " Ce format est présent dans un but de démonstration ; il n'est pas prévu\n" +#~ " pour une utilisation normale. Les fichiers seront écrits dans le\n" +#~ " répertoire actuel.\n" -#~ msgid "query returned no rows: %s\n" -#~ msgstr "la requête n'a renvoyé aucune ligne : %s\n" +#~ msgid "could not close data file after reading\n" +#~ msgstr "n'a pas pu fermer le fichier de données après lecture\n" -#~ msgid "%s: invalid -X option -- %s\n" -#~ msgstr "%s : option -X invalide -- %s\n" +#~ msgid "could not open large object TOC for input: %s\n" +#~ msgstr "n'a pas pu ouvrir la TOC du « Large Object » en entrée : %s\n" -#~ msgid "cannot reopen non-seekable file\n" -#~ msgstr "ne peut pas rouvrir le fichier non cherchable\n" +#~ msgid "could not open large object TOC for output: %s\n" +#~ msgstr "n'a pas pu ouvrir la TOC du « Large Object » en sortie : %s\n" -#~ msgid "cannot reopen stdin\n" -#~ msgstr "ne peut pas rouvrir stdin\n" +#~ msgid "could not close large object file\n" +#~ msgstr "n'a pas pu fermer le fichier du « Large Object »\n" -#~ msgid "%s: out of memory\n" -#~ msgstr "%s : mémoire épuisée\n" +#~ msgid "restoring large object OID %u\n" +#~ msgstr "restauration du « Large Object » d'OID %u\n" -#~ msgid "" -#~ " --use-set-session-authorization\n" -#~ " use SET SESSION AUTHORIZATION commands " -#~ "instead of\n" -#~ " ALTER OWNER commands to set ownership\n" -#~ msgstr "" -#~ " --use-set-session-authorization\n" -#~ " utilise les commandes SET SESSION " -#~ "AUTHORIZATION\n" -#~ " au lieu des commandes ALTER OWNER pour " -#~ "les\n" -#~ " modifier les propriétaires\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide et quitte\n" + +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version et quitte\n" #~ msgid "" -#~ " --disable-triggers disable triggers during data-only restore\n" +#~ " -c, --clean clean (drop) database objects before recreating\n" #~ msgstr "" -#~ " --disable-triggers désactiver les déclencheurs lors de la\n" -#~ " restauration des données seules\n" +#~ " -c, --clean nettoie/supprime les bases de données avant de\n" +#~ " les créer\n" #~ msgid " -O, --no-owner skip restoration of object ownership\n" #~ msgstr "" -#~ " -O, --no-owner omettre la restauration des possessions " -#~ "des\n" +#~ " -O, --no-owner omettre la restauration des possessions des\n" #~ " objets\n" -#~ msgid "" -#~ " -c, --clean clean (drop) database objects before " -#~ "recreating\n" +#~ msgid " --disable-triggers disable triggers during data-only restore\n" #~ msgstr "" -#~ " -c, --clean nettoie/supprime les bases de données avant " -#~ "de\n" -#~ " les créer\n" - -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version et quitte\n" +#~ " --disable-triggers désactiver les déclencheurs lors de la\n" +#~ " restauration des données seules\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide et quitte\n" +#~ msgid "" +#~ " --use-set-session-authorization\n" +#~ " use SET SESSION AUTHORIZATION commands instead of\n" +#~ " ALTER OWNER commands to set ownership\n" +#~ msgstr "" +#~ " --use-set-session-authorization\n" +#~ " utilise les commandes SET SESSION " +#~ "AUTHORIZATION\n" +#~ " au lieu des commandes ALTER OWNER pour les\n" +#~ " modifier les propriétaires\n" -#~ msgid "restoring large object OID %u\n" -#~ msgstr "restauration du « Large Object » d'OID %u\n" +#~ msgid "%s: out of memory\n" +#~ msgstr "%s : mémoire épuisée\n" -#~ msgid "could not close large object file\n" -#~ msgstr "n'a pas pu fermer le fichier du « Large Object »\n" +#~ msgid "cannot reopen stdin\n" +#~ msgstr "ne peut pas rouvrir stdin\n" -#~ msgid "could not open large object TOC for output: %s\n" -#~ msgstr "n'a pas pu ouvrir la TOC du « Large Object » en sortie : %s\n" +#~ msgid "cannot reopen non-seekable file\n" +#~ msgstr "ne peut pas rouvrir le fichier non cherchable\n" -#~ msgid "could not open large object TOC for input: %s\n" -#~ msgstr "n'a pas pu ouvrir la TOC du « Large Object » en entrée : %s\n" +#~ msgid "%s: invalid -X option -- %s\n" +#~ msgstr "%s : option -X invalide -- %s\n" -#~ msgid "could not close data file after reading\n" -#~ msgstr "n'a pas pu fermer le fichier de données après lecture\n" +#~ msgid "query returned no rows: %s\n" +#~ msgstr "la requête n'a renvoyé aucune ligne : %s\n" #~ msgid "" -#~ "WARNING:\n" -#~ " This format is for demonstration purposes; it is not intended for\n" -#~ " normal use. Files will be written in the current working directory.\n" +#~ "dumping a specific TOC data block out of order is not supported without ID on " +#~ "this input stream (fseek required)\n" #~ msgstr "" -#~ "ATTENTION :\n" -#~ " Ce format est présent dans un but de démonstration ; il n'est pas " -#~ "prévu\n" -#~ " pour une utilisation normale. Les fichiers seront écrits dans le\n" -#~ " répertoire actuel.\n" - -#~ msgid "file archiver" -#~ msgstr "programme d'archivage de fichiers" +#~ "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 "SQL command failed\n" -#~ msgstr "la commande SQL a échoué\n" +#~ msgid "dumpBlobs(): could not open large object %u: %s" +#~ msgstr "dumpBlobs() : n'a pas pu ouvrir le « Large Object » %u : %s" -#~ msgid "found more than one entry for pg_indexes in pg_class\n" -#~ msgstr "" -#~ "a trouvé plusieurs entrées pour pg_indexes dans la table pg_class\n" +#~ msgid "saving large object properties\n" +#~ msgstr "sauvegarde des propriétés des « Large Objects »\n" -#~ msgid "could not find entry for pg_indexes in pg_class\n" -#~ msgstr "n'a pas pu trouver l'entrée de pg_indexes dans pg_class\n" +#~ msgid "could not parse ACL (%s) for large object %u" +#~ msgstr "n'a pas pu analyser la liste ACL (%s) du « Large Object » %u" -#~ msgid "found more than one pg_database entry for this database\n" -#~ msgstr "" -#~ "a trouvé plusieurs entrées dans pg_database pour cette base de données\n" +#~ msgid "compression support is disabled in this format\n" +#~ msgstr "le support de la compression est désactivé avec ce format\n" -#~ msgid "missing pg_database entry for this database\n" -#~ msgstr "entrée pg_database manquante pour cette base de données\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 foreign server entry for foreign table \"%s\"\n" -#~ msgid_plural "" -#~ "query returned %d foreign server entries for foreign table \"%s\"\n" -#~ msgstr[0] "" -#~ "la requête a renvoyé %d entrée de serveur distant pour la table " -#~ "distante « %s »\n" -#~ msgstr[1] "" -#~ "la requête a renvoyé %d entrées de serveurs distants pour la table " -#~ "distante « %s »\n" +#~ msgid "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 "" -#~ "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" -#~ msgstr "" -#~ "dumpDatabase() : n'a pas pu trouver pg_largeobject_metadata." -#~ "relfrozenxid\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 "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" -#~ msgstr "dumpDatabase() : n'a pas pu trouver pg_largeobject.relfrozenxid\n" +#~ msgid "requested %d byte, got %d from lookahead and %d from file\n" +#~ msgid_plural "requested %d bytes, got %d from lookahead and %d from file\n" +#~ msgstr[0] "%d octet requis, %d obtenu de « lookahead » et %d du fichier\n" +#~ msgstr[1] "%d octets requis, %d obtenus de « lookahead » et %d du fichier\n" #~ msgid "" -#~ "query returned more than one (%d) pg_database entry for database \"%s" -#~ "\"\n" +#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " +#~ "starting at position %lu\n" #~ msgstr "" -#~ "la requête a renvoyé plusieurs (%d) entrées pg_database pour la base " -#~ "de\n" -#~ "données « %s »\n" +#~ "instruction COPY invalide -- n'a pas pu trouver « from stdin » dans la\n" +#~ "chaîne « %s » à partir de la position %lu\n" -#~ msgid "missing pg_database entry for database \"%s\"\n" +#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" #~ msgstr "" -#~ "entrée manquante dans pg_database pour la base de données « %s »\n" +#~ "instruction COPY invalide -- n'a pas pu trouver « copy » dans la chaîne « %s " +#~ "»\n" -#~ msgid "*** aborted because of error\n" -#~ msgstr "*** interrompu du fait d'erreurs\n" +#~ msgid "-C and -c are incompatible options\n" +#~ msgstr "-C et -c sont des options incompatibles\n" -#~ msgid "" -#~ " --version output version information, then exit\n" -#~ msgstr " --version affiche la version puis quitte\n" +#~ msgid "%s: could not parse version \"%s\"\n" +#~ msgstr "%s : n'a pas pu analyser la version « %s »\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide puis quitte\n" +#~ msgid "could not parse version string \"%s\"\n" +#~ msgstr "n'a pas pu analyser la chaîne de version « %s »\n" -#~ msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" +#~ msgid "could not create worker thread: %s\n" +#~ msgstr "n'a pas pu créer le fil de travail: %s\n" + +#~ msgid "parallel_restore should not return\n" +#~ msgstr "parallel_restore ne devrait pas retourner\n" + +#~ msgid "worker process crashed: status %d\n" +#~ msgstr "crash du processus worker : statut %d\n" + +#~ msgid "cannot duplicate null pointer\n" +#~ msgstr "ne peut pas dupliquer un pointeur nul\n" + +#~ msgid "could not change directory to \"%s\"" +#~ msgstr "n'a pas pu accéder au répertoire « %s »" + +#~ msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" #~ msgstr "" -#~ "pas de correspondance entre la position réelle et celle prévue du " -#~ "fichier\n" -#~ "(%s vs. %s)\n" +#~ "la requête permettant d'obtenir les données de la séquence « %s » a renvoyé\n" +#~ "le nom « %s »\n" -#~ msgid "could not output padding at end of tar member\n" -#~ msgstr "n'a pas pu remplir la fin du membre de tar\n" +#~ msgid "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" -#~ msgid "could not write null block at end of tar archive\n" -#~ msgstr "n'a pas pu écrire le bloc nul à la fin de l'archive tar\n" +#~ msgid "error during backup\n" +#~ msgstr "erreur lors de la sauvegarde\n" -#~ msgid "could not write byte\n" -#~ msgstr "n'a pas pu écrire l'octet\n" +#~ msgid "could not find slot of finished worker\n" +#~ msgstr "n'a pas pu trouver l'emplacement du worker qui vient de terminer\n" -#~ msgid "could not write byte: %s\n" -#~ msgstr "n'a pas pu écrire un octet : %s\n" +#~ msgid "error processing a parallel work item\n" +#~ msgstr "erreur durant le traitement en parallèle d'un item\n" -#~ msgid "unexpected end of file\n" -#~ msgstr "fin de fichier inattendu\n" +#~ msgid "" +#~ "Synchronized snapshots are not supported on standby servers.\n" +#~ "Run with --no-synchronized-snapshots instead if you do not need\n" +#~ "synchronized snapshots.\n" +#~ msgstr "" +#~ "Les snapshots synchronisés ne sont pas supportés sur les serveurs de stadby.\n" +#~ "Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas besoin\n" +#~ "de snapshots synchronisés.\n" -#~ msgid "could not write to custom output routine\n" -#~ msgstr "n'a pas pu écrire vers la routine de sauvegarde personnalisée\n" +#~ msgid "setting owner and privileges for %s \"%s\"\n" +#~ msgstr "réglage du propriétaire et des droits pour %s « %s »\n" -#~ msgid "could not open output file \"%s\" for writing\n" -#~ msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » en écriture\n" +#~ msgid "setting owner and privileges for %s \"%s.%s\"\n" +#~ msgstr "réglage du propriétaire et des droits pour %s « %s.%s»\n" -#~ msgid "archive member too large for tar format\n" -#~ msgstr "membre de l'archive trop volumineux pour le format tar\n" +#~ msgid "connection needs password\n" +#~ msgstr "la connexion nécessite un mot de passe\n" -#~ msgid "error in ListenToWorkers(): %s\n" -#~ msgstr "erreur dans ListenToWorkers(): %s\n" +#~ msgid "could not reconnect to database: %s" +#~ msgstr "n'a pas pu se reconnecter à la base de données : %s" -#~ msgid "terminated by user\n" -#~ msgstr "terminé par l'utilisateur\n" +#~ msgid "failed to reconnect to database\n" +#~ msgstr "la reconnexion à la base de données a échoué\n" -#~ msgid "unrecognized command on communication channel: %s\n" -#~ msgstr "commande inconnue sur le canal de communucation: %s\n" +#~ msgid "connecting to database \"%s\" as user \"%s\"\n" +#~ msgstr "connexion à la base de données « %s » en tant qu'utilisateur « %s »\n" -#~ msgid "could not get relation name for OID %u: %s\n" -#~ msgstr "n'a pas pu obtenir le nom de la relation pour l'OID %u: %s\n" +#~ msgid "reading publication membership for table \"%s.%s\"\n" +#~ msgstr "lecture des appartenances aux publications pour la table « %s.%s »\n" -#~ msgid "worker is terminating\n" -#~ msgstr "le worker est en cours d'arrêt\n" +#~ msgid "reading policies for table \"%s.%s\"\n" +#~ msgstr "lecture des politiques pour la table « %s.%s »\n" -#~ msgid "reading extended statistics for table \"%s.%s\"\n" -#~ msgstr "lecture des statistiques étendues pour la table « %s.%s »\n" +#~ msgid "reading row security enabled for table \"%s.%s\"\n" +#~ msgstr "" +#~ "lecture de l'activation de la sécurité niveau ligne pour la table « %s.%s »\n" -#~ msgid "child process was terminated by signal %s" -#~ msgstr "le processus fils a été terminé par le signal %s" +#~ msgid "LOCK TABLE failed for \"%s\": %s" +#~ msgstr "LOCK TABLE échoué pour la table « %s » : %s" diff -Nru postgresql-10-10.17/src/bin/pg_dump/po/ru.po postgresql-10-10.19/src/bin/pg_dump/po/ru.po --- postgresql-10-10.17/src/bin/pg_dump/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -5,13 +5,13 @@ # Oleg Bartunov , 2004. # Sergey Burladyan , 2012. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: pg_dump (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2021-01-26 17:55+0300\n" -"PO-Revision-Date: 2020-11-09 08:28+0300\n" +"POT-Creation-Date: 2021-11-08 05:26+0300\n" +"PO-Revision-Date: 2021-09-17 06:16+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -346,13 +346,13 @@ msgstr "не удалось закрыть библиотеку сжатия: %s\n" #: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:587 -#: pg_backup_tar.c:564 pg_backup_tar.c:568 +#: pg_backup_tar.c:558 pg_backup_tar.c:562 #, c-format msgid "could not read from input file: %s\n" msgstr "не удалось прочитать входной файл: %s\n" #: compress_io.c:641 pg_backup_custom.c:584 pg_backup_directory.c:564 -#: pg_backup_tar.c:807 pg_backup_tar.c:831 +#: pg_backup_tar.c:801 pg_backup_tar.c:825 #, c-format msgid "could not read from input file: end of file\n" msgstr "не удалось прочитать входной файл: конец файла\n" @@ -402,7 +402,7 @@ #: parallel.c:1425 #, c-format msgid "a worker process died unexpectedly\n" -msgstr "рабочий процесс неожиданно прекратился\n" +msgstr "рабочий процесс неожиданно прервался\n" #: parallel.c:1549 parallel.c:1669 #, c-format @@ -595,7 +595,7 @@ msgstr[1] "восстановлено %d больших объекта\n" msgstr[2] "восстановлено %d больших объектов\n" -#: pg_backup_archiver.c:1317 pg_backup_tar.c:749 +#: pg_backup_archiver.c:1317 pg_backup_tar.c:743 #, c-format msgid "restoring large object with OID %u\n" msgstr "восстановление большого объекта с OID %u\n" @@ -701,172 +701,172 @@ msgid "attempting to ascertain archive format\n" msgstr "попытка выяснить формат архива\n" -#: pg_backup_archiver.c:2139 pg_backup_archiver.c:2149 +#: pg_backup_archiver.c:2140 pg_backup_archiver.c:2150 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "слишком длинное имя каталога: \"%s\"\n" -#: pg_backup_archiver.c:2157 +#: pg_backup_archiver.c:2158 #, 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:2165 pg_backup_custom.c:177 pg_backup_custom.c:770 +#: pg_backup_archiver.c:2166 pg_backup_custom.c:177 pg_backup_custom.c:770 #: pg_backup_directory.c:209 pg_backup_directory.c:401 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "не удалось открыть входной файл \"%s\": %s\n" -#: pg_backup_archiver.c:2173 pg_backup_custom.c:184 +#: pg_backup_archiver.c:2174 pg_backup_custom.c:184 #, c-format msgid "could not open input file: %s\n" msgstr "не удалось открыть входной файл: %s\n" -#: pg_backup_archiver.c:2180 +#: pg_backup_archiver.c:2181 #, c-format msgid "could not read input file: %s\n" msgstr "не удалось прочитать входной файл: %s\n" -#: pg_backup_archiver.c:2182 +#: pg_backup_archiver.c:2183 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "входной файл слишком короткий (прочитано байт: %lu, ожидалось: 5)\n" -#: pg_backup_archiver.c:2267 +#: pg_backup_archiver.c:2215 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "" "входной файл, видимо, имеет текстовый формат. Загрузите его с помощью psql.\n" -#: pg_backup_archiver.c:2273 +#: pg_backup_archiver.c:2221 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "входной файл не похож на архив (возможно, слишком мал?)\n" -#: pg_backup_archiver.c:2279 +#: pg_backup_archiver.c:2227 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "входной файл не похож на архив\n" -#: pg_backup_archiver.c:2299 +#: pg_backup_archiver.c:2236 #, c-format msgid "could not close input file: %s\n" msgstr "не удалось закрыть входной файл: %s\n" -#: pg_backup_archiver.c:2317 +#: pg_backup_archiver.c:2258 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "выделение структуры AH для %s, формат %d\n" -#: pg_backup_archiver.c:2416 +#: pg_backup_archiver.c:2357 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "неопознанный формат файла: \"%d\"\n" -#: pg_backup_archiver.c:2471 pg_backup_archiver.c:4364 +#: pg_backup_archiver.c:2412 pg_backup_archiver.c:4327 #, c-format msgid "finished item %d %s %s\n" msgstr "закончен объект %d %s %s\n" -#: pg_backup_archiver.c:2475 pg_backup_archiver.c:4377 +#: pg_backup_archiver.c:2416 pg_backup_archiver.c:4340 #, c-format msgid "worker process failed: exit code %d\n" msgstr "рабочий процесс завершился с кодом возврата %d\n" -#: pg_backup_archiver.c:2595 +#: pg_backup_archiver.c:2536 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "ID записи %d вне диапазона - возможно повреждено оглавление\n" -#: pg_backup_archiver.c:2711 +#: pg_backup_archiver.c:2652 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "прочитана запись оглавления %d (ID %d): %s %s\n" -#: pg_backup_archiver.c:2747 +#: pg_backup_archiver.c:2688 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "нераспознанная кодировка \"%s\"\n" -#: pg_backup_archiver.c:2752 +#: pg_backup_archiver.c:2693 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "неверный элемент ENCODING: %s\n" -#: pg_backup_archiver.c:2770 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "неверный элемент STDSTRINGS: %s\n" -#: pg_backup_archiver.c:2795 +#: pg_backup_archiver.c:2736 #, c-format msgid "schema \"%s\" not found\n" msgstr "схема \"%s\" не найдена\n" -#: pg_backup_archiver.c:2802 +#: pg_backup_archiver.c:2743 #, c-format msgid "table \"%s\" not found\n" msgstr "таблица \"%s\" не найдена\n" -#: pg_backup_archiver.c:2809 +#: pg_backup_archiver.c:2750 #, c-format msgid "index \"%s\" not found\n" msgstr "индекс \"%s\" не найден\n" -#: pg_backup_archiver.c:2816 +#: pg_backup_archiver.c:2757 #, c-format msgid "function \"%s\" not found\n" msgstr "функция \"%s\" не найдена\n" -#: pg_backup_archiver.c:2823 +#: pg_backup_archiver.c:2764 #, c-format msgid "trigger \"%s\" not found\n" msgstr "триггер \"%s\" не найден\n" -#: pg_backup_archiver.c:3135 +#: pg_backup_archiver.c:3076 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "не удалось переключить пользователя сессии на \"%s\": %s" -#: pg_backup_archiver.c:3167 +#: pg_backup_archiver.c:3108 #, c-format msgid "could not set default_with_oids: %s" msgstr "не удалось установить параметр default_with_oids: %s" -#: pg_backup_archiver.c:3314 +#: pg_backup_archiver.c:3255 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "не удалось присвоить search_path значение \"%s\": %s" -#: pg_backup_archiver.c:3376 +#: pg_backup_archiver.c:3317 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "не удалось задать для default_tablespace значение %s: %s" -#: pg_backup_archiver.c:3469 pg_backup_archiver.c:3662 +#: pg_backup_archiver.c:3410 pg_backup_archiver.c:3603 #, c-format msgid "WARNING: don't know how to set owner for object type \"%s\"\n" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: неизвестно, как назначить владельца для объекта типа \"%s\"\n" -#: pg_backup_archiver.c:3752 +#: pg_backup_archiver.c:3692 #, c-format msgid "did not find magic string in file header\n" msgstr "в заголовке файла не найдена нужная сигнатура\n" -#: pg_backup_archiver.c:3765 +#: pg_backup_archiver.c:3706 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "неподдерживаемая версия (%d.%d) в заголовке файла\n" -#: pg_backup_archiver.c:3770 +#: pg_backup_archiver.c:3711 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "несоответствие размера integer (%lu)\n" -#: pg_backup_archiver.c:3774 +#: pg_backup_archiver.c:3715 #, c-format msgid "" "WARNING: archive was made on a machine with larger integers, some operations " @@ -875,12 +875,12 @@ "ПРЕДУПРЕЖДЕНИЕ: архив был сделан на компьютере большей разрядности -- " "возможен сбой некоторых операций\n" -#: pg_backup_archiver.c:3784 +#: pg_backup_archiver.c:3725 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "ожидаемый формат (%d) отличается от формата, указанного в файле (%d)\n" -#: pg_backup_archiver.c:3800 +#: pg_backup_archiver.c:3740 #, c-format msgid "" "WARNING: archive is compressed, but this installation does not support " @@ -889,72 +889,72 @@ "ПРЕДУПРЕЖДЕНИЕ: архив сжат, но установленная версия не поддерживает сжатие " "-- данные недоступны\n" -#: pg_backup_archiver.c:3818 +#: pg_backup_archiver.c:3775 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: неверная дата создания в заголовке\n" -#: pg_backup_archiver.c:3891 +#: pg_backup_archiver.c:3854 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "вход в restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3955 +#: pg_backup_archiver.c:3918 #, c-format msgid "processing item %d %s %s\n" msgstr "обработка объекта %d %s %s\n" -#: pg_backup_archiver.c:4009 +#: pg_backup_archiver.c:3972 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "вход в restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:4030 +#: pg_backup_archiver.c:3993 #, c-format msgid "entering main parallel loop\n" msgstr "вход в основной параллельный цикл\n" -#: pg_backup_archiver.c:4041 +#: pg_backup_archiver.c:4004 #, c-format msgid "skipping item %d %s %s\n" msgstr "объект %d %s %s пропускается\n" -#: pg_backup_archiver.c:4051 +#: pg_backup_archiver.c:4014 #, c-format msgid "launching item %d %s %s\n" msgstr "объект %d %s %s запускается\n" -#: pg_backup_archiver.c:4105 +#: pg_backup_archiver.c:4068 #, c-format msgid "finished main parallel loop\n" msgstr "основной параллельный цикл закончен\n" -#: pg_backup_archiver.c:4123 +#: pg_backup_archiver.c:4086 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "вход в restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:4141 +#: pg_backup_archiver.c:4104 #, c-format msgid "processing missed item %d %s %s\n" msgstr "обработка пропущенного объекта %d %s %s\n" -#: pg_backup_archiver.c:4320 +#: pg_backup_archiver.c:4283 #, c-format msgid "no item ready\n" msgstr "элемент не готов\n" -#: pg_backup_archiver.c:4539 +#: pg_backup_archiver.c:4502 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "переключение зависимости %d -> %d на %d\n" -#: pg_backup_archiver.c:4620 +#: pg_backup_archiver.c:4583 #, c-format msgid "reducing dependencies for %d\n" msgstr "уменьшение зависимостей для %d\n" -#: pg_backup_archiver.c:4672 +#: pg_backup_archiver.c:4635 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "создать таблицу \"%s\" не удалось, её данные не будут восстановлены\n" @@ -974,7 +974,7 @@ msgid "unrecognized data block type (%d) while searching archive\n" msgstr "нераспознанный тип блока данных (%d) при поиске архива\n" -#: pg_backup_custom.c:462 pg_backup_tar.c:1100 pg_backup_tar.c:1107 +#: pg_backup_custom.c:462 pg_backup_tar.c:1094 pg_backup_tar.c:1101 #, c-format msgid "error during file seek: %s\n" msgstr "ошибка при перемещении в файле: %s\n" @@ -1016,7 +1016,7 @@ msgstr "нераспознанный тип блока данных %d при восстановлении архива\n" #: pg_backup_custom.c:705 pg_backup_custom.c:759 pg_backup_custom.c:844 -#: pg_backup_tar.c:1104 +#: pg_backup_tar.c:1098 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "не удалось определить позицию в файле архива: %s\n" @@ -1188,7 +1188,7 @@ #: pg_backup_directory.c:196 #, c-format msgid "could not create directory \"%s\": %s\n" -msgstr "создать каталог \"%s\" не удалось: %s\n" +msgstr "не удалось создать каталог \"%s\": %s\n" #: pg_backup_directory.c:360 pg_backup_directory.c:505 #: pg_backup_directory.c:541 @@ -1252,7 +1252,7 @@ msgid "could not open TOC file for output: %s\n" msgstr "не удалось открыть для записи файл оглавления: %s\n" -#: pg_backup_tar.c:210 pg_backup_tar.c:366 +#: pg_backup_tar.c:210 pg_backup_tar.c:360 #, c-format msgid "compression is not supported by tar archive format\n" msgstr "формат архива tar не поддерживает сжатие\n" @@ -1267,72 +1267,72 @@ msgid "could not open TOC file for input: %s\n" msgstr "не удалось открыть для чтения файл оглавления: %s\n" -#: pg_backup_tar.c:352 +#: pg_backup_tar.c:346 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "не удалось найти файл \"%s\" в архиве\n" -#: pg_backup_tar.c:418 +#: pg_backup_tar.c:412 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "не удалось получить имя для временного файла: %s\n" -#: pg_backup_tar.c:429 +#: pg_backup_tar.c:423 #, c-format msgid "could not open temporary file\n" msgstr "не удалось открыть временный файл\n" -#: pg_backup_tar.c:456 +#: pg_backup_tar.c:450 #, c-format msgid "could not close tar member\n" msgstr "не удалось закрыть компонент tar-архива\n" -#: pg_backup_tar.c:581 +#: pg_backup_tar.c:575 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "внутренняя ошибка -- в tarReadRaw() не указан ни th, ни fh\n" -#: pg_backup_tar.c:704 +#: pg_backup_tar.c:698 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "недопустимый синтаксис оператора COPY: \"%s\"\n" -#: pg_backup_tar.c:974 +#: pg_backup_tar.c:968 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "неверный OID для большого объекта (%u)\n" -#: pg_backup_tar.c:1122 +#: pg_backup_tar.c:1116 #, c-format msgid "could not close temporary file: %s\n" msgstr "не удалось закрыть временный файл: %s\n" -#: pg_backup_tar.c:1132 +#: pg_backup_tar.c:1126 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "действительная длина файла (%s) не равна ожидаемой (%s)\n" -#: pg_backup_tar.c:1169 +#: pg_backup_tar.c:1163 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "переход от позиции %s к следующему компоненту в позиции %s\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1174 #, c-format msgid "now at file position %s\n" msgstr "текущая позиция в файле %s\n" -#: pg_backup_tar.c:1189 pg_backup_tar.c:1219 +#: pg_backup_tar.c:1183 pg_backup_tar.c:1213 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "в архиве tar не найден заголовок для файла \"%s\"\n" -#: pg_backup_tar.c:1203 +#: pg_backup_tar.c:1197 #, c-format msgid "skipping tar member %s\n" msgstr "пропускается компонент tar %s\n" -#: pg_backup_tar.c:1207 +#: pg_backup_tar.c:1201 #, c-format msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " @@ -1342,7 +1342,7 @@ "поддерживается: требуется компонент \"%s\", но в файле архива прежде идёт " "\"%s\".\n" -#: pg_backup_tar.c:1253 +#: pg_backup_tar.c:1247 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" @@ -1351,12 +1351,12 @@ msgstr[2] "найден неполный заголовок tar (размер %lu байт)\n" # skip-rule: capital-letter-first -#: pg_backup_tar.c:1294 +#: pg_backup_tar.c:1288 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "Запись оглавления %s в %s (длина: %s, контр. сумма: %d)\n" -#: pg_backup_tar.c:1305 +#: pg_backup_tar.c:1299 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" @@ -1982,28 +1982,23 @@ msgid "error reading large object %u: %s" msgstr "ошибка чтения большого объекта %u: %s" -#: pg_dump.c:3214 -#, c-format -msgid "reading row security enabled for table \"%s.%s\"\n" -msgstr "чтение информации о защите строк для таблицы \"%s.%s\"\n" - #: pg_dump.c:3246 #, c-format -msgid "reading policies for table \"%s.%s\"\n" -msgstr "чтение политик таблицы \"%s.%s\"\n" +msgid "reading row-level security policies\n" +msgstr "чтение политик защиты на уровне строк\n" -#: pg_dump.c:3398 +#: pg_dump.c:3389 #, c-format msgid "unexpected policy command type: %c\n" msgstr "нераспознанный тип команды в политике: %c\n" -#: pg_dump.c:3530 +#: pg_dump.c:3521 #, c-format msgid "WARNING: owner of publication \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: у публикации \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:3810 +#: pg_dump.c:3801 #, c-format msgid "" "WARNING: subscriptions not dumped because current user is not a superuser\n" @@ -2011,75 +2006,75 @@ "ПРЕДУПРЕЖДЕНИЕ: подписки не выгружены, так как текущий пользователь не " "суперпользователь\n" -#: pg_dump.c:3864 +#: pg_dump.c:3855 #, c-format msgid "WARNING: owner of subscription \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: у подписки \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:3909 +#: pg_dump.c:3900 #, c-format msgid "WARNING: could not parse subpublications array\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: не удалось разобрать массив subpublications\n" -#: pg_dump.c:4196 +#: pg_dump.c:4187 #, c-format msgid "could not find parent extension for %s %s\n" msgstr "не удалось найти родительское расширение для %s %s\n" # TO REVIEW -#: pg_dump.c:4351 +#: pg_dump.c:4342 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: у схемы \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:4374 +#: pg_dump.c:4365 #, c-format msgid "schema with OID %u does not exist\n" msgstr "схема с OID %u не существует\n" -#: pg_dump.c:4699 +#: pg_dump.c:4691 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: у типа данных \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:4784 +#: pg_dump.c:4776 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: у оператора \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:5086 +#: pg_dump.c:5078 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: у класса операторов \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:5170 +#: pg_dump.c:5162 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: у семейства операторов \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:5334 +#: pg_dump.c:5326 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: у агрегатной функции \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:5590 +#: pg_dump.c:5582 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: у функции \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:6368 +#: pg_dump.c:6360 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: у таблицы \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:6410 pg_dump.c:16452 +#: pg_dump.c:6402 pg_dump.c:16438 #, c-format msgid "" "failed sanity check, parent table with OID %u of sequence with OID %u not " @@ -2088,17 +2083,17 @@ "нарушение целостности: по OID %u не удалось найти родительскую таблицу " "последовательности с OID %u\n" -#: pg_dump.c:6550 +#: pg_dump.c:6542 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "чтение индексов таблицы \"%s.%s\"\n" -#: pg_dump.c:6880 +#: pg_dump.c:6872 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "чтение ограничений внешних ключей таблицы \"%s.%s\"\n" -#: pg_dump.c:7089 +#: pg_dump.c:7081 #, c-format msgid "" "failed sanity check, parent table with OID %u of pg_rewrite entry with OID " @@ -2107,46 +2102,46 @@ "нарушение целостности: по OID %u не удалось найти родительскую таблицу для " "записи pg_rewrite с OID %u\n" -#: pg_dump.c:7173 +#: pg_dump.c:7165 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "чтение триггеров таблицы \"%s.%s\"\n" -#: pg_dump.c:7306 +#: pg_dump.c:7298 #, 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" +"запрос выдал NULL вместо имени целевой таблицы для триггера внешнего ключа " +"\"%s\" в таблице \"%s\" (OID целевой таблицы: %u)\n" -#: pg_dump.c:7860 +#: pg_dump.c:7852 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "поиск столбцов и типов таблицы \"%s.%s\"\n" -#: pg_dump.c:8025 +#: pg_dump.c:8017 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "неверная нумерация столбцов в таблице \"%s\"\n" -#: pg_dump.c:8061 +#: pg_dump.c:8053 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "поиск выражений по умолчанию для таблицы \"%s.%s\"\n" -#: pg_dump.c:8084 +#: pg_dump.c:8076 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "неверное значение adnum (%d) в таблице \"%s\"\n" -#: pg_dump.c:8150 +#: pg_dump.c:8142 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "поиск ограничений-проверок для таблицы \"%s.%s\"\n" -#: pg_dump.c:8199 +#: pg_dump.c:8191 #, 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" @@ -2157,18 +2152,18 @@ msgstr[2] "" "ожидалось %d ограничений-проверок для таблицы \"%s\", но найдено: %d\n" -#: pg_dump.c:8203 +#: pg_dump.c:8195 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Возможно, повреждены системные каталоги.)\n" -#: pg_dump.c:9752 +#: pg_dump.c:9761 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: у типа данных \"%s\" по-видимому неправильный тип типа\n" -#: pg_dump.c:11098 +#: pg_dump.c:11103 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: неприемлемое значение в массиве proargmodes\n" @@ -2194,35 +2189,35 @@ msgstr "ПРЕДУПРЕЖДЕНИЕ: не удалось разобрать массив proconfig\n" # TO REVEIW -#: pg_dump.c:11531 +#: pg_dump.c:11527 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "недопустимое значение provolatile для функции \"%s\"\n" # TO REVEIW -#: pg_dump.c:11575 pg_dump.c:13547 +#: pg_dump.c:11571 pg_dump.c:13533 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "недопустимое значение proparallel для функции \"%s\"\n" -#: pg_dump.c:11715 pg_dump.c:11825 pg_dump.c:11832 +#: pg_dump.c:11711 pg_dump.c:11818 pg_dump.c:11825 #, c-format msgid "could not find function definition for function with OID %u\n" msgstr "не удалось найти определение функции для функции с OID %u\n" -#: pg_dump.c:11754 +#: pg_dump.c:11750 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: неприемлемое значение в поле pg_cast.castfunc или pg_cast." "castmethod\n" -#: pg_dump.c:11757 +#: pg_dump.c:11753 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: неприемлемое значение в поле pg_cast.castmethod\n" -#: pg_dump.c:11851 +#: pg_dump.c:11844 #, c-format msgid "" "WARNING: bogus transform definition, at least one of trffromsql and trftosql " @@ -2231,32 +2226,32 @@ "ПРЕДУПРЕЖДЕНИЕ: неприемлемое определение преобразования (trffromsql или " "trftosql должно быть ненулевым)\n" -#: pg_dump.c:11868 +#: pg_dump.c:11861 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: неприемлемое значение в поле pg_transform.trffromsql\n" -#: pg_dump.c:11889 +#: pg_dump.c:11882 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: неприемлемое значение в поле pg_transform.trftosql\n" -#: pg_dump.c:12205 +#: pg_dump.c:12197 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: оператор с OID %s не найден\n" -#: pg_dump.c:12270 +#: pg_dump.c:12262 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: неверный тип \"%c\" метода доступа \"%s\"\n" -#: pg_dump.c:13022 +#: pg_dump.c:13014 #, c-format msgid "unrecognized collation provider: %s\n" -msgstr "нераспознанный поставщик правил сортировки: %s\n" +msgstr "нераспознанный провайдер правил сортировки: %s\n" -#: pg_dump.c:13457 +#: pg_dump.c:13443 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -2265,17 +2260,17 @@ "ПРЕДУПРЕЖДЕНИЕ: агрегатная функция %s не может быть правильно выгружена для " "этой версии базы данных; функция проигнорирована\n" -#: pg_dump.c:14257 +#: pg_dump.c:14243 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "нераспознанный тип объекта в определении прав по умолчанию: %d\n" -#: pg_dump.c:14275 +#: pg_dump.c:14261 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "не удалось разобрать список прав по умолчанию (%s)\n" -#: pg_dump.c:14362 +#: pg_dump.c:14348 #, c-format msgid "" "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) " @@ -2284,7 +2279,7 @@ "не удалось разобрать изначальный список GRANT ACL (%s) или изначальный " "список REVOKE ACL (%s) для объекта \"%s\" (%s)\n" -#: pg_dump.c:14371 +#: pg_dump.c:14357 #, c-format msgid "" "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s" @@ -2293,13 +2288,13 @@ "не удалось разобрать список GRANT ACL (%s) или список REVOKE ACL (%s) для " "объекта \"%s\" (%s)\n" -#: pg_dump.c:14883 +#: pg_dump.c:14869 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "" "запрос на получение определения представления \"%s\" не возвратил данные\n" -#: pg_dump.c:14886 +#: pg_dump.c:14872 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" @@ -2307,32 +2302,32 @@ "запрос на получение определения представления \"%s\" возвратил несколько " "определений\n" -#: pg_dump.c:14893 +#: pg_dump.c:14879 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "определение представления \"%s\" пустое (длина равна нулю)\n" -#: pg_dump.c:15424 +#: pg_dump.c:15410 #, c-format msgid "invalid number of parents %d for table \"%s\"\n" msgstr "неверное число родителей (%d) для таблицы \"%s\"\n" -#: pg_dump.c:15757 +#: pg_dump.c:15743 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "неверный номер столбца %d для таблицы \"%s\"\n" -#: pg_dump.c:15959 +#: pg_dump.c:15945 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "отсутствует индекс для ограничения \"%s\"\n" -#: pg_dump.c:16160 +#: pg_dump.c:16146 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "нераспознанный тип ограничения: %c\n" -#: pg_dump.c:16296 pg_dump.c:16517 +#: pg_dump.c:16282 pg_dump.c:16503 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" @@ -2347,22 +2342,22 @@ "запрос на получение данных последовательности \"%s\" вернул %d строк " "(ожидалась 1)\n" -#: pg_dump.c:16330 +#: pg_dump.c:16316 #, c-format msgid "unrecognized sequence type: %s\n" msgstr "нераспознанный тип последовательности: %s\n" -#: pg_dump.c:16615 +#: pg_dump.c:16601 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "неожиданное значение tgtype: %d\n" -#: pg_dump.c:16689 +#: pg_dump.c:16675 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "неверная строка аргументов (%s) для триггера \"%s\" таблицы \"%s\"\n" -#: pg_dump.c:16925 +#: pg_dump.c:16911 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -2371,12 +2366,12 @@ "запрос на получение правила \"%s\" для таблицы \"%s\" возвратил неверное " "число строк\n" -#: pg_dump.c:17306 +#: pg_dump.c:17292 #, c-format msgid "reading dependency data\n" msgstr "чтение информации о зависимостях\n" -#: pg_dump.c:17783 +#: pg_dump.c:17784 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "ПРЕДУПРЕЖДЕНИЕ: не удалось разобрать массив reloptions\n" @@ -2686,7 +2681,7 @@ #: pg_restore.c:327 #, c-format msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" -msgstr "%s: параметры -c/--clean and -a/--data-only исключают друг друга\n" +msgstr "%s: параметры -c/--clean и -a/--data-only исключают друг друга\n" #: pg_restore.c:334 #, c-format @@ -2950,6 +2945,12 @@ "ввода.\n" "\n" +#~ msgid "reading row security enabled for table \"%s.%s\"\n" +#~ msgstr "чтение информации о защите строк для таблицы \"%s.%s\"\n" + +#~ msgid "reading policies for table \"%s.%s\"\n" +#~ msgstr "чтение политик таблицы \"%s.%s\"\n" + #~ msgid "reading publication membership for table \"%s.%s\"\n" #~ msgstr "чтение информации об участии в репликации таблицы \"%s.%s\"\n" diff -Nru postgresql-10-10.17/src/bin/pg_dump/po/sv.po postgresql-10-10.19/src/bin/pg_dump/po/sv.po --- postgresql-10-10.17/src/bin/pg_dump/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,13 +1,13 @@ # Swedish message translation file for pg_dump # Peter Eisentraut , 2001, 2009, 2010. -# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020. +# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-10-20 17:17+0000\n" -"PO-Revision-Date: 2020-10-20 20:41+0200\n" +"POT-Creation-Date: 2021-11-07 09:45+0000\n" +"PO-Revision-Date: 2021-11-07 20:58+0100\n" "Last-Translator: Dennis Björklund \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -92,207 +92,207 @@ msgid "child process exited with unrecognized status %d" msgstr "barnprocess avslutade med okänd statuskod %d" -#: common.c:121 +#: common.c:124 #, c-format msgid "reading extensions\n" msgstr "läser utökningar\n" -#: common.c:126 +#: common.c:129 #, c-format msgid "identifying extension members\n" msgstr "identifierar utökningsmedlemmar\n" -#: common.c:130 +#: common.c:133 #, c-format msgid "reading schemas\n" msgstr "läser scheman\n" -#: common.c:141 +#: common.c:144 #, c-format msgid "reading user-defined tables\n" msgstr "läser användardefinierade tabeller\n" -#: common.c:149 +#: common.c:152 #, c-format msgid "reading user-defined functions\n" msgstr "läser användardefinierade funktioner\n" -#: common.c:155 +#: common.c:158 #, c-format msgid "reading user-defined types\n" msgstr "läser användardefinierade typer\n" -#: common.c:161 +#: common.c:164 #, c-format msgid "reading procedural languages\n" msgstr "läser procedurspråk\n" -#: common.c:165 +#: common.c:168 #, c-format msgid "reading user-defined aggregate functions\n" msgstr "läser användardefinierade aggregatfunktioner\n" -#: common.c:169 +#: common.c:172 #, c-format msgid "reading user-defined operators\n" msgstr "läser användardefinierade operatorer\n" -#: common.c:174 +#: common.c:177 #, c-format msgid "reading user-defined access methods\n" msgstr "läser användardefinierade accessmetoder\n" -#: common.c:178 +#: common.c:181 #, c-format msgid "reading user-defined operator classes\n" msgstr "läser användardefinierade operatorklasser\n" -#: common.c:182 +#: common.c:185 #, c-format msgid "reading user-defined operator families\n" msgstr "läser användardefinierade operator-familjer\n" -#: common.c:186 +#: common.c:189 #, c-format msgid "reading user-defined text search parsers\n" msgstr "läser användardefinierade textsöktolkare\n" -#: common.c:190 +#: common.c:193 #, c-format msgid "reading user-defined text search templates\n" msgstr "läser användardefinierade textsökmallar\n" -#: common.c:194 +#: common.c:197 #, c-format msgid "reading user-defined text search dictionaries\n" msgstr "läser användardefinierade textsökordlistor\n" -#: common.c:198 +#: common.c:201 #, c-format msgid "reading user-defined text search configurations\n" msgstr "läser användardefinierade textsökkonfigurationer\n" -#: common.c:202 +#: common.c:205 #, c-format msgid "reading user-defined foreign-data wrappers\n" msgstr "läser användardefinierade främmande data-omvandlare\n" -#: common.c:206 +#: common.c:209 #, c-format msgid "reading user-defined foreign servers\n" msgstr "läser användardefinierade främmande servrar\n" -#: common.c:210 +#: common.c:213 #, c-format msgid "reading default privileges\n" msgstr "läser standardrättigheter\n" -#: common.c:214 +#: common.c:217 #, c-format msgid "reading user-defined collations\n" msgstr "läser användardefinierade jämförelser\n" -#: common.c:219 +#: common.c:222 #, c-format msgid "reading user-defined conversions\n" msgstr "läser användardefinierade konverteringar\n" -#: common.c:223 +#: common.c:226 #, c-format msgid "reading type casts\n" msgstr "läser typomvandlingar\n" -#: common.c:227 +#: common.c:230 #, c-format msgid "reading transforms\n" msgstr "läser transformer\n" -#: common.c:231 +#: common.c:234 #, c-format msgid "reading table inheritance information\n" msgstr "läser information om arv av tabeller\n" -#: common.c:235 +#: common.c:238 #, c-format msgid "reading event triggers\n" msgstr "läser händelseutlösare\n" -#: common.c:240 +#: common.c:243 #, c-format msgid "finding extension tables\n" msgstr "hittar utökningstabeller\n" -#: common.c:245 +#: common.c:248 #, c-format msgid "finding inheritance relationships\n" msgstr "hittar arvrelationer\n" -#: common.c:249 +#: common.c:252 #, c-format msgid "reading column info for interesting tables\n" msgstr "läser kolumninfo flr intressanta tabeller\n" -#: common.c:253 +#: common.c:256 #, c-format msgid "flagging inherited columns in subtables\n" msgstr "markerar ärvda kolumner i undertabeller\n" -#: common.c:257 +#: common.c:260 #, c-format msgid "reading indexes\n" msgstr "läser index\n" -#: common.c:261 +#: common.c:264 #, c-format msgid "reading extended statistics\n" msgstr "läser utökad statistik\n" -#: common.c:265 +#: common.c:268 #, c-format msgid "reading constraints\n" msgstr "läser integritetsvillkor\n" -#: common.c:269 +#: common.c:272 #, c-format msgid "reading triggers\n" msgstr "läser utlösare\n" -#: common.c:273 +#: common.c:276 #, c-format msgid "reading rewrite rules\n" msgstr "läser omskrivningsregler\n" -#: common.c:277 +#: common.c:280 #, c-format msgid "reading policies\n" msgstr "läser policys\n" -#: common.c:281 +#: common.c:284 #, c-format msgid "reading publications\n" msgstr "läser publiceringar\n" -#: common.c:285 +#: common.c:290 #, c-format msgid "reading publication membership\n" msgstr "läser publiceringsmedlemskap\n" -#: common.c:289 +#: common.c:294 #, c-format msgid "reading subscriptions\n" msgstr "läser prenumerationer\n" -#: common.c:925 +#: common.c:941 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "misslyckades med riktighetskontroll, hittade inte förälder-OID %u för tabell \"%s\" (OID %u)\n" -#: common.c:967 +#: common.c:983 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "kunde inte tolka numerisk array \"%s\": för många nummer\n" -#: common.c:982 +#: common.c:998 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "kunde inte tolka numerisk array \"%s\": ogiltigt tecken i nummer\n" @@ -339,13 +339,13 @@ msgstr "kunde inte stänga komprimeringsbiblioteket: %s\n" #: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:587 -#: pg_backup_tar.c:564 pg_backup_tar.c:568 +#: pg_backup_tar.c:558 pg_backup_tar.c:562 #, c-format msgid "could not read from input file: %s\n" msgstr "kunde inte läsa från infilen: %s\n" #: compress_io.c:641 pg_backup_custom.c:584 pg_backup_directory.c:564 -#: pg_backup_tar.c:807 pg_backup_tar.c:831 +#: pg_backup_tar.c:801 pg_backup_tar.c:825 #, c-format msgid "could not read from input file: end of file\n" msgstr "kunde inte läsa från infilen: slut på filen\n" @@ -566,7 +566,7 @@ msgstr[0] "återställde %d stor objekt\n" msgstr[1] "återställde %d stora objekt\n" -#: pg_backup_archiver.c:1317 pg_backup_tar.c:749 +#: pg_backup_archiver.c:1317 pg_backup_tar.c:743 #, c-format msgid "restoring large object with OID %u\n" msgstr "återställer stort objekt med OID %u\n" @@ -671,248 +671,248 @@ msgid "attempting to ascertain archive format\n" msgstr "försöker lista ut arkivformat\n" -#: pg_backup_archiver.c:2139 pg_backup_archiver.c:2149 +#: pg_backup_archiver.c:2140 pg_backup_archiver.c:2150 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "katalognamn för långt: \"%s\"\n" -#: pg_backup_archiver.c:2157 +#: pg_backup_archiver.c:2158 #, c-format msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" msgstr "katalogen \"%s\" verkar inte vara ett giltigt arkiv (\"toc.dat\" finns inte)\n" -#: pg_backup_archiver.c:2165 pg_backup_custom.c:177 pg_backup_custom.c:770 +#: pg_backup_archiver.c:2166 pg_backup_custom.c:177 pg_backup_custom.c:770 #: pg_backup_directory.c:209 pg_backup_directory.c:401 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "kunde inte öppna indatafilen \"%s\": %s\n" -#: pg_backup_archiver.c:2173 pg_backup_custom.c:184 +#: pg_backup_archiver.c:2174 pg_backup_custom.c:184 #, c-format msgid "could not open input file: %s\n" msgstr "kan inte öppna infil: %s\n" -#: pg_backup_archiver.c:2180 +#: pg_backup_archiver.c:2181 #, c-format msgid "could not read input file: %s\n" msgstr "kan inte läsa infilen: %s\n" -#: pg_backup_archiver.c:2182 +#: pg_backup_archiver.c:2183 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "indatafilen är för kort (läste %lu, förväntade 5)\n" -#: pg_backup_archiver.c:2267 +#: pg_backup_archiver.c:2215 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "indatafilen verkar vara en dump i textformat. Använd psql.\n" -#: pg_backup_archiver.c:2273 +#: pg_backup_archiver.c:2221 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "indatafilen verkar inte vara ett korrekt arkiv (för kort?)\n" -#: pg_backup_archiver.c:2279 +#: pg_backup_archiver.c:2227 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "indatafilen verkar inte vara ett korrekt arkiv\n" -#: pg_backup_archiver.c:2299 +#: pg_backup_archiver.c:2236 #, c-format msgid "could not close input file: %s\n" msgstr "kunde inte stänga indatafilen: %s\n" -#: pg_backup_archiver.c:2317 +#: pg_backup_archiver.c:2258 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "allokerar AH för %s, format %d\n" -#: pg_backup_archiver.c:2416 +#: pg_backup_archiver.c:2357 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "känner inte igen filformat \"%d\"\n" -#: pg_backup_archiver.c:2471 pg_backup_archiver.c:4364 +#: pg_backup_archiver.c:2412 pg_backup_archiver.c:4327 #, c-format msgid "finished item %d %s %s\n" msgstr "klar med objekt %d %s %s\n" -#: pg_backup_archiver.c:2475 pg_backup_archiver.c:4377 +#: pg_backup_archiver.c:2416 pg_backup_archiver.c:4340 #, c-format msgid "worker process failed: exit code %d\n" msgstr "arbetsprocess misslyckades: felkod %d\n" -#: pg_backup_archiver.c:2595 +#: pg_backup_archiver.c:2536 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "post-ID %d utanför sitt intervall -- kanske en trasig TOC\n" -#: pg_backup_archiver.c:2711 +#: pg_backup_archiver.c:2652 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "läste TOC-post %d (ID %d) för %s %s\n" -#: pg_backup_archiver.c:2747 +#: pg_backup_archiver.c:2688 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "okänd teckenkodning \"%s\"\n" -#: pg_backup_archiver.c:2752 +#: pg_backup_archiver.c:2693 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "ogiltigt ENCODING-val: %s\n" -#: pg_backup_archiver.c:2770 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "ogiltigt STDSTRINGS-val: %s\n" -#: pg_backup_archiver.c:2795 +#: pg_backup_archiver.c:2736 #, c-format msgid "schema \"%s\" not found\n" msgstr "schema \"%s\" hittades inte\n" -#: pg_backup_archiver.c:2802 +#: pg_backup_archiver.c:2743 #, c-format msgid "table \"%s\" not found\n" msgstr "tabell \"%s\" hittades inte\n" -#: pg_backup_archiver.c:2809 +#: pg_backup_archiver.c:2750 #, c-format msgid "index \"%s\" not found\n" msgstr "index \"%s\" hittades inte\n" -#: pg_backup_archiver.c:2816 +#: pg_backup_archiver.c:2757 #, c-format msgid "function \"%s\" not found\n" msgstr "funktion \"%s\" hittades inte\n" -#: pg_backup_archiver.c:2823 +#: pg_backup_archiver.c:2764 #, c-format msgid "trigger \"%s\" not found\n" msgstr "utlösare \"%s\" hittades inte\n" -#: pg_backup_archiver.c:3135 +#: pg_backup_archiver.c:3076 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "kunde inte sätta sessionsanvändare till \"%s\": %s" -#: pg_backup_archiver.c:3167 +#: pg_backup_archiver.c:3108 #, c-format msgid "could not set default_with_oids: %s" msgstr "kunde inte sätta default_with_oids: %s" -#: pg_backup_archiver.c:3314 +#: pg_backup_archiver.c:3255 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "kunde inte sätta search_path till \"%s\": %s" -#: pg_backup_archiver.c:3376 +#: pg_backup_archiver.c:3317 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "kunde inte sätta default_tablespace till %s: %s" -#: pg_backup_archiver.c:3469 pg_backup_archiver.c:3662 +#: pg_backup_archiver.c:3410 pg_backup_archiver.c:3603 #, c-format msgid "WARNING: don't know how to set owner for object type \"%s\"\n" msgstr "VARNING: vet inte hur man sätter ägare för objekttyp \"%s\"\n" -#: pg_backup_archiver.c:3752 +#: pg_backup_archiver.c:3692 #, c-format msgid "did not find magic string in file header\n" msgstr "kunde inte hitta den magiska strängen i filhuvudet\n" -#: pg_backup_archiver.c:3765 +#: pg_backup_archiver.c:3706 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "ej supportad version (%d.%d) i filhuvudet\n" -#: pg_backup_archiver.c:3770 +#: pg_backup_archiver.c:3711 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "riktighetskontroll på heltalsstorlek (%lu) misslyckades\n" -#: pg_backup_archiver.c:3774 +#: pg_backup_archiver.c:3715 #, c-format msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "VARNING: arkivet skapades på en maskin med större heltal, en del operationer kan misslyckas\n" -#: pg_backup_archiver.c:3784 +#: pg_backup_archiver.c:3725 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "förväntat format (%d) skiljer sig från formatet som fanns i filen (%d)\n" -#: pg_backup_archiver.c:3800 +#: pg_backup_archiver.c:3740 #, c-format msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "VARNING: arkivet är komprimerat, men denna installation stödjer inte komprimering -- ingen data kommer kunna läsas\n" -#: pg_backup_archiver.c:3818 +#: pg_backup_archiver.c:3775 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "VARNING: ogiltig skapandedatum i huvud\n" -#: pg_backup_archiver.c:3891 +#: pg_backup_archiver.c:3854 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "går in i restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3955 +#: pg_backup_archiver.c:3918 #, c-format msgid "processing item %d %s %s\n" msgstr "processar objekt %d %s %s\n" -#: pg_backup_archiver.c:4009 +#: pg_backup_archiver.c:3972 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "går in i restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:4030 +#: pg_backup_archiver.c:3993 #, c-format msgid "entering main parallel loop\n" msgstr "går in i parallella huvudloopen\n" -#: pg_backup_archiver.c:4041 +#: pg_backup_archiver.c:4004 #, c-format msgid "skipping item %d %s %s\n" msgstr "hoppar över objekt %d %s %s\n" -#: pg_backup_archiver.c:4051 +#: pg_backup_archiver.c:4014 #, c-format msgid "launching item %d %s %s\n" msgstr "startar objekt %d %s %s\n" -#: pg_backup_archiver.c:4105 +#: pg_backup_archiver.c:4068 #, c-format msgid "finished main parallel loop\n" msgstr "klar med parallella huvudloopen\n" -#: pg_backup_archiver.c:4123 +#: pg_backup_archiver.c:4086 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "går in i restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:4141 +#: pg_backup_archiver.c:4104 #, c-format msgid "processing missed item %d %s %s\n" msgstr "processar saknat objekt %d %s %s\n" -#: pg_backup_archiver.c:4320 +#: pg_backup_archiver.c:4283 #, c-format msgid "no item ready\n" msgstr "inget objekt är redo\n" -#: pg_backup_archiver.c:4539 +#: pg_backup_archiver.c:4502 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "överför beroende %d -> %d till %d\n" -#: pg_backup_archiver.c:4620 +#: pg_backup_archiver.c:4583 #, c-format msgid "reducing dependencies for %d\n" msgstr "reducerar beroenden för %d\n" -#: pg_backup_archiver.c:4672 +#: pg_backup_archiver.c:4635 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "tabell \"%s\" kunde inte skapas, dess data kommer ej återställas\n" @@ -932,7 +932,7 @@ msgid "unrecognized data block type (%d) while searching archive\n" msgstr "känner inte igen datablocktyp (%d) vid genomsökning av arkiv\n" -#: pg_backup_custom.c:462 pg_backup_tar.c:1100 pg_backup_tar.c:1107 +#: pg_backup_custom.c:462 pg_backup_tar.c:1094 pg_backup_tar.c:1101 #, c-format msgid "error during file seek: %s\n" msgstr "fel vid sökning: %s\n" @@ -963,7 +963,7 @@ msgstr "ej igenkänd datablockstyp %d vid återställande av arkiv\n" #: pg_backup_custom.c:705 pg_backup_custom.c:759 pg_backup_custom.c:844 -#: pg_backup_tar.c:1104 +#: pg_backup_tar.c:1098 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "kunde inte bestämma sökposition i arkivfil: %s\n" @@ -1192,7 +1192,7 @@ msgid "could not open TOC file for output: %s\n" msgstr "kunde inte öppna TOC-filen för utmatning: %s\n" -#: pg_backup_tar.c:210 pg_backup_tar.c:366 +#: pg_backup_tar.c:210 pg_backup_tar.c:360 #, c-format msgid "compression is not supported by tar archive format\n" msgstr "komprimering är stödjs inte av arkivformatet tar\n" @@ -1207,89 +1207,89 @@ msgid "could not open TOC file for input: %s\n" msgstr "kunde inte öppna TOC-fil för läsning: %s\n" -#: pg_backup_tar.c:352 +#: pg_backup_tar.c:346 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "kunde inte hitta fil \"%s\" i arkiv\n" -#: pg_backup_tar.c:418 +#: pg_backup_tar.c:412 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "kunde inte generera temporärt filnamn: %s\n" -#: pg_backup_tar.c:429 +#: pg_backup_tar.c:423 #, c-format msgid "could not open temporary file\n" msgstr "kunde inte öppna temporär fil\n" -#: pg_backup_tar.c:456 +#: pg_backup_tar.c:450 #, c-format msgid "could not close tar member\n" msgstr "kunde inte stänga tar-medlem\n" -#: pg_backup_tar.c:581 +#: pg_backup_tar.c:575 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "internt fel -- varken th eller fh angiven i tarReadRaw()\n" -#: pg_backup_tar.c:704 +#: pg_backup_tar.c:698 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "oväntad COPY-satssyntax: \"%s\"\n" -#: pg_backup_tar.c:974 +#: pg_backup_tar.c:968 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "ogiltig OID för stort objekt (%u)\n" -#: pg_backup_tar.c:1122 +#: pg_backup_tar.c:1116 #, c-format msgid "could not close temporary file: %s\n" msgstr "kunde inte stänga temporär fil: %s\n" -#: pg_backup_tar.c:1132 +#: pg_backup_tar.c:1126 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "verklig fillängd (%s) matchar inte det förväntade (%s)\n" -#: pg_backup_tar.c:1169 +#: pg_backup_tar.c:1163 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "flyttar från position %s till nästa del vid filposition %s\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1174 #, c-format msgid "now at file position %s\n" msgstr "nu på filposition %s\n" -#: pg_backup_tar.c:1189 pg_backup_tar.c:1219 +#: pg_backup_tar.c:1183 pg_backup_tar.c:1213 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "kunde inte hitta filhuvud för fil \"%s\" i tar-arkiv\n" -#: pg_backup_tar.c:1203 +#: pg_backup_tar.c:1197 #, c-format msgid "skipping tar member %s\n" msgstr "hoppar över tar-medlem %s\n" -#: pg_backup_tar.c:1207 +#: pg_backup_tar.c:1201 #, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" msgstr "dumpa data i oordning stöds inte av detta arkivformat: \"%s\" krävs, men kommer före \"%s\" i denna arkivfil.\n" -#: pg_backup_tar.c:1253 +#: pg_backup_tar.c:1247 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "inkomplett tar-huvud hittat (%lu byte)\n" msgstr[1] "inkomplett tar-huvud hittat (%lu bytes)\n" -#: pg_backup_tar.c:1294 +#: pg_backup_tar.c:1288 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "TOC-objekt %s vid %s (längd %s, kontrollsumma %d)\n" -#: pg_backup_tar.c:1305 +#: pg_backup_tar.c:1299 #, c-format msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "trasigt tar-huvud hittat i %s (förväntade %d, beräknad %d) filposition %s\n" @@ -1829,341 +1829,331 @@ msgid "error reading large object %u: %s" msgstr "fel vid läsning av stort objekt %u: %s" -#: pg_dump.c:3214 -#, c-format -msgid "reading row security enabled for table \"%s.%s\"\n" -msgstr "läser aktiverad radsäkerhet för tabell \"%s.%s\"\n" - #: pg_dump.c:3246 #, c-format -msgid "reading policies for table \"%s.%s\"\n" -msgstr "läser policys för tabell \"%s.%s\"\n" +msgid "reading row-level security policies\n" +msgstr "läser säkerhetspolicys på radnivå\n" -#: pg_dump.c:3398 +#: pg_dump.c:3389 #, c-format msgid "unexpected policy command type: %c\n" msgstr "oväntad kommandotyp för policy: %c\n" -#: pg_dump.c:3527 +#: pg_dump.c:3521 #, c-format msgid "WARNING: owner of publication \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av publicering \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:3658 -#, c-format -msgid "reading publication membership for table \"%s.%s\"\n" -msgstr "läser publiceringsmedlemskap för tabell \"%s.%s\"\n" - -#: pg_dump.c:3804 +#: pg_dump.c:3801 #, c-format msgid "WARNING: subscriptions not dumped because current user is not a superuser\n" msgstr "VARNING: prenumerationer har inte dumpats få aktuell användare inte är en superanvändare\n" -#: pg_dump.c:3858 +#: pg_dump.c:3855 #, c-format msgid "WARNING: owner of subscription \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av prenumeration \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:3903 +#: pg_dump.c:3900 #, c-format msgid "WARNING: could not parse subpublications array\n" msgstr "VARNING: kunde inte parsa arrayen för subpubliceringar\n" -#: pg_dump.c:4190 +#: pg_dump.c:4187 #, c-format msgid "could not find parent extension for %s %s\n" msgstr "kunde inte hitta föräldrautökning för %s %s\n" -#: pg_dump.c:4345 +#: pg_dump.c:4342 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av schema \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:4368 +#: pg_dump.c:4365 #, c-format msgid "schema with OID %u does not exist\n" msgstr "schema med OID %u existerar inte\n" -#: pg_dump.c:4693 +#: pg_dump.c:4691 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av datatyp \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:4778 +#: pg_dump.c:4776 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av operator \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:5080 +#: pg_dump.c:5078 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av operatorklass \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:5164 +#: pg_dump.c:5162 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av operator-familj \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:5328 +#: pg_dump.c:5326 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av aggregatfunktion \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:5584 +#: pg_dump.c:5582 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av funktion \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:6362 +#: pg_dump.c:6360 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "VARNING: ägare av tabell \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:6404 pg_dump.c:16446 +#: pg_dump.c:6402 pg_dump.c:16438 #, c-format msgid "failed sanity check, parent table with OID %u of sequence with OID %u not found\n" msgstr "misslyckades med riktighetskontroll, föräldratabell med OID %u för sekvens med OID %u hittas inte\n" -#: pg_dump.c:6544 +#: pg_dump.c:6542 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "läser index för tabell \"%s.%s\"\n" -#: pg_dump.c:6874 +#: pg_dump.c:6872 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "läser främmande nyckel-villkor för tabell \"%s.%s\"\n" -#: pg_dump.c:7083 +#: pg_dump.c:7081 #, c-format msgid "failed sanity check, parent table with OID %u of pg_rewrite entry with OID %u not found\n" msgstr "misslyckades med riktighetskontroll, föräldratabell med OID %u för pg_rewrite-rad med OID %u hittades inte\n" -#: pg_dump.c:7167 +#: pg_dump.c:7165 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "läser utlösare för tabell \"%s.%s\"\n" -#: pg_dump.c:7300 +#: pg_dump.c:7298 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "fråga producerade null som refererad tabell för främmande nyckel-utlösare \"%s\" i tabell \"%s\" (OID för tabell : %u)\n" -#: pg_dump.c:7854 +#: pg_dump.c:7852 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "hittar kolumner och typer för tabell \"%s.%s\"\n" -#: pg_dump.c:8019 +#: pg_dump.c:8017 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "ogiltigt kolumnnumrering i tabell \"%s\"\n" -#: pg_dump.c:8055 +#: pg_dump.c:8053 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "hittar default-uttryck för tabell \"%s.%s\"\n" -#: pg_dump.c:8078 +#: pg_dump.c:8076 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "felaktigt adnum-värde %d för tabell \"%s\"\n" -#: pg_dump.c:8144 +#: pg_dump.c:8142 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "hittar check-villkor för tabell \"%s.%s\"\n" -#: pg_dump.c:8193 +#: pg_dump.c:8191 #, 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] "förväntade %d check-villkor för tabell \"%s\" men hittade %d\n" msgstr[1] "förväntade %d check-villkor för tabell \"%s\" men hittade %d\n" -#: pg_dump.c:8197 +#: pg_dump.c:8195 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(systemkatalogerna kan vara trasiga.)\n" -#: pg_dump.c:9746 +#: pg_dump.c:9761 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "VARNING: typtype för datatyp \"%s\" verkar vara ogiltig\n" -#: pg_dump.c:11092 +#: pg_dump.c:11103 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "VARNING: felaktigt värde i arrayen proargmodes\n" -#: pg_dump.c:11413 +#: pg_dump.c:11419 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "VARNING: kunde inte tolka arrayen proallargtypes\n" -#: pg_dump.c:11429 +#: pg_dump.c:11435 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "VARNING: kunde inte tolka arrayen proargmodes\n" -#: pg_dump.c:11443 +#: pg_dump.c:11449 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "VARNING: kunde inte tolka arrayen proargnames\n" -#: pg_dump.c:11454 +#: pg_dump.c:11460 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "VARNING: kunde inte tolka arrayen proconfig\n" -#: pg_dump.c:11525 +#: pg_dump.c:11527 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "okänt provolatile-värde för funktion \"%s\"\n" -#: pg_dump.c:11569 pg_dump.c:13541 +#: pg_dump.c:11571 pg_dump.c:13533 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "okänt proparallel-värde för funktion \"%s\"\n" -#: pg_dump.c:11709 pg_dump.c:11819 pg_dump.c:11826 +#: pg_dump.c:11711 pg_dump.c:11818 pg_dump.c:11825 #, c-format msgid "could not find function definition for function with OID %u\n" msgstr "kunde inte hitta funktionsdefinitionen för funktion med OID %u\n" -#: pg_dump.c:11748 +#: pg_dump.c:11750 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "VARNING: felaktigt värde i fältet pg_cast.castfunc eller pg_cast.castmethod\n" -#: pg_dump.c:11751 +#: pg_dump.c:11753 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "VARNING: felaktigt värde i fältet pg_cast.castmethod\n" -#: pg_dump.c:11845 +#: pg_dump.c:11844 #, c-format msgid "WARNING: bogus transform definition, at least one of trffromsql and trftosql should be nonzero\n" msgstr "VARNING: felaktig transform-definition, minst en av trffromsql och trftosql måste vara ickenoll\n" -#: pg_dump.c:11862 +#: pg_dump.c:11861 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "VARNING: felaktigt värde i fältet pg_transform.trffromsql\n" -#: pg_dump.c:11883 +#: pg_dump.c:11882 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "VARNING: felaktigt värde i fältet pg_transform.trftosql\n" -#: pg_dump.c:12199 +#: pg_dump.c:12197 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "VARNING: kunde inte hitta en operator med OID %s.\n" -#: pg_dump.c:12264 +#: pg_dump.c:12262 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "VARNING: ogiltig typ \"%c\" för accessmetod \"%s\"\n" -#: pg_dump.c:13016 +#: pg_dump.c:13014 #, c-format msgid "unrecognized collation provider: %s\n" msgstr "okänd jämförelseleverantör: %s\n" -#: pg_dump.c:13451 +#: pg_dump.c:13443 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "VARNING: aggregatfunktion %s kunde inte dumpas korrekt för denna databasversion; ignorerad\n" -#: pg_dump.c:14251 +#: pg_dump.c:14243 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "okänd objekttyp i standardrättigheter: %d\n" -#: pg_dump.c:14269 +#: pg_dump.c:14261 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "kunde inte parsa standard-ACL-lista (%s)\n" -#: pg_dump.c:14356 +#: pg_dump.c:14348 #, c-format msgid "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "kunde inte parsa initial GRANT ACL-lista (%s) eller initial REVOKE ACL-lista (%s) för objekt \"%s\" (%s)\n" -#: pg_dump.c:14365 +#: pg_dump.c:14357 #, c-format msgid "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "kunde inte parsa GRANT ACL-lista (%s) eller REVOKE ACL-lista (%s) för objekt \"%s\" (%s)\n" -#: pg_dump.c:14877 +#: pg_dump.c:14869 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "fråga för att hämta definition av vy \"%s\" returnerade ingen data\n" -#: pg_dump.c:14880 +#: pg_dump.c:14872 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "fråga för att hämta definition av vy \"%s\" returnerade mer än en definition\n" -#: pg_dump.c:14887 +#: pg_dump.c:14879 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "definition av vy \"%s\" verkar vara tom (längd noll)\n" -#: pg_dump.c:15418 +#: pg_dump.c:15410 #, c-format msgid "invalid number of parents %d for table \"%s\"\n" msgstr "ogiltigt antal (%d) föräldrar för tabell \"%s\"\n" -#: pg_dump.c:15751 +#: pg_dump.c:15743 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "ogiltigt kolumnnummer %d för tabell \"%s\"\n" -#: pg_dump.c:15953 +#: pg_dump.c:15945 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "saknar index för integritetsvillkor \"%s\"\n" -#: pg_dump.c:16154 +#: pg_dump.c:16146 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "oväntad integritetsvillkorstyp: %c\n" -#: pg_dump.c:16290 pg_dump.c:16511 +#: pg_dump.c:16282 pg_dump.c:16503 #, 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] "fråga för att hämta data för sekvens \"%s\" returnerade %d rad (förväntade 1)\n" msgstr[1] "fråga för att hämta data för sekvens \"%s\" returnerade %d rader (förväntade 1)\n" -#: pg_dump.c:16324 +#: pg_dump.c:16316 #, c-format msgid "unrecognized sequence type: %s\n" msgstr "okänd sekvenstyp: %s\n" -#: pg_dump.c:16609 +#: pg_dump.c:16601 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "oväntat tgtype-värde: %d\n" -#: pg_dump.c:16683 +#: pg_dump.c:16675 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "felaktig argumentsträng (%s) för utlösare \"%s\" i tabell \"%s\"\n" -#: pg_dump.c:16919 +#: pg_dump.c:16911 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "fråga för att hämta regel \"%s\" för tabell \"%s\" misslyckades: fel antal rader returnerades\n" -#: pg_dump.c:17300 +#: pg_dump.c:17292 #, c-format msgid "reading dependency data\n" msgstr "läser beroendedata\n" -#: pg_dump.c:17777 +#: pg_dump.c:17784 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "VARNING: kunde inte parsa arrayen reloptions\n" diff -Nru postgresql-10-10.17/src/bin/pg_dump/t/002_pg_dump.pl postgresql-10-10.19/src/bin/pg_dump/t/002_pg_dump.pl --- postgresql-10-10.17/src/bin/pg_dump/t/002_pg_dump.pl 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_dump/t/002_pg_dump.pl 2021-11-08 22:05:38.000000000 +0000 @@ -339,6 +339,46 @@ section_pre_data => 1, section_data => 1, }, }, + 'ALTER DEFAULT PRIVILEGES FOR ROLE regress_dump_test_role GRANT EXECUTE ON FUNCTIONS' + => { + all_runs => 1, + create_order => 15, + create_sql => 'ALTER DEFAULT PRIVILEGES + FOR ROLE regress_dump_test_role IN SCHEMA dump_test + GRANT EXECUTE ON FUNCTIONS TO regress_dump_test_role;', + regexp => qr/^ + \QALTER DEFAULT PRIVILEGES \E + \QFOR ROLE regress_dump_test_role IN SCHEMA dump_test \E + \QGRANT ALL ON FUNCTIONS TO regress_dump_test_role;\E + /xm, + like => { + binary_upgrade => 1, + clean => 1, + clean_if_exists => 1, + createdb => 1, + defaults => 1, + exclude_test_table => 1, + exclude_test_table_data => 1, + no_blobs => 1, + no_owner => 1, + only_dump_test_schema => 1, + pg_dumpall_dbprivs => 1, + schema_only => 1, + section_post_data => 1, + test_schema_plus_blobs => 1, + with_oids => 1, }, + unlike => { + column_inserts => 1, + data_only => 1, + exclude_dump_test_schema => 1, + no_privs => 1, + only_dump_test_table => 1, + pg_dumpall_globals => 1, + pg_dumpall_globals_clean => 1, + role => 1, + section_pre_data => 1, + section_data => 1, }, }, + 'ALTER DEFAULT PRIVILEGES FOR ROLE regress_dump_test_role REVOKE' => { all_runs => 1, create_order => 55, diff -Nru postgresql-10-10.17/src/bin/pg_resetwal/pg_resetwal.c postgresql-10-10.19/src/bin/pg_resetwal/pg_resetwal.c --- postgresql-10-10.17/src/bin/pg_resetwal/pg_resetwal.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_resetwal/pg_resetwal.c 2021-11-08 22:05:38.000000000 +0000 @@ -62,6 +62,7 @@ static bool guessed = false; /* T if we had to guess at any values */ static const char *progname; static uint32 set_xid_epoch = (uint32) -1; +static TransactionId set_oldest_xid = 0; static TransactionId set_xid = 0; static TransactionId set_oldest_commit_ts_xid = 0; static TransactionId set_newest_commit_ts_xid = 0; @@ -115,7 +116,7 @@ } - while ((c = getopt(argc, argv, "c:D:e:fl:m:no:O:x:")) != -1) + while ((c = getopt(argc, argv, "c:D:e:fl:m:no:O:u:x:")) != -1) { switch (c) { @@ -148,6 +149,21 @@ } break; + case 'u': + set_oldest_xid = strtoul(optarg, &endptr, 0); + if (endptr == optarg || *endptr != '\0') + { + fprintf(stderr, _("invalid argument for option %s"), "-u"); + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); + exit(1); + } + if (!TransactionIdIsNormal(set_oldest_xid)) + { + fprintf(stderr, _("oldest transaction ID (-u) must be greater than or equal to %u"), FirstNormalTransactionId); + exit(1); + } + break; + case 'x': set_xid = strtoul(optarg, &endptr, 0); if (endptr == optarg || *endptr != '\0') @@ -369,23 +385,15 @@ if (set_xid_epoch != -1) ControlFile.checkPointCopy.nextXidEpoch = set_xid_epoch; - if (set_xid != 0) + if (set_oldest_xid != 0) { - ControlFile.checkPointCopy.nextXid = set_xid; - - /* - * For the moment, just set oldestXid to a value that will force - * immediate autovacuum-for-wraparound. It's not clear whether adding - * user control of this is useful, so let's just do something that's - * reasonably safe. The magic constant here corresponds to the - * maximum allowed value of autovacuum_freeze_max_age. - */ - ControlFile.checkPointCopy.oldestXid = set_xid - 2000000000; - if (ControlFile.checkPointCopy.oldestXid < FirstNormalTransactionId) - ControlFile.checkPointCopy.oldestXid += FirstNormalTransactionId; + ControlFile.checkPointCopy.oldestXid = set_oldest_xid; ControlFile.checkPointCopy.oldestXidDB = InvalidOid; } + if (set_xid != 0) + ControlFile.checkPointCopy.nextXid = set_xid; + if (set_oldest_commit_ts_xid != 0) ControlFile.checkPointCopy.oldestCommitTsXid = set_oldest_commit_ts_xid; if (set_newest_commit_ts_xid != 0) @@ -1239,6 +1247,7 @@ printf(_(" -n no update, just show what would be done (for testing)\n")); printf(_(" -o OID set next OID\n")); printf(_(" -O OFFSET set next multitransaction offset\n")); + printf(_(" -u XID set oldest transaction ID\n")); printf(_(" -V, --version output version information, then exit\n")); printf(_(" -x XID set next transaction ID\n")); printf(_(" -?, --help show this help, then exit\n")); diff -Nru postgresql-10-10.17/src/bin/pg_resetwal/po/de.po postgresql-10-10.19/src/bin/pg_resetwal/po/de.po --- postgresql-10-10.17/src/bin/pg_resetwal/po/de.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_resetwal/po/de.po 2021-11-08 22:05:38.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-08-01 19:15+0000\n" -"PO-Revision-Date: 2017-08-01 17:03-0400\n" +"POT-Creation-Date: 2021-08-06 20:59+0000\n" +"PO-Revision-Date: 2021-08-07 00:02+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -52,86 +52,97 @@ msgstr "%s: konnte Statuscode des Subprozesses nicht ermitteln: Fehlercode %lu\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetwal.c:140 pg_resetwal.c:155 pg_resetwal.c:170 pg_resetwal.c:177 -#: pg_resetwal.c:201 pg_resetwal.c:216 pg_resetwal.c:224 pg_resetwal.c:250 -#: pg_resetwal.c:264 +#: pg_resetwal.c:141 pg_resetwal.c:171 pg_resetwal.c:186 pg_resetwal.c:193 +#: pg_resetwal.c:217 pg_resetwal.c:232 pg_resetwal.c:240 pg_resetwal.c:266 +#: pg_resetwal.c:280 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s: ungültiges Argument für Option %s\n" -#: pg_resetwal.c:141 pg_resetwal.c:156 pg_resetwal.c:171 pg_resetwal.c:178 -#: pg_resetwal.c:202 pg_resetwal.c:217 pg_resetwal.c:225 pg_resetwal.c:251 -#: pg_resetwal.c:265 pg_resetwal.c:272 pg_resetwal.c:285 pg_resetwal.c:293 +#: pg_resetwal.c:142 pg_resetwal.c:157 pg_resetwal.c:172 pg_resetwal.c:187 +#: pg_resetwal.c:194 pg_resetwal.c:218 pg_resetwal.c:233 pg_resetwal.c:241 +#: pg_resetwal.c:267 pg_resetwal.c:281 pg_resetwal.c:288 pg_resetwal.c:301 +#: pg_resetwal.c:309 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: pg_resetwal.c:146 +#: pg_resetwal.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: Transaktions-ID-Epoche (-e) darf nicht -1 sein\n" -#: pg_resetwal.c:161 +#: pg_resetwal.c:156 +#, c-format +msgid "invalid argument for option %s" +msgstr "ungültiges Argument für Option %s" + +#: pg_resetwal.c:162 +#, c-format +msgid "oldest transaction ID (-u) must be greater than or equal to %u" +msgstr "älteste Transaktions-ID (-u) muss größer oder gleich %u sein" + +#: pg_resetwal.c:177 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: Transaktions-ID (-x) darf nicht 0 sein\n" -#: pg_resetwal.c:185 pg_resetwal.c:192 +#: pg_resetwal.c:201 pg_resetwal.c:208 #, c-format msgid "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" msgstr "%s: Transaktions-ID (-c) muss entweder 0 oder größer oder gleich 2 sein\n" -#: pg_resetwal.c:207 +#: pg_resetwal.c:223 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) darf nicht 0 sein\n" -#: pg_resetwal.c:230 +#: pg_resetwal.c:246 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: Multitransaktions-ID (-m) darf nicht 0 sein\n" -#: pg_resetwal.c:240 +#: pg_resetwal.c:256 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" msgstr "%s: älteste Multitransaktions-ID (-m) darf nicht 0 sein\n" -#: pg_resetwal.c:256 +#: pg_resetwal.c:272 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: Multitransaktions-Offset (-O) darf nicht -1 sein\n" -#: pg_resetwal.c:283 +#: pg_resetwal.c:299 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: pg_resetwal.c:292 +#: pg_resetwal.c:308 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: kein Datenverzeichnis angegeben\n" -#: pg_resetwal.c:306 +#: pg_resetwal.c:322 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s: kann nicht von »root« ausgeführt werden\n" -#: pg_resetwal.c:308 +#: pg_resetwal.c:324 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Sie müssen %s als PostgreSQL-Superuser ausführen.\n" -#: pg_resetwal.c:318 +#: pg_resetwal.c:334 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: konnte nicht in Verzeichnis »%s« wechseln: %s\n" -#: pg_resetwal.c:334 pg_resetwal.c:481 pg_resetwal.c:544 +#: pg_resetwal.c:350 pg_resetwal.c:489 pg_resetwal.c:552 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: konnte Datei »%s« nicht zum Lesen öffnen: %s\n" -#: pg_resetwal.c:341 +#: pg_resetwal.c:357 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -140,7 +151,7 @@ "%s: Sperrdatei »%s« existiert bereits\n" "Läuft der Server? Wenn nicht, dann Sperrdatei löschen und nochmal versuchen.\n" -#: pg_resetwal.c:428 +#: pg_resetwal.c:436 #, c-format msgid "" "\n" @@ -150,7 +161,7 @@ "Wenn diese Werte akzeptabel scheinen, dann benutzen Sie -f um das\n" "Zurücksetzen zu erzwingen.\n" -#: pg_resetwal.c:440 +#: pg_resetwal.c:448 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -162,22 +173,22 @@ "Wenn Sie trotzdem weiter machen wollen, benutzen Sie -f, um das\n" "Zurücksetzen zu erzwingen.\n" -#: pg_resetwal.c:454 +#: pg_resetwal.c:462 #, c-format msgid "Write-ahead log reset\n" msgstr "Write-Ahead-Log wurde zurückgesetzt\n" -#: pg_resetwal.c:491 +#: pg_resetwal.c:499 #, c-format msgid "%s: unexpected empty file \"%s\"\n" msgstr "%s: unerwartete leere Datei »%s«\n" -#: pg_resetwal.c:496 pg_resetwal.c:560 +#: pg_resetwal.c:504 pg_resetwal.c:568 #, c-format msgid "%s: could not read file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht lesen: %s\n" -#: pg_resetwal.c:513 +#: pg_resetwal.c:521 #, c-format msgid "" "%s: data directory is of wrong version\n" @@ -186,7 +197,7 @@ "%s: Datenverzeichnis hat falsche Version\n" "Datei »%s« enthält »%s«, was nicht mit der Version dieses Programms »%s« kompatibel ist.\n" -#: pg_resetwal.c:547 +#: pg_resetwal.c:555 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -197,17 +208,17 @@ " touch %s\n" "aus und versuchen Sie es erneut.\n" -#: pg_resetwal.c:583 +#: pg_resetwal.c:591 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "%s: pg_control existiert, aber mit ungültiger CRC; mit Vorsicht fortfahren\n" -#: pg_resetwal.c:592 +#: pg_resetwal.c:600 #, c-format msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" msgstr "%s: pg_control existiert, aber ist kaputt oder hat falsche Version; wird ignoriert\n" -#: pg_resetwal.c:690 +#: pg_resetwal.c:698 #, c-format msgid "" "Guessed pg_control values:\n" @@ -216,7 +227,7 @@ "Geschätzte pg_control-Werte:\n" "\n" -#: pg_resetwal.c:692 +#: pg_resetwal.c:700 #, c-format msgid "" "Current pg_control values:\n" @@ -225,172 +236,172 @@ "Aktuelle pg_control-Werte:\n" "\n" -#: pg_resetwal.c:701 +#: pg_resetwal.c:709 #, c-format msgid "pg_control version number: %u\n" msgstr "pg_control-Versionsnummer: %u\n" -#: pg_resetwal.c:703 +#: pg_resetwal.c:711 #, c-format msgid "Catalog version number: %u\n" msgstr "Katalogversionsnummer: %u\n" -#: pg_resetwal.c:705 +#: pg_resetwal.c:713 #, c-format msgid "Database system identifier: %s\n" msgstr "Datenbanksystemidentifikation: %s\n" -#: pg_resetwal.c:707 +#: pg_resetwal.c:715 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "TimeLineID des letzten Checkpoints: %u\n" -#: pg_resetwal.c:709 +#: pg_resetwal.c:717 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "full_page_writes des letzten Checkpoints: %s\n" -#: pg_resetwal.c:710 +#: pg_resetwal.c:718 msgid "off" msgstr "aus" -#: pg_resetwal.c:710 +#: pg_resetwal.c:718 msgid "on" msgstr "an" -#: pg_resetwal.c:711 +#: pg_resetwal.c:719 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID des letzten Checkpoints: %u:%u\n" -#: pg_resetwal.c:714 +#: pg_resetwal.c:722 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID des letzten Checkpoints: %u\n" -#: pg_resetwal.c:716 +#: pg_resetwal.c:724 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId des letzten Checkpoints: %u\n" -#: pg_resetwal.c:718 +#: pg_resetwal.c:726 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset des letzten Checkpoints: %u\n" -#: pg_resetwal.c:720 +#: pg_resetwal.c:728 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID des letzten Checkpoints: %u\n" -#: pg_resetwal.c:722 +#: pg_resetwal.c:730 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "DB der oldestXID des letzten Checkpoints: %u\n" -#: pg_resetwal.c:724 +#: pg_resetwal.c:732 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "oldestActiveXID des letzten Checkpoints: %u\n" -#: pg_resetwal.c:726 +#: pg_resetwal.c:734 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid des letzten Checkpoints: %u\n" -#: pg_resetwal.c:728 +#: pg_resetwal.c:736 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "DB des oldestMulti des letzten Checkpoints: %u\n" -#: pg_resetwal.c:730 +#: pg_resetwal.c:738 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid des letzten Checkpoints: %u\n" -#: pg_resetwal.c:732 +#: pg_resetwal.c:740 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "newestCommitTsXid des letzten Checkpoints: %u\n" -#: pg_resetwal.c:734 +#: pg_resetwal.c:742 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Maximale Datenausrichtung (Alignment): %u\n" -#: pg_resetwal.c:737 +#: pg_resetwal.c:745 #, c-format msgid "Database block size: %u\n" msgstr "Datenbankblockgröße: %u\n" -#: pg_resetwal.c:739 +#: pg_resetwal.c:747 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Blöcke pro Segment: %u\n" -#: pg_resetwal.c:741 +#: pg_resetwal.c:749 #, c-format msgid "WAL block size: %u\n" msgstr "WAL-Blockgröße: %u\n" -#: pg_resetwal.c:743 +#: pg_resetwal.c:751 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Bytes pro WAL-Segment: %u\n" -#: pg_resetwal.c:745 +#: pg_resetwal.c:753 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Maximale Bezeichnerlänge: %u\n" -#: pg_resetwal.c:747 +#: pg_resetwal.c:755 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "Maximale Spalten in einem Index: %u\n" -#: pg_resetwal.c:749 +#: pg_resetwal.c:757 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Maximale Größe eines Stücks TOAST: %u\n" -#: pg_resetwal.c:751 +#: pg_resetwal.c:759 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Größe eines Large-Object-Chunks: %u\n" -#: pg_resetwal.c:754 +#: pg_resetwal.c:762 #, c-format msgid "Date/time type storage: %s\n" msgstr "Speicherung von Datum/Zeit-Typen: %s\n" -#: pg_resetwal.c:755 +#: pg_resetwal.c:763 msgid "64-bit integers" msgstr "64-Bit-Ganzzahlen" -#: pg_resetwal.c:756 +#: pg_resetwal.c:764 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Übergabe von Float4-Argumenten: %s\n" -#: pg_resetwal.c:757 pg_resetwal.c:759 +#: pg_resetwal.c:765 pg_resetwal.c:767 msgid "by reference" msgstr "Referenz" -#: pg_resetwal.c:757 pg_resetwal.c:759 +#: pg_resetwal.c:765 pg_resetwal.c:767 msgid "by value" msgstr "Wert" -#: pg_resetwal.c:758 +#: pg_resetwal.c:766 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Übergabe von Float8-Argumenten: %s\n" -#: pg_resetwal.c:760 +#: pg_resetwal.c:768 #, c-format msgid "Data page checksum version: %u\n" msgstr "Datenseitenprüfsummenversion: %u\n" -#: pg_resetwal.c:774 +#: pg_resetwal.c:782 #, c-format msgid "" "\n" @@ -403,119 +414,121 @@ "Zu ändernde Werte:\n" "\n" -#: pg_resetwal.c:777 +#: pg_resetwal.c:785 #, c-format msgid "First log segment after reset: %s\n" msgstr "Erstes Logdateisegment nach Zurücksetzen: %s\n" -#: pg_resetwal.c:781 +#: pg_resetwal.c:789 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetwal.c:783 +#: pg_resetwal.c:791 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetwal.c:785 +#: pg_resetwal.c:793 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "OldestMulti's DB: %u\n" -#: pg_resetwal.c:791 +#: pg_resetwal.c:799 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetwal.c:797 +#: pg_resetwal.c:805 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetwal.c:803 +#: pg_resetwal.c:811 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetwal.c:805 +#: pg_resetwal.c:813 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetwal.c:807 +#: pg_resetwal.c:815 #, c-format msgid "OldestXID's DB: %u\n" msgstr "OldestXID's DB: %u\n" -#: pg_resetwal.c:813 +#: pg_resetwal.c:821 #, c-format msgid "NextXID epoch: %u\n" msgstr "NextXID-Epoche: %u\n" -#: pg_resetwal.c:819 +#: pg_resetwal.c:827 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetwal.c:824 +#: pg_resetwal.c:832 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetwal.c:906 +#: pg_resetwal.c:914 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: konnte pg_control-Datei nicht erstellen: %s\n" -#: pg_resetwal.c:917 +#: pg_resetwal.c:925 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%sL konnte pg_control-Datei nicht schreiben: %s\n" -#: pg_resetwal.c:924 pg_resetwal.c:1220 +#: pg_resetwal.c:932 pg_resetwal.c:1226 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: fsync-Fehler: %s\n" -#: pg_resetwal.c:964 pg_resetwal.c:1035 pg_resetwal.c:1086 +#: pg_resetwal.c:972 pg_resetwal.c:1043 pg_resetwal.c:1094 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht öffnen: %s\n" -#: pg_resetwal.c:1000 pg_resetwal.c:1057 pg_resetwal.c:1111 +#: pg_resetwal.c:1008 pg_resetwal.c:1065 pg_resetwal.c:1119 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht lesen: %s\n" -#: pg_resetwal.c:1007 pg_resetwal.c:1064 pg_resetwal.c:1118 +#: pg_resetwal.c:1015 pg_resetwal.c:1072 pg_resetwal.c:1126 #, c-format msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht schließen: %s\n" -#: pg_resetwal.c:1048 pg_resetwal.c:1102 +#: pg_resetwal.c:1056 pg_resetwal.c:1110 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht löschen: %s\n" -#: pg_resetwal.c:1187 +#: pg_resetwal.c:1193 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht öffnen: %s\n" -#: pg_resetwal.c:1198 pg_resetwal.c:1212 +#: pg_resetwal.c:1204 pg_resetwal.c:1218 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht schreiben: %s\n" -#: pg_resetwal.c:1231 +#: pg_resetwal.c:1237 #, c-format msgid "" "%s resets the PostgreSQL write-ahead log.\n" "\n" -msgstr "%s setzt den PostgreSQL-Write-Ahead-Log zurück.\n\n" +msgstr "" +"%s setzt den PostgreSQL-Write-Ahead-Log zurück.\n" +"\n" -#: pg_resetwal.c:1232 +#: pg_resetwal.c:1238 #, c-format msgid "" "Usage:\n" @@ -526,79 +539,84 @@ " %s [OPTION]... DATENVERZEICHNIS\n" "\n" -#: pg_resetwal.c:1233 +#: pg_resetwal.c:1239 #, c-format msgid "Options:\n" msgstr "Optionen:\n" -#: pg_resetwal.c:1234 +#: pg_resetwal.c:1240 #, c-format msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n" msgstr " -c XID,XID älteste und neuste Transaktion mit Commit-Timestamp setzen\n" -#: pg_resetwal.c:1235 +#: pg_resetwal.c:1241 #, c-format msgid " (zero in either value means no change)\n" msgstr " (Null in einem Wert bedeutet keine Änderung)\n" -#: pg_resetwal.c:1236 +#: pg_resetwal.c:1242 #, c-format msgid " [-D] DATADIR data directory\n" msgstr " [-D] DATENVERZ Datenbankverzeichnis\n" -#: pg_resetwal.c:1237 +#: pg_resetwal.c:1243 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e XIDEPOCHE nächste Transaktions-ID-Epoche setzen\n" -#: pg_resetwal.c:1238 +#: pg_resetwal.c:1244 #, c-format msgid " -f force update to be done\n" msgstr " -f Änderung erzwingen\n" -#: pg_resetwal.c:1239 +#: pg_resetwal.c:1245 #, c-format msgid " -l WALFILE force minimum WAL starting location for new write-ahead log\n" msgstr " -l WALDATEI minimale WAL-Startposition für neuen Write-Ahead-Log erzwingen\n" -#: pg_resetwal.c:1240 +#: pg_resetwal.c:1246 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" msgstr " -m MXID,MXID nächste und älteste Multitransaktions-ID setzen\n" -#: pg_resetwal.c:1241 +#: pg_resetwal.c:1247 #, c-format msgid " -n no update, just show what would be done (for testing)\n" msgstr "" " -n keine Änderungen; nur zeigen, was gemacht werden würde (zum\n" " Testen)\n" -#: pg_resetwal.c:1242 +#: pg_resetwal.c:1248 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID nächste OID setzen\n" -#: pg_resetwal.c:1243 +#: pg_resetwal.c:1249 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O OFFSET nächsten Multitransaktions-Offset setzen\n" -#: pg_resetwal.c:1244 +#: pg_resetwal.c:1250 +#, c-format +msgid " -u XID set oldest transaction ID\n" +msgstr " -u XID älteste Transaktions-ID setzen\n" + +#: pg_resetwal.c:1251 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" -#: pg_resetwal.c:1245 +#: pg_resetwal.c:1252 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID nächste Transaktions-ID setzen\n" -#: pg_resetwal.c:1246 +#: pg_resetwal.c:1253 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" -#: pg_resetwal.c:1247 +#: pg_resetwal.c:1254 #, c-format msgid "" "\n" diff -Nru postgresql-10-10.17/src/bin/pg_resetwal/po/fr.po postgresql-10-10.19/src/bin/pg_resetwal/po/fr.po --- postgresql-10-10.17/src/bin/pg_resetwal/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_resetwal/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -9,15 +9,15 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-07-02 04:45+0000\n" -"PO-Revision-Date: 2017-07-05 08:29+0200\n" +"POT-Creation-Date: 2021-08-25 14:29+0000\n" +"PO-Revision-Date: 2021-08-27 17:20+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.12\n" +"X-Generator: Poedit 3.0\n" #: ../../common/restricted_token.c:68 #, c-format @@ -55,88 +55,99 @@ msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetwal.c:140 pg_resetwal.c:155 pg_resetwal.c:170 pg_resetwal.c:177 -#: pg_resetwal.c:201 pg_resetwal.c:216 pg_resetwal.c:224 pg_resetwal.c:250 -#: pg_resetwal.c:264 +#: pg_resetwal.c:141 pg_resetwal.c:171 pg_resetwal.c:186 pg_resetwal.c:193 +#: pg_resetwal.c:217 pg_resetwal.c:232 pg_resetwal.c:240 pg_resetwal.c:266 +#: pg_resetwal.c:280 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s : argument invalide pour l'option %s\n" -#: pg_resetwal.c:141 pg_resetwal.c:156 pg_resetwal.c:171 pg_resetwal.c:178 -#: pg_resetwal.c:202 pg_resetwal.c:217 pg_resetwal.c:225 pg_resetwal.c:251 -#: pg_resetwal.c:265 pg_resetwal.c:272 pg_resetwal.c:285 pg_resetwal.c:293 +#: pg_resetwal.c:142 pg_resetwal.c:157 pg_resetwal.c:172 pg_resetwal.c:187 +#: pg_resetwal.c:194 pg_resetwal.c:218 pg_resetwal.c:233 pg_resetwal.c:241 +#: pg_resetwal.c:267 pg_resetwal.c:281 pg_resetwal.c:288 pg_resetwal.c:301 +#: pg_resetwal.c:309 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Essayer « %s --help » pour plus d'informations.\n" -#: pg_resetwal.c:146 +#: pg_resetwal.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "" "%s : la valeur epoch de l'identifiant de transaction (-e) ne doit pas être\n" "-1\n" -#: pg_resetwal.c:161 +#: pg_resetwal.c:156 +#, c-format +msgid "invalid argument for option %s" +msgstr "argument invalide pour l'option %s" + +#: pg_resetwal.c:162 +#, c-format +msgid "oldest transaction ID (-u) must be greater than or equal to %u" +msgstr "l'identifiant de transaction le plus ancien (-u) doit être supérieur ou égal à %u" + +#: pg_resetwal.c:177 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s : l'identifiant de la transaction (-x) ne doit pas être 0\n" -#: pg_resetwal.c:185 pg_resetwal.c:192 +#: pg_resetwal.c:201 pg_resetwal.c:208 #, c-format msgid "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" msgstr "%s : l'identifiant de transaction (-c) doit être 0 ou supérieur ou égal à 2\n" -#: pg_resetwal.c:207 +#: pg_resetwal.c:223 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s : l'OID (-o) ne doit pas être 0\n" -#: pg_resetwal.c:230 +#: pg_resetwal.c:246 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s : l'identifiant de multi-transaction (-m) ne doit pas être 0\n" -#: pg_resetwal.c:240 +#: pg_resetwal.c:256 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" msgstr "%s : l'identifiant de multi-transaction le plus ancien (-m) ne doit pas être 0\n" -#: pg_resetwal.c:256 +#: pg_resetwal.c:272 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s : le décalage de multi-transaction (-O) ne doit pas être -1\n" -#: pg_resetwal.c:283 +#: pg_resetwal.c:299 #, 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_resetwal.c:292 +#: pg_resetwal.c:308 #, c-format msgid "%s: no data directory specified\n" msgstr "%s : aucun répertoire de données indiqué\n" -#: pg_resetwal.c:306 +#: pg_resetwal.c:322 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s : ne peut pas être exécuté par « root »\n" -#: pg_resetwal.c:308 +#: pg_resetwal.c:324 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Vous devez exécuter %s en tant que super-utilisateur PostgreSQL.\n" -#: pg_resetwal.c:318 +#: pg_resetwal.c:334 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" -#: pg_resetwal.c:334 pg_resetwal.c:481 pg_resetwal.c:544 +#: pg_resetwal.c:350 pg_resetwal.c:489 pg_resetwal.c:552 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" -#: pg_resetwal.c:341 +#: pg_resetwal.c:357 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -145,7 +156,7 @@ "%s : le verrou « %s » existe\n" "Le serveur est-il démarré ? Sinon, supprimer le fichier verrou et réessayer.\n" -#: pg_resetwal.c:428 +#: pg_resetwal.c:436 #, c-format msgid "" "\n" @@ -155,7 +166,7 @@ "Si ces valeurs semblent acceptables, utiliser -f pour forcer la\n" "réinitialisation.\n" -#: pg_resetwal.c:440 +#: pg_resetwal.c:448 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -168,22 +179,22 @@ "Pour continuer malgré tout, utiliser -f pour forcer la\n" "réinitialisation.\n" -#: pg_resetwal.c:454 +#: pg_resetwal.c:462 #, c-format msgid "Write-ahead log reset\n" msgstr "Réinitialisation des journaux de transactions\n" -#: pg_resetwal.c:491 +#: pg_resetwal.c:499 #, c-format msgid "%s: unexpected empty file \"%s\"\n" msgstr "%s : fichier vide inattendu « %s »\n" -#: pg_resetwal.c:496 pg_resetwal.c:560 +#: pg_resetwal.c:504 pg_resetwal.c:568 #, c-format msgid "%s: could not read file \"%s\": %s\n" msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n" -#: pg_resetwal.c:513 +#: pg_resetwal.c:521 #, c-format msgid "" "%s: data directory is of wrong version\n" @@ -192,7 +203,7 @@ "%s : le répertoire des données n'est pas de la bonne version\n" "Le fichier « %s » contient « %s », qui n'est pas compatible avec la version « %s » de ce programme.\n" -#: pg_resetwal.c:547 +#: pg_resetwal.c:555 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -203,17 +214,17 @@ " touch %s\n" "et réessayer.\n" -#: pg_resetwal.c:583 +#: pg_resetwal.c:591 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "%s : pg_control existe mais son CRC est invalide ; agir avec précaution\n" -#: pg_resetwal.c:592 +#: pg_resetwal.c:600 #, c-format msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" msgstr "%s : pg_control existe mais est corrompu ou de mauvaise version ; ignoré\n" -#: pg_resetwal.c:690 +#: pg_resetwal.c:698 #, c-format msgid "" "Guessed pg_control values:\n" @@ -222,7 +233,7 @@ "Valeurs de pg_control devinées :\n" "\n" -#: pg_resetwal.c:692 +#: pg_resetwal.c:700 #, c-format msgid "" "Current pg_control values:\n" @@ -231,172 +242,172 @@ "Valeurs actuelles de pg_control :\n" "\n" -#: pg_resetwal.c:701 +#: pg_resetwal.c:709 #, c-format msgid "pg_control version number: %u\n" msgstr "Numéro de version de pg_control : %u\n" -#: pg_resetwal.c:703 +#: pg_resetwal.c:711 #, c-format msgid "Catalog version number: %u\n" msgstr "Numéro de version du catalogue : %u\n" -#: pg_resetwal.c:705 +#: pg_resetwal.c:713 #, c-format msgid "Database system identifier: %s\n" msgstr "Identifiant du système de base de données : %s\n" -#: pg_resetwal.c:707 +#: pg_resetwal.c:715 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "Dernier TimeLineID du point de contrôle : %u\n" -#: pg_resetwal.c:709 +#: pg_resetwal.c:717 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "Dernier full_page_writes du point de contrôle : %s\n" -#: pg_resetwal.c:710 +#: pg_resetwal.c:718 msgid "off" msgstr "désactivé" -#: pg_resetwal.c:710 +#: pg_resetwal.c:718 msgid "on" msgstr "activé" -#: pg_resetwal.c:711 +#: pg_resetwal.c:719 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "Dernier NextXID du point de contrôle : %u:%u\n" -#: pg_resetwal.c:714 +#: pg_resetwal.c:722 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "Dernier NextOID du point de contrôle : %u\n" -#: pg_resetwal.c:716 +#: pg_resetwal.c:724 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "Dernier NextMultiXactId du point de contrôle : %u\n" -#: pg_resetwal.c:718 +#: pg_resetwal.c:726 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "Dernier NextMultiOffset du point de contrôle : %u\n" -#: pg_resetwal.c:720 +#: pg_resetwal.c:728 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "Dernier oldestXID du point de contrôle : %u\n" -#: pg_resetwal.c:722 +#: pg_resetwal.c:730 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "Dernier oldestXID du point de contrôle de la base : %u\n" -#: pg_resetwal.c:724 +#: pg_resetwal.c:732 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "Dernier oldestActiveXID du point de contrôle : %u\n" -#: pg_resetwal.c:726 +#: pg_resetwal.c:734 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "Dernier oldestMultiXID du point de contrôle : %u\n" -#: pg_resetwal.c:728 +#: pg_resetwal.c:736 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "Dernier oldestMulti du point de contrôle de la base : %u\n" -#: pg_resetwal.c:730 +#: pg_resetwal.c:738 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "Dernier oldestCommitTsXid du point de contrôle : %u\n" -#: pg_resetwal.c:732 +#: pg_resetwal.c:740 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "Dernier newestCommitTsXid du point de contrôle : %u\n" -#: pg_resetwal.c:734 +#: pg_resetwal.c:742 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Alignement maximal des données : %u\n" -#: pg_resetwal.c:737 +#: pg_resetwal.c:745 #, c-format msgid "Database block size: %u\n" msgstr "Taille du bloc de la base de données : %u\n" -#: pg_resetwal.c:739 +#: pg_resetwal.c:747 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Blocs par segment des relations volumineuses : %u\n" -#: pg_resetwal.c:741 +#: pg_resetwal.c:749 #, c-format msgid "WAL block size: %u\n" msgstr "Taille de bloc du journal de transaction : %u\n" -#: pg_resetwal.c:743 +#: pg_resetwal.c:751 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Octets par segment du journal de transaction : %u\n" -#: pg_resetwal.c:745 +#: pg_resetwal.c:753 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Longueur maximale des identifiants : %u\n" -#: pg_resetwal.c:747 +#: pg_resetwal.c:755 #, c-format msgid "Maximum columns in an index: %u\n" -msgstr "Nombre maximal de colonnes d'un index: %u\n" +msgstr "Nombre maximum de colonnes d'un index: %u\n" -#: pg_resetwal.c:749 +#: pg_resetwal.c:757 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Longueur maximale d'un morceau TOAST : %u\n" -#: pg_resetwal.c:751 +#: pg_resetwal.c:759 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Taille d'un morceau de Large Object : %u\n" -#: pg_resetwal.c:754 +#: pg_resetwal.c:762 #, c-format msgid "Date/time type storage: %s\n" msgstr "Stockage du type date/heure : %s\n" -#: pg_resetwal.c:755 +#: pg_resetwal.c:763 msgid "64-bit integers" msgstr "entiers 64-bits" -#: pg_resetwal.c:756 +#: pg_resetwal.c:764 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Passage d'argument float4 : %s\n" -#: pg_resetwal.c:757 pg_resetwal.c:759 +#: pg_resetwal.c:765 pg_resetwal.c:767 msgid "by reference" msgstr "par référence" -#: pg_resetwal.c:757 pg_resetwal.c:759 +#: pg_resetwal.c:765 pg_resetwal.c:767 msgid "by value" msgstr "par valeur" -#: pg_resetwal.c:758 +#: pg_resetwal.c:766 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Passage d'argument float8 : %s\n" -#: pg_resetwal.c:760 +#: pg_resetwal.c:768 #, c-format msgid "Data page checksum version: %u\n" msgstr "Version des sommes de contrôle des pages de données : %u\n" -#: pg_resetwal.c:774 +#: pg_resetwal.c:782 #, c-format msgid "" "\n" @@ -409,119 +420,112 @@ "Valeurs à changer :\n" "\n" -#: pg_resetwal.c:777 +#: pg_resetwal.c:785 #, c-format msgid "First log segment after reset: %s\n" msgstr "Premier segment du journal après réinitialisation : %s\n" -#: pg_resetwal.c:781 +#: pg_resetwal.c:789 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetwal.c:783 +#: pg_resetwal.c:791 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetwal.c:785 +#: pg_resetwal.c:793 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "OldestMulti's DB: %u\n" -#: pg_resetwal.c:791 +#: pg_resetwal.c:799 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetwal.c:797 +#: pg_resetwal.c:805 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetwal.c:803 +#: pg_resetwal.c:811 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetwal.c:805 +#: pg_resetwal.c:813 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetwal.c:807 +#: pg_resetwal.c:815 #, c-format msgid "OldestXID's DB: %u\n" msgstr "OldestXID's DB: %u\n" -#: pg_resetwal.c:813 +#: pg_resetwal.c:821 #, c-format msgid "NextXID epoch: %u\n" msgstr "NextXID Epoch: %u\n" -#: pg_resetwal.c:819 +#: pg_resetwal.c:827 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetwal.c:824 +#: pg_resetwal.c:832 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetwal.c:890 -#, c-format -msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n" -msgstr "" -"%s : erreur interne -- sizeof(ControlFileData) est trop important...\n" -"corrigez PG_CONTROL_SIZE\n" - -#: pg_resetwal.c:905 +#: pg_resetwal.c:914 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s : n'a pas pu créer le fichier pg_control : %s\n" -#: pg_resetwal.c:916 +#: pg_resetwal.c:925 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%s : n'a pas pu écrire le fichier pg_control : %s\n" -#: pg_resetwal.c:923 pg_resetwal.c:1219 +#: pg_resetwal.c:932 pg_resetwal.c:1226 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s : erreur fsync : %s\n" -#: pg_resetwal.c:963 pg_resetwal.c:1034 pg_resetwal.c:1085 +#: pg_resetwal.c:972 pg_resetwal.c:1043 pg_resetwal.c:1094 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" -#: pg_resetwal.c:999 pg_resetwal.c:1056 pg_resetwal.c:1110 +#: pg_resetwal.c:1008 pg_resetwal.c:1065 pg_resetwal.c:1119 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" -#: pg_resetwal.c:1006 pg_resetwal.c:1063 pg_resetwal.c:1117 +#: pg_resetwal.c:1015 pg_resetwal.c:1072 pg_resetwal.c:1126 #, c-format msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n" -#: pg_resetwal.c:1047 pg_resetwal.c:1101 +#: pg_resetwal.c:1056 pg_resetwal.c:1110 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s : n'a pas pu supprimer le fichier « %s » : %s\n" -#: pg_resetwal.c:1186 +#: pg_resetwal.c:1193 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" -#: pg_resetwal.c:1197 pg_resetwal.c:1211 +#: pg_resetwal.c:1204 pg_resetwal.c:1218 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s : n'a pas pu écrire le fichier « %s » : %s\n" -#: pg_resetwal.c:1230 +#: pg_resetwal.c:1237 #, c-format msgid "" "%s resets the PostgreSQL write-ahead log.\n" @@ -530,7 +534,7 @@ "%s réinitialise le journal des transactions PostgreSQL.\n" "\n" -#: pg_resetwal.c:1231 +#: pg_resetwal.c:1238 #, c-format msgid "" "Usage:\n" @@ -541,83 +545,88 @@ " %s [OPTION]... RÉP_DONNÉES\n" "\n" -#: pg_resetwal.c:1232 +#: pg_resetwal.c:1239 #, c-format msgid "Options:\n" msgstr "Options :\n" -#: pg_resetwal.c:1233 +#: pg_resetwal.c:1240 #, c-format msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n" -msgstr " -c XID,XID configure la plus ancienne et la plus récente transaction\n" +msgstr " -c XID,XID configure la plus ancienne et la plus récente transaction\n" -#: pg_resetwal.c:1234 +#: pg_resetwal.c:1241 #, c-format msgid " (zero in either value means no change)\n" -msgstr " (zéro dans l'une des deux valeurs signifie aucun changement)\n" +msgstr " (zéro dans l'une des deux valeurs signifie aucun changement)\n" -#: pg_resetwal.c:1235 +#: pg_resetwal.c:1242 #, c-format msgid " [-D] DATADIR data directory\n" -msgstr " [-D] RÉPDONNEES répertoire de la base de données\n" +msgstr " [-D] RÉP_DONNEES répertoire de la base de données\n" -#: pg_resetwal.c:1236 +#: pg_resetwal.c:1243 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr "" -" -e XIDEPOCH fixe la valeur epoch du prochain identifiant de\n" -" transaction\n" +" -e XIDEPOCH configure la valeur epoch du prochain identifiant de\n" +" transaction\n" -#: pg_resetwal.c:1237 +#: pg_resetwal.c:1244 #, c-format msgid " -f force update to be done\n" -msgstr " -f force la mise à jour\n" +msgstr " -f force la mise à jour\n" -#: pg_resetwal.c:1238 +#: pg_resetwal.c:1245 #, c-format msgid " -l WALFILE force minimum WAL starting location for new write-ahead log\n" msgstr "" -" -l FICHIERWAL force l'emplacement minimal de début des WAL du nouveau\n" -" journal de transactions\n" +" -l FICHIERWAL configure l'emplacement minimal de début des WAL du nouveau\n" +" journal de transactions\n" -#: pg_resetwal.c:1239 +#: pg_resetwal.c:1246 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" -msgstr " -m MXID,MXID fixe le prochain identifiant multi-transaction\n" +msgstr " -m MXID,MXID configure le prochain identifiant multi-transaction\n" -#: pg_resetwal.c:1240 +#: pg_resetwal.c:1247 #, c-format msgid " -n no update, just show what would be done (for testing)\n" msgstr "" -" -n pas de mise à jour, affiche simplement ce qui sera fait\n" -" (pour test)\n" +" -n pas de mise à jour, affiche simplement ce qui sera fait\n" +" (pour test)\n" -#: pg_resetwal.c:1241 +#: pg_resetwal.c:1248 #, c-format msgid " -o OID set next OID\n" -msgstr " -o OID fixe le prochain OID\n" +msgstr " -o OID configure le prochain OID\n" -#: pg_resetwal.c:1242 +#: pg_resetwal.c:1249 #, c-format msgid " -O OFFSET set next multitransaction offset\n" -msgstr " -O DÉCALAGE fixe le décalage de la prochaine multi-transaction\n" +msgstr " -O DÉCALAGE configure le décalage de la prochaine multi-transaction\n" -#: pg_resetwal.c:1243 +#: pg_resetwal.c:1250 +#, c-format +msgid " -u XID set oldest transaction ID\n" +msgstr " -u XID configure l'identifiant de transaction le plus ancien\n" + +#: pg_resetwal.c:1251 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version et quitte\n" +msgstr " -V, --version affiche la version et quitte\n" -#: pg_resetwal.c:1244 +#: pg_resetwal.c:1252 #, c-format msgid " -x XID set next transaction ID\n" -msgstr " -x XID fixe le prochain identifiant de transaction\n" +msgstr " -x XID configure le prochain identifiant de transaction\n" -#: pg_resetwal.c:1245 +#: pg_resetwal.c:1253 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide et quitte\n" +msgstr " -?, --help affiche cette aide et quitte\n" -#: pg_resetwal.c:1246 +#: pg_resetwal.c:1254 #, c-format msgid "" "\n" @@ -626,35 +635,40 @@ "\n" "Rapporter les bogues à .\n" -#~ msgid "First log file ID after reset: %u\n" -#~ msgstr "Premier identifiant du journal après réinitialisation : %u\n" +#~ msgid "Transaction log reset\n" +#~ msgstr "Réinitialisation du journal des transactions\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version afficherla version et quitte\n" +#~ msgid "floating-point numbers" +#~ msgstr "nombres à virgule flottante" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide et quitte\n" +#~ msgid "%s: invalid argument for option -x\n" +#~ msgstr "%s : argument invalide pour l'option -x\n" -#~ msgid "%s: could not read from directory \"%s\": %s\n" -#~ msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" +#~ msgid "%s: invalid argument for option -o\n" +#~ msgstr "%s : argument invalide pour l'option -o\n" -#~ msgid "%s: invalid argument for option -l\n" -#~ msgstr "%s : argument invalide pour l'option -l\n" +#~ msgid "%s: invalid argument for option -m\n" +#~ msgstr "%s : argument invalide pour l'option -m\n" #~ msgid "%s: invalid argument for option -O\n" #~ msgstr "%s : argument invalide pour l'option -O\n" -#~ msgid "%s: invalid argument for option -m\n" -#~ msgstr "%s : argument invalide pour l'option -m\n" +#~ msgid "%s: invalid argument for option -l\n" +#~ msgstr "%s : argument invalide pour l'option -l\n" -#~ msgid "%s: invalid argument for option -o\n" -#~ msgstr "%s : argument invalide pour l'option -o\n" +#~ msgid "%s: could not read from directory \"%s\": %s\n" +#~ msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" -#~ msgid "%s: invalid argument for option -x\n" -#~ msgstr "%s : argument invalide pour l'option -x\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide et quitte\n" -#~ msgid "floating-point numbers" -#~ msgstr "nombres à virgule flottante" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version afficherla version et quitte\n" -#~ msgid "Transaction log reset\n" -#~ msgstr "Réinitialisation du journal des transactions\n" +#~ msgid "First log file ID after reset: %u\n" +#~ msgstr "Premier identifiant du journal après réinitialisation : %u\n" + +#~ msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n" +#~ msgstr "" +#~ "%s : erreur interne -- sizeof(ControlFileData) est trop important...\n" +#~ "corrigez PG_CONTROL_SIZE\n" diff -Nru postgresql-10-10.17/src/bin/pg_resetwal/po/ru.po postgresql-10-10.19/src/bin/pg_resetwal/po/ru.po --- postgresql-10-10.17/src/bin/pg_resetwal/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_resetwal/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -5,13 +5,13 @@ # Oleg Bartunov , 2004. # Sergey Burladyan , 2009. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: pg_resetxlog (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2018-10-01 13:03+0300\n" -"PO-Revision-Date: 2017-08-23 12:34+0300\n" +"POT-Creation-Date: 2021-08-09 23:07+0300\n" +"PO-Revision-Date: 2021-08-14 06:52+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -59,87 +59,98 @@ msgstr "%s: не удалось получить код выхода от подпроцесса (код ошибки: %lu)\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetwal.c:140 pg_resetwal.c:155 pg_resetwal.c:170 pg_resetwal.c:177 -#: pg_resetwal.c:201 pg_resetwal.c:216 pg_resetwal.c:224 pg_resetwal.c:250 -#: pg_resetwal.c:264 +#: pg_resetwal.c:141 pg_resetwal.c:171 pg_resetwal.c:186 pg_resetwal.c:193 +#: pg_resetwal.c:217 pg_resetwal.c:232 pg_resetwal.c:240 pg_resetwal.c:266 +#: pg_resetwal.c:280 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s: недопустимый аргумент параметра %s\n" -#: pg_resetwal.c:141 pg_resetwal.c:156 pg_resetwal.c:171 pg_resetwal.c:178 -#: pg_resetwal.c:202 pg_resetwal.c:217 pg_resetwal.c:225 pg_resetwal.c:251 -#: pg_resetwal.c:265 pg_resetwal.c:272 pg_resetwal.c:285 pg_resetwal.c:293 +#: pg_resetwal.c:142 pg_resetwal.c:157 pg_resetwal.c:172 pg_resetwal.c:187 +#: pg_resetwal.c:194 pg_resetwal.c:218 pg_resetwal.c:233 pg_resetwal.c:241 +#: pg_resetwal.c:267 pg_resetwal.c:281 pg_resetwal.c:288 pg_resetwal.c:301 +#: pg_resetwal.c:309 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" -#: pg_resetwal.c:146 +#: pg_resetwal.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: эпоха ID транзакции (-e) не должна быть равна -1\n" -#: pg_resetwal.c:161 +#: pg_resetwal.c:156 +#, c-format +msgid "invalid argument for option %s" +msgstr "недопустимый аргумент параметра %s" + +#: pg_resetwal.c:162 +#, c-format +msgid "oldest transaction ID (-u) must be greater than or equal to %u" +msgstr "ID старейшей транзакции (-u) должен быть больше или равен %u" + +#: pg_resetwal.c:177 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: ID транзакции (-x) не должен быть равен 0\n" -#: pg_resetwal.c:185 pg_resetwal.c:192 +#: pg_resetwal.c:201 pg_resetwal.c:208 #, c-format msgid "" "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" msgstr "%s: ID транзакции (-c) должен быть равен 0, либо больше или равен 2\n" -#: pg_resetwal.c:207 +#: pg_resetwal.c:223 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) не должен быть равен 0\n" -#: pg_resetwal.c:230 +#: pg_resetwal.c:246 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: ID мультитранзакции (-m) не должен быть равен 0\n" -#: pg_resetwal.c:240 +#: pg_resetwal.c:256 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" msgstr "%s: ID старейшей мультитранзакции (-m) не должен быть равен 0\n" -#: pg_resetwal.c:256 +#: pg_resetwal.c:272 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: смещение мультитранзакции (-O) не должно быть равно -1\n" -#: pg_resetwal.c:283 +#: pg_resetwal.c:299 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: слишком много аргументов командной строки (первый: \"%s\")\n" -#: pg_resetwal.c:292 +#: pg_resetwal.c:308 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: каталог данных не указан\n" -#: pg_resetwal.c:306 +#: pg_resetwal.c:322 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s: программу не должен запускать root\n" -#: pg_resetwal.c:308 +#: pg_resetwal.c:324 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Запускать %s нужно от имени суперпользователя PostgreSQL.\n" -#: pg_resetwal.c:318 +#: pg_resetwal.c:334 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: не удалось перейти в каталог \"%s\": %s\n" -#: pg_resetwal.c:334 pg_resetwal.c:481 pg_resetwal.c:544 +#: pg_resetwal.c:350 pg_resetwal.c:489 pg_resetwal.c:552 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: не удалось открыть файл \"%s\" для чтения: %s\n" -#: pg_resetwal.c:341 +#: pg_resetwal.c:357 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -148,7 +159,7 @@ "%s: обнаружен файл блокировки \"%s\"\n" "Возможно, сервер запущен? Если нет, удалите этот файл и попробуйте снова.\n" -#: pg_resetwal.c:428 +#: pg_resetwal.c:436 #, c-format msgid "" "\n" @@ -158,7 +169,7 @@ "Если эти значения приемлемы, выполните сброс принудительно, добавив ключ -" "f.\n" -#: pg_resetwal.c:440 +#: pg_resetwal.c:448 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -169,22 +180,22 @@ "Сброс журнала предзаписи может привести к потере данных.\n" "Если вы хотите сбросить его, несмотря на это, добавьте ключ -f.\n" -#: pg_resetwal.c:454 +#: pg_resetwal.c:462 #, c-format msgid "Write-ahead log reset\n" msgstr "Журнал предзаписи сброшен\n" -#: pg_resetwal.c:491 +#: pg_resetwal.c:499 #, c-format msgid "%s: unexpected empty file \"%s\"\n" msgstr "%s: файл \"%s\" оказался пустым\n" -#: pg_resetwal.c:496 pg_resetwal.c:560 +#: pg_resetwal.c:504 pg_resetwal.c:568 #, c-format msgid "%s: could not read file \"%s\": %s\n" msgstr "%s: не удалось прочитать файл \"%s\": %s\n" -#: pg_resetwal.c:513 +#: pg_resetwal.c:521 #, c-format msgid "" "%s: data directory is of wrong version\n" @@ -194,7 +205,7 @@ "%s: каталог данных неверной версии\n" "Файл \"%s\" содержит строку \"%s\", а ожидается версия программы \"%s\".\n" -#: pg_resetwal.c:547 +#: pg_resetwal.c:555 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -205,21 +216,21 @@ " touch %s\n" "и повторите попытку.\n" -#: pg_resetwal.c:583 +#: pg_resetwal.c:591 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "" "%s: pg_control существует, но его контрольная сумма неверна; продолжайте с " "осторожностью\n" -#: pg_resetwal.c:592 +#: pg_resetwal.c:600 #, c-format msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" msgstr "" "%s: pg_control испорчен или имеет неизвестную либо недопустимую версию; " "игнорируется...\n" -#: pg_resetwal.c:690 +#: pg_resetwal.c:698 #, c-format msgid "" "Guessed pg_control values:\n" @@ -228,7 +239,7 @@ "Предполагаемые значения pg_control:\n" "\n" -#: pg_resetwal.c:692 +#: pg_resetwal.c:700 #, c-format msgid "" "Current pg_control values:\n" @@ -237,186 +248,186 @@ "Текущие значения pg_control:\n" "\n" -#: pg_resetwal.c:701 +#: pg_resetwal.c:709 #, c-format msgid "pg_control version number: %u\n" msgstr "Номер версии pg_control: %u\n" -#: pg_resetwal.c:703 +#: pg_resetwal.c:711 #, c-format msgid "Catalog version number: %u\n" msgstr "Номер версии каталога: %u\n" -#: pg_resetwal.c:705 +#: pg_resetwal.c:713 #, c-format msgid "Database system identifier: %s\n" msgstr "Идентификатор системы баз данных: %s\n" # skip-rule: capital-letter-first -#: pg_resetwal.c:707 +#: pg_resetwal.c:715 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "Линия времени последней конт. точки: %u\n" # skip-rule: no-space-after-period -#: pg_resetwal.c:709 +#: pg_resetwal.c:717 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "Режим full_page_writes последней к.т: %s\n" -#: pg_resetwal.c:710 +#: pg_resetwal.c:718 msgid "off" msgstr "выкл." -#: pg_resetwal.c:710 +#: pg_resetwal.c:718 msgid "on" msgstr "вкл." # skip-rule: capital-letter-first -#: pg_resetwal.c:711 +#: pg_resetwal.c:719 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID последней конт. точки: %u:%u\n" # skip-rule: capital-letter-first -#: pg_resetwal.c:714 +#: pg_resetwal.c:722 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID последней конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetwal.c:716 +#: pg_resetwal.c:724 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId послед. конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetwal.c:718 +#: pg_resetwal.c:726 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset послед. конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetwal.c:720 +#: pg_resetwal.c:728 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID последней конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetwal.c:722 +#: pg_resetwal.c:730 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "БД с oldestXID последней конт. точки: %u\n" # skip-rule: capital-letter-first -#: pg_resetwal.c:724 +#: pg_resetwal.c:732 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "oldestActiveXID последней к. т.: %u\n" # skip-rule: capital-letter-first -#: pg_resetwal.c:726 +#: pg_resetwal.c:734 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid последней конт. точки: %u\n" # skip-rule: capital-letter-first, double-space -#: pg_resetwal.c:728 +#: pg_resetwal.c:736 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "БД с oldestMulti последней к. т.: %u\n" # skip-rule: capital-letter-first, double-space -#: pg_resetwal.c:730 +#: pg_resetwal.c:738 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid последней к. т.: %u\n" # skip-rule: capital-letter-first, double-space -#: pg_resetwal.c:732 +#: pg_resetwal.c:740 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "newestCommitTsXid последней к. т.: %u\n" -#: pg_resetwal.c:734 +#: pg_resetwal.c:742 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Макс. предел выравнивания данных: %u\n" -#: pg_resetwal.c:737 +#: pg_resetwal.c:745 #, c-format msgid "Database block size: %u\n" msgstr "Размер блока БД: %u\n" # skip-rule: double-space -#: pg_resetwal.c:739 +#: pg_resetwal.c:747 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Блоков в макс. сегменте отношений: %u\n" -#: pg_resetwal.c:741 +#: pg_resetwal.c:749 #, c-format msgid "WAL block size: %u\n" msgstr "Размер блока WAL: %u\n" -#: pg_resetwal.c:743 +#: pg_resetwal.c:751 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Байт в сегменте WAL: %u\n" -#: pg_resetwal.c:745 +#: pg_resetwal.c:753 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Максимальная длина идентификаторов: %u\n" -#: pg_resetwal.c:747 +#: pg_resetwal.c:755 #, c-format msgid "Maximum columns in an index: %u\n" -msgstr "Максимальное число столбцов в индексе: %u\n" +msgstr "Макс. число столбцов в индексе: %u\n" -#: pg_resetwal.c:749 +#: pg_resetwal.c:757 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Максимальный размер порции TOAST: %u\n" -#: pg_resetwal.c:751 +#: pg_resetwal.c:759 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Размер порции большого объекта: %u\n" -#: pg_resetwal.c:754 +#: pg_resetwal.c:762 #, c-format msgid "Date/time type storage: %s\n" msgstr "Формат хранения даты/времени: %s\n" -#: pg_resetwal.c:755 +#: pg_resetwal.c:763 msgid "64-bit integers" msgstr "64-битные целые" -#: pg_resetwal.c:756 +#: pg_resetwal.c:764 #, c-format msgid "Float4 argument passing: %s\n" -msgstr "Передача аргумента Float4: %s\n" +msgstr "Передача аргумента float4: %s\n" -#: pg_resetwal.c:757 pg_resetwal.c:759 +#: pg_resetwal.c:765 pg_resetwal.c:767 msgid "by reference" msgstr "по ссылке" -#: pg_resetwal.c:757 pg_resetwal.c:759 +#: pg_resetwal.c:765 pg_resetwal.c:767 msgid "by value" msgstr "по значению" -#: pg_resetwal.c:758 +#: pg_resetwal.c:766 #, c-format msgid "Float8 argument passing: %s\n" -msgstr "Передача аргумента Float8: %s\n" +msgstr "Передача аргумента float8: %s\n" -#: pg_resetwal.c:760 +#: pg_resetwal.c:768 #, c-format msgid "Data page checksum version: %u\n" msgstr "Версия контрольных сумм страниц: %u\n" -#: pg_resetwal.c:774 +#: pg_resetwal.c:782 #, c-format msgid "" "\n" @@ -429,112 +440,112 @@ "Значения, которые будут изменены:\n" "\n" -#: pg_resetwal.c:777 +#: pg_resetwal.c:785 #, c-format msgid "First log segment after reset: %s\n" msgstr "Первый сегмент журнала после сброса: %s\n" -#: pg_resetwal.c:781 +#: pg_resetwal.c:789 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetwal.c:783 +#: pg_resetwal.c:791 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetwal.c:785 +#: pg_resetwal.c:793 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "БД с oldestMultiXid: %u\n" -#: pg_resetwal.c:791 +#: pg_resetwal.c:799 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetwal.c:797 +#: pg_resetwal.c:805 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetwal.c:803 +#: pg_resetwal.c:811 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetwal.c:805 +#: pg_resetwal.c:813 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetwal.c:807 +#: pg_resetwal.c:815 #, c-format msgid "OldestXID's DB: %u\n" msgstr "БД с oldestXID: %u\n" -#: pg_resetwal.c:813 +#: pg_resetwal.c:821 #, c-format msgid "NextXID epoch: %u\n" msgstr "Эпоха NextXID: %u\n" -#: pg_resetwal.c:819 +#: pg_resetwal.c:827 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetwal.c:824 +#: pg_resetwal.c:832 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetwal.c:906 +#: pg_resetwal.c:914 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: не удалось создать файл pg_control: %s\n" -#: pg_resetwal.c:917 +#: pg_resetwal.c:925 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%s: не удалось записать файл pg_control: %s\n" -#: pg_resetwal.c:924 pg_resetwal.c:1218 +#: pg_resetwal.c:932 pg_resetwal.c:1226 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: ошибка синхронизации с ФС: %s\n" -#: pg_resetwal.c:964 pg_resetwal.c:1035 pg_resetwal.c:1086 +#: pg_resetwal.c:972 pg_resetwal.c:1043 pg_resetwal.c:1094 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: не удалось открыть каталог \"%s\": %s\n" -#: pg_resetwal.c:1000 pg_resetwal.c:1057 pg_resetwal.c:1111 +#: pg_resetwal.c:1008 pg_resetwal.c:1065 pg_resetwal.c:1119 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: не удалось прочитать каталог \"%s\": %s\n" -#: pg_resetwal.c:1007 pg_resetwal.c:1064 pg_resetwal.c:1118 +#: pg_resetwal.c:1015 pg_resetwal.c:1072 pg_resetwal.c:1126 #, c-format msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: не удалось закрыть каталог \"%s\": %s\n" -#: pg_resetwal.c:1048 pg_resetwal.c:1102 +#: pg_resetwal.c:1056 pg_resetwal.c:1110 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: ошибка при удалении файла \"%s\": %s\n" -#: pg_resetwal.c:1185 +#: pg_resetwal.c:1193 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: не удалось открыть файл \"%s\": %s\n" -#: pg_resetwal.c:1196 pg_resetwal.c:1210 +#: pg_resetwal.c:1204 pg_resetwal.c:1218 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: не удалось записать файл \"%s\": %s\n" -#: pg_resetwal.c:1229 +#: pg_resetwal.c:1237 #, c-format msgid "" "%s resets the PostgreSQL write-ahead log.\n" @@ -543,7 +554,7 @@ "%s сбрасывает журнал предзаписи PostgreSQL.\n" "\n" -#: pg_resetwal.c:1230 +#: pg_resetwal.c:1238 #, c-format msgid "" "Usage:\n" @@ -554,12 +565,12 @@ " %s [ПАРАМЕТР]... КАТ_ДАННЫХ\n" "\n" -#: pg_resetwal.c:1231 +#: pg_resetwal.c:1239 #, c-format msgid "Options:\n" msgstr "Параметры:\n" -#: pg_resetwal.c:1232 +#: pg_resetwal.c:1240 #, c-format msgid "" " -c XID,XID set oldest and newest transactions bearing commit " @@ -568,27 +579,27 @@ " -c XID,XID задать старейшую и новейшую транзакции, несущие метку " "времени фиксации\n" -#: pg_resetwal.c:1233 +#: pg_resetwal.c:1241 #, c-format msgid " (zero in either value means no change)\n" msgstr " (0 в любом из аргументов игнорируется)\n" -#: pg_resetwal.c:1234 +#: pg_resetwal.c:1242 #, c-format msgid " [-D] DATADIR data directory\n" msgstr " [-D] КАТ_ДАННЫХ каталог данных\n" -#: pg_resetwal.c:1235 +#: pg_resetwal.c:1243 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e XIDEPOCH задать эпоху в ID следующей транзакции\n" -#: pg_resetwal.c:1236 +#: pg_resetwal.c:1244 #, c-format msgid " -f force update to be done\n" msgstr " -f принудительное выполнение операции\n" -#: pg_resetwal.c:1237 +#: pg_resetwal.c:1245 #, c-format msgid "" " -l WALFILE force minimum WAL starting location for new write-ahead " @@ -597,12 +608,12 @@ " -l WALFILE задать минимальное начальное положение WAL для нового\n" " журнала предзаписи\n" -#: pg_resetwal.c:1238 +#: pg_resetwal.c:1246 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" msgstr " -m MXID,MXID задать ID следующей и старейшей мультитранзакции\n" -#: pg_resetwal.c:1239 +#: pg_resetwal.c:1247 #, c-format msgid "" " -n no update, just show what would be done (for testing)\n" @@ -611,32 +622,37 @@ "их\n" " (для проверки)\n" -#: pg_resetwal.c:1240 +#: pg_resetwal.c:1248 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID задать следующий OID\n" -#: pg_resetwal.c:1241 +#: pg_resetwal.c:1249 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O СМЕЩЕНИЕ задать смещение следующей мультитранзакции\n" -#: pg_resetwal.c:1242 +#: pg_resetwal.c:1250 +#, c-format +msgid " -u XID set oldest transaction ID\n" +msgstr " -u XID задать ID старейшей транзакции\n" + +#: pg_resetwal.c:1251 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version показать версию и выйти\n" -#: pg_resetwal.c:1243 +#: pg_resetwal.c:1252 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID задать ID следующей транзакции\n" -#: pg_resetwal.c:1244 +#: pg_resetwal.c:1253 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать эту справку и выйти\n" -#: pg_resetwal.c:1245 +#: pg_resetwal.c:1254 #, c-format msgid "" "\n" diff -Nru postgresql-10-10.17/src/bin/pg_resetwal/po/sv.po postgresql-10-10.19/src/bin/pg_resetwal/po/sv.po --- postgresql-10-10.17/src/bin/pg_resetwal/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_resetwal/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,5 +1,5 @@ # Swedish message translation file for resetxlog. -# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017. +# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # Peter Eisentraut , 2010. # Mats Erik Andersson , 2014. # @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-07-19 06:46+0000\n" -"PO-Revision-Date: 2018-08-26 07:45+0200\n" +"POT-Creation-Date: 2021-11-07 09:44+0000\n" +"PO-Revision-Date: 2021-11-07 21:04+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../../common/restricted_token.c:68 #, c-format @@ -52,86 +53,97 @@ msgstr "%s: kunde inte utvinna statuskod för underprocess: felkod %lu\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetwal.c:140 pg_resetwal.c:155 pg_resetwal.c:170 pg_resetwal.c:177 -#: pg_resetwal.c:201 pg_resetwal.c:216 pg_resetwal.c:224 pg_resetwal.c:250 -#: pg_resetwal.c:264 +#: pg_resetwal.c:141 pg_resetwal.c:171 pg_resetwal.c:186 pg_resetwal.c:193 +#: pg_resetwal.c:217 pg_resetwal.c:232 pg_resetwal.c:240 pg_resetwal.c:266 +#: pg_resetwal.c:280 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s: ogiltigt argument för flaggan %s\n" -#: pg_resetwal.c:141 pg_resetwal.c:156 pg_resetwal.c:171 pg_resetwal.c:178 -#: pg_resetwal.c:202 pg_resetwal.c:217 pg_resetwal.c:225 pg_resetwal.c:251 -#: pg_resetwal.c:265 pg_resetwal.c:272 pg_resetwal.c:285 pg_resetwal.c:293 +#: pg_resetwal.c:142 pg_resetwal.c:157 pg_resetwal.c:172 pg_resetwal.c:187 +#: pg_resetwal.c:194 pg_resetwal.c:218 pg_resetwal.c:233 pg_resetwal.c:241 +#: pg_resetwal.c:267 pg_resetwal.c:281 pg_resetwal.c:288 pg_resetwal.c:301 +#: pg_resetwal.c:309 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Försök med \"%s --help\" för mer information.\n" -#: pg_resetwal.c:146 +#: pg_resetwal.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: Epoch (-e) för transaktions-ID får inte vara -1.\n" -#: pg_resetwal.c:161 +#: pg_resetwal.c:156 +#, c-format +msgid "invalid argument for option %s" +msgstr "ogiltigt argument för flaggan %s" + +#: pg_resetwal.c:162 +#, c-format +msgid "oldest transaction ID (-u) must be greater than or equal to %u" +msgstr "äldsta transaktions-ID (-u) måste vara större än eller lika med %u" + +#: pg_resetwal.c:177 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: Transaktions-ID (-x) får inte vara 0.\n" -#: pg_resetwal.c:185 pg_resetwal.c:192 +#: pg_resetwal.c:201 pg_resetwal.c:208 #, c-format msgid "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" msgstr "%s: transaktions-ID (-c) måste antingen vara 0 eller större än eller lika med 2\n" -#: pg_resetwal.c:207 +#: pg_resetwal.c:223 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) får inte vara 0.\n" -#: pg_resetwal.c:230 +#: pg_resetwal.c:246 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: Multitransaktions-ID (-m) får inte vara 0.\n" -#: pg_resetwal.c:240 +#: pg_resetwal.c:256 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" msgstr "%s: Äldsta multitransaktions-ID (-m) får inte vara 0.\n" -#: pg_resetwal.c:256 +#: pg_resetwal.c:272 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: Multitransaktionsoffset (-O) får inte vara -1.\n" -#: pg_resetwal.c:283 +#: pg_resetwal.c:299 #, 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_resetwal.c:292 +#: pg_resetwal.c:308 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: ingen datakatalog angiven.\n" -#: pg_resetwal.c:306 +#: pg_resetwal.c:322 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s: får inte utföras av \"root\".\n" -#: pg_resetwal.c:308 +#: pg_resetwal.c:324 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Du måste köra %s som PostgreSQL:s superanvändare.\n" -#: pg_resetwal.c:318 +#: pg_resetwal.c:334 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: kunde inte gå till katalog \"%s\": %s\n" -#: pg_resetwal.c:334 pg_resetwal.c:481 pg_resetwal.c:544 +#: pg_resetwal.c:350 pg_resetwal.c:489 pg_resetwal.c:552 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: kunde inte öppna fil \"%s\" för läsning: %s\n" -#: pg_resetwal.c:341 +#: pg_resetwal.c:357 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -140,7 +152,7 @@ "%s: En låsfil \"%s\" finns på plats.\n" "Kör servern redan? Om inte, radera låsfilen och försök igen.\n" -#: pg_resetwal.c:428 +#: pg_resetwal.c:436 #, c-format msgid "" "\n" @@ -150,7 +162,7 @@ "Om dessa värden verkar godtagbara, använd då -f för att\n" "framtvinga återställning.\n" -#: pg_resetwal.c:440 +#: pg_resetwal.c:448 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -161,22 +173,22 @@ "write-ahead-loggen kan medföra att data förloras. Om du ändå\n" "vill fortsätta, använd -f för att framtvinga återställning.\n" -#: pg_resetwal.c:454 +#: pg_resetwal.c:462 #, c-format msgid "Write-ahead log reset\n" msgstr "Återställning av write-ahead-log\n" -#: pg_resetwal.c:491 +#: pg_resetwal.c:499 #, c-format msgid "%s: unexpected empty file \"%s\"\n" msgstr "%s: oväntad tom fil \"%s\"\n" -#: pg_resetwal.c:496 pg_resetwal.c:560 +#: pg_resetwal.c:504 pg_resetwal.c:568 #, c-format msgid "%s: could not read file \"%s\": %s\n" msgstr "%s: kunde inte läsa fil \"%s\": %s\n" -#: pg_resetwal.c:513 +#: pg_resetwal.c:521 #, c-format msgid "" "%s: data directory is of wrong version\n" @@ -185,7 +197,7 @@ "%s: datakatalogen har fel version\n" "Filen \"%s\" innehåller \"%s\", vilket inte är kompatibelt med detta programmets version \"%s\".\n" -#: pg_resetwal.c:547 +#: pg_resetwal.c:555 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -195,17 +207,17 @@ "Om du är säker på att sökvägen till datakatalogen är riktig,\n" "utför då \"touch %s\" och försök sedan igen.\n" -#: pg_resetwal.c:583 +#: pg_resetwal.c:591 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "%s: pg_control existerar men har ogiltig CRC. Fortsätt med varsamhet.\n" -#: pg_resetwal.c:592 +#: pg_resetwal.c:600 #, c-format msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" msgstr "%s: pg_control existerar men är trasig eller har fel version. Den ignoreras.\n" -#: pg_resetwal.c:690 +#: pg_resetwal.c:698 #, c-format msgid "" "Guessed pg_control values:\n" @@ -214,7 +226,7 @@ "Gissade värden för pg_control:\n" "\n" -#: pg_resetwal.c:692 +#: pg_resetwal.c:700 #, c-format msgid "" "Current pg_control values:\n" @@ -226,173 +238,173 @@ # November 26th, 2014: Insert six additional space characters # for best alignment with Swedish translation. # Translations should be checked against those of pg_controldata. -#: pg_resetwal.c:701 +#: pg_resetwal.c:709 #, c-format msgid "pg_control version number: %u\n" msgstr "Versionsnummer för pg_control: %u\n" -#: pg_resetwal.c:703 +#: pg_resetwal.c:711 #, c-format msgid "Catalog version number: %u\n" msgstr "Katalogversion: %u\n" -#: pg_resetwal.c:705 +#: pg_resetwal.c:713 #, c-format msgid "Database system identifier: %s\n" msgstr "Databasens systemidentifierare: %s\n" -#: pg_resetwal.c:707 +#: pg_resetwal.c:715 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "TimeLineID vid senaste kontrollpunkt: %u\n" -#: pg_resetwal.c:709 +#: pg_resetwal.c:717 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "Senaste kontrollpunktens full_page_writes: %s\n" -#: pg_resetwal.c:710 +#: pg_resetwal.c:718 msgid "off" msgstr "av" -#: pg_resetwal.c:710 +#: pg_resetwal.c:718 msgid "on" msgstr "på" -#: pg_resetwal.c:711 +#: pg_resetwal.c:719 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID vid senaste kontrollpunkt: %u:%u\n" -#: pg_resetwal.c:714 +#: pg_resetwal.c:722 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID vid senaste kontrollpunkt: %u\n" -#: pg_resetwal.c:716 +#: pg_resetwal.c:724 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId vid senaste kontrollpunkt: %u\n" -#: pg_resetwal.c:718 +#: pg_resetwal.c:726 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset vid senaste kontrollpunkt: %u\n" -#: pg_resetwal.c:720 +#: pg_resetwal.c:728 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID vid senaste kontrollpunkt: %u\n" -#: pg_resetwal.c:722 +#: pg_resetwal.c:730 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "DB för oldestXID vid senaste kontrollpunkt: %u\n" # FIXME: too wide -#: pg_resetwal.c:724 +#: pg_resetwal.c:732 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "oldestActiveXID vid senaste kontrollpunkt: %u\n" -#: pg_resetwal.c:726 +#: pg_resetwal.c:734 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid vid senaste kontrollpunkt: %u\n" -#: pg_resetwal.c:728 +#: pg_resetwal.c:736 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "DB för oldestMulti vid senaste kontrollpkt: %u\n" -#: pg_resetwal.c:730 +#: pg_resetwal.c:738 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid vid senaste kontrollpunkt:%u\n" -#: pg_resetwal.c:732 +#: pg_resetwal.c:740 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "newestCommitTsXid vid senaste kontrollpunkt:%u\n" -#: pg_resetwal.c:734 +#: pg_resetwal.c:742 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Maximal jämkning av data (alignment): %u\n" -#: pg_resetwal.c:737 +#: pg_resetwal.c:745 #, c-format msgid "Database block size: %u\n" msgstr "Databasens blockstorlek: %u\n" -#: pg_resetwal.c:739 +#: pg_resetwal.c:747 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Block per segment i en stor relation: %u\n" -#: pg_resetwal.c:741 +#: pg_resetwal.c:749 #, c-format msgid "WAL block size: %u\n" msgstr "Blockstorlek i transaktionsloggen: %u\n" -#: pg_resetwal.c:743 +#: pg_resetwal.c:751 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Segmentstorlek i transaktionsloggen: %u\n" -#: pg_resetwal.c:745 +#: pg_resetwal.c:753 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Maximal längd för identifierare: %u\n" -#: pg_resetwal.c:747 +#: pg_resetwal.c:755 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "Maximalt antal kolonner i ett index: %u\n" -#: pg_resetwal.c:749 +#: pg_resetwal.c:757 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Maximal storlek för en TOAST-enhet: %u\n" -#: pg_resetwal.c:751 +#: pg_resetwal.c:759 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Storlek för large-object-enheter: %u\n" -#: pg_resetwal.c:754 +#: pg_resetwal.c:762 #, c-format msgid "Date/time type storage: %s\n" msgstr "Representation av dag och tid: %s\n" -#: pg_resetwal.c:755 +#: pg_resetwal.c:763 msgid "64-bit integers" msgstr "64-bitars heltal" -#: pg_resetwal.c:756 +#: pg_resetwal.c:764 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Åtkomst till float4-argument: %s\n" -#: pg_resetwal.c:757 pg_resetwal.c:759 +#: pg_resetwal.c:765 pg_resetwal.c:767 msgid "by reference" msgstr "referens" -#: pg_resetwal.c:757 pg_resetwal.c:759 +#: pg_resetwal.c:765 pg_resetwal.c:767 msgid "by value" msgstr "värdeåtkomst" -#: pg_resetwal.c:758 +#: pg_resetwal.c:766 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Åtkomst till float8-argument: %s\n" -#: pg_resetwal.c:760 +#: pg_resetwal.c:768 #, c-format msgid "Data page checksum version: %u\n" msgstr "Checksummaversion för datasidor: %u\n" -#: pg_resetwal.c:774 +#: pg_resetwal.c:782 #, c-format msgid "" "\n" @@ -407,124 +419,121 @@ # November 26th, 2014: Insert additional spacing to fit # with the first translated text, which uses most characters. -#: pg_resetwal.c:777 +#: pg_resetwal.c:785 #, c-format msgid "First log segment after reset: %s\n" msgstr "Första loggsegment efter återställning: %s\n" -#: pg_resetwal.c:781 +#: pg_resetwal.c:789 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetwal.c:783 +#: pg_resetwal.c:791 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetwal.c:785 +#: pg_resetwal.c:793 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "DB för OldestMulti: %u\n" -#: pg_resetwal.c:791 +#: pg_resetwal.c:799 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetwal.c:797 +#: pg_resetwal.c:805 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetwal.c:803 +#: pg_resetwal.c:811 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetwal.c:805 +#: pg_resetwal.c:813 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetwal.c:807 +#: pg_resetwal.c:815 #, c-format msgid "OldestXID's DB: %u\n" msgstr "DB för OldestXID: %u\n" -#: pg_resetwal.c:813 +#: pg_resetwal.c:821 #, c-format msgid "NextXID epoch: %u\n" msgstr "Epoch för NextXID: %u\n" -#: pg_resetwal.c:819 +#: pg_resetwal.c:827 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetwal.c:824 +#: pg_resetwal.c:832 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetwal.c:890 -#, c-format -msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n" -msgstr "%s: Internt fel: sizeof(ControlFileData) är alltför stor. Rätta till PG_CONTROL_SIZE.\n" - -#: pg_resetwal.c:905 +#: pg_resetwal.c:914 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: kunde inte skapa fil för pg_control: %s\n" -#: pg_resetwal.c:916 +#: pg_resetwal.c:925 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%s: kunde inte skriva fil för pg_control: %s\n" -#: pg_resetwal.c:923 pg_resetwal.c:1219 +#: pg_resetwal.c:932 pg_resetwal.c:1226 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: misslyckad fsync: %s\n" -#: pg_resetwal.c:963 pg_resetwal.c:1034 pg_resetwal.c:1085 +#: pg_resetwal.c:972 pg_resetwal.c:1043 pg_resetwal.c:1094 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: kunde inte öppna katalog \"%s\": %s\n" -#: pg_resetwal.c:999 pg_resetwal.c:1056 pg_resetwal.c:1110 +#: pg_resetwal.c:1008 pg_resetwal.c:1065 pg_resetwal.c:1119 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: kunde inte läsa katalog \"%s\": %s\n" -#: pg_resetwal.c:1006 pg_resetwal.c:1063 pg_resetwal.c:1117 +#: pg_resetwal.c:1015 pg_resetwal.c:1072 pg_resetwal.c:1126 #, c-format msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: kunde inte stänga katalog \"%s\": %s\n" -#: pg_resetwal.c:1047 pg_resetwal.c:1101 +#: pg_resetwal.c:1056 pg_resetwal.c:1110 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: kunde inte radera fil \"%s\": %s\n" -#: pg_resetwal.c:1186 +#: pg_resetwal.c:1193 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: kunde inte öppna fil \"%s\": %s\n" -#: pg_resetwal.c:1197 pg_resetwal.c:1211 +#: pg_resetwal.c:1204 pg_resetwal.c:1218 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: kunde inte skriva fil \"%s\": %s\n" -#: pg_resetwal.c:1230 +#: pg_resetwal.c:1237 #, c-format msgid "" "%s resets the PostgreSQL write-ahead log.\n" "\n" -msgstr "%s återställer write-ahead-log för PostgreSQL.\n\n" +msgstr "" +"%s återställer write-ahead-log för PostgreSQL.\n" +"\n" -#: pg_resetwal.c:1231 +#: pg_resetwal.c:1238 #, c-format msgid "" "Usage:\n" @@ -535,88 +544,86 @@ " %s [FLAGGA]... DATAKATALOG\n" "\n" -#: pg_resetwal.c:1232 +#: pg_resetwal.c:1239 #, c-format msgid "Options:\n" msgstr "Flaggor:\n" -#: pg_resetwal.c:1233 +#: pg_resetwal.c:1240 #, c-format msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n" msgstr " -c XID,XID sätt äldsta och nyaste transaktioner med commit-tidstämpel\n" -#: pg_resetwal.c:1234 +#: pg_resetwal.c:1241 #, c-format msgid " (zero in either value means no change)\n" msgstr " (noll i något värde innebär ingen ändring)\n" -#: pg_resetwal.c:1235 +#: pg_resetwal.c:1242 #, c-format msgid " [-D] DATADIR data directory\n" msgstr " [-D] DATADIR datakatalog\n" -#: pg_resetwal.c:1236 +#: pg_resetwal.c:1243 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e XIDEPOCH sätter epoch för nästa transaktions-ID\n" -#: pg_resetwal.c:1237 +#: pg_resetwal.c:1244 #, c-format msgid " -f force update to be done\n" msgstr " -f framtvinga återställning\n" -#: pg_resetwal.c:1238 +#: pg_resetwal.c:1245 #, c-format msgid " -l WALFILE force minimum WAL starting location for new write-ahead log\n" msgstr " -l WALFIL tvinga minsta WAL-startposition för ny write-ahead-log\n" -#: pg_resetwal.c:1239 +#: pg_resetwal.c:1246 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" msgstr " -m MXID,MXID sätt nästa och äldsta multitransaktions-ID\n" -#: pg_resetwal.c:1240 +#: pg_resetwal.c:1247 #, c-format msgid " -n no update, just show what would be done (for testing)\n" msgstr " -n ingen updatering; visa planerade åtgärder (för testning)\n" -#: pg_resetwal.c:1241 +#: pg_resetwal.c:1248 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID sätt nästa OID\n" -#: pg_resetwal.c:1242 +#: pg_resetwal.c:1249 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O OFFSET sätt nästa multitransaktionsoffset\n" -#: pg_resetwal.c:1243 +#: pg_resetwal.c:1250 +#, c-format +msgid " -u XID set oldest transaction ID\n" +msgstr " -x XID sätt äldsta transaktions-ID\n" + +#: pg_resetwal.c:1251 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version visa versionsinformation, avsluta sedan\n" -#: pg_resetwal.c:1244 +#: pg_resetwal.c:1252 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID sätt nästa transaktions-ID\n" -#: pg_resetwal.c:1245 +#: pg_resetwal.c:1253 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help visa denna hjälp, avsluta sedan\n" -#: pg_resetwal.c:1246 +#: pg_resetwal.c:1254 #, c-format msgid "" "\n" "Report bugs to .\n" -msgstr "\nRapportera fel till .\n" - -#~ msgid "floating-point numbers" -#~ msgstr "flyttal" - -#~ msgid "Latest checkpoint's NextXID: %u/%u\n" -#~ msgstr "NextXID vid senaste kontrollpunkt: %u/%u\n" - -#~ msgid "Transaction log reset\n" -#~ msgstr "Återställning av transaktionslogg.\n" +msgstr "" +"\n" +"Rapportera fel till .\n" diff -Nru postgresql-10-10.17/src/bin/pg_rewind/po/fr.po postgresql-10-10.19/src/bin/pg_rewind/po/fr.po --- postgresql-10-10.17/src/bin/pg_rewind/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_rewind/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -455,7 +455,7 @@ #: pg_rewind.c:68 #, c-format msgid " --source-pgdata=DIRECTORY source data directory to synchronize with\n" -msgstr " --source-pgdata=RÉPERTOIRE répertoire des données source pour la synchronisation\n" +msgstr " --source-pgdata=RÉPERTOIRE répertoire des données source\n" #: pg_rewind.c:69 #, c-format diff -Nru postgresql-10-10.17/src/bin/pg_rewind/po/ru.po postgresql-10-10.19/src/bin/pg_rewind/po/ru.po --- postgresql-10-10.17/src/bin/pg_rewind/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_rewind/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,13 +1,13 @@ # Russian message translation file for pg_rewind # Copyright (C) 2015-2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2015-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2015-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-12-11 07:52+0300\n" -"PO-Revision-Date: 2020-11-09 08:33+0300\n" +"POT-Creation-Date: 2021-11-08 05:26+0300\n" +"PO-Revision-Date: 2021-08-14 07:50+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -91,7 +91,7 @@ "\"%s\" is a symbolic link, but symbolic links are not supported on this " "platform\n" msgstr "" -"\"%s\" - символическая ссылка, но в этой ОС символические ссылки не " +"\"%s\" — символическая ссылка, но в этой ОС символические ссылки не " "поддерживаются\n" #: copy_fetch.c:145 @@ -177,7 +177,7 @@ #: file_ops.c:223 #, c-format msgid "could not create directory \"%s\": %s\n" -msgstr "создать каталог \"%s\" не удалось: %s\n" +msgstr "не удалось создать каталог \"%s\": %s\n" #: file_ops.c:237 #, c-format @@ -755,64 +755,64 @@ "Идентификаторы линий времени должны быть меньше идентификатора линии-" "потомка.\n" -#: xlogreader.c:297 +#: xlogreader.c:302 #, c-format msgid "invalid record offset at %X/%X" msgstr "неверное смещение записи: %X/%X" -#: xlogreader.c:305 +#: xlogreader.c:310 #, c-format msgid "contrecord is requested by %X/%X" msgstr "по смещению %X/%X запрошено продолжение записи" -#: xlogreader.c:346 xlogreader.c:644 +#: xlogreader.c:351 xlogreader.c:681 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "неверная длина записи по смещению %X/%X: ожидалось %u, получено %u" -#: xlogreader.c:361 +#: xlogreader.c:366 #, c-format msgid "record length %u at %X/%X too long" msgstr "длина записи %u по смещению %X/%X слишком велика" -#: xlogreader.c:402 +#: xlogreader.c:425 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "нет флага contrecord в позиции %X/%X" -#: xlogreader.c:415 +#: xlogreader.c:438 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "неверная длина contrecord (%u) в позиции %X/%X" -#: xlogreader.c:652 +#: xlogreader.c:689 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "неверный ID менеджера ресурсов %u по смещению %X/%X" -#: xlogreader.c:666 xlogreader.c:683 +#: xlogreader.c:703 xlogreader.c:720 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "запись с неверной ссылкой назад %X/%X по смещению %X/%X" -#: xlogreader.c:720 +#: xlogreader.c:757 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "" "некорректная контрольная сумма данных менеджера ресурсов в записи по " "смещению %X/%X" -#: xlogreader.c:757 +#: xlogreader.c:794 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "неверное магическое число %04X в сегменте журнала %s, смещение %u" -#: xlogreader.c:771 xlogreader.c:822 +#: xlogreader.c:808 xlogreader.c:859 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "неверные информационные биты %04X в сегменте журнала %s, смещение %u" -#: xlogreader.c:797 +#: xlogreader.c:834 #, c-format msgid "" "WAL file is from different database system: WAL file database system " @@ -821,7 +821,7 @@ "файл WAL принадлежит другой СУБД: в нём указан идентификатор системы БД %s, " "а идентификатор системы pg_control: %s" -#: xlogreader.c:804 +#: xlogreader.c:841 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page " @@ -830,7 +830,7 @@ "файл WAL принадлежит другой СУБД: некорректный XLOG_SEG_SIZE в заголовке " "страницы" -#: xlogreader.c:810 +#: xlogreader.c:847 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_BLCKSZ in page " @@ -839,35 +839,35 @@ "файл WAL принадлежит другой СУБД: некорректный XLOG_BLCKSZ в заголовке " "страницы" -#: xlogreader.c:841 +#: xlogreader.c:878 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "неожиданный pageaddr %X/%X в сегменте журнала %s, смещение %u" -#: xlogreader.c:866 +#: xlogreader.c:903 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "" "нарушение последовательности ID линии времени %u (после %u) в сегменте " "журнала %s, смещение %u" -#: xlogreader.c:1111 +#: xlogreader.c:1148 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "идентификатор блока %u идёт не по порядку в позиции %X/%X" -#: xlogreader.c:1134 +#: xlogreader.c:1171 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA установлен, но данных в позиции %X/%X нет" -#: xlogreader.c:1141 +#: xlogreader.c:1178 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "" "BKPBLOCK_HAS_DATA не установлен, но длина данных равна %u в позиции %X/%X" -#: xlogreader.c:1177 +#: xlogreader.c:1214 #, c-format msgid "" "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at " @@ -876,21 +876,21 @@ "BKPIMAGE_HAS_HOLE установлен, но для пропуска заданы смещение %u и длина %u " "при длине образа блока %u в позиции %X/%X" -#: xlogreader.c:1193 +#: xlogreader.c:1230 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "" "BKPIMAGE_HAS_HOLE не установлен, но для пропуска заданы смещение %u и длина " "%u в позиции %X/%X" -#: xlogreader.c:1208 +#: xlogreader.c:1245 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "" "BKPIMAGE_IS_COMPRESSED установлен, но длина образа блока равна %u в позиции " "%X/%X" -#: xlogreader.c:1223 +#: xlogreader.c:1260 #, c-format msgid "" "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image " @@ -899,24 +899,24 @@ "ни BKPIMAGE_HAS_HOLE, ни BKPIMAGE_IS_COMPRESSED не установлены, но длина " "образа блока равна %u в позиции %X/%X" -#: xlogreader.c:1239 +#: xlogreader.c:1276 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "" "BKPBLOCK_SAME_REL установлен, но предыдущее значение не задано в позиции %X/" "%X" -#: xlogreader.c:1251 +#: xlogreader.c:1288 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "неверный идентификатор блока %u в позиции %X/%X" -#: xlogreader.c:1334 +#: xlogreader.c:1371 #, c-format msgid "record with invalid length at %X/%X" msgstr "запись с неверной длиной в позиции %X/%X" -#: xlogreader.c:1423 +#: xlogreader.c:1460 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "неверный сжатый образ в позиции %X/%X, блок %d" diff -Nru postgresql-10-10.17/src/bin/pg_rewind/po/sv.po postgresql-10-10.19/src/bin/pg_rewind/po/sv.po --- postgresql-10-10.17/src/bin/pg_rewind/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_rewind/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,23 +1,24 @@ # Swedish message translation file for pg_rewind # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017, 2018, 2019. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2019-01-02 21:56+0000\n" -"PO-Revision-Date: 2019-01-03 06:00+0100\n" +"POT-Creation-Date: 2021-11-07 09:45+0000\n" +"PO-Revision-Date: 2021-11-07 07:17+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 parsexlog.c:74 parsexlog.c:127 parsexlog.c:179 +#: ../../common/fe_memutils.c:98 parsexlog.c:77 parsexlog.c:135 parsexlog.c:187 #, c-format msgid "out of memory\n" msgstr "slut på minne\n" @@ -67,7 +68,7 @@ msgid "could not open directory \"%s\": %s\n" msgstr "kunde inte öppna katalog \"%s\": %s\n" -#: copy_fetch.c:91 filemap.c:112 filemap.c:267 +#: copy_fetch.c:91 filemap.c:112 #, c-format msgid "could not stat file \"%s\": %s\n" msgstr "kunde inte göra stat() på fil \"%s\": %s\n" @@ -212,168 +213,158 @@ msgid "\"%s\" is not a regular file\n" msgstr "\"%s\" är inte en vanlig fil\n" -#: filemap.c:279 +#: filemap.c:267 #, c-format msgid "source file list is empty\n" msgstr "källfillistan är tom\n" -#: filemap.c:401 +#: filemap.c:389 #, c-format msgid "unexpected page modification for directory or symbolic link \"%s\"\n" msgstr "oväntad sidmodifiering för katalog eller symbolisk länk \"%s\"\n" #. translator: first %s is a file path, second is a keyword such as COPY -#: filemap.c:537 +#: filemap.c:525 #, c-format msgid "%s (%s)\n" msgstr "%s (%s)\n" -#: libpq_fetch.c:56 +#: libpq_fetch.c:57 #, c-format -msgid "could not connect to server: %s" -msgstr "kunde inte ansluta till server: %s" +msgid "%s" +msgstr "%s" #: libpq_fetch.c:59 #, c-format msgid "connected to server\n" msgstr "ansluten till server\n" -#: libpq_fetch.c:63 +#: libpq_fetch.c:68 #, c-format msgid "could not clear search_path: %s" msgstr "kunde inte nollställa search_path: %s" -#: libpq_fetch.c:75 +#: libpq_fetch.c:80 #, c-format msgid "source server must not be in recovery mode\n" msgstr "källserver får inte vara i återställningsläge\n" -#: libpq_fetch.c:85 +#: libpq_fetch.c:90 #, c-format msgid "full_page_writes must be enabled in the source server\n" msgstr "full_page_writes måste vara påslagen i källservern\n" -#: libpq_fetch.c:97 -#, c-format -msgid "could not set up connection context: %s" -msgstr "kunde inte sätta upp anslutningskontext: %s" - -#: libpq_fetch.c:115 +#: libpq_fetch.c:116 libpq_fetch.c:142 #, c-format msgid "error running query (%s) in source server: %s" msgstr "fel vid körande av fråga (%s) i källserver: %s" -#: libpq_fetch.c:120 +#: libpq_fetch.c:121 #, c-format msgid "unexpected result set from query\n" msgstr "oväntad resultatmängd från fråga\n" -#: libpq_fetch.c:143 +#: libpq_fetch.c:162 #, c-format msgid "unrecognized result \"%s\" for current WAL insert location\n" msgstr "oväntat resultat \"%s\" för nuvarande WAL-insättningsposition\n" -#: libpq_fetch.c:193 +#: libpq_fetch.c:212 #, c-format msgid "could not fetch file list: %s" msgstr "kunde inte hämta fillista: %s" -#: libpq_fetch.c:198 +#: libpq_fetch.c:217 #, c-format msgid "unexpected result set while fetching file list\n" msgstr "oväntad resultatmängd vid hämtning av fillista\n" -#: libpq_fetch.c:268 +#: libpq_fetch.c:292 #, c-format msgid "could not send query: %s" msgstr "kunde inte skicka fråga: %s" -#: libpq_fetch.c:270 +#: libpq_fetch.c:294 #, c-format msgid "getting file chunks\n" msgstr "hämtar fildelar\n" -#: libpq_fetch.c:273 +#: libpq_fetch.c:297 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "kunde inte sätta libpq-anslutning till enradsläge\n" -#: libpq_fetch.c:294 +#: libpq_fetch.c:318 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "oväntat resultat vid hämtning av extern fil: %s" -#: libpq_fetch.c:300 +#: libpq_fetch.c:324 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "oväntad resultatmängdstorlek vid hämtning av externa filer\n" -#: libpq_fetch.c:306 +#: libpq_fetch.c:330 #, c-format msgid "unexpected data types in result set while fetching remote files: %u %u %u\n" msgstr "oväntade datayper i resultatmängd vid hämtning av externa filer: %u %u %u\n" -#: libpq_fetch.c:314 +#: libpq_fetch.c:338 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "oväntat resultatformat vid hämtning av externa filer\n" -#: libpq_fetch.c:320 +#: libpq_fetch.c:344 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "oväntade null-värden i resultat vid hämtning av externa filer\n" -#: libpq_fetch.c:324 +#: libpq_fetch.c:348 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "oväntad resultatlängd vid hämtning av externa filer\n" -#: libpq_fetch.c:349 +#: libpq_fetch.c:373 #, c-format msgid "received null value for chunk for file \"%s\", file has been deleted\n" msgstr "mottog null-värde som del av fil \"%s\", filen har blivit raderad\n" -#: libpq_fetch.c:362 +#: libpq_fetch.c:386 #, c-format msgid "received chunk for file \"%s\", offset %s, size %d\n" msgstr "mottog del för fil \"%s\", offset %s, storlek %d\n" -#: libpq_fetch.c:391 +#: libpq_fetch.c:415 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "kunde inte hämta extern fil \"%s\": %s" -#: libpq_fetch.c:396 +#: libpq_fetch.c:420 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "oväntat resultatmängd vid hämtning av extern fil \"%s\"\n" -#: libpq_fetch.c:407 +#: libpq_fetch.c:431 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "hämtade fil \"%s\", längd %d\n" -#: libpq_fetch.c:440 +#: libpq_fetch.c:464 #, c-format msgid "could not send COPY data: %s" msgstr "kunde inte skicka COPY-data: %s" -#: libpq_fetch.c:466 -#, c-format -msgid "could not create temporary table: %s" -msgstr "kunde inte skapa temporär tabell: %s" - -#: libpq_fetch.c:474 +#: libpq_fetch.c:493 #, c-format msgid "could not send file list: %s" msgstr "kunde inte skicka fillista: %s" -#: libpq_fetch.c:516 +#: libpq_fetch.c:535 #, c-format msgid "could not send end-of-COPY: %s" msgstr "kunde inte skicka slut-på-COPY: %s" -#: libpq_fetch.c:522 +#: libpq_fetch.c:541 #, c-format msgid "unexpected result while sending file list: %s" msgstr "oväntat resultat vid skickande av fillista: %s" @@ -387,42 +378,42 @@ msgid "%*s/%s kB (%d%%) copied" msgstr "%*s/%s kB (%d%%) kopierad" -#: parsexlog.c:87 parsexlog.c:133 +#: parsexlog.c:90 parsexlog.c:141 #, c-format msgid "could not read WAL record at %X/%X: %s\n" msgstr "kunde inte läsa WAL-post vid %X/%X: %s\n" -#: parsexlog.c:91 parsexlog.c:136 +#: parsexlog.c:94 parsexlog.c:144 #, c-format msgid "could not read WAL record at %X/%X\n" msgstr "kunde inte läsa WAL-post vid %X/%X\n" -#: parsexlog.c:191 +#: parsexlog.c:199 #, c-format msgid "could not find previous WAL record at %X/%X: %s\n" msgstr "kunde inte hitta föregående WAL-post vid %X/%X: %s\n" -#: parsexlog.c:195 +#: parsexlog.c:203 #, c-format msgid "could not find previous WAL record at %X/%X\n" msgstr "kunde inte hitta förgående WAL-post vid %X/%X\n" -#: parsexlog.c:283 +#: parsexlog.c:291 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "kan inte öppna fil \"%s\": %s\n" -#: parsexlog.c:297 +#: parsexlog.c:305 #, c-format msgid "could not seek in file \"%s\": %s\n" msgstr "kunde inte söka i fil \"%s\": %s\n" -#: parsexlog.c:304 +#: parsexlog.c:312 #, c-format msgid "could not read from file \"%s\": %s\n" msgstr "kunde inte läsa från fil \"%s\": %s\n" -#: parsexlog.c:372 +#: parsexlog.c:380 #, c-format msgid "" "WAL record modifies a relation, but record type is not recognized\n" @@ -505,83 +496,83 @@ "\n" "Rapportera fel till .\n" -#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:175 -#: pg_rewind.c:183 +#: pg_rewind.c:131 pg_rewind.c:162 pg_rewind.c:169 pg_rewind.c:176 +#: pg_rewind.c:184 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Försök med \"%s --help\" för mer information.\n" -#: pg_rewind.c:160 +#: pg_rewind.c:161 #, c-format msgid "%s: no source specified (--source-pgdata or --source-server)\n" msgstr "%s: ingen källa angavs (--source-pgdata eller --source-server)\n" -#: pg_rewind.c:167 +#: pg_rewind.c:168 #, c-format msgid "%s: only one of --source-pgdata or --source-server can be specified\n" msgstr "%s: bara en av --source-pgdata och --source-server får anges\n" -#: pg_rewind.c:174 +#: pg_rewind.c:175 #, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "%s: ingen måldatakatalog angiven (--target-pgdata)\n" -#: pg_rewind.c:181 +#: pg_rewind.c:182 #, 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_rewind.c:196 +#: pg_rewind.c:197 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "kan inte köras av \"root\"\n" -#: pg_rewind.c:197 +#: pg_rewind.c:198 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Du måste köra %s som PostgreSQL:s superanvändare.\n" -#: pg_rewind.c:228 +#: pg_rewind.c:229 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "källa och målkluster är på samma tidslinje\n" -#: pg_rewind.c:234 +#: pg_rewind.c:238 #, c-format msgid "servers diverged at WAL location %X/%X on timeline %u\n" msgstr "servrarna divergerade vid WAL-position %X/%X på tidslinje %u\n" -#: pg_rewind.c:271 +#: pg_rewind.c:285 #, c-format msgid "no rewind required\n" msgstr "ingen rewind krävs\n" -#: pg_rewind.c:278 +#: pg_rewind.c:292 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "rewind från senaste gemensamma checkpoint vid %X/%X på tidslinje %u\n" -#: pg_rewind.c:286 +#: pg_rewind.c:300 #, c-format msgid "reading source file list\n" msgstr "läser källfillista\n" -#: pg_rewind.c:288 +#: pg_rewind.c:302 #, c-format msgid "reading target file list\n" msgstr "läser målfillista\n" -#: pg_rewind.c:298 +#: pg_rewind.c:310 #, c-format msgid "reading WAL in target\n" msgstr "läser WAL i målet\n" -#: pg_rewind.c:315 +#: pg_rewind.c:327 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "behöver kopiera %lu MB (total källkatalogstorlek är %lu MB)\n" -#: pg_rewind.c:332 +#: pg_rewind.c:344 #, c-format msgid "" "\n" @@ -590,83 +581,83 @@ "\n" "skapar backupetikett och uppdaterar kontrollfil\n" -#: pg_rewind.c:360 +#: pg_rewind.c:372 #, c-format msgid "syncing target data directory\n" msgstr "synkar måldatakatalog\n" -#: pg_rewind.c:363 +#: pg_rewind.c:375 #, c-format msgid "Done!\n" msgstr "Klar!\n" -#: pg_rewind.c:375 +#: pg_rewind.c:387 #, c-format msgid "source and target clusters are from different systems\n" msgstr "källa och målkluster är från olika system\n" -#: pg_rewind.c:383 +#: pg_rewind.c:395 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "klustren är inte kompatibla med denna version av pg_rewind\n" -#: pg_rewind.c:393 +#: pg_rewind.c:405 #, c-format msgid "target server needs to use either data checksums or \"wal_log_hints = on\"\n" msgstr "målservern behöver använda antingen datachecksums eller \"wal_log_hints = on\"\n" -#: pg_rewind.c:404 +#: pg_rewind.c:416 #, c-format msgid "target server must be shut down cleanly\n" msgstr "målserver måste stängas ner utan fel\n" -#: pg_rewind.c:414 +#: pg_rewind.c:426 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "måldatakatalog måste stängas ner utan fel\n" -#: pg_rewind.c:469 +#: pg_rewind.c:481 #, c-format msgid "invalid control file\n" msgstr "ogiltig kontrollfil\n" -#: pg_rewind.c:480 +#: pg_rewind.c:492 #, c-format msgid "Source timeline history:\n" msgstr "Källans tidslinjehistorik:\n" -#: pg_rewind.c:482 +#: pg_rewind.c:494 #, c-format msgid "Target timeline history:\n" msgstr "Målets tidslinjehistorik:\n" #. translator: %d is a timeline number, others are LSN positions -#: pg_rewind.c:496 +#: pg_rewind.c:508 #, c-format msgid "%d: %X/%X - %X/%X\n" msgstr "%d: %X/%X - %X/%X\n" -#: pg_rewind.c:555 +#: pg_rewind.c:567 #, c-format msgid "could not find common ancestor of the source and target cluster's timelines\n" msgstr "kunde inte finna en gemensam anfader av källa och målklusterets tidslinjer\n" -#: pg_rewind.c:596 +#: pg_rewind.c:608 #, c-format msgid "backup label buffer too small\n" msgstr "backupetikett-buffer för liten\n" -#: pg_rewind.c:619 +#: pg_rewind.c:631 #, c-format msgid "unexpected control file CRC\n" msgstr "oväntad kontrollfil-CRC\n" -#: pg_rewind.c:629 +#: pg_rewind.c:641 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "oväntad kontrollfilstorlek %d, förväntade %d\n" -#: pg_rewind.c:705 +#: pg_rewind.c:717 #, c-format msgid "" "The program \"initdb\" is needed by %s but was\n" @@ -677,7 +668,7 @@ "hittades inte i samma katalog som \"%s\".\n" "Kontrollera din installation.\n" -#: pg_rewind.c:709 +#: pg_rewind.c:721 #, c-format msgid "" "The program \"initdb\" was found by \"%s\"\n" @@ -688,7 +679,7 @@ "men var inte av samma version som %s.\n" "Kontrollera din installation.\n" -#: pg_rewind.c:727 +#: pg_rewind.c:739 #, c-format msgid "sync of target directory failed\n" msgstr "synk av målkatalog misslyckades\n" @@ -728,137 +719,137 @@ msgid "Timeline IDs must be less than child timeline's ID.\n" msgstr "Tidslinje-ID:er måste vara mindre än barnets tidslinjes ID.\n" -#: xlogreader.c:297 +#: xlogreader.c:302 #, c-format msgid "invalid record offset at %X/%X" msgstr "ogiltig postoffset vid %X/%X" -#: xlogreader.c:305 +#: xlogreader.c:310 #, c-format msgid "contrecord is requested by %X/%X" msgstr "contrecord är begärd vid %X/%X" -#: xlogreader.c:346 xlogreader.c:644 +#: xlogreader.c:351 xlogreader.c:681 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "ogiltig postlängd vid %X/%X: förväntade %u, fick %u" -#: xlogreader.c:361 +#: xlogreader.c:366 #, c-format msgid "record length %u at %X/%X too long" msgstr "postlängd %u vid %X/%X är för lång" -#: xlogreader.c:402 +#: xlogreader.c:425 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "det finns ingen contrecord-flagga vid %X/%X" -#: xlogreader.c:415 +#: xlogreader.c:438 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "ogiltig contrecord-längd %u vid %X/%X" -#: xlogreader.c:652 +#: xlogreader.c:689 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ogiltigt resurshanterar-ID %u vid %X/%X" -#: xlogreader.c:666 xlogreader.c:683 +#: xlogreader.c:703 xlogreader.c:720 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "post med inkorrekt prev-link %X/%X vid %X/%X" -#: xlogreader.c:720 +#: xlogreader.c:757 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "felaktig resurshanterardatakontrollsumma i post vid %X/%X" -#: xlogreader.c:757 +#: xlogreader.c:794 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "felaktigt magiskt nummer %04X i loggsegment %s, offset %u" -#: xlogreader.c:771 xlogreader.c:822 +#: xlogreader.c:808 xlogreader.c:859 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "ogiltiga infobitar %04X i loggsegment %s, offset %u" -#: xlogreader.c:797 +#: xlogreader.c:834 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s" msgstr "WAL-fil är från ett annat databassystem: WAL-filens databassystemidentifierare är %s, pg_control databassystemidentifierare är %s" -#: xlogreader.c:804 +#: xlogreader.c:841 #, c-format msgid "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page header" msgstr "WAL-fil är från ett annat databassystem: felaktig XLOG_SEG_SIZE i sidhuvud" -#: xlogreader.c:810 +#: xlogreader.c:847 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" -msgstr "WAL-fil är från ett annat databassystem: inkorrekt XLOG_BLCKSZ i sidhuvuid" +msgstr "WAL-fil är från ett annat databassystem: inkorrekt XLOG_BLCKSZ i sidhuvud" -#: xlogreader.c:841 +#: xlogreader.c:878 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "oväntad sidadress %X/%X i loggsegment %s, offset %u" -#: xlogreader.c:866 +#: xlogreader.c:903 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "ej-i-sekvens för tidslinje-ID %u (efter %u) i loggsegment %s, offset %u" -#: xlogreader.c:1111 +#: xlogreader.c:1148 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "ej-i-sekvens block_id %u vid %X/%X" -#: xlogreader.c:1134 +#: xlogreader.c:1171 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA satt, men ingen data inkluderad vid %X/%X" -#: xlogreader.c:1141 +#: xlogreader.c:1178 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA ej satt, men datalängd är %u vid %X/%X" -#: xlogreader.c:1177 +#: xlogreader.c:1214 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE satt, men håloffset %u längd %u block-image-längd %u vid %X/%X" -#: xlogreader.c:1193 +#: xlogreader.c:1230 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE ej satt, men håloffset %u längd %u vid %X/%X" -#: xlogreader.c:1208 +#: xlogreader.c:1245 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED satt, men block-image-längd %u vid %X/%X" -#: xlogreader.c:1223 +#: xlogreader.c:1260 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "varken BKPIMAGE_HAS_HOLE eller BKPIMAGE_IS_COMPRESSED satt, men block-image-längd är %u vid %X/%X" -#: xlogreader.c:1239 +#: xlogreader.c:1276 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL satt men ingen tidigare rel vid %X/%X" -#: xlogreader.c:1251 +#: xlogreader.c:1288 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "ogiltig block_id %u vid %X/%X" -#: xlogreader.c:1334 +#: xlogreader.c:1371 #, c-format msgid "record with invalid length at %X/%X" msgstr "post med ogiltig längd vid %X/%X" -#: xlogreader.c:1423 +#: xlogreader.c:1460 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "ogiltig komprimerad image vid %X/%X, block %d" diff -Nru postgresql-10-10.17/src/bin/pg_test_fsync/po/ru.po postgresql-10-10.19/src/bin/pg_test_fsync/po/ru.po --- postgresql-10-10.17/src/bin/pg_test_fsync/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_test_fsync/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,7 +1,7 @@ # Russian message translation file for pg_test_fsync # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2017. +# Alexander Lakhin , 2017, 2021. msgid "" msgstr "" "Project-Id-Version: pg_test_fsync (PostgreSQL) 10\n" diff -Nru postgresql-10-10.17/src/bin/pg_test_fsync/po/sv.po postgresql-10-10.19/src/bin/pg_test_fsync/po/sv.po --- postgresql-10-10.17/src/bin/pg_test_fsync/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_test_fsync/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,16 +1,16 @@ # Swedish message translation file for pg_test_fsync # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-09-07 15:46+0000\n" -"PO-Revision-Date: 2017-09-07 22:15+0200\n" +"POT-Creation-Date: 2021-11-07 09:46+0000\n" +"PO-Revision-Date: 2021-11-07 07:19+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -Nru postgresql-10-10.17/src/bin/pg_test_timing/po/ru.po postgresql-10-10.19/src/bin/pg_test_timing/po/ru.po --- postgresql-10-10.17/src/bin/pg_test_timing/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_test_timing/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,7 +1,7 @@ # Russian message translation file for pg_test_timing # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2017. +# Alexander Lakhin , 2017, 2021. msgid "" msgstr "" "Project-Id-Version: pg_test_timing (PostgreSQL) 10\n" diff -Nru postgresql-10-10.17/src/bin/pg_test_timing/po/sv.po postgresql-10-10.19/src/bin/pg_test_timing/po/sv.po --- postgresql-10-10.17/src/bin/pg_test_timing/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_test_timing/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,16 +1,16 @@ # Swedish message translation file for pg_test_timing # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-07-18 17:45+0000\n" -"PO-Revision-Date: 2017-07-20 21:32+0200\n" +"POT-Creation-Date: 2021-11-07 09:44+0000\n" +"PO-Revision-Date: 2021-11-06 21:59+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -59,19 +59,20 @@ msgid "Per loop time including overhead: %0.2f ns\n" msgstr "Tid per varv inklusive overhead: %0.2f ns\n" -#: pg_test_timing.c:180 -#, c-format -msgid "Histogram of timing durations:\n" -msgstr "Histogram över tider:\n" +#: pg_test_timing.c:175 +msgid "< us" +msgstr "< us" -#: pg_test_timing.c:181 +#: pg_test_timing.c:176 +#, no-c-format msgid "% of total" msgstr "% av totalt" -#: pg_test_timing.c:181 -msgid "< us" -msgstr "< us" - -#: pg_test_timing.c:181 +#: pg_test_timing.c:177 msgid "count" msgstr "antal" + +#: pg_test_timing.c:186 +#, c-format +msgid "Histogram of timing durations:\n" +msgstr "Histogram över tider:\n" diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/check.c postgresql-10-10.19/src/bin/pg_upgrade/check.c --- postgresql-10-10.17/src/bin/pg_upgrade/check.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/check.c 2021-11-08 22:05:38.000000000 +0000 @@ -199,6 +199,8 @@ if (GET_MAJOR_VERSION(old_cluster.major_version) <= 906) old_9_6_invalidate_hash_indexes(&new_cluster, false); + report_extension_updates(&new_cluster); + stop_postmaster(false); } diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/controldata.c postgresql-10-10.19/src/bin/pg_upgrade/controldata.c --- postgresql-10-10.17/src/bin/pg_upgrade/controldata.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/controldata.c 2021-11-08 22:05:38.000000000 +0000 @@ -44,6 +44,7 @@ bool got_oid = false; bool got_multi = false; bool got_oldestmulti = false; + bool got_oldestxid = false; bool got_mxoff = false; bool got_nextxlogfile = false; bool got_float8_pass_by_value = false; @@ -312,6 +313,17 @@ cluster->controldata.chkpnt_nxtmulti = str2uint(p); got_multi = true; } + else if ((p = strstr(bufin, "Latest checkpoint's oldestXID:")) != NULL) + { + p = strchr(p, ':'); + + if (p == NULL || strlen(p) <= 1) + pg_fatal("%d: controldata retrieval problem\n", __LINE__); + + p++; /* remove ':' char */ + cluster->controldata.chkpnt_oldstxid = str2uint(p); + got_oldestxid = true; + } else if ((p = strstr(bufin, "Latest checkpoint's oldestMultiXid:")) != NULL) { p = strchr(p, ':'); @@ -530,7 +542,7 @@ /* verify that we got all the mandatory pg_control data */ if (!got_xid || !got_oid || - !got_multi || + !got_multi || !got_oldestxid || (!got_oldestmulti && cluster->controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) || !got_mxoff || (!live_check && !got_nextxlogfile) || @@ -561,6 +573,9 @@ cluster->controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) pg_log(PG_REPORT, " latest checkpoint oldest MultiXactId\n"); + if (!got_oldestxid) + pg_log(PG_REPORT, " latest checkpoint oldestXID\n"); + if (!got_mxoff) pg_log(PG_REPORT, " latest checkpoint next MultiXactOffset\n"); diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/pg_upgrade.c postgresql-10-10.19/src/bin/pg_upgrade/pg_upgrade.c --- postgresql-10-10.17/src/bin/pg_upgrade/pg_upgrade.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/pg_upgrade.c 2021-11-08 22:05:38.000000000 +0000 @@ -421,6 +421,13 @@ GET_MAJOR_VERSION(new_cluster.major_version) <= 906 ? "pg_clog" : "pg_xact"); + prep_status("Setting oldest XID for new cluster"); + exec_prog(UTILITY_LOG_FILE, NULL, true, true, + "\"%s/pg_resetwal\" -f -u %u \"%s\"", + new_cluster.bindir, old_cluster.controldata.chkpnt_oldstxid, + new_cluster.pgdata); + check_ok(); + /* set the next transaction id and epoch of the new cluster */ prep_status("Setting next transaction ID and epoch for new cluster"); exec_prog(UTILITY_LOG_FILE, NULL, true, true, diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/pg_upgrade.h postgresql-10-10.19/src/bin/pg_upgrade/pg_upgrade.h --- postgresql-10-10.17/src/bin/pg_upgrade/pg_upgrade.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/pg_upgrade.h 2021-11-08 22:05:38.000000000 +0000 @@ -215,6 +215,7 @@ uint32 chkpnt_nxtmulti; uint32 chkpnt_nxtmxoff; uint32 chkpnt_oldstMulti; + uint32 chkpnt_oldstxid; uint32 align; uint32 blocksz; uint32 largesz; @@ -445,7 +446,7 @@ const char *base_query, const char *output_path); bool check_for_data_type_usage(ClusterInfo *cluster, - const char *typename, + const char *type_name, const char *output_path); void new_9_0_populate_pg_largeobject_metadata(ClusterInfo *cluster, bool check_mode); @@ -453,6 +454,7 @@ void old_9_6_check_for_unknown_data_type_usage(ClusterInfo *cluster); void old_9_6_invalidate_hash_indexes(ClusterInfo *cluster, bool check_mode); +void report_extension_updates(ClusterInfo *cluster); /* parallel.c */ void parallel_exec_prog(const char *log_file, const char *opt_log_file, diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/po/de.po postgresql-10-10.19/src/bin/pg_upgrade/po/de.po --- postgresql-10-10.17/src/bin/pg_upgrade/po/de.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/po/de.po 2021-11-08 22:05:38.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pg_upgrade (PostgreSQL) 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2021-05-06 22:00+0000\n" +"POT-Creation-Date: 2021-08-06 20:59+0000\n" "PO-Revision-Date: 2019-07-07 16:49+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" @@ -55,7 +55,7 @@ "neuen Cluster neu mit initdb initialisieren, bevor fortgesetzt\n" "werden kann.\n" -#: check.c:211 +#: check.c:213 #, c-format msgid "" "Optimizer statistics are not transferred by pg_upgrade so,\n" @@ -68,7 +68,7 @@ " %s\n" "\n" -#: check.c:217 +#: check.c:219 #, c-format msgid "" "Running this script will delete the old cluster's data files:\n" @@ -77,7 +77,7 @@ "Mit diesem Skript können die Dateien des alten Clusters gelöscht werden:\n" " %s\n" -#: check.c:222 +#: check.c:224 #, c-format msgid "" "Could not create a script to delete the old cluster's data files\n" @@ -90,93 +90,93 @@ "Datenverzeichnis des neuen Clusters im alten Cluster-Verzeichnis\n" "liegen. Der Inhalt des alten Clusters muss von Hand gelöscht werden.\n" -#: check.c:232 +#: check.c:234 #, c-format msgid "Checking cluster versions" msgstr "Prüfe Cluster-Versionen" -#: check.c:244 +#: check.c:246 #, c-format msgid "This utility can only upgrade from PostgreSQL version 8.4 and later.\n" msgstr "Dieses Programm kann nur Upgrades von PostgreSQL Version 8.4 oder später durchführen.\n" -#: check.c:248 +#: check.c:250 #, c-format msgid "This utility can only upgrade to PostgreSQL version %s.\n" msgstr "Dieses Programm kann nur Upgrades auf PostgreSQL Version %s durchführen.\n" -#: check.c:257 +#: check.c:259 #, c-format msgid "This utility cannot be used to downgrade to older major PostgreSQL versions.\n" msgstr "Dieses Programm kann keine Downgrades auf ältere Hauptversionen von PostgreSQL durchführen.\n" -#: check.c:262 +#: check.c:264 #, c-format msgid "Old cluster data and binary directories are from different major versions.\n" msgstr "Die Daten- und Programmverzeichnisse des alten Clusters stammen von verschiedenen Hauptversionen.\n" -#: check.c:265 +#: check.c:267 #, c-format msgid "New cluster data and binary directories are from different major versions.\n" msgstr "Die Daten- und Programmverzeichnisse des neuen Clusters stammen von verschiedenen Hauptversionen.\n" -#: check.c:282 +#: check.c:284 #, c-format msgid "When checking a pre-PG 9.1 live old server, you must specify the old server's port number.\n" msgstr "Wenn ein laufender alter Server vor Version 9.1 geprüft wird, muss die Portnummer des alten Servers angegeben werden.\n" -#: check.c:286 +#: check.c:288 #, c-format msgid "When checking a live server, the old and new port numbers must be different.\n" msgstr "Wenn ein laufender Server geprüft wird, müssen die alte und die neue Portnummer verschieden sein.\n" -#: check.c:301 +#: check.c:303 #, c-format msgid "encodings for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "Kodierungen für Datenbank »%s« stimmen nicht überein: alt »%s«, neu »%s«\n" -#: check.c:306 +#: check.c:308 #, c-format msgid "lc_collate values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "lc_collate-Werte für Datenbank »%s« stimmen nicht überein: alt »%s«, neu »%s«\n" -#: check.c:309 +#: check.c:311 #, c-format msgid "lc_ctype values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "lc_ctype-Werte für Datenbank »%s« stimmen nicht überein: alt »%s«, neu »%s«\n" -#: check.c:382 +#: check.c:384 #, c-format msgid "New cluster database \"%s\" is not empty\n" msgstr "Datenbank »%s« im neuen Cluster ist nicht leer\n" -#: check.c:429 +#: check.c:431 #, c-format msgid "Creating script to analyze new cluster" msgstr "Erzeuge Skript zum Analysieren des neuen Clusters" -#: check.c:443 check.c:602 check.c:866 function.c:253 option.c:480 version.c:57 -#: version.c:207 version.c:377 +#: check.c:445 check.c:604 check.c:868 function.c:253 option.c:480 version.c:57 +#: version.c:207 version.c:377 version.c:480 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "konnte Datei »%s« nicht öffnen: %s\n" -#: check.c:491 check.c:658 +#: check.c:493 check.c:660 #, c-format msgid "could not add execute permission to file \"%s\": %s\n" msgstr "konnte Datei »%s« nicht ausführbar machen: %s\n" -#: check.c:521 +#: check.c:523 #, c-format msgid "Checking for new cluster tablespace directories" msgstr "Prüfe Tablespace-Verzeichnisse des neuen Clusters" -#: check.c:532 +#: check.c:534 #, c-format msgid "new cluster tablespace directory already exists: \"%s\"\n" msgstr "Tablespace-Verzeichnis für neuen Cluster existiert bereits: »%s«\n" -#: check.c:565 +#: check.c:567 #, c-format msgid "" "\n" @@ -185,7 +185,7 @@ "\n" "WARNUNG: das neue Datenverzeichnis sollte nicht im alten Datenverzeichnis liegen, z.B. %s\n" -#: check.c:589 +#: check.c:591 #, c-format msgid "" "\n" @@ -194,73 +194,73 @@ "\n" "WARNUNG: benutzerdefinierte Tablespace-Pfade sollten nicht im Datenverzeichnis liegen, z.B. %s\n" -#: check.c:599 +#: check.c:601 #, c-format msgid "Creating script to delete old cluster" msgstr "Erzeuge Skript zum Löschen des alten Clusters" -#: check.c:678 +#: check.c:680 #, c-format msgid "Checking database user is the install user" msgstr "Prüfe ob der Datenbankbenutzer der Installationsbenutzer ist" -#: check.c:694 +#: check.c:696 #, c-format msgid "database user \"%s\" is not the install user\n" msgstr "Datenbankbenutzer »%s« ist nicht der Installationsbenutzer\n" -#: check.c:705 +#: check.c:707 #, c-format msgid "could not determine the number of users\n" msgstr "konnte die Anzahl der Benutzer nicht ermitteln\n" -#: check.c:713 +#: check.c:715 #, c-format msgid "Only the install user can be defined in the new cluster.\n" msgstr "Nur der Installationsbenutzer darf im neuen Cluster definiert sein.\n" -#: check.c:733 +#: check.c:735 #, c-format msgid "Checking database connection settings" msgstr "Prüfe Verbindungseinstellungen der Datenbank" -#: check.c:755 +#: check.c:757 #, c-format msgid "template0 must not allow connections, i.e. its pg_database.datallowconn must be false\n" msgstr "template0 darf keine Verbindungen erlauben, d.h. ihr pg_database.datallowconn muss falsch sein\n" -#: check.c:765 +#: check.c:767 #, c-format msgid "All non-template0 databases must allow connections, i.e. their pg_database.datallowconn must be true\n" msgstr "Alle Datenbanken außer template0 müssen Verbindungen erlauben, d.h. ihr pg_database.datallowconn muss wahr sein\n" -#: check.c:790 +#: check.c:792 #, c-format msgid "Checking for prepared transactions" msgstr "Prüfe auf vorbereitete Transaktionen" -#: check.c:799 +#: check.c:801 #, c-format msgid "The source cluster contains prepared transactions\n" msgstr "Der alte Cluster enthält vorbereitete Transaktionen\n" -#: check.c:801 +#: check.c:803 #, c-format msgid "The target cluster contains prepared transactions\n" msgstr "Der neue Cluster enthält vorbereitete Transaktionen\n" -#: check.c:827 +#: check.c:829 #, c-format msgid "Checking for contrib/isn with bigint-passing mismatch" msgstr "Prüfe auf contrib/isn mit unpassender bigint-Übergabe" -#: check.c:888 check.c:947 check.c:1006 check.c:1035 function.c:268 +#: check.c:890 check.c:949 check.c:1008 check.c:1037 function.c:268 #: version.c:281 version.c:318 #, c-format msgid "fatal\n" msgstr "fatal\n" -#: check.c:889 +#: check.c:891 #, c-format msgid "" "Your installation contains \"contrib/isn\" functions which rely on the\n" @@ -282,12 +282,12 @@ " %s\n" "\n" -#: check.c:919 +#: check.c:921 #, c-format msgid "Checking for system-defined composite types in user tables" msgstr "Prüfe auf systemdefinierte zusammengesetzte Typen in Benutzertabellen" -#: check.c:948 +#: check.c:950 #, c-format msgid "" "Your installation contains system-defined composite type(s) in user tables.\n" @@ -307,12 +307,12 @@ " %s\n" "\n" -#: check.c:976 +#: check.c:978 #, c-format msgid "Checking for reg* data types in user tables" msgstr "Prüfe auf reg*-Datentypen in Benutzertabellen" -#: check.c:1007 +#: check.c:1009 #, c-format msgid "" "Your installation contains one of the reg* data types in user tables.\n" @@ -332,12 +332,12 @@ " %s\n" "\n" -#: check.c:1029 +#: check.c:1031 #, c-format msgid "Checking for incompatible \"jsonb\" data type" msgstr "Prüfe auf inkompatiblen Datentyp »jsonb«" -#: check.c:1036 +#: check.c:1038 #, c-format msgid "" "Your installation contains the \"jsonb\" data type in user tables.\n" @@ -355,203 +355,208 @@ " %s\n" "\n" -#: check.c:1057 +#: check.c:1059 #, c-format msgid "Checking for roles starting with \"pg_\"" msgstr "Prüfe auf Rollen, die mit »pg_« anfangen" -#: check.c:1067 +#: check.c:1069 #, c-format msgid "The source cluster contains roles starting with \"pg_\"\n" msgstr "Der alte Cluster enthält Rollen, die mit »pg_« anfangen\n" -#: check.c:1069 +#: check.c:1071 #, c-format msgid "The target cluster contains roles starting with \"pg_\"\n" msgstr "Der neue Cluster enthält Rollen, die mit »pg_« anfangen\n" -#: check.c:1095 +#: check.c:1097 #, c-format msgid "failed to get the current locale\n" msgstr "konnte aktuelle Locale nicht ermitteln\n" -#: check.c:1104 +#: check.c:1106 #, c-format msgid "failed to get system locale name for \"%s\"\n" msgstr "konnte System-Locale-Namen für »%s« nicht ermitteln\n" -#: check.c:1110 +#: check.c:1112 #, c-format msgid "failed to restore old locale \"%s\"\n" msgstr "konnte alte Locale »%s« nicht wiederherstellen\n" -#: controldata.c:128 controldata.c:195 +#: controldata.c:129 controldata.c:196 #, c-format msgid "could not get control data using %s: %s\n" msgstr "konnte Kontrolldaten mit %s nicht ermitteln: %s\n" -#: controldata.c:139 +#: controldata.c:140 #, c-format msgid "%d: database cluster state problem\n" msgstr "%d: Problem mit dem Zustand des Clusters\n" -#: controldata.c:156 +#: controldata.c:157 #, c-format msgid "The source cluster was shut down while in recovery mode. To upgrade, use \"rsync\" as documented or shut it down as a primary.\n" msgstr "Der alte Cluster wurde im Wiederherstellungsmodus heruntergefahren. Um ihn zu aktualisieren, verwenden Sie »rsync« wie in der Dokumentation beschrieben oder fahren Sie ihn im Primärmodus herunter.\n" -#: controldata.c:158 +#: controldata.c:159 #, c-format msgid "The target cluster was shut down while in recovery mode. To upgrade, use \"rsync\" as documented or shut it down as a primary.\n" msgstr "Der neue Cluster wurde im Wiederherstellungsmodus heruntergefahren. Um ihn zu aktualisieren, verwenden Sie »rsync« wie in der Dokumentation beschrieben oder fahren Sie ihn im Primärmodus herunter.\n" -#: controldata.c:163 +#: controldata.c:164 #, c-format msgid "The source cluster was not shut down cleanly.\n" msgstr "Der alte Cluster wurde nicht sauber heruntergefahren.\n" -#: controldata.c:165 +#: controldata.c:166 #, c-format msgid "The target cluster was not shut down cleanly.\n" msgstr "Der neue Cluster wurde nicht sauber heruntergefahren.\n" -#: controldata.c:176 +#: controldata.c:177 #, c-format msgid "The source cluster lacks cluster state information:\n" msgstr "Im alten Cluster fehlen Cluster-Zustandsinformationen:\n" -#: controldata.c:178 +#: controldata.c:179 #, c-format msgid "The target cluster lacks cluster state information:\n" msgstr "Im neuen Cluster fehlen Cluster-Zustandsinformationen:\n" -#: controldata.c:208 dump.c:51 pg_upgrade.c:330 relfilenode.c:240 util.c:80 +#: controldata.c:209 dump.c:51 pg_upgrade.c:330 relfilenode.c:240 util.c:80 #, c-format msgid "%s" msgstr "%s" -#: controldata.c:215 +#: controldata.c:216 #, c-format msgid "%d: pg_resetwal problem\n" msgstr "%d: Problem mit pg_resetwal\n" -#: controldata.c:225 controldata.c:235 controldata.c:246 controldata.c:257 -#: controldata.c:268 controldata.c:287 controldata.c:298 controldata.c:309 -#: controldata.c:320 controldata.c:331 controldata.c:342 controldata.c:345 -#: controldata.c:349 controldata.c:359 controldata.c:371 controldata.c:382 -#: controldata.c:393 controldata.c:404 controldata.c:415 controldata.c:426 -#: controldata.c:437 controldata.c:448 controldata.c:459 controldata.c:470 -#: controldata.c:481 +#: controldata.c:226 controldata.c:236 controldata.c:247 controldata.c:258 +#: controldata.c:269 controldata.c:288 controldata.c:299 controldata.c:310 +#: controldata.c:321 controldata.c:332 controldata.c:343 controldata.c:354 +#: controldata.c:357 controldata.c:361 controldata.c:371 controldata.c:383 +#: controldata.c:394 controldata.c:405 controldata.c:416 controldata.c:427 +#: controldata.c:438 controldata.c:449 controldata.c:460 controldata.c:471 +#: controldata.c:482 controldata.c:493 #, c-format msgid "%d: controldata retrieval problem\n" msgstr "%d: Problem beim Ermitteln der Kontrolldaten\n" -#: controldata.c:546 +#: controldata.c:558 #, c-format msgid "The source cluster lacks some required control information:\n" msgstr "Im alten Cluster fehlen einige notwendige Kontrollinformationen:\n" -#: controldata.c:549 +#: controldata.c:561 #, c-format msgid "The target cluster lacks some required control information:\n" msgstr "Im neuen Cluster fehlen einige notwendige Kontrollinformationen:\n" -#: controldata.c:552 +#: controldata.c:564 #, c-format msgid " checkpoint next XID\n" msgstr " Checkpoint nächste XID\n" -#: controldata.c:555 +#: controldata.c:567 #, c-format msgid " latest checkpoint next OID\n" msgstr " NextOID des letzten Checkpoints\n" -#: controldata.c:558 +#: controldata.c:570 #, c-format msgid " latest checkpoint next MultiXactId\n" msgstr " NextMultiXactId des letzten Checkpoints\n" -#: controldata.c:562 +#: controldata.c:574 #, c-format msgid " latest checkpoint oldest MultiXactId\n" msgstr " oldestMultiXid des letzten Checkpoints\n" -#: controldata.c:565 +#: controldata.c:577 +#, c-format +msgid " latest checkpoint oldestXID\n" +msgstr " oldestXID des letzten Checkpoints\n" + +#: controldata.c:580 #, c-format msgid " latest checkpoint next MultiXactOffset\n" msgstr " NextMultiOffset des letzten Checkpoints\n" -#: controldata.c:568 +#: controldata.c:583 #, c-format msgid " first WAL segment after reset\n" msgstr " erstes WAL-Segment nach dem Reset\n" -#: controldata.c:571 +#: controldata.c:586 #, c-format msgid " float8 argument passing method\n" msgstr " Übergabe von Float8-Argumenten\n" -#: controldata.c:574 +#: controldata.c:589 #, c-format msgid " maximum alignment\n" msgstr " maximale Ausrichtung (Alignment)\n" -#: controldata.c:577 +#: controldata.c:592 #, c-format msgid " block size\n" msgstr " Blockgröße\n" -#: controldata.c:580 +#: controldata.c:595 #, c-format msgid " large relation segment size\n" msgstr " Segmentgröße für große Relationen\n" -#: controldata.c:583 +#: controldata.c:598 #, c-format msgid " WAL block size\n" msgstr " WAL-Blockgröße\n" -#: controldata.c:586 +#: controldata.c:601 #, c-format msgid " WAL segment size\n" msgstr " WAL-Segmentgröße\n" -#: controldata.c:589 +#: controldata.c:604 #, c-format msgid " maximum identifier length\n" msgstr " maximale Bezeichnerlänge\n" -#: controldata.c:592 +#: controldata.c:607 #, c-format msgid " maximum number of indexed columns\n" msgstr " maximale Anzahl indizierter Spalten\n" -#: controldata.c:595 +#: controldata.c:610 #, c-format msgid " maximum TOAST chunk size\n" msgstr " maximale TOAST-Chunk-Größe\n" -#: controldata.c:599 +#: controldata.c:614 #, c-format msgid " large-object chunk size\n" msgstr " Large-Object-Chunk-Größe\n" -#: controldata.c:602 +#: controldata.c:617 #, c-format msgid " dates/times are integers?\n" msgstr " Datum/Zeit sind Ganzzahlen?\n" -#: controldata.c:606 +#: controldata.c:621 #, c-format msgid " data checksum version\n" msgstr " Datenprüfsummenversion\n" -#: controldata.c:608 +#: controldata.c:623 #, c-format msgid "Cannot continue without required control information, terminating\n" msgstr "Kann ohne die benötigten Kontrollinformationen nicht fortsetzen, Programm wird beendet\n" -#: controldata.c:623 +#: controldata.c:638 #, c-format msgid "" "old and new pg_controldata alignments are invalid or do not match\n" @@ -560,77 +565,77 @@ "altes und neues Alignment in pg_controldata ist ungültig oder stimmt nicht überein\n" "Wahrscheinlich ist ein Cluster eine 32-Bit-Installation und der andere 64-Bit\n" -#: controldata.c:627 +#: controldata.c:642 #, c-format msgid "old and new pg_controldata block sizes are invalid or do not match\n" msgstr "alte und neue Blockgrößen von pg_controldata sind ungültig oder stimmen nicht überein\n" -#: controldata.c:630 +#: controldata.c:645 #, c-format msgid "old and new pg_controldata maximum relation segment sizes are invalid or do not match\n" msgstr "alte und neue maximale Relationssegmentgrößen von pg_controldata sind ungültig oder stimmen nicht überein\n" -#: controldata.c:633 +#: controldata.c:648 #, c-format msgid "old and new pg_controldata WAL block sizes are invalid or do not match\n" msgstr "alte und neue WAL-Blockgrößen von pg_controldata sind ungültig oder stimmen nicht überein\n" -#: controldata.c:636 +#: controldata.c:651 #, c-format msgid "old and new pg_controldata WAL segment sizes are invalid or do not match\n" msgstr "alte und neue WAL-Segmentgrößen von pg_controldata sind ungültig oder stimmen nicht überein\n" -#: controldata.c:639 +#: controldata.c:654 #, c-format msgid "old and new pg_controldata maximum identifier lengths are invalid or do not match\n" msgstr "alte und neue maximale Bezeichnerlängen von pg_controldata sind ungültig oder stimmen nicht überein\n" -#: controldata.c:642 +#: controldata.c:657 #, c-format msgid "old and new pg_controldata maximum indexed columns are invalid or do not match\n" msgstr "alte und neue Maximalzahlen indizierter Spalten von pg_controldata sind ungültig oder stimmen nicht überein\n" -#: controldata.c:645 +#: controldata.c:660 #, c-format msgid "old and new pg_controldata maximum TOAST chunk sizes are invalid or do not match\n" msgstr "alte und neue maximale TOAST-Chunk-Größen von pg_controldata sind ungültig oder stimmen nicht überein\n" -#: controldata.c:650 +#: controldata.c:665 #, c-format msgid "old and new pg_controldata large-object chunk sizes are invalid or do not match\n" msgstr "alte und neue Large-Object-Chunk-Größen von pg_controldata sind ungültig oder stimmen nicht überein\n" -#: controldata.c:653 +#: controldata.c:668 #, c-format msgid "old and new pg_controldata date/time storage types do not match\n" msgstr "alte und neue Speicherung von Datums- und Zeittypen von pg_controldata ist ungültig oder stimmt nicht überein\n" -#: controldata.c:666 +#: controldata.c:681 #, c-format msgid "old cluster does not use data checksums but the new one does\n" msgstr "der alte Cluster verwendet keine Datenprüfsummen, aber der neue verwendet sie\n" -#: controldata.c:669 +#: controldata.c:684 #, c-format msgid "old cluster uses data checksums but the new one does not\n" msgstr "die alte Cluster verwendet Datenprüfsummen, aber der neue nicht\n" -#: controldata.c:671 +#: controldata.c:686 #, c-format msgid "old and new cluster pg_controldata checksum versions do not match\n" msgstr "Prüfsummenversionen im alten und neuen Cluster stimmen nicht überein\n" -#: controldata.c:682 +#: controldata.c:697 #, c-format msgid "Adding \".old\" suffix to old global/pg_control" msgstr "Füge Endung ».old« an altes global/pg_control an" -#: controldata.c:687 +#: controldata.c:702 #, c-format msgid "Unable to rename %s to %s.\n" msgstr "Konnte %s nicht in %s umbenennen.\n" -#: controldata.c:690 +#: controldata.c:705 #, c-format msgid "" "\n" @@ -1356,32 +1361,37 @@ msgid "Copying old %s to new server" msgstr "Kopiere altes %s zum neuen Server" -#: pg_upgrade.c:425 +#: pg_upgrade.c:424 +#, c-format +msgid "Setting oldest XID for new cluster" +msgstr "Setze älteste XID im neuen Cluster" + +#: pg_upgrade.c:432 #, c-format msgid "Setting next transaction ID and epoch for new cluster" msgstr "Setze nächste Transaktions-ID und -epoche im neuen Cluster" -#: pg_upgrade.c:455 +#: pg_upgrade.c:462 #, c-format msgid "Setting next multixact ID and offset for new cluster" msgstr "Setze nächste Multixact-ID und nächstes Offset im neuen Cluster" -#: pg_upgrade.c:479 +#: pg_upgrade.c:486 #, c-format msgid "Setting oldest multixact ID in new cluster" msgstr "Setze älteste Multixact-ID im neuen Cluster" -#: pg_upgrade.c:499 +#: pg_upgrade.c:506 #, c-format msgid "Resetting WAL archives" msgstr "Setze WAL-Archive zurück" -#: pg_upgrade.c:542 +#: pg_upgrade.c:549 #, c-format msgid "Setting frozenxid and minmxid counters in new cluster" msgstr "Setze frozenxid und minmxid im neuen Cluster" -#: pg_upgrade.c:544 +#: pg_upgrade.c:551 #, c-format msgid "Setting minmxid counter in new cluster" msgstr "Setze minmxid im neuen Cluster" @@ -1682,3 +1692,32 @@ "ungültigen Indexe neu zu erzeugen. Bis dahin werden diese Indexe nicht\n" "verwendet werden.\n" "\n" + +#: version.c:454 +#, c-format +msgid "Checking for extension updates" +msgstr "Prüfe auf Aktualisierungen von Erweiterungen" + +#: version.c:506 +#, c-format +msgid "notice" +msgstr "Hinweis" + +#: version.c:507 +#, c-format +msgid "" +"\n" +"Your installation contains extensions that should be updated\n" +"with the ALTER EXTENSION command. The file\n" +" %s\n" +"when executed by psql by the database superuser will update\n" +"these extensions.\n" +"\n" +msgstr "" +"\n" +"Ihre Installation enthält Erweiterungen, die mit dem Befehl ALTER\n" +"EXTENSION aktualisiert werden sollten. Die Datei\n" +" %s\n" +"kann mit psql als Datenbank-Superuser ausgeführt werden, um die\n" +"Erweiterungen zu aktualisieren.\n" +"\n" diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/po/fr.po postgresql-10-10.19/src/bin/pg_upgrade/po/fr.po --- postgresql-10-10.17/src/bin/pg_upgrade/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -7,15 +7,15 @@ msgstr "" "Project-Id-Version: pg_upgrade (PostgreSQL) 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2021-04-30 21:00+0000\n" -"PO-Revision-Date: 2021-05-02 17:26+0200\n" +"POT-Creation-Date: 2021-08-25 14:29+0000\n" +"PO-Revision-Date: 2021-08-27 17:34+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" #: check.c:68 #, c-format @@ -55,7 +55,7 @@ "Si pg_upgrade échoue après cela, vous devez ré-exécuter initdb\n" "sur la nouvelle instance avant de continuer.\n" -#: check.c:211 +#: check.c:213 #, c-format msgid "" "Optimizer statistics are not transferred by pg_upgrade so,\n" @@ -68,7 +68,7 @@ " %s\n" "\n" -#: check.c:217 +#: check.c:219 #, c-format msgid "" "Running this script will delete the old cluster's data files:\n" @@ -78,7 +78,7 @@ "instance :\n" " %s\n" -#: check.c:222 +#: check.c:224 #, c-format msgid "" "Could not create a script to delete the old cluster's data files\n" @@ -92,93 +92,93 @@ "de l'ancienne instance. Le contenu de l'ancienne instance doit être supprimé\n" "manuellement.\n" -#: check.c:232 +#: check.c:234 #, c-format msgid "Checking cluster versions" msgstr "Vérification des versions des instances" -#: check.c:244 +#: check.c:246 #, c-format msgid "This utility can only upgrade from PostgreSQL version 8.4 and later.\n" msgstr "Cet outil peut seulement mettre à jour les versions 8.4 et ultérieures de PostgreSQL.\n" -#: check.c:248 +#: check.c:250 #, c-format msgid "This utility can only upgrade to PostgreSQL version %s.\n" msgstr "Cet outil peut seulement mettre à jour vers la version %s de PostgreSQL.\n" -#: check.c:257 +#: check.c:259 #, c-format msgid "This utility cannot be used to downgrade to older major PostgreSQL versions.\n" msgstr "Cet outil ne peut pas être utilisé pour mettre à jour vers des versions majeures plus anciennes de PostgreSQL.\n" -#: check.c:262 +#: check.c:264 #, c-format msgid "Old cluster data and binary directories are from different major versions.\n" msgstr "Les répertoires des données de l'ancienne instance et des binaires sont de versions majeures différentes.\n" -#: check.c:265 +#: check.c:267 #, c-format msgid "New cluster data and binary directories are from different major versions.\n" msgstr "Les répertoires des données de la nouvelle instance et des binaires sont de versions majeures différentes.\n" -#: check.c:282 +#: check.c:284 #, c-format msgid "When checking a pre-PG 9.1 live old server, you must specify the old server's port number.\n" msgstr "Lors de la vérification d'un serveur antérieur à la 9.1, vous devez spécifier le numéro de port de l'ancien serveur.\n" -#: check.c:286 +#: check.c:288 #, c-format msgid "When checking a live server, the old and new port numbers must be different.\n" msgstr "Lors de la vérification d'un serveur en production, l'ancien numéro de port doit être différent du nouveau.\n" -#: check.c:301 +#: check.c:303 #, c-format msgid "encodings for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "les encodages de la base de données « %s » ne correspondent pas : ancien « %s », nouveau « %s »\n" -#: check.c:306 +#: check.c:308 #, c-format msgid "lc_collate values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "les valeurs de lc_collate de la base de données « %s » ne correspondent pas : ancien « %s », nouveau « %s »\n" -#: check.c:309 +#: check.c:311 #, c-format msgid "lc_ctype values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "les valeurs de lc_ctype de la base de données « %s » ne correspondent pas : ancien « %s », nouveau « %s »\n" -#: check.c:382 +#: check.c:384 #, c-format msgid "New cluster database \"%s\" is not empty\n" msgstr "La nouvelle instance « %s » n'est pas vide\n" -#: check.c:429 +#: check.c:431 #, c-format msgid "Creating script to analyze new cluster" msgstr "Création d'un script pour analyser la nouvelle instance" -#: check.c:443 check.c:602 check.c:866 function.c:253 option.c:480 version.c:57 -#: version.c:207 version.c:377 +#: check.c:445 check.c:604 check.c:868 function.c:253 option.c:480 version.c:57 +#: version.c:207 version.c:377 version.c:480 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le fichier « %s » : %s\n" -#: check.c:491 check.c:658 +#: check.c:493 check.c:660 #, c-format msgid "could not add execute permission to file \"%s\": %s\n" msgstr "n'a pas pu ajouter les droits d'exécution pour le fichier « %s » : %s\n" -#: check.c:521 +#: check.c:523 #, c-format msgid "Checking for new cluster tablespace directories" msgstr "Vérification des répertoires de tablespace de la nouvelle instance" -#: check.c:532 +#: check.c:534 #, c-format msgid "new cluster tablespace directory already exists: \"%s\"\n" msgstr "le répertoire du tablespace de la nouvelle instance existe déjà : « %s »\n" -#: check.c:565 +#: check.c:567 #, c-format msgid "" "\n" @@ -187,7 +187,7 @@ "\n" "AVERTISSEMENT : le nouveau répertoire de données ne doit pas être à l'intérieur de l'ancien répertoire de données, %s\n" -#: check.c:589 +#: check.c:591 #, c-format msgid "" "\n" @@ -196,73 +196,73 @@ "\n" "AVERTISSEMENT : les emplacements de tablespaces utilisateurs ne doivent pas être à l'intérieur du répertoire de données, %s\n" -#: check.c:599 +#: check.c:601 #, c-format msgid "Creating script to delete old cluster" msgstr "Création du script pour supprimer l'ancienne instance" -#: check.c:678 +#: check.c:680 #, c-format msgid "Checking database user is the install user" msgstr "Vérification que l'utilisateur de la base de données est l'utilisateur d'installation" -#: check.c:694 +#: check.c:696 #, c-format msgid "database user \"%s\" is not the install user\n" msgstr "l'utilisateur de la base de données « %s » n'est pas l'utilisateur d'installation\n" -#: check.c:705 +#: check.c:707 #, c-format msgid "could not determine the number of users\n" msgstr "n'a pas pu déterminer le nombre d'utilisateurs\n" -#: check.c:713 +#: check.c:715 #, c-format msgid "Only the install user can be defined in the new cluster.\n" msgstr "Seul l'utilisateur d'installation peut être défini dans la nouvelle instance.\n" -#: check.c:733 +#: check.c:735 #, c-format msgid "Checking database connection settings" msgstr "Vérification des paramètres de connexion de la base de données" -#: check.c:755 +#: check.c:757 #, c-format msgid "template0 must not allow connections, i.e. its pg_database.datallowconn must be false\n" msgstr "template0 ne doit pas autoriser les connexions, ie pg_database.datallowconn doit valoir false\n" -#: check.c:765 +#: check.c:767 #, c-format msgid "All non-template0 databases must allow connections, i.e. their pg_database.datallowconn must be true\n" msgstr "Toutes les bases de données, autre que template0, doivent autoriser les connexions, ie pg_database.datallowconn doit valoir true\n" -#: check.c:790 +#: check.c:792 #, c-format msgid "Checking for prepared transactions" msgstr "Vérification des transactions préparées" -#: check.c:799 +#: check.c:801 #, c-format msgid "The source cluster contains prepared transactions\n" msgstr "L'instance source contient des transactions préparées\n" -#: check.c:801 +#: check.c:803 #, c-format msgid "The target cluster contains prepared transactions\n" msgstr "L'instance cible contient des transactions préparées\n" -#: check.c:827 +#: check.c:829 #, c-format msgid "Checking for contrib/isn with bigint-passing mismatch" msgstr "Vérification de contrib/isn avec une différence sur le passage des bigint" -#: check.c:888 check.c:947 check.c:1006 check.c:1035 function.c:268 +#: check.c:890 check.c:949 check.c:1008 check.c:1037 function.c:268 #: version.c:281 version.c:318 #, c-format msgid "fatal\n" msgstr "fatal\n" -#: check.c:889 +#: check.c:891 #, c-format msgid "" "Your installation contains \"contrib/isn\" functions which rely on the\n" @@ -284,12 +284,12 @@ " %s\n" "\n" -#: check.c:919 +#: check.c:921 #, c-format msgid "Checking for system-defined composite types in user tables" msgstr "Vérification des types composites systèmes dans les tables utilisateurs" -#: check.c:948 +#: check.c:950 #, c-format msgid "" "Your installation contains system-defined composite type(s) in user tables.\n" @@ -308,12 +308,12 @@ " %s\n" "\n" -#: check.c:976 +#: check.c:978 #, c-format msgid "Checking for reg* data types in user tables" msgstr "Vérification des types de données reg* dans les tables utilisateurs" -#: check.c:1007 +#: check.c:1009 #, c-format msgid "" "Your installation contains one of the reg* data types in user tables.\n" @@ -333,12 +333,12 @@ " %s\n" "\n" -#: check.c:1029 +#: check.c:1031 #, c-format msgid "Checking for incompatible \"jsonb\" data type" msgstr "Vérification des types de données « jsonb » incompatibles" -#: check.c:1036 +#: check.c:1038 #, c-format msgid "" "Your installation contains the \"jsonb\" data type in user tables.\n" @@ -356,205 +356,210 @@ " %s\n" "\n" -#: check.c:1057 +#: check.c:1059 #, c-format msgid "Checking for roles starting with \"pg_\"" msgstr "Vérification des rôles commençant avec « pg_ »" -#: check.c:1067 +#: check.c:1069 #, c-format msgid "The source cluster contains roles starting with \"pg_\"\n" msgstr "L'instance source contient des rôles commençant avec « pg_ »\n" -#: check.c:1069 +#: check.c:1071 #, c-format msgid "The target cluster contains roles starting with \"pg_\"\n" msgstr "L'instance cible contient des rôles commençant avec « pg_ »\n" -#: check.c:1095 +#: check.c:1097 #, c-format msgid "failed to get the current locale\n" msgstr "a échoué pour obtenir la locale courante\n" -#: check.c:1104 +#: check.c:1106 #, c-format msgid "failed to get system locale name for \"%s\"\n" msgstr "a échoué pour obtenir le nom de la locale système « %s »\n" -#: check.c:1110 +#: check.c:1112 #, c-format msgid "failed to restore old locale \"%s\"\n" msgstr "a échoué pour restaurer l'ancienne locale « %s »\n" -#: controldata.c:128 controldata.c:195 +#: controldata.c:129 controldata.c:196 #, c-format msgid "could not get control data using %s: %s\n" msgstr "" "n'a pas pu obtenir les données de contrôle en utilisant %s : %s\n" "\n" -#: controldata.c:139 +#: controldata.c:140 #, c-format msgid "%d: database cluster state problem\n" msgstr "%d : problème sur l'état de l'instance de la base de données\n" -#: controldata.c:156 +#: controldata.c:157 #, c-format msgid "The source cluster was shut down while in recovery mode. To upgrade, use \"rsync\" as documented or shut it down as a primary.\n" msgstr "L'instance source a été arrêtée alors qu'elle était en mode restauration. Pour mettre à jour, utilisez « rsync » comme documenté ou arrêtez le en tant que serveur primaire.\n" -#: controldata.c:158 +#: controldata.c:159 #, c-format msgid "The target cluster was shut down while in recovery mode. To upgrade, use \"rsync\" as documented or shut it down as a primary.\n" msgstr "L'instance cible a été arrêtée alors qu'elle était en mode restauration. Pour mettre à jour, utilisez « rsync » comme documenté ou arrêtez l'instance en tant que primaire.\n" -#: controldata.c:163 +#: controldata.c:164 #, c-format msgid "The source cluster was not shut down cleanly.\n" msgstr "L'instance source n'a pas été arrêtée proprement.\n" -#: controldata.c:165 +#: controldata.c:166 #, c-format msgid "The target cluster was not shut down cleanly.\n" msgstr "L'instance cible n'a pas été arrêtée proprement.\n" -#: controldata.c:176 +#: controldata.c:177 #, c-format msgid "The source cluster lacks cluster state information:\n" msgstr "Il manque certaines informations d'état requises sur l'instance source :\n" -#: controldata.c:178 +#: controldata.c:179 #, c-format msgid "The target cluster lacks cluster state information:\n" msgstr "Il manque certaines informations d'état requises sur l'instance cible :\n" -#: controldata.c:208 dump.c:51 pg_upgrade.c:330 relfilenode.c:240 util.c:80 +#: controldata.c:209 dump.c:51 pg_upgrade.c:330 relfilenode.c:240 util.c:80 #, c-format msgid "%s" msgstr "%s" -#: controldata.c:215 +#: controldata.c:216 #, c-format msgid "%d: pg_resetwal problem\n" msgstr "%d : problème avec pg_resetwal\n" -#: controldata.c:225 controldata.c:235 controldata.c:246 controldata.c:257 -#: controldata.c:268 controldata.c:287 controldata.c:298 controldata.c:309 -#: controldata.c:320 controldata.c:331 controldata.c:342 controldata.c:345 -#: controldata.c:349 controldata.c:359 controldata.c:371 controldata.c:382 -#: controldata.c:393 controldata.c:404 controldata.c:415 controldata.c:426 -#: controldata.c:437 controldata.c:448 controldata.c:459 controldata.c:470 -#: controldata.c:481 +#: controldata.c:226 controldata.c:236 controldata.c:247 controldata.c:258 +#: controldata.c:269 controldata.c:288 controldata.c:299 controldata.c:310 +#: controldata.c:321 controldata.c:332 controldata.c:343 controldata.c:354 +#: controldata.c:357 controldata.c:361 controldata.c:371 controldata.c:383 +#: controldata.c:394 controldata.c:405 controldata.c:416 controldata.c:427 +#: controldata.c:438 controldata.c:449 controldata.c:460 controldata.c:471 +#: controldata.c:482 controldata.c:493 #, c-format msgid "%d: controldata retrieval problem\n" msgstr "%d : problème de récupération des controldata\n" -#: controldata.c:546 +#: controldata.c:558 #, c-format msgid "The source cluster lacks some required control information:\n" msgstr "Il manque certaines informations de contrôle requises sur l'instance source :\n" -#: controldata.c:549 +#: controldata.c:561 #, c-format msgid "The target cluster lacks some required control information:\n" msgstr "Il manque certaines informations de contrôle requises sur l'instance cible :\n" -#: controldata.c:552 +#: controldata.c:564 #, c-format msgid " checkpoint next XID\n" msgstr " XID du prochain checkpoint\n" -#: controldata.c:555 +#: controldata.c:567 #, c-format msgid " latest checkpoint next OID\n" msgstr " prochain OID du dernier checkpoint\n" -#: controldata.c:558 +#: controldata.c:570 #, c-format msgid " latest checkpoint next MultiXactId\n" msgstr " prochain MultiXactId du dernier checkpoint\n" -#: controldata.c:562 +#: controldata.c:574 #, c-format msgid " latest checkpoint oldest MultiXactId\n" msgstr " plus ancien MultiXactId du dernier checkpoint\n" -#: controldata.c:565 +#: controldata.c:577 +#, c-format +msgid " latest checkpoint oldestXID\n" +msgstr " oldestXID du dernier checkpoint\n" + +#: controldata.c:580 #, c-format msgid " latest checkpoint next MultiXactOffset\n" msgstr " prochain MultiXactOffset du dernier checkpoint\n" -#: controldata.c:568 +#: controldata.c:583 #, c-format msgid " first WAL segment after reset\n" msgstr " premier segment WAL après réinitialisation\n" -#: controldata.c:571 +#: controldata.c:586 #, c-format msgid " float8 argument passing method\n" msgstr " méthode de passage de arguments float8\n" -#: controldata.c:574 +#: controldata.c:589 #, c-format msgid " maximum alignment\n" msgstr " alignement maximale\n" -#: controldata.c:577 +#: controldata.c:592 #, c-format msgid " block size\n" msgstr " taille de bloc\n" -#: controldata.c:580 +#: controldata.c:595 #, c-format msgid " large relation segment size\n" msgstr " taille de segment des relations\n" -#: controldata.c:583 +#: controldata.c:598 #, c-format msgid " WAL block size\n" msgstr " taille de bloc d'un WAL\n" -#: controldata.c:586 +#: controldata.c:601 #, c-format msgid " WAL segment size\n" msgstr " taille d'un segment WAL\n" -#: controldata.c:589 +#: controldata.c:604 #, c-format msgid " maximum identifier length\n" msgstr " longueur maximum d'un identifiant\n" -#: controldata.c:592 +#: controldata.c:607 #, c-format msgid " maximum number of indexed columns\n" msgstr " nombre maximum de colonnes indexées\n" -#: controldata.c:595 +#: controldata.c:610 #, c-format msgid " maximum TOAST chunk size\n" msgstr " taille maximale d'un morceau de TOAST\n" -#: controldata.c:599 +#: controldata.c:614 #, c-format msgid " large-object chunk size\n" msgstr " taille d'un morceau Large-Object\n" -#: controldata.c:602 +#: controldata.c:617 #, c-format msgid " dates/times are integers?\n" msgstr " les dates/heures sont-ils des integers?\n" -#: controldata.c:606 +#: controldata.c:621 #, c-format msgid " data checksum version\n" msgstr " version des sommes de contrôle des données\n" -#: controldata.c:608 +#: controldata.c:623 #, c-format msgid "Cannot continue without required control information, terminating\n" msgstr "Ne peut pas continuer sans les informations de contrôle requises, en arrêt\n" -#: controldata.c:623 +#: controldata.c:638 #, c-format msgid "" "old and new pg_controldata alignments are invalid or do not match\n" @@ -563,77 +568,77 @@ "les alignements sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" "Il est probable qu'une installation soit en 32 bits et l'autre en 64 bits.\n" -#: controldata.c:627 +#: controldata.c:642 #, c-format msgid "old and new pg_controldata block sizes are invalid or do not match\n" msgstr "les tailles de bloc sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:630 +#: controldata.c:645 #, c-format msgid "old and new pg_controldata maximum relation segment sizes are invalid or do not match\n" msgstr "les tailles maximales de segment de relation sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:633 +#: controldata.c:648 #, c-format msgid "old and new pg_controldata WAL block sizes are invalid or do not match\n" msgstr "les tailles de bloc des WAL sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:636 +#: controldata.c:651 #, c-format msgid "old and new pg_controldata WAL segment sizes are invalid or do not match\n" msgstr "les tailles de segment de WAL sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:639 +#: controldata.c:654 #, c-format msgid "old and new pg_controldata maximum identifier lengths are invalid or do not match\n" msgstr "les longueurs maximales des identifiants sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:642 +#: controldata.c:657 #, c-format msgid "old and new pg_controldata maximum indexed columns are invalid or do not match\n" msgstr "les nombres maximums de colonnes indexées sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:645 +#: controldata.c:660 #, c-format msgid "old and new pg_controldata maximum TOAST chunk sizes are invalid or do not match\n" msgstr "les tailles maximales de morceaux des TOAST sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:650 +#: controldata.c:665 #, c-format msgid "old and new pg_controldata large-object chunk sizes are invalid or do not match\n" msgstr "les tailles des morceaux de Large Objects sont invalides ou ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:653 +#: controldata.c:668 #, c-format msgid "old and new pg_controldata date/time storage types do not match\n" msgstr "les types de stockage date/heure ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:666 +#: controldata.c:681 #, c-format msgid "old cluster does not use data checksums but the new one does\n" msgstr "l'ancienne instance n'utilise pas les sommes de contrôle alors que la nouvelle les utilise\n" -#: controldata.c:669 +#: controldata.c:684 #, c-format msgid "old cluster uses data checksums but the new one does not\n" msgstr "l'ancienne instance utilise les sommes de contrôle alors que la nouvelle ne les utilise pas\n" -#: controldata.c:671 +#: controldata.c:686 #, c-format msgid "old and new cluster pg_controldata checksum versions do not match\n" msgstr "les versions des sommes de contrôle ne correspondent pas entre l'ancien et le nouveau pg_controldata.\n" -#: controldata.c:682 +#: controldata.c:697 #, c-format msgid "Adding \".old\" suffix to old global/pg_control" msgstr "Ajout du suffixe « .old » à l'ancien global/pg_control" -#: controldata.c:687 +#: controldata.c:702 #, c-format msgid "Unable to rename %s to %s.\n" msgstr "Incapable de renommer %s à %s.\n" -#: controldata.c:690 +#: controldata.c:705 #, c-format msgid "" "\n" @@ -1018,7 +1023,9 @@ msgid "" "pg_upgrade upgrades a PostgreSQL cluster to a different major version.\n" "\n" -msgstr "pg_upgrade met à jour une instance PostgreSQL vers une version majeure différente.\n" +msgstr "" +"pg_upgrade met à jour une instance PostgreSQL vers une version majeure\n" +"différente.\n" #: option.c:278 #, c-format @@ -1042,67 +1049,89 @@ #: option.c:281 #, c-format msgid " -b, --old-bindir=BINDIR old cluster executable directory\n" -msgstr " -b, --old-bindir=DIRBIN répertoire des exécutables de l'ancienne instance\n" +msgstr "" +" -b, --old-bindir=DIR_BIN répertoire des exécutables de l'ancienne\n" +" instance\n" #: option.c:282 #, c-format msgid " -B, --new-bindir=BINDIR new cluster executable directory\n" -msgstr " -B, --new-bindir=DIRBIN répertoire des exécutables de la nouvelle instance\n" +msgstr "" +" -B, --new-bindir=DIR_BIN répertoire des exécutables de la nouvelle\n" +" instance\n" #: option.c:283 #, c-format msgid " -c, --check check clusters only, don't change any data\n" -msgstr " -c, --check vérifie seulement les instances, pas de modifications\n" +msgstr "" +" -c, --check vérifie seulement les instances, pas de\n" +" modifications\n" #: option.c:284 #, c-format msgid " -d, --old-datadir=DATADIR old cluster data directory\n" -msgstr " -d, --old-datadir=DIRDONNEES répertoire des données de l'ancienne instance\n" +msgstr " -d, --old-datadir=DIR_DONNÉES répertoire des données de l'ancienne instance\n" #: option.c:285 #, c-format msgid " -D, --new-datadir=DATADIR new cluster data directory\n" -msgstr " -D, --new-datadir=DIRDONNEES répertoire des données de la nouvelle instance\n" +msgstr " -D, --new-datadir=DIR_DONNÉES répertoire des données de la nouvelle instance\n" #: option.c:286 #, c-format msgid " -j, --jobs=NUM number of simultaneous processes or threads to use\n" -msgstr " -j, --jobs=NUM nombre de processus ou threads simultanés à utiliser\n" +msgstr "" +" -j, --jobs=NUM nombre de processus ou threads simultanés à\n" +" utiliser\n" #: option.c:287 #, c-format msgid " -k, --link link instead of copying files to new cluster\n" -msgstr " -k, --link lie les fichiers au lieu de les copier vers la nouvelle instance\n" +msgstr "" +" -k, --link lie les fichiers au lieu de les copier vers la\n" +" nouvelle instance\n" #: option.c:288 #, c-format msgid " -o, --old-options=OPTIONS old cluster options to pass to the server\n" -msgstr " -o, --old-options=OPTIONS options à passer au serveur de l'ancienne instance\n" +msgstr "" +" -o, --old-options=OPTIONS options à passer au serveur de l'ancienne\n" +" instance\n" #: option.c:289 #, c-format msgid " -O, --new-options=OPTIONS new cluster options to pass to the server\n" -msgstr " -O, --new-options=OPTIONS options à passer au serveur de la nouvelle instance\n" +msgstr "" +" -O, --new-options=OPTIONS options à passer au serveur de la nouvelle\n" +" instance\n" #: option.c:290 #, c-format msgid " -p, --old-port=PORT old cluster port number (default %d)\n" -msgstr " -p, --old-port=PORT numéro de port de l'ancienne instance (par défaut %d)\n" +msgstr "" +" -p, --old-port=PORT numéro de port de l'ancienne instance\n" +" (par défaut %d)\n" #: option.c:291 #, c-format msgid " -P, --new-port=PORT new cluster port number (default %d)\n" -msgstr " -P, --new-port=PORT numéro de port de la nouvelle instance (par défaut %d)\n" +msgstr "" +" -P, --new-port=PORT numéro de port de la nouvelle instance\n" +" (par défaut %d)\n" #: option.c:292 #, c-format msgid " -r, --retain retain SQL and log files after success\n" -msgstr " -r, --retain conserve les fichiers SQL et de traces en cas de succès\n" +msgstr "" +" -r, --retain conserve les fichiers SQL et de traces en cas de\n" +" succès\n" #: option.c:293 #, c-format msgid " -U, --username=NAME cluster superuser (default \"%s\")\n" -msgstr " -U, --username=NOM superutilisateur de l'instance (par défaut « %s »)\n" +msgstr "" +" -U, --username=UTILISATEUR super-utilisateur de l'instance\n" +" (par défaut « %s »)\n" #: option.c:294 #, c-format @@ -1147,10 +1176,10 @@ msgstr "" "\n" "Quand vous exécutez pg_upgrade, vous devez fournir les informations suivantes :\n" -" le répertoire de données pour l'ancienne instance (-d DIRDONNÉES)\n" -" le répertoire de données pour la nouvelle instance (-D DIRDONNÉES)\n" -" le répertoire « bin » pour l'ancienne version (-b DIRBIN)\n" -" le répertoire « bin » pour la nouvelle version (-B DIRBIN)\n" +" le répertoire de données pour l'ancienne instance (-d DIR_DONNÉES)\n" +" le répertoire de données pour la nouvelle instance (-D DIR_DONNÉES)\n" +" le répertoire « bin » pour l'ancienne version (-b DIR_BIN)\n" +" le répertoire « bin » pour la nouvelle version (-B DIR_BIN)\n" #: option.c:308 #, c-format @@ -1316,7 +1345,7 @@ #: pg_upgrade.c:239 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s : n'a pas pu trouver son propre exécutable\n" +msgstr "%s : n'a pas pu trouver l'exécutable du programme\n" #: pg_upgrade.c:256 #, c-format @@ -1353,32 +1382,37 @@ msgid "Copying old %s to new server" msgstr "Copie de l'ancien %s vers le nouveau serveur" -#: pg_upgrade.c:425 +#: pg_upgrade.c:424 +#, c-format +msgid "Setting oldest XID for new cluster" +msgstr "Configuration du plus ancien XID sur la nouvelle instance" + +#: pg_upgrade.c:432 #, c-format msgid "Setting next transaction ID and epoch for new cluster" msgstr "Configuration du prochain identifiant de transaction et de l'epoch pour la nouvelle instance" -#: pg_upgrade.c:455 +#: pg_upgrade.c:462 #, c-format msgid "Setting next multixact ID and offset for new cluster" msgstr "Configuration du prochain MultiXactId et décalage pour la nouvelle instance" -#: pg_upgrade.c:479 +#: pg_upgrade.c:486 #, c-format msgid "Setting oldest multixact ID in new cluster" msgstr "Configuration du plus ancien identifiant multixact sur la nouvelle instance" -#: pg_upgrade.c:499 +#: pg_upgrade.c:506 #, c-format msgid "Resetting WAL archives" msgstr "Réinitialisation des archives WAL" -#: pg_upgrade.c:542 +#: pg_upgrade.c:549 #, c-format msgid "Setting frozenxid and minmxid counters in new cluster" msgstr "Configuration des compteurs frozenxid et minmxid dans la nouvelle instance" -#: pg_upgrade.c:544 +#: pg_upgrade.c:551 #, c-format msgid "Setting minmxid counter in new cluster" msgstr "Configuration du compteur minmxid dans la nouvelle instance" @@ -1674,33 +1708,58 @@ "index invalides. Avant cela, aucun de ces index ne sera utilisé.\n" "\n" -#~ msgid "" -#~ "Optimizer statistics and free space information are not transferred\n" -#~ "by pg_upgrade so, once you start the new server, consider running:\n" -#~ " %s\n" -#~ "\n" -#~ msgstr "" -#~ "Les statistiques de l'optimiseur et les informations sur l'espace libre\n" -#~ "ne sont pas transférées par pg_upgrade, donc une fois le nouveau\n" -#~ "serveur démarré, pensez à exécuter :\n" -#~ " %s\n" -#~ "\n" +#: version.c:454 +#, c-format +msgid "Checking for extension updates" +msgstr "Vérification des mises à jour d'extension" -#~ msgid "------------------------------------------------\n" -#~ msgstr "------------------------------------------------\n" +#: version.c:506 +#, c-format +msgid "notice" +msgstr "notice" -#~ msgid "-----------------------------\n" -#~ msgstr "-----------------------------\n" +#: version.c:507 +#, c-format +msgid "" +"\n" +"Your installation contains extensions that should be updated\n" +"with the ALTER EXTENSION command. The file\n" +" %s\n" +"when executed by psql by the database superuser will update\n" +"these extensions.\n" +"\n" +msgstr "" +"\n" +"Votre installation contient des extensions qui devraient être mises à jour\n" +"avec la commande ALTER EXTENSION. Le fichier\n" +" %s\n" +"mettra à jour ces extensions quand il sera exécuté avec psql par un\n" +"super-superutilisateur.\n" +"\n" -#~ msgid "" -#~ "This utility can only upgrade to PostgreSQL version 9.0 after 2010-01-11\n" -#~ "because of backend API changes made during development.\n" -#~ msgstr "" -#~ "Cet outil peut seulement mettre à jour à partir de la version 9.0 de PostgreSQL (après le 11 janvier 2010)\n" -#~ "à cause de changements dans l'API du moteur fait lors du développement.\n" +#~ msgid "could not parse PG_VERSION file from %s\n" +#~ msgstr "n'a pas pu analyser le fichier PG_VERSION à partir de %s\n" -#~ msgid "%s is not a directory\n" -#~ msgstr "%s n'est pas un répertoire\n" +#~ msgid "cannot write to log file %s\n" +#~ msgstr "ne peut pas écrire dans le fichier de traces %s\n" + +#~ msgid "cannot find current directory\n" +#~ msgstr "ne peut pas trouver le répertoire courant\n" + +#~ msgid "Cannot open file %s: %m\n" +#~ msgstr "Ne peut pas ouvrir le fichier %s : %m\n" + +#~ msgid "Cannot read line %d from %s: %m\n" +#~ msgstr "Ne peut pas lire la ligne %d à partir de %s : %m\n" + +#~ msgid "Checking for invalid \"line\" user columns" +#~ msgstr "Vérification des colonnes utilisateurs « line » invalides" + +#~ msgid "----------------\n" +#~ msgstr "----------------\n" + +#~ msgid "------------------\n" +#~ msgstr "------------------\n" #~ msgid "" #~ "could not load library \"%s\":\n" @@ -1709,26 +1768,30 @@ #~ "n'a pas pu charger la biblothèque « %s »:\n" #~ "%s\n" -#~ msgid "------------------\n" -#~ msgstr "------------------\n" - -#~ msgid "----------------\n" -#~ msgstr "----------------\n" - -#~ msgid "Checking for invalid \"line\" user columns" -#~ msgstr "Vérification des colonnes utilisateurs « line » invalides" - -#~ msgid "Cannot read line %d from %s: %m\n" -#~ msgstr "Ne peut pas lire la ligne %d à partir de %s : %m\n" +#~ msgid "%s is not a directory\n" +#~ msgstr "%s n'est pas un répertoire\n" -#~ msgid "Cannot open file %s: %m\n" -#~ msgstr "Ne peut pas ouvrir le fichier %s : %m\n" +#~ msgid "" +#~ "This utility can only upgrade to PostgreSQL version 9.0 after 2010-01-11\n" +#~ "because of backend API changes made during development.\n" +#~ msgstr "" +#~ "Cet outil peut seulement mettre à jour à partir de la version 9.0 de PostgreSQL (après le 11 janvier 2010)\n" +#~ "à cause de changements dans l'API du moteur fait lors du développement.\n" -#~ msgid "cannot find current directory\n" -#~ msgstr "ne peut pas trouver le répertoire courant\n" +#~ msgid "-----------------------------\n" +#~ msgstr "-----------------------------\n" -#~ msgid "cannot write to log file %s\n" -#~ msgstr "ne peut pas écrire dans le fichier de traces %s\n" +#~ msgid "------------------------------------------------\n" +#~ msgstr "------------------------------------------------\n" -#~ msgid "could not parse PG_VERSION file from %s\n" -#~ msgstr "n'a pas pu analyser le fichier PG_VERSION à partir de %s\n" +#~ msgid "" +#~ "Optimizer statistics and free space information are not transferred\n" +#~ "by pg_upgrade so, once you start the new server, consider running:\n" +#~ " %s\n" +#~ "\n" +#~ msgstr "" +#~ "Les statistiques de l'optimiseur et les informations sur l'espace libre\n" +#~ "ne sont pas transférées par pg_upgrade, donc une fois le nouveau\n" +#~ "serveur démarré, pensez à exécuter :\n" +#~ " %s\n" +#~ "\n" diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/po/ru.po postgresql-10-10.19/src/bin/pg_upgrade/po/ru.po --- postgresql-10-10.17/src/bin/pg_upgrade/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,13 +1,14 @@ # Russian message translation file for pg_upgrade # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2017, 2018, 2019, 2020. +# Alexander Lakhin , 2017, 2018, 2019, 2020, 2021. +# Maxim Yablokov , 2021. msgid "" msgstr "" "Project-Id-Version: pg_upgrade (PostgreSQL) 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-11-09 07:36+0300\n" -"PO-Revision-Date: 2020-11-09 08:34+0300\n" +"POT-Creation-Date: 2021-08-09 23:07+0300\n" +"PO-Revision-Date: 2021-09-06 07:39+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -17,7 +18,7 @@ "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" -#: check.c:67 +#: check.c:68 #, c-format msgid "" "Performing Consistency Checks on Old Live Server\n" @@ -26,7 +27,7 @@ "Проверка целостности на старом работающем сервере\n" "-------------------------------------------------\n" -#: check.c:73 +#: check.c:74 #, c-format msgid "" "Performing Consistency Checks\n" @@ -35,7 +36,7 @@ "Проведение проверок целостности\n" "-------------------------------\n" -#: check.c:169 +#: check.c:171 #, c-format msgid "" "\n" @@ -44,7 +45,7 @@ "\n" "*Кластеры совместимы*\n" -#: check.c:175 +#: check.c:177 #, c-format msgid "" "\n" @@ -56,7 +57,7 @@ "initdb\n" "для нового кластера, чтобы продолжить.\n" -#: check.c:209 +#: check.c:213 #, c-format msgid "" "Optimizer statistics are not transferred by pg_upgrade so,\n" @@ -69,7 +70,7 @@ " %s\n" "\n" -#: check.c:215 +#: check.c:219 #, c-format msgid "" "Running this script will delete the old cluster's data files:\n" @@ -78,7 +79,7 @@ "При запуске этого скрипта будут удалены файлы данных старого кластера:\n" " %s\n" -#: check.c:220 +#: check.c:224 #, c-format msgid "" "Could not create a script to delete the old cluster's data files\n" @@ -91,24 +92,24 @@ "пространства или каталог данных нового кластера.\n" "Содержимое старого кластера нужно будет удалить вручную.\n" -#: check.c:230 +#: check.c:234 #, c-format msgid "Checking cluster versions" msgstr "Проверка версий кластеров" -#: check.c:242 +#: check.c:246 #, c-format msgid "This utility can only upgrade from PostgreSQL version 8.4 and later.\n" msgstr "" "Эта утилита может производить обновление только с версии PostgreSQL 8.4 и " "новее.\n" -#: check.c:246 +#: check.c:250 #, c-format msgid "This utility can only upgrade to PostgreSQL version %s.\n" msgstr "Эта утилита может только повышать версию PostgreSQL до %s.\n" -#: check.c:255 +#: check.c:259 #, c-format msgid "" "This utility cannot be used to downgrade to older major PostgreSQL " @@ -117,7 +118,7 @@ "Эта утилита не может понижать версию до более старой основной версии " "PostgreSQL.\n" -#: check.c:260 +#: check.c:264 #, c-format msgid "" "Old cluster data and binary directories are from different major versions.\n" @@ -125,7 +126,7 @@ "Каталоги данных и исполняемых файлов старого кластера относятся к разным " "основным версиям.\n" -#: check.c:263 +#: check.c:267 #, c-format msgid "" "New cluster data and binary directories are from different major versions.\n" @@ -133,7 +134,7 @@ "Каталоги данных и исполняемых файлов нового кластера относятся к разным " "основным версиям.\n" -#: check.c:280 +#: check.c:284 #, c-format msgid "" "When checking a pre-PG 9.1 live old server, you must specify the old " @@ -142,7 +143,7 @@ "Для проверки старого работающего сервера версии до 9.1 необходимо указать " "номер порта этого сервера.\n" -#: check.c:284 +#: check.c:288 #, c-format msgid "" "When checking a live server, the old and new port numbers must be " @@ -151,14 +152,14 @@ "Для проверки работающего сервера новый номер порта должен отличаться от " "старого.\n" -#: check.c:299 +#: check.c:303 #, c-format msgid "encodings for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "" "кодировки в базе данных \"%s\" различаются: старая - \"%s\", новая - \"%s" "\"\n" -#: check.c:304 +#: check.c:308 #, c-format msgid "" "lc_collate values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" @@ -166,7 +167,7 @@ "значения lc_collate в базе данных \"%s\" различаются: старое - \"%s\", " "новое - \"%s\"\n" -#: check.c:307 +#: check.c:311 #, c-format msgid "" "lc_ctype values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" @@ -174,39 +175,39 @@ "значения lc_ctype в базе данных \"%s\" различаются: старое - \"%s\", новое " "- \"%s\"\n" -#: check.c:380 +#: check.c:384 #, c-format msgid "New cluster database \"%s\" is not empty\n" msgstr "Новая база данных кластера \"%s\" не пустая\n" -#: check.c:427 +#: check.c:431 #, c-format msgid "Creating script to analyze new cluster" msgstr "Создание скрипта для анализа нового кластера" -#: check.c:441 check.c:600 check.c:864 check.c:975 check.c:1066 function.c:253 -#: option.c:480 version.c:57 version.c:202 version.c:344 +#: check.c:445 check.c:604 check.c:868 function.c:253 option.c:480 version.c:57 +#: version.c:207 version.c:377 version.c:480 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "не удалось открыть файл \"%s\": %s\n" -#: check.c:489 check.c:656 +#: check.c:493 check.c:660 #, c-format msgid "could not add execute permission to file \"%s\": %s\n" msgstr "не удалось добавить право выполнения для файла \"%s\": %s\n" -#: check.c:519 +#: check.c:523 #, c-format msgid "Checking for new cluster tablespace directories" msgstr "Проверка каталогов табличных пространств в новом кластере" -#: check.c:530 +#: check.c:534 #, c-format msgid "new cluster tablespace directory already exists: \"%s\"\n" msgstr "" "каталог табличного пространства в новом кластере уже существует: \"%s\"\n" -#: check.c:563 +#: check.c:567 #, c-format msgid "" "\n" @@ -217,7 +218,7 @@ "ПРЕДУПРЕЖДЕНИЕ: новый каталог данных не должен располагаться внутри старого " "каталога данных, то есть, в %s\n" -#: check.c:587 +#: check.c:591 #, c-format msgid "" "\n" @@ -228,37 +229,37 @@ "ПРЕДУПРЕЖДЕНИЕ: пользовательские табличные пространства не должны " "располагаться внутри каталога данных, то есть, в %s\n" -#: check.c:597 +#: check.c:601 #, c-format msgid "Creating script to delete old cluster" msgstr "Создание скрипта для удаления старого кластера" -#: check.c:676 +#: check.c:680 #, c-format msgid "Checking database user is the install user" msgstr "Проверка, является ли пользователь БД стартовым пользователем" -#: check.c:692 +#: check.c:696 #, c-format msgid "database user \"%s\" is not the install user\n" msgstr "пользователь БД \"%s\" не является стартовым пользователем\n" -#: check.c:703 +#: check.c:707 #, c-format msgid "could not determine the number of users\n" msgstr "не удалось определить количество пользователей\n" -#: check.c:711 +#: check.c:715 #, c-format msgid "Only the install user can be defined in the new cluster.\n" msgstr "В новом кластере может быть определён только стартовый пользователь.\n" -#: check.c:731 +#: check.c:735 #, c-format msgid "Checking database connection settings" msgstr "Проверка параметров подключения к базе данных" -#: check.c:753 +#: check.c:757 #, c-format msgid "" "template0 must not allow connections, i.e. its pg_database.datallowconn must " @@ -267,7 +268,7 @@ "База template0 не должна допускать подключения, то есть её свойство " "pg_database.datallowconn должно быть false\n" -#: check.c:763 +#: check.c:767 #, c-format msgid "" "All non-template0 databases must allow connections, i.e. their pg_database." @@ -276,33 +277,33 @@ "Все базы, кроме template0, должны допускать подключения, то есть их свойство " "pg_database.datallowconn должно быть true\n" -#: check.c:788 +#: check.c:792 #, c-format msgid "Checking for prepared transactions" msgstr "Проверка наличия подготовленных транзакций" -#: check.c:797 +#: check.c:801 #, c-format msgid "The source cluster contains prepared transactions\n" msgstr "Исходный кластер содержит подготовленные транзакции\n" -#: check.c:799 +#: check.c:803 #, c-format msgid "The target cluster contains prepared transactions\n" msgstr "Целевой кластер содержит подготовленные транзакции\n" -#: check.c:825 +#: check.c:829 #, c-format msgid "Checking for contrib/isn with bigint-passing mismatch" msgstr "Проверка несоответствия при передаче bigint в contrib/isn" -#: check.c:886 check.c:998 check.c:1089 function.c:268 version.c:248 -#: version.c:285 +#: check.c:890 check.c:949 check.c:1008 check.c:1037 function.c:268 +#: version.c:281 version.c:318 #, c-format msgid "fatal\n" msgstr "сбой\n" -#: check.c:887 +#: check.c:891 #, c-format msgid "" "Your installation contains \"contrib/isn\" functions which rely on the\n" @@ -326,12 +327,36 @@ " %s\n" "\n" -#: check.c:919 +#: check.c:921 +#, c-format +msgid "Checking for system-defined composite types in user tables" +msgstr "Проверка системных составных типов в пользовательских таблицах" + +#: check.c:950 +#, c-format +msgid "" +"Your installation contains system-defined composite type(s) in user tables.\n" +"These type OIDs are not stable across PostgreSQL versions,\n" +"so this cluster cannot currently be upgraded. You can\n" +"drop the problem columns and restart the upgrade.\n" +"A list of the problem columns is in the file:\n" +" %s\n" +"\n" +msgstr "" +"В вашей инсталляции пользовательские таблицы используют системные составные " +"типы.\n" +"OID таких типов могут различаться в разных версиях PostgreSQL, в настоящем\n" +"состоянии обновить кластер невозможно. Вы можете удалить проблемные столбцы\n" +"и перезапустить обновление. Список проблемных столбцов приведён в файле:\n" +" %s\n" +"\n" + +#: check.c:978 #, c-format msgid "Checking for reg* data types in user tables" msgstr "Проверка типов данных reg* в пользовательских таблицах" -#: check.c:999 +#: check.c:1009 #, c-format msgid "" "Your installation contains one of the reg* data types in user tables.\n" @@ -351,12 +376,12 @@ " %s\n" "\n" -#: check.c:1024 +#: check.c:1031 #, c-format msgid "Checking for incompatible \"jsonb\" data type" msgstr "Проверка несовместимого типа данных \"jsonb\"" -#: check.c:1090 +#: check.c:1038 #, c-format msgid "" "Your installation contains the \"jsonb\" data type in user tables.\n" @@ -376,47 +401,47 @@ " %s\n" "\n" -#: check.c:1111 +#: check.c:1059 #, c-format msgid "Checking for roles starting with \"pg_\"" msgstr "Проверка ролей с именами, начинающимися с \"pg_\"" -#: check.c:1121 +#: check.c:1069 #, c-format msgid "The source cluster contains roles starting with \"pg_\"\n" msgstr "В исходном кластере есть роли, имена которых начинаются с \"pg_\"\n" -#: check.c:1123 +#: check.c:1071 #, c-format msgid "The target cluster contains roles starting with \"pg_\"\n" msgstr "В целевом кластере есть роли, имена которых начинаются с \"pg_\"\n" -#: check.c:1149 +#: check.c:1097 #, c-format msgid "failed to get the current locale\n" msgstr "не удалось получить текущую локаль\n" -#: check.c:1158 +#: check.c:1106 #, c-format msgid "failed to get system locale name for \"%s\"\n" msgstr "не удалось получить системное имя локали для \"%s\"\n" -#: check.c:1164 +#: check.c:1112 #, c-format msgid "failed to restore old locale \"%s\"\n" msgstr "не удалось восстановить старую локаль \"%s\"\n" -#: controldata.c:128 controldata.c:195 +#: controldata.c:129 controldata.c:196 #, c-format msgid "could not get control data using %s: %s\n" msgstr "не удалось получить управляющие данные, выполнив %s: %s\n" -#: controldata.c:139 +#: controldata.c:140 #, c-format msgid "%d: database cluster state problem\n" msgstr "%d: недопустимое состояние кластера баз данных\n" -#: controldata.c:156 +#: controldata.c:157 #, c-format msgid "" "The source cluster was shut down while in recovery mode. To upgrade, use " @@ -426,7 +451,7 @@ "обновление, используйте документированный способ с rsync или отключите его в " "режиме главного сервера.\n" -#: controldata.c:158 +#: controldata.c:159 #, c-format msgid "" "The target cluster was shut down while in recovery mode. To upgrade, use " @@ -436,159 +461,165 @@ "обновление, используйте документированный способ с rsync или отключите его в " "режиме главного сервера.\n" -#: controldata.c:163 +#: controldata.c:164 #, c-format msgid "The source cluster was not shut down cleanly.\n" msgstr "Исходный кластер не был отключён штатным образом.\n" -#: controldata.c:165 +#: controldata.c:166 #, c-format msgid "The target cluster was not shut down cleanly.\n" msgstr "Целевой кластер не был отключён штатным образом.\n" -#: controldata.c:176 +#: controldata.c:177 #, c-format msgid "The source cluster lacks cluster state information:\n" msgstr "В исходном кластере не хватает информации о состоянии кластера:\n" -#: controldata.c:178 +#: controldata.c:179 #, c-format msgid "The target cluster lacks cluster state information:\n" msgstr "В целевом кластере не хватает информации о состоянии кластера:\n" -#: controldata.c:208 dump.c:51 pg_upgrade.c:330 relfilenode.c:240 util.c:80 +#: controldata.c:209 dump.c:51 pg_upgrade.c:330 relfilenode.c:240 util.c:80 #, c-format msgid "%s" msgstr "%s" -#: controldata.c:215 +#: controldata.c:216 #, c-format msgid "%d: pg_resetwal problem\n" msgstr "%d: проблема с выводом pg_resetwal\n" -#: controldata.c:225 controldata.c:235 controldata.c:246 controldata.c:257 -#: controldata.c:268 controldata.c:287 controldata.c:298 controldata.c:309 -#: controldata.c:320 controldata.c:331 controldata.c:342 controldata.c:345 -#: controldata.c:349 controldata.c:359 controldata.c:371 controldata.c:382 -#: controldata.c:393 controldata.c:404 controldata.c:415 controldata.c:426 -#: controldata.c:437 controldata.c:448 controldata.c:459 controldata.c:470 -#: controldata.c:481 +#: controldata.c:226 controldata.c:236 controldata.c:247 controldata.c:258 +#: controldata.c:269 controldata.c:288 controldata.c:299 controldata.c:310 +#: controldata.c:321 controldata.c:332 controldata.c:343 controldata.c:354 +#: controldata.c:357 controldata.c:361 controldata.c:371 controldata.c:383 +#: controldata.c:394 controldata.c:405 controldata.c:416 controldata.c:427 +#: controldata.c:438 controldata.c:449 controldata.c:460 controldata.c:471 +#: controldata.c:482 controldata.c:493 #, c-format msgid "%d: controldata retrieval problem\n" msgstr "%d: проблема с получением управляющих данных\n" -#: controldata.c:546 +#: controldata.c:558 #, c-format msgid "The source cluster lacks some required control information:\n" msgstr "В исходном кластере не хватает необходимой управляющей информации:\n" -#: controldata.c:549 +#: controldata.c:561 #, c-format msgid "The target cluster lacks some required control information:\n" msgstr "В целевом кластере не хватает необходимой управляющей информации:\n" # skip-rule: capital-letter-first -#: controldata.c:552 +#: controldata.c:564 #, c-format msgid " checkpoint next XID\n" msgstr " следующий XID последней конт. точки\n" # skip-rule: capital-letter-first -#: controldata.c:555 +#: controldata.c:567 #, c-format msgid " latest checkpoint next OID\n" msgstr " следующий OID последней конт. точки\n" # skip-rule: capital-letter-first -#: controldata.c:558 +#: controldata.c:570 #, c-format msgid " latest checkpoint next MultiXactId\n" msgstr " следующий MultiXactId последней конт. точки\n" # skip-rule: capital-letter-first -#: controldata.c:562 +#: controldata.c:574 #, c-format msgid " latest checkpoint oldest MultiXactId\n" msgstr " старейший MultiXactId последней конт. точки\n" # skip-rule: capital-letter-first -#: controldata.c:565 +#: controldata.c:577 +#, c-format +msgid " latest checkpoint oldestXID\n" +msgstr " oldestXID последней конт. точки\n" + +# skip-rule: capital-letter-first +#: controldata.c:580 #, c-format msgid " latest checkpoint next MultiXactOffset\n" msgstr " следующий MultiXactOffset последней конт. точки\n" -#: controldata.c:568 +#: controldata.c:583 #, c-format msgid " first WAL segment after reset\n" msgstr " первый сегмент WAL после сброса\n" -#: controldata.c:571 +#: controldata.c:586 #, c-format msgid " float8 argument passing method\n" msgstr " метод передачи аргумента float8\n" -#: controldata.c:574 +#: controldata.c:589 #, c-format msgid " maximum alignment\n" msgstr " максимальное выравнивание\n" -#: controldata.c:577 +#: controldata.c:592 #, c-format msgid " block size\n" msgstr " размер блока\n" -#: controldata.c:580 +#: controldata.c:595 #, c-format msgid " large relation segment size\n" msgstr " размер сегмента большого отношения\n" -#: controldata.c:583 +#: controldata.c:598 #, c-format msgid " WAL block size\n" msgstr " размер блока WAL\n" -#: controldata.c:586 +#: controldata.c:601 #, c-format msgid " WAL segment size\n" msgstr " размер сегмента WAL\n" -#: controldata.c:589 +#: controldata.c:604 #, c-format msgid " maximum identifier length\n" msgstr " максимальная длина идентификатора\n" -#: controldata.c:592 +#: controldata.c:607 #, c-format msgid " maximum number of indexed columns\n" msgstr " максимальное число столбцов в индексе\n" -#: controldata.c:595 +#: controldata.c:610 #, c-format msgid " maximum TOAST chunk size\n" msgstr " максимальный размер порции TOAST\n" -#: controldata.c:599 +#: controldata.c:614 #, c-format msgid " large-object chunk size\n" msgstr " размер порции большого объекта\n" -#: controldata.c:602 +#: controldata.c:617 #, c-format msgid " dates/times are integers?\n" msgstr " дата/время представлены целыми числами?\n" -#: controldata.c:606 +#: controldata.c:621 #, c-format msgid " data checksum version\n" msgstr " версия контрольных сумм данных\n" -#: controldata.c:608 +#: controldata.c:623 #, c-format msgid "Cannot continue without required control information, terminating\n" msgstr "" "Нет необходимой управляющей информации для продолжения, работа прерывается\n" -#: controldata.c:623 +#: controldata.c:638 #, c-format msgid "" "old and new pg_controldata alignments are invalid or do not match\n" @@ -598,13 +629,13 @@ "Вероятно, один кластер установлен в 32-битной системе, а другой ~ в 64-" "битной\n" -#: controldata.c:627 +#: controldata.c:642 #, c-format msgid "old and new pg_controldata block sizes are invalid or do not match\n" msgstr "" "старый и новый размер блоков в pg_controldata различаются или некорректны\n" -#: controldata.c:630 +#: controldata.c:645 #, c-format msgid "" "old and new pg_controldata maximum relation segment sizes are invalid or do " @@ -613,7 +644,7 @@ "старый и новый максимальный размер сегментов отношений в pg_controldata " "различаются или некорректны\n" -#: controldata.c:633 +#: controldata.c:648 #, c-format msgid "" "old and new pg_controldata WAL block sizes are invalid or do not match\n" @@ -621,7 +652,7 @@ "старый и новый размер блоков WAL в pg_controldata различаются или " "некорректны\n" -#: controldata.c:636 +#: controldata.c:651 #, c-format msgid "" "old and new pg_controldata WAL segment sizes are invalid or do not match\n" @@ -629,7 +660,7 @@ "старый и новый размер сегментов WAL в pg_controldata различаются или " "некорректны\n" -#: controldata.c:639 +#: controldata.c:654 #, c-format msgid "" "old and new pg_controldata maximum identifier lengths are invalid or do not " @@ -638,7 +669,7 @@ "старая и новая максимальная длина идентификаторов в pg_controldata " "различаются или некорректны\n" -#: controldata.c:642 +#: controldata.c:657 #, c-format msgid "" "old and new pg_controldata maximum indexed columns are invalid or do not " @@ -647,7 +678,7 @@ "старый и новый максимум числа столбцов, составляющих индексы, в " "pg_controldata различаются или некорректны\n" -#: controldata.c:645 +#: controldata.c:660 #, c-format msgid "" "old and new pg_controldata maximum TOAST chunk sizes are invalid or do not " @@ -656,7 +687,7 @@ "старый и новый максимальный размер порции TOAST в pg_controldata различаются " "или некорректны\n" -#: controldata.c:650 +#: controldata.c:665 #, c-format msgid "" "old and new pg_controldata large-object chunk sizes are invalid or do not " @@ -664,44 +695,44 @@ msgstr "" "старый и новый размер порции большого объекта различаются или некорректны\n" -#: controldata.c:653 +#: controldata.c:668 #, c-format msgid "old and new pg_controldata date/time storage types do not match\n" msgstr "" "старый и новый тип хранения даты/времени в pg_controldata различаются или " "некорректны\n" -#: controldata.c:666 +#: controldata.c:681 #, c-format msgid "old cluster does not use data checksums but the new one does\n" msgstr "" "в старом кластере не применялись контрольные суммы данных, но в новом они " "есть\n" -#: controldata.c:669 +#: controldata.c:684 #, c-format msgid "old cluster uses data checksums but the new one does not\n" msgstr "" "в старом кластере применялись контрольные суммы данных, но в новом их нет\n" -#: controldata.c:671 +#: controldata.c:686 #, c-format msgid "old and new cluster pg_controldata checksum versions do not match\n" msgstr "" "старая и новая версия контрольных сумм кластера в pg_controldata " "различаются\n" -#: controldata.c:682 +#: controldata.c:697 #, c-format msgid "Adding \".old\" suffix to old global/pg_control" msgstr "Добавление расширения \".old\" к старому файлу global/pg_control" -#: controldata.c:687 +#: controldata.c:702 #, c-format msgid "Unable to rename %s to %s.\n" msgstr "Не удалось переименовать %s в %s.\n" -#: controldata.c:690 +#: controldata.c:705 #, c-format msgid "" "\n" @@ -808,19 +839,19 @@ #: exec.c:428 #, c-format msgid "check for \"%s\" failed: not a regular file\n" -msgstr "проверка файла \"%s\" не пройдена: это не обычный файл\n" +msgstr "программа \"%s\" не прошла проверку: это не обычный файл\n" #: exec.c:440 #, c-format msgid "check for \"%s\" failed: cannot read file (permission denied)\n" msgstr "" -"проверка файла \"%s\" не пройдена: не удаётся прочитать файл (нет доступа)\n" +"программа \"%s\" не прошла проверку: не удаётся прочитать файл (нет " +"доступа)\n" #: exec.c:448 #, c-format msgid "check for \"%s\" failed: cannot execute (permission denied)\n" -msgstr "" -"проверка файла \"%s\" не пройдена: выполнение невозможно (нет доступа)\n" +msgstr "программа \"%s\" не прошла проверку: ошибка выполнения (нет доступа)\n" #: file.c:43 file.c:146 #, c-format @@ -1503,35 +1534,40 @@ msgid "Copying old %s to new server" msgstr "Копирование старого каталога %s на новый сервер" -#: pg_upgrade.c:425 +#: pg_upgrade.c:424 +#, c-format +msgid "Setting oldest XID for new cluster" +msgstr "Установка старейшего OID для нового кластера" + +#: pg_upgrade.c:432 #, c-format msgid "Setting next transaction ID and epoch for new cluster" msgstr "" "Установка следующего идентификатора транзакции и эпохи для нового кластера" -#: pg_upgrade.c:455 +#: pg_upgrade.c:462 #, c-format msgid "Setting next multixact ID and offset for new cluster" msgstr "" "Установка следующего идентификатора и смещения мультитранзакции для нового " "кластера" -#: pg_upgrade.c:479 +#: pg_upgrade.c:486 #, c-format msgid "Setting oldest multixact ID in new cluster" msgstr "Установка старейшего идентификатора мультитранзакции в новом кластере" -#: pg_upgrade.c:499 +#: pg_upgrade.c:506 #, c-format msgid "Resetting WAL archives" msgstr "Сброс архивов WAL" -#: pg_upgrade.c:542 +#: pg_upgrade.c:549 #, c-format msgid "Setting frozenxid and minmxid counters in new cluster" msgstr "Установка счётчиков frozenxid и minmxid в новом кластере" -#: pg_upgrade.c:544 +#: pg_upgrade.c:551 #, c-format msgid "Setting minmxid counter in new cluster" msgstr "Установка счётчика minmxid в новом кластере" @@ -1702,14 +1738,14 @@ #: util.c:175 #, c-format msgid "ok" -msgstr "ok" +msgstr "ок" #: version.c:32 #, c-format msgid "Checking for large objects" msgstr "Проверка больших объектов" -#: version.c:80 version.c:387 +#: version.c:80 version.c:420 #, c-format msgid "warning" msgstr "предупреждение" @@ -1749,16 +1785,16 @@ "имеется дополнительная таблица с правами для больших объектов, поэтому\n" "для всех больших объектов должны определяться права по умолчанию. Скрипт\n" " %s\n" -"позволяет установить такие права (он предназначен для выполнения в psql\n" -"суперпользователем базы данных).\n" +"будучи выполненным администратором БД в psql, установит нужные права\n" +"по умолчанию.\n" "\n" -#: version.c:242 +#: version.c:275 #, c-format msgid "Checking for incompatible \"line\" data type" msgstr "Проверка несовместимого типа данных \"line\"" -#: version.c:249 +#: version.c:282 #, c-format msgid "" "Your installation contains the \"line\" data type in user tables. This\n" @@ -1780,12 +1816,12 @@ " %s\n" "\n" -#: version.c:279 +#: version.c:312 #, c-format msgid "Checking for invalid \"unknown\" user columns" msgstr "Проверка неправильных пользовательских столбцов типа \"unknown\"" -#: version.c:286 +#: version.c:319 #, c-format msgid "" "Your installation contains the \"unknown\" data type in user tables. This\n" @@ -1799,16 +1835,16 @@ "\".\n" "Теперь использование этого типа данных не допускается, поэтому в настоящем\n" "состоянии обновить кластер невозможно. Вы можете удалить проблемные таблицы\n" -"и перезапустить обновления. Список проблемных столбцов приведён в файле:\n" +"и перезапустить обновление. Список проблемных столбцов приведён в файле:\n" " %s\n" "\n" -#: version.c:309 +#: version.c:342 #, c-format msgid "Checking for hash indexes" msgstr "Проверка хеш-индексов" -#: version.c:389 +#: version.c:422 #, c-format msgid "" "\n" @@ -1825,7 +1861,7 @@ "инструкции по выполнению REINDEX.\n" "\n" -#: version.c:395 +#: version.c:428 #, c-format msgid "" "\n" @@ -1846,6 +1882,35 @@ "индексы; до этого никакие хеш-индексы не будут использоваться.\n" "\n" +#: version.c:454 +#, c-format +msgid "Checking for extension updates" +msgstr "Проверка обновлённых расширений" + +#: version.c:506 +#, c-format +msgid "notice" +msgstr "замечание" + +#: version.c:507 +#, c-format +msgid "" +"\n" +"Your installation contains extensions that should be updated\n" +"with the ALTER EXTENSION command. The file\n" +" %s\n" +"when executed by psql by the database superuser will update\n" +"these extensions.\n" +"\n" +msgstr "" +"\n" +"В вашей инсталляции есть расширения, которые надо обновить\n" +"командой ALTER EXTENSION. Выполните скрипт\n" +" %s\n" +"будучи выполненным администратором БД в psql, обновит все\n" +"эти расширения.\n" +"\n" + #~ msgid "" #~ "Optimizer statistics and free space information are not transferred\n" #~ "by pg_upgrade so, once you start the new server, consider running:\n" diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/po/sv.po postgresql-10-10.19/src/bin/pg_upgrade/po/sv.po --- postgresql-10-10.17/src/bin/pg_upgrade/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,14 +1,14 @@ # Swedish message translation file for pg_upgrade # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017, 2018, 2019, 2020. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-10-20 17:16+0000\n" -"PO-Revision-Date: 2020-10-20 20:30+0200\n" +"POT-Creation-Date: 2021-11-07 09:44+0000\n" +"PO-Revision-Date: 2021-11-07 10:11+0100\n" "Last-Translator: Dennis Björklund \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -17,7 +17,7 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: check.c:67 +#: check.c:68 #, c-format msgid "" "Performing Consistency Checks on Old Live Server\n" @@ -26,7 +26,7 @@ "Utför konsistenskontroller på gamla live-servern\n" "------------------------------------------------\n" -#: check.c:73 +#: check.c:74 #, c-format msgid "" "Performing Consistency Checks\n" @@ -35,7 +35,7 @@ "Utför konsistenskontroller\n" "--------------------------\n" -#: check.c:169 +#: check.c:171 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ "\n" "*Klustren är kompatibla*\n" -#: check.c:175 +#: check.c:177 #, c-format msgid "" "\n" @@ -55,7 +55,7 @@ "Om pg_upgrade misslyckas efter denna punkt så måste du\n" "köra om initdb på nya klustret innan du fortsätter.\n" -#: check.c:209 +#: check.c:213 #, c-format msgid "" "Optimizer statistics are not transferred by pg_upgrade so,\n" @@ -68,7 +68,7 @@ " %s\n" "\n" -#: check.c:215 +#: check.c:219 #, c-format msgid "" "Running this script will delete the old cluster's data files:\n" @@ -77,7 +77,7 @@ "När detta skript körs så raderas gamla klustrets datafiler:\n" " %s\n" -#: check.c:220 +#: check.c:224 #, c-format msgid "" "Could not create a script to delete the old cluster's data files\n" @@ -90,93 +90,93 @@ "ligger i gamla klusterkatalogen. Det gamla klustrets innehåll\n" "måste raderas för hand.\n" -#: check.c:230 +#: check.c:234 #, c-format msgid "Checking cluster versions" msgstr "Kontrollerar klustrets versioner" -#: check.c:242 +#: check.c:246 #, c-format msgid "This utility can only upgrade from PostgreSQL version 8.4 and later.\n" msgstr "Detta verktyg kan bara uppgradera från PostgreSQL version 8.4 eller nyare.\n" -#: check.c:246 +#: check.c:250 #, c-format msgid "This utility can only upgrade to PostgreSQL version %s.\n" msgstr "Detta verktyg kan bara uppgradera till PostgreSQL version %s.\n" -#: check.c:255 +#: check.c:259 #, c-format msgid "This utility cannot be used to downgrade to older major PostgreSQL versions.\n" msgstr "Detta verktyg kan inte användas för att nergradera till äldre major-versioner av PostgreSQL.\n" -#: check.c:260 +#: check.c:264 #, c-format msgid "Old cluster data and binary directories are from different major versions.\n" msgstr "Gammal klusterdata och binära kataloger är från olika major-versioner.\n" -#: check.c:263 +#: check.c:267 #, c-format msgid "New cluster data and binary directories are from different major versions.\n" msgstr "Nya klusterdata och binära kataloger är från olika major-versioner.\n" -#: check.c:280 +#: check.c:284 #, c-format msgid "When checking a pre-PG 9.1 live old server, you must specify the old server's port number.\n" msgstr "Vid kontroll av en gammal live-server före PG 9.1 så måste den gamla serverns portnummer anges.\n" -#: check.c:284 +#: check.c:288 #, c-format msgid "When checking a live server, the old and new port numbers must be different.\n" msgstr "Vid kontroll av en live-server så måste gamla och nya portnumren vara olika.\n" -#: check.c:299 +#: check.c:303 #, c-format msgid "encodings for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "kodning för databasen \"%s\" matchar inte: gammal \"%s\", ny \"%s\"\n" -#: check.c:304 +#: check.c:308 #, c-format msgid "lc_collate values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "lc_collate-värden för databasen \"%s\" matchar inte: gammal \"%s\", ny \"%s\"\n" -#: check.c:307 +#: check.c:311 #, c-format msgid "lc_ctype values for database \"%s\" do not match: old \"%s\", new \"%s\"\n" msgstr "lc_ctype-värden för databasen \"%s\" matchar inte: gammal \"%s\", ny \"%s\"\n" -#: check.c:380 +#: check.c:384 #, c-format msgid "New cluster database \"%s\" is not empty\n" msgstr "Nya databasklustret \"%s\" är inte tomt\n" -#: check.c:427 +#: check.c:431 #, c-format msgid "Creating script to analyze new cluster" msgstr "Skapar skript för att analysera nya klustret" -#: check.c:441 check.c:600 check.c:864 check.c:975 check.c:1066 function.c:253 -#: option.c:480 version.c:57 version.c:202 version.c:344 +#: check.c:445 check.c:604 check.c:868 function.c:253 option.c:480 version.c:57 +#: version.c:207 version.c:377 version.c:480 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "kan inte öppna fil \"%s\": %s\n" -#: check.c:489 check.c:656 +#: check.c:493 check.c:660 #, c-format msgid "could not add execute permission to file \"%s\": %s\n" msgstr "kan inte sätta rättigheten \"körbar\" på filen \"%s\": %s\n" -#: check.c:519 +#: check.c:523 #, c-format msgid "Checking for new cluster tablespace directories" msgstr "Letar efter nya tablespace-kataloger i klustret" -#: check.c:530 +#: check.c:534 #, c-format msgid "new cluster tablespace directory already exists: \"%s\"\n" msgstr "i klustret finns redan ny tablespace-katalog: \"%s\"\n" -#: check.c:563 +#: check.c:567 #, c-format msgid "" "\n" @@ -185,7 +185,7 @@ "\n" "VARNING: nya datakatalogen skall inte ligga inuti den gamla datakatalogen, dvs. %s\n" -#: check.c:587 +#: check.c:591 #, c-format msgid "" "\n" @@ -194,73 +194,73 @@ "\n" "VARNING: användardefinierade tabellutrymmens position skall inte vara i datakatalogen, dvs. %s\n" -#: check.c:597 +#: check.c:601 #, c-format msgid "Creating script to delete old cluster" msgstr "Skapar skript för att radera gamla klustret" -#: check.c:676 +#: check.c:680 #, c-format msgid "Checking database user is the install user" msgstr "Kontrollerar att databasanvändaren är installationsanvändaren" -#: check.c:692 +#: check.c:696 #, c-format msgid "database user \"%s\" is not the install user\n" msgstr "databasanvändare \"%s\" är inte installationsanvändaren\n" -#: check.c:703 +#: check.c:707 #, c-format msgid "could not determine the number of users\n" msgstr "kunde inte bestämma antalet användare\n" -#: check.c:711 +#: check.c:715 #, c-format msgid "Only the install user can be defined in the new cluster.\n" msgstr "Bara installationsanvändaren får finnas i nya klustret.\n" -#: check.c:731 +#: check.c:735 #, c-format msgid "Checking database connection settings" msgstr "Kontrollerar databasens anslutningsinställningar" -#: check.c:753 +#: check.c:757 #, c-format msgid "template0 must not allow connections, i.e. its pg_database.datallowconn must be false\n" msgstr "template0 får inte tillåta anslutningar, dvs dess pg_database.datallowconn måste vara false\n" -#: check.c:763 +#: check.c:767 #, c-format msgid "All non-template0 databases must allow connections, i.e. their pg_database.datallowconn must be true\n" msgstr "Alla icke-template0-databaser måste tillåta anslutningar, dvs. deras pg_database.datallowconn måste vara true\n" -#: check.c:788 +#: check.c:792 #, c-format msgid "Checking for prepared transactions" msgstr "Letar efter förberedda transaktioner" -#: check.c:797 +#: check.c:801 #, c-format msgid "The source cluster contains prepared transactions\n" msgstr "Källklustret innehåller förberedda transaktioner\n" -#: check.c:799 +#: check.c:803 #, c-format msgid "The target cluster contains prepared transactions\n" msgstr "Målklustret innehåller förberedda transaktioner\n" -#: check.c:825 +#: check.c:829 #, c-format msgid "Checking for contrib/isn with bigint-passing mismatch" msgstr "Letar efter contrib/isn med bigint-anropsfel" -#: check.c:886 check.c:998 check.c:1089 function.c:268 version.c:248 -#: version.c:285 +#: check.c:890 check.c:949 check.c:1008 check.c:1037 function.c:268 +#: version.c:281 version.c:318 #, c-format msgid "fatal\n" msgstr "fatalt\n" -#: check.c:887 +#: check.c:891 #, c-format msgid "" "Your installation contains \"contrib/isn\" functions which rely on the\n" @@ -282,12 +282,37 @@ "\n" # FIXME: is this msgid correct? -#: check.c:919 +#: check.c:921 +#, c-format +msgid "Checking for system-defined composite types in user tables" +msgstr "Letar i användartabeller efter systemdefinierade typer av sorten \"composite\"" + +#: check.c:950 +#, c-format +msgid "" +"Your installation contains system-defined composite type(s) in user tables.\n" +"These type OIDs are not stable across PostgreSQL versions,\n" +"so this cluster cannot currently be upgraded. You can\n" +"drop the problem columns and restart the upgrade.\n" +"A list of the problem columns is in the file:\n" +" %s\n" +"\n" +msgstr "" +"Din installation innehåller användartabeller med systemdefinierade typer\n" +"av sorten \"composite\". OID:er för dessa typer är inte stabila över\n" +"PostgreSQL-versioner så detta kluster kan inte uppgraderas för tillfället.\n" +"Du kan slänga problemkolumnerna och återstarta uppgraderingen.\n" +"En lista med problemkolumner finns i filen:\n" +" %s\n" +"\n" + +# FIXME: is this msgid correct? +#: check.c:978 #, c-format msgid "Checking for reg* data types in user tables" msgstr "Letar efter reg*-datatyper i användartabeller" -#: check.c:999 +#: check.c:1009 #, c-format msgid "" "Your installation contains one of the reg* data types in user tables.\n" @@ -307,12 +332,12 @@ "\n" # FIXME: is this msgid correct? -#: check.c:1024 +#: check.c:1031 #, c-format msgid "Checking for incompatible \"jsonb\" data type" msgstr "Letar efter inkompatibel \"jsonb\"-datatyp" -#: check.c:1090 +#: check.c:1038 #, c-format msgid "" "Your installation contains the \"jsonb\" data type in user tables.\n" @@ -329,203 +354,208 @@ " %s\n" "\n" -#: check.c:1111 +#: check.c:1059 #, c-format msgid "Checking for roles starting with \"pg_\"" msgstr "Letar efter roller som startar med \"pg_\"" -#: check.c:1121 +#: check.c:1069 #, c-format msgid "The source cluster contains roles starting with \"pg_\"\n" msgstr "Källklustret innehåller roller som startar med \"pg_\"\n" -#: check.c:1123 +#: check.c:1071 #, c-format msgid "The target cluster contains roles starting with \"pg_\"\n" msgstr "Målklustret innehåller roller som startar med \"pg_\"\n" -#: check.c:1149 +#: check.c:1097 #, c-format msgid "failed to get the current locale\n" msgstr "misslyckades med att hämta aktuell lokal\n" -#: check.c:1158 +#: check.c:1106 #, c-format msgid "failed to get system locale name for \"%s\"\n" msgstr "misslyckades med att hämta systemlokalnamn för \"%s\"\n" -#: check.c:1164 +#: check.c:1112 #, c-format msgid "failed to restore old locale \"%s\"\n" msgstr "misslyckades med att återställa gamla lokalen \"%s\"\n" -#: controldata.c:128 controldata.c:195 +#: controldata.c:129 controldata.c:196 #, c-format msgid "could not get control data using %s: %s\n" msgstr "kunde inte hämta kontrolldata med %s: %s\n" -#: controldata.c:139 +#: controldata.c:140 #, c-format msgid "%d: database cluster state problem\n" msgstr "%d: state-problem för databaskluster\n" -#: controldata.c:156 +#: controldata.c:157 #, c-format msgid "The source cluster was shut down while in recovery mode. To upgrade, use \"rsync\" as documented or shut it down as a primary.\n" msgstr "Källklustret stängdes ner när det var i återställningsläge. För att uppgradera så använd \"rsync\" enligt dokumentation eller stäng ner den som en primär.\n" -#: controldata.c:158 +#: controldata.c:159 #, c-format msgid "The target cluster was shut down while in recovery mode. To upgrade, use \"rsync\" as documented or shut it down as a primary.\n" msgstr "Målklustret stängdes ner när det var i återställningsläge. För att uppgradera så använd \"rsync\" enligt dokumentation eller stäng ner den som en primär.\n" -#: controldata.c:163 +#: controldata.c:164 #, c-format msgid "The source cluster was not shut down cleanly.\n" msgstr "Källklustret har inte stängts ner på ett korrekt sätt.\n" -#: controldata.c:165 +#: controldata.c:166 #, c-format msgid "The target cluster was not shut down cleanly.\n" msgstr "Målklustret har inte stängts ner på ett korrekt sätt.\n" -#: controldata.c:176 +#: controldata.c:177 #, c-format msgid "The source cluster lacks cluster state information:\n" msgstr "Källklustret saknar information om kluster-state:\n" -#: controldata.c:178 +#: controldata.c:179 #, c-format msgid "The target cluster lacks cluster state information:\n" msgstr "Målklustret saknar information om kluster-state:\n" -#: controldata.c:208 dump.c:51 pg_upgrade.c:330 relfilenode.c:240 util.c:80 +#: controldata.c:209 dump.c:51 pg_upgrade.c:330 relfilenode.c:240 util.c:80 #, c-format msgid "%s" msgstr "%s" -#: controldata.c:215 +#: controldata.c:216 #, c-format msgid "%d: pg_resetwal problem\n" msgstr "%d: pg_resetwal-problem\n" -#: controldata.c:225 controldata.c:235 controldata.c:246 controldata.c:257 -#: controldata.c:268 controldata.c:287 controldata.c:298 controldata.c:309 -#: controldata.c:320 controldata.c:331 controldata.c:342 controldata.c:345 -#: controldata.c:349 controldata.c:359 controldata.c:371 controldata.c:382 -#: controldata.c:393 controldata.c:404 controldata.c:415 controldata.c:426 -#: controldata.c:437 controldata.c:448 controldata.c:459 controldata.c:470 -#: controldata.c:481 +#: controldata.c:226 controldata.c:236 controldata.c:247 controldata.c:258 +#: controldata.c:269 controldata.c:288 controldata.c:299 controldata.c:310 +#: controldata.c:321 controldata.c:332 controldata.c:343 controldata.c:354 +#: controldata.c:357 controldata.c:361 controldata.c:371 controldata.c:383 +#: controldata.c:394 controldata.c:405 controldata.c:416 controldata.c:427 +#: controldata.c:438 controldata.c:449 controldata.c:460 controldata.c:471 +#: controldata.c:482 controldata.c:493 #, c-format msgid "%d: controldata retrieval problem\n" msgstr "%d: problem vid hämtning av kontrolldata\n" -#: controldata.c:546 +#: controldata.c:558 #, c-format msgid "The source cluster lacks some required control information:\n" msgstr "Källklustret saknar lite kontrolldata som krävs:\n" -#: controldata.c:549 +#: controldata.c:561 #, c-format msgid "The target cluster lacks some required control information:\n" msgstr "Målklustret saknar lite kontrolldata som krävs:\n" -#: controldata.c:552 +#: controldata.c:564 #, c-format msgid " checkpoint next XID\n" msgstr " checkpoint nästa-XID\n" -#: controldata.c:555 +#: controldata.c:567 #, c-format msgid " latest checkpoint next OID\n" msgstr " senaste checkpoint nästa-OID\n" -#: controldata.c:558 +#: controldata.c:570 #, c-format msgid " latest checkpoint next MultiXactId\n" msgstr " senaster checkpoint nästa-MultiXactId\n" -#: controldata.c:562 +#: controldata.c:574 #, c-format msgid " latest checkpoint oldest MultiXactId\n" msgstr " senaste checkpoint äldsta-MultiXactId\n" -#: controldata.c:565 +#: controldata.c:577 +#, c-format +msgid " latest checkpoint oldestXID\n" +msgstr " senaste checkpoint äldsta-XID\n" + +#: controldata.c:580 #, c-format msgid " latest checkpoint next MultiXactOffset\n" msgstr " senaste checkpoint nästa-MultiXactOffset\n" -#: controldata.c:568 +#: controldata.c:583 #, c-format msgid " first WAL segment after reset\n" msgstr " första WAL-segmentet efter reset\n" -#: controldata.c:571 +#: controldata.c:586 #, c-format msgid " float8 argument passing method\n" msgstr " float8 argumentöverföringsmetod\n" -#: controldata.c:574 +#: controldata.c:589 #, c-format msgid " maximum alignment\n" msgstr " maximal alignment\n" -#: controldata.c:577 +#: controldata.c:592 #, c-format msgid " block size\n" msgstr " blockstorlek\n" -#: controldata.c:580 +#: controldata.c:595 #, c-format msgid " large relation segment size\n" msgstr " stora relationers segmentstorlek\n" -#: controldata.c:583 +#: controldata.c:598 #, c-format msgid " WAL block size\n" msgstr " WAL-blockstorlek\n" -#: controldata.c:586 +#: controldata.c:601 #, c-format msgid " WAL segment size\n" msgstr " WAL-segmentstorlek\n" -#: controldata.c:589 +#: controldata.c:604 #, c-format msgid " maximum identifier length\n" msgstr " maximal identifierarlängd\n" -#: controldata.c:592 +#: controldata.c:607 #, c-format msgid " maximum number of indexed columns\n" msgstr " maximalt antal indexerade kolumner\n" -#: controldata.c:595 +#: controldata.c:610 #, c-format msgid " maximum TOAST chunk size\n" msgstr " maximal TOAST-chunkstorlek\n" -#: controldata.c:599 +#: controldata.c:614 #, c-format msgid " large-object chunk size\n" msgstr " stora-objekt chunkstorlek\n" -#: controldata.c:602 +#: controldata.c:617 #, c-format msgid " dates/times are integers?\n" msgstr " datum/tid är heltal?\n" -#: controldata.c:606 +#: controldata.c:621 #, c-format msgid " data checksum version\n" msgstr " datachecksumversion\n" -#: controldata.c:608 +#: controldata.c:623 #, c-format msgid "Cannot continue without required control information, terminating\n" msgstr "Kan inte fortsätta utan kontrollinformation som krävs, avslutar\n" -#: controldata.c:623 +#: controldata.c:638 #, c-format msgid "" "old and new pg_controldata alignments are invalid or do not match\n" @@ -534,77 +564,77 @@ "gamla och nya pg_controldata-alignments är ogiltiga eller matchar inte.\n" "Troligen är ett kluster en 32-bitars-installation och den andra 64-bitars\n" -#: controldata.c:627 +#: controldata.c:642 #, c-format msgid "old and new pg_controldata block sizes are invalid or do not match\n" msgstr "gamla och nya pg_controldata-blockstorlekar är ogiltiga eller matchar inte\n" -#: controldata.c:630 +#: controldata.c:645 #, c-format msgid "old and new pg_controldata maximum relation segment sizes are invalid or do not match\n" msgstr "gamla och nya pg_controldata maximala relationssegmentstorlekar är ogiltiga eller matchar inte\n" -#: controldata.c:633 +#: controldata.c:648 #, c-format msgid "old and new pg_controldata WAL block sizes are invalid or do not match\n" msgstr "gamla och nya pg_controldata WAL-blockstorlekar är ogiltiga eller matchar inte\n" -#: controldata.c:636 +#: controldata.c:651 #, c-format msgid "old and new pg_controldata WAL segment sizes are invalid or do not match\n" msgstr "gamla och nya pg_controldata WAL-segmentstorlekar är ogiltiga eller matchar inte\n" -#: controldata.c:639 +#: controldata.c:654 #, c-format msgid "old and new pg_controldata maximum identifier lengths are invalid or do not match\n" msgstr "gamla och nya pg_controldata maximal identifierarlängder är ogiltiga eller matchar inte\n" -#: controldata.c:642 +#: controldata.c:657 #, c-format msgid "old and new pg_controldata maximum indexed columns are invalid or do not match\n" msgstr "gamla och nya pg_controldata maxilmalt indexerade kolumner ogiltiga eller matchar inte\n" -#: controldata.c:645 +#: controldata.c:660 #, c-format msgid "old and new pg_controldata maximum TOAST chunk sizes are invalid or do not match\n" msgstr "gamla och nya pg_controldata maximal TOAST-chunkstorlek ogiltiga eller matchar inte\n" -#: controldata.c:650 +#: controldata.c:665 #, c-format msgid "old and new pg_controldata large-object chunk sizes are invalid or do not match\n" msgstr "gamla och nya pg_controldata stora-objekt-chunkstorlekar är ogiltiga eller matchar inte\n" -#: controldata.c:653 +#: controldata.c:668 #, c-format msgid "old and new pg_controldata date/time storage types do not match\n" msgstr "gamla och nya pg_controldata datum/tid-lagringstyper matchar inte\n" -#: controldata.c:666 +#: controldata.c:681 #, c-format msgid "old cluster does not use data checksums but the new one does\n" msgstr "gamla klustret använder inte datachecksummor men nya gör det\n" -#: controldata.c:669 +#: controldata.c:684 #, c-format msgid "old cluster uses data checksums but the new one does not\n" msgstr "gamla klustret använder datachecksummor men nya gör inte det\n" -#: controldata.c:671 +#: controldata.c:686 #, c-format msgid "old and new cluster pg_controldata checksum versions do not match\n" msgstr "gamla och nya klustrets pg_controldata checksumversioner matchar inte\n" -#: controldata.c:682 +#: controldata.c:697 #, c-format msgid "Adding \".old\" suffix to old global/pg_control" msgstr "Lägger till \".old\"-suffix till gamla global/pg_control" -#: controldata.c:687 +#: controldata.c:702 #, c-format msgid "Unable to rename %s to %s.\n" msgstr "Kan inte byta namn på %s till %s.\n" -#: controldata.c:690 +#: controldata.c:705 #, c-format msgid "" "\n" @@ -1330,32 +1360,37 @@ msgid "Copying old %s to new server" msgstr "Kopierar gammal %s till ny server" -#: pg_upgrade.c:425 +#: pg_upgrade.c:424 +#, c-format +msgid "Setting oldest XID for new cluster" +msgstr "Sätter äldsta XID för nya klustret" + +#: pg_upgrade.c:432 #, c-format msgid "Setting next transaction ID and epoch for new cluster" msgstr "Sätter nästa transaktions-ID och epoch för nytt kluster" -#: pg_upgrade.c:455 +#: pg_upgrade.c:462 #, c-format msgid "Setting next multixact ID and offset for new cluster" msgstr "Sätter nästa multixact-ID och offset för nytt kluster" -#: pg_upgrade.c:479 +#: pg_upgrade.c:486 #, c-format msgid "Setting oldest multixact ID in new cluster" msgstr "Sätter äldsta multixact-ID i nytt kluster" -#: pg_upgrade.c:499 +#: pg_upgrade.c:506 #, c-format msgid "Resetting WAL archives" msgstr "Resettar WAL-arkiv" -#: pg_upgrade.c:542 +#: pg_upgrade.c:549 #, c-format msgid "Setting frozenxid and minmxid counters in new cluster" msgstr "Sätter räknarna frozenxid och minmxid för nytt kluster" -#: pg_upgrade.c:544 +#: pg_upgrade.c:551 #, c-format msgid "Setting minmxid counter in new cluster" msgstr "Sätter räknarenm minmxid för nytt kluster" @@ -1522,7 +1557,7 @@ msgid "Checking for large objects" msgstr "Letar efter stora objekt" -#: version.c:80 version.c:387 +#: version.c:80 version.c:420 #, c-format msgid "warning" msgstr "varning" @@ -1566,12 +1601,12 @@ "\n" # FIXME: is this msgid correct? -#: version.c:242 +#: version.c:275 #, c-format msgid "Checking for incompatible \"line\" data type" msgstr "Letar efter inkompatibel \"line\"-datatyp" -#: version.c:249 +#: version.c:282 #, c-format msgid "" "Your installation contains the \"line\" data type in user tables. This\n" @@ -1590,12 +1625,12 @@ " %s\n" "\n" -#: version.c:279 +#: version.c:312 #, c-format msgid "Checking for invalid \"unknown\" user columns" msgstr "Letar efter ogiltiga användarkolumner av typen \"unknown\"" -#: version.c:286 +#: version.c:319 #, c-format msgid "" "Your installation contains the \"unknown\" data type in user tables. This\n" @@ -1612,12 +1647,12 @@ " %s\n" "\n" -#: version.c:309 +#: version.c:342 #, c-format msgid "Checking for hash indexes" msgstr "Letar efter hash-index" -#: version.c:389 +#: version.c:422 #, c-format msgid "" "\n" @@ -1634,7 +1669,7 @@ "REINDEX-instruktioner.\n" "\n" -#: version.c:395 +#: version.c:428 #, c-format msgid "" "\n" @@ -1654,3 +1689,31 @@ "kan köras med psql av databasens superanvändare och kommer återskapa\n" "alla ogiltiga index; innan dess så kommer inget av dess index användas.\n" "\n" + +#: version.c:454 +#, c-format +msgid "Checking for extension updates" +msgstr "Letar efter uppdatering av utökningar" + +#: version.c:506 +#, c-format +msgid "notice" +msgstr "notis" + +#: version.c:507 +#, c-format +msgid "" +"\n" +"Your installation contains extensions that should be updated\n" +"with the ALTER EXTENSION command. The file\n" +" %s\n" +"when executed by psql by the database superuser will update\n" +"these extensions.\n" +"\n" +msgstr "" +"\n" +"Din installation innehåller utökningar som skall updateras med kommandot\n" +"ALTER EXTENSION. Filen\n" +" %s\n" +"kan köras med psql av databasens superanvändare och kommer uppdatera\n" +"dessa utökningar.\n" diff -Nru postgresql-10-10.17/src/bin/pg_upgrade/version.c postgresql-10-10.19/src/bin/pg_upgrade/version.c --- postgresql-10-10.17/src/bin/pg_upgrade/version.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_upgrade/version.c 2021-11-08 22:05:38.000000000 +0000 @@ -236,20 +236,20 @@ * * If so, write a report to the given file name, and return true. * - * typename should be a fully qualified type name. This is just a + * type_name should be a fully qualified type name. This is just a * trivial wrapper around check_for_data_types_usage() to convert a * type name into a base query. */ bool check_for_data_type_usage(ClusterInfo *cluster, - const char *typename, + const char *type_name, const char *output_path) { bool found; char *base_query; base_query = psprintf("SELECT '%s'::pg_catalog.regtype AS oid", - typename); + type_name); found = check_for_data_types_usage(cluster, base_query, output_path); @@ -436,4 +436,82 @@ } else check_ok(); +} + + +/* + * report_extension_updates() + * Report extensions that should be updated. + */ +void +report_extension_updates(ClusterInfo *cluster) +{ + int dbnum; + FILE *script = NULL; + bool found = false; + char *output_path = "update_extensions.sql"; + + prep_status("Checking for extension updates"); + + for (dbnum = 0; dbnum < cluster->dbarr.ndbs; dbnum++) + { + PGresult *res; + bool db_used = false; + int ntups; + int rowno; + int i_name; + DbInfo *active_db = &cluster->dbarr.dbs[dbnum]; + PGconn *conn = connectToServer(cluster, active_db->db_name); + + /* find extensions needing updates */ + res = executeQueryOrDie(conn, + "SELECT name " + "FROM pg_available_extensions " + "WHERE installed_version != default_version" + ); + + ntups = PQntuples(res); + i_name = PQfnumber(res, "name"); + for (rowno = 0; rowno < ntups; rowno++) + { + found = true; + + if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL) + pg_fatal("could not open file \"%s\": %s\n", output_path, + strerror(errno)); + if (!db_used) + { + PQExpBufferData connectbuf; + + initPQExpBuffer(&connectbuf); + appendPsqlMetaConnect(&connectbuf, active_db->db_name); + fputs(connectbuf.data, script); + termPQExpBuffer(&connectbuf); + db_used = true; + } + fprintf(script, "ALTER EXTENSION %s UPDATE;\n", + quote_identifier(PQgetvalue(res, rowno, i_name))); + } + + PQclear(res); + + PQfinish(conn); + } + + if (script) + fclose(script); + + if (found) + { + report_status(PG_REPORT, "notice"); + pg_log(PG_REPORT, "\n" + "Your installation contains extensions that should be updated\n" + "with the ALTER EXTENSION command. The file\n" + " %s\n" + "when executed by psql by the database superuser will update\n" + "these extensions.\n\n", + output_path); + } + else + check_ok(); } diff -Nru postgresql-10-10.17/src/bin/pg_waldump/po/fr.po postgresql-10-10.19/src/bin/pg_waldump/po/fr.po --- postgresql-10-10.17/src/bin/pg_waldump/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_waldump/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -44,7 +44,8 @@ "%s decodes and displays PostgreSQL write-ahead logs for debugging.\n" "\n" msgstr "" -"%s décode et affiche les journaux de transactions PostgreSQL pour du débogage.\n" +"%s décode et affiche les journaux de transactions PostgreSQL pour du\n" +"débogage.\n" "\n" #: pg_waldump.c:704 @@ -69,22 +70,28 @@ #: pg_waldump.c:707 #, c-format msgid " -b, --bkp-details output detailed information about backup blocks\n" -msgstr " -b, --bkp-details affiche des informations détaillées sur les blocs de sauvegarde\n" +msgstr "" +" -b, --bkp-details affiche des informations détaillées sur les\n" +" blocs de sauvegarde\n" #: pg_waldump.c:708 #, c-format msgid " -e, --end=RECPTR stop reading at WAL location RECPTR\n" -msgstr " -e, --end=RECPTR arrête la lecture des journaux de transactions à l'emplacement RECPTR\n" +msgstr "" +" -e, --end=RECPTR arrête la lecture des journaux de transactions\n" +" à l'emplacement RECPTR\n" #: pg_waldump.c:709 #, c-format msgid " -f, --follow keep retrying after reaching end of WAL\n" -msgstr " -f, --follow continue après avoir atteint la fin des journaux de transactions\n" +msgstr "" +" -f, --follow continue après avoir atteint la fin des journaux\n" +" de transactions\n" #: pg_waldump.c:710 #, c-format msgid " -n, --limit=N number of records to display\n" -msgstr " -n, --limit=N nombre d'enregistrements à afficher\n" +msgstr " -n, --limit=N nombre d'enregistrements à afficher\n" #: pg_waldump.c:711 #, c-format @@ -93,9 +100,11 @@ " directory with a ./pg_wal that contains such files\n" " (default: current directory, ./pg_wal, $PGDATA/pg_wal)\n" msgstr "" -" -p, --path=CHEMIN répertoire où trouver les fichiers des segments de journaux de transactions\n" -" ou un répertoire avec ./pg_wal qui contient ces fichiers\n" -" (par défaut: répertoire courant, ./pg_wal, $PGDATA/pg_wal)\n" +" -p, --path=CHEMIN répertoire où trouver les fichiers des segments\n" +" de journaux de transactions ou un répertoire\n" +" avec un ./pg_wal qui contient ces fichiers\n" +" (par défaut: répertoire courant, ./pg_wal,\n" +" $PGDATA/pg_wal)\n" #: pg_waldump.c:714 #, c-format @@ -103,15 +112,17 @@ " -r, --rmgr=RMGR only show records generated by resource manager RMGR;\n" " use --rmgr=list to list valid resource manager names\n" msgstr "" -" -r, --rmgr=RMGR affiche seulement les enregistrements générés par le gestionnaire\n" -" de ressources RMGR, utilisez --rmgr=list pour avoir une liste des noms valides\n" -" de gestionnaires de ressources\n" -"\n" +" -r, --rmgr=RMGR affiche seulement les enregistrements générés\n" +" par le gestionnaire de ressources RMGR,\n" +" utilisez --rmgr=list pour avoir une liste des\n" +" noms valides de gestionnaires de ressources\n" #: pg_waldump.c:716 #, c-format msgid " -s, --start=RECPTR start reading at WAL location RECPTR\n" -msgstr " -s, --start=RECPTR commence à lire à l'emplacement RECPTR des journaux de transactions\n" +msgstr "" +" -s, --start=RECPTR commence à lire à l'emplacement RECPTR des\n" +" journaux de transactions\n" #: pg_waldump.c:717 #, c-format @@ -119,18 +130,21 @@ " -t, --timeline=TLI timeline from which to read log records\n" " (default: 1 or the value used in STARTSEG)\n" msgstr "" -" -t, --timeline=TLI timeline à partir de laquelle lire les enregistrements\n" -" des journaux (par défaut: 1 ou la valeur utilisée dans SEG_DÉBUT)\n" +" -t, --timeline=TLI timeline à partir de laquelle lire les\n" +" enregistrements des journaux (par défaut:\n" +" 1 ou la valeur utilisée dans SEG_DÉBUT)\n" #: pg_waldump.c:719 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" #: pg_waldump.c:720 #, c-format msgid " -x, --xid=XID only show records with transaction ID XID\n" -msgstr " -x, --xid=XID affiche seulement des enregistrements avec l'identifiant de transaction XID\n" +msgstr "" +" -x, --xid=XID affiche seulement des enregistrements avec\n" +" l'identifiant de transaction XID\n" #: pg_waldump.c:721 #, c-format @@ -138,13 +152,14 @@ " -z, --stats[=record] show statistics instead of records\n" " (optionally, show per-record statistics)\n" msgstr "" -" -z, --stats[=enregistrement] affiche des statistiques à la place d'enregistrements\n" -" (en option, affiche des statistiques par enregistrement)\n" +" -z, --stats[=enregistrement] affiche des statistiques à la place\n" +" d'enregistrements (en option, affiche\n" +" des statistiques par enregistrement)\n" #: pg_waldump.c:723 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" #: pg_waldump.c:782 #, c-format diff -Nru postgresql-10-10.17/src/bin/pg_waldump/po/ru.po postgresql-10-10.19/src/bin/pg_waldump/po/ru.po --- postgresql-10-10.17/src/bin/pg_waldump/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_waldump/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: pg_waldump (PostgreSQL) 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-02-05 11:04+0300\n" +"POT-Creation-Date: 2021-04-12 06:59+0300\n" "PO-Revision-Date: 2019-08-29 15:47+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -37,7 +37,7 @@ msgid "could not read from log file %s, offset %u, length %d: %s" msgstr "не удалось прочитать из файла журнала %s по смещению %u, длина %d: %s" -#: pg_waldump.c:703 +#: pg_waldump.c:712 #, c-format msgid "" "%s decodes and displays PostgreSQL write-ahead logs for debugging.\n" @@ -46,17 +46,17 @@ "%s декодирует и показывает журналы предзаписи PostgreSQL для целей отладки.\n" "\n" -#: pg_waldump.c:705 +#: pg_waldump.c:714 #, c-format msgid "Usage:\n" msgstr "Использование:\n" -#: pg_waldump.c:706 +#: pg_waldump.c:715 #, c-format msgid " %s [OPTION]... [STARTSEG [ENDSEG]]\n" msgstr " %s [ПАРАМЕТР]... [НАЧАЛЬНЫЙ_СЕГМЕНТ [КОНЕЧНЫЙ_СЕГМЕНТ]]\n" -#: pg_waldump.c:707 +#: pg_waldump.c:716 #, c-format msgid "" "\n" @@ -65,7 +65,7 @@ "\n" "Параметры:\n" -#: pg_waldump.c:708 +#: pg_waldump.c:717 #, c-format msgid "" " -b, --bkp-details output detailed information about backup blocks\n" @@ -73,25 +73,25 @@ " -b, --bkp-details вывести подробную информацию о копиях страниц\n" # well-spelled: ПОЗЗАП -#: pg_waldump.c:709 +#: pg_waldump.c:718 #, c-format msgid " -e, --end=RECPTR stop reading at WAL location RECPTR\n" msgstr "" " -e, --end=ПОЗЗАП прекратить чтение в заданной позиции записи в WAL\n" -#: pg_waldump.c:710 +#: pg_waldump.c:719 #, c-format msgid " -f, --follow keep retrying after reaching end of WAL\n" msgstr "" " -f, --follow повторять попытки чтения по достижении конца WAL\n" -#: pg_waldump.c:711 +#: pg_waldump.c:720 #, c-format msgid " -n, --limit=N number of records to display\n" msgstr " -n, --limit=N число выводимых записей\n" # skip-rule: space-before-period -#: pg_waldump.c:712 +#: pg_waldump.c:721 #, c-format msgid "" " -p, --path=PATH directory in which to find log segment files or a\n" @@ -107,7 +107,7 @@ " ./pg_wal, $PGDATA/pg_wal)\n" # well-spelled: МНГР -#: pg_waldump.c:715 +#: pg_waldump.c:724 #, c-format msgid "" " -r, --rmgr=RMGR only show records generated by resource manager " @@ -120,14 +120,14 @@ " укажите --rmgr=list\n" # well-spelled: ПОЗЗАП -#: pg_waldump.c:717 +#: pg_waldump.c:726 #, c-format msgid " -s, --start=RECPTR start reading at WAL location RECPTR\n" msgstr "" " -s, --start=ПОЗЗАП начать чтение с заданной позиции записи в WAL\n" # well-spelled: ЛВР -#: pg_waldump.c:718 +#: pg_waldump.c:727 #, c-format msgid "" " -t, --timeline=TLI timeline from which to read log records\n" @@ -138,19 +138,19 @@ "аргументом\n" " НАЧАЛЬНЫЙ_СЕГМЕНТ)\n" -#: pg_waldump.c:720 +#: pg_waldump.c:729 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version показать версию и выйти\n" -#: pg_waldump.c:721 +#: pg_waldump.c:730 #, c-format msgid " -x, --xid=XID only show records with transaction ID XID\n" msgstr "" " -x, --xid=XID выводить только записи с заданным\n" " идентификатором транзакции\n" -#: pg_waldump.c:722 +#: pg_waldump.c:731 #, c-format msgid "" " -z, --stats[=record] show statistics instead of records\n" @@ -159,102 +159,102 @@ " -z, --stats[=record] показывать статистику вместо записей\n" " (также возможно получить статистику по записям)\n" -#: pg_waldump.c:724 +#: pg_waldump.c:733 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать эту справку и выйти\n" -#: pg_waldump.c:783 +#: pg_waldump.c:792 #, c-format msgid "%s: no arguments specified\n" msgstr "%s: аргументы не указаны\n" -#: pg_waldump.c:798 +#: pg_waldump.c:807 #, c-format msgid "%s: could not parse end WAL location \"%s\"\n" msgstr "%s: не удалось разобрать конечную позицию в WAL \"%s\"\n" -#: pg_waldump.c:814 +#: pg_waldump.c:823 #, c-format msgid "%s: could not parse limit \"%s\"\n" msgstr "%s: не удалось разобрать предел в \"%s\"\n" -#: pg_waldump.c:843 +#: pg_waldump.c:852 #, c-format msgid "%s: resource manager \"%s\" does not exist\n" msgstr "%s: менеджер ресурсов \"%s\" не существует\n" -#: pg_waldump.c:852 +#: pg_waldump.c:861 #, c-format msgid "%s: could not parse start WAL location \"%s\"\n" msgstr "%s: не удалось разобрать начальную позицию в WAL \"%s\"\n" -#: pg_waldump.c:862 +#: pg_waldump.c:871 #, c-format msgid "%s: could not parse timeline \"%s\"\n" msgstr "%s: не удалось разобрать линию времени в \"%s\"\n" -#: pg_waldump.c:874 +#: pg_waldump.c:883 #, c-format msgid "%s: could not parse \"%s\" as a transaction ID\n" msgstr "%s: не удалось разобрать в \"%s\" идентификатор транзакции\n" -#: pg_waldump.c:889 +#: pg_waldump.c:898 #, c-format msgid "%s: unrecognized argument to --stats: %s\n" msgstr "%s: нераспознанный аргумент ключа --stats: %s\n" -#: pg_waldump.c:903 +#: pg_waldump.c:912 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: слишком много аргументов командной строки (первый: \"%s\")\n" -#: pg_waldump.c:914 +#: pg_waldump.c:923 #, c-format msgid "%s: path \"%s\" could not be opened: %s\n" msgstr "%s: не удалось открыть путь \"%s\": %s\n" -#: pg_waldump.c:935 +#: pg_waldump.c:944 #, c-format msgid "could not open directory \"%s\": %s" msgstr "не удалось открыть каталог \"%s\": %s" -#: pg_waldump.c:941 pg_waldump.c:974 +#: pg_waldump.c:950 pg_waldump.c:983 #, c-format msgid "could not open file \"%s\"" msgstr "не удалось открыть файл \"%s\"" -#: pg_waldump.c:952 +#: pg_waldump.c:961 #, c-format msgid "%s: start WAL location %X/%X is not inside file \"%s\"\n" msgstr "%s: начальная позиция в WAL %X/%X находится не в файле \"%s\"\n" -#: pg_waldump.c:981 +#: pg_waldump.c:990 #, c-format msgid "ENDSEG %s is before STARTSEG %s" msgstr "КОНЕЧНЫЙ_СЕГМЕНТ %s меньше, чем НАЧАЛЬНЫЙ_СЕГМЕНТ %s" -#: pg_waldump.c:996 +#: pg_waldump.c:1005 #, c-format msgid "%s: end WAL location %X/%X is not inside file \"%s\"\n" msgstr "%s: конечная позиция в WAL %X/%X находится не в файле \"%s\"\n" -#: pg_waldump.c:1008 +#: pg_waldump.c:1017 #, c-format msgid "%s: no start WAL location given\n" msgstr "%s: начальная позиция в WAL не задана\n" -#: pg_waldump.c:1017 +#: pg_waldump.c:1026 #, c-format msgid "out of memory" msgstr "нехватка памяти" -#: pg_waldump.c:1023 +#: pg_waldump.c:1032 #, c-format msgid "could not find a valid record after %X/%X" msgstr "не удалось найти действительную запись после позиции %X/%X" -#: pg_waldump.c:1033 +#: pg_waldump.c:1042 #, c-format msgid "first record is after %X/%X, at %X/%X, skipping over %u byte\n" msgid_plural "first record is after %X/%X, at %X/%X, skipping over %u bytes\n" @@ -265,12 +265,12 @@ msgstr[2] "" "первая запись обнаружена после %X/%X, в позиции %X/%X, пропускается %u Б\n" -#: pg_waldump.c:1084 +#: pg_waldump.c:1093 #, c-format msgid "error in WAL record at %X/%X: %s" msgstr "ошибка в записи WAL в позиции %X/%X: %s" -#: pg_waldump.c:1094 +#: pg_waldump.c:1103 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" diff -Nru postgresql-10-10.17/src/bin/pg_waldump/po/sv.po postgresql-10-10.19/src/bin/pg_waldump/po/sv.po --- postgresql-10-10.17/src/bin/pg_waldump/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/pg_waldump/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,16 +1,16 @@ # Swedish message translation file for pg_waldump # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021 # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-09-08 16:14+0000\n" -"PO-Revision-Date: 2017-09-08 21:14+0200\n" +"POT-Creation-Date: 2021-11-07 09:43+0000\n" +"PO-Revision-Date: 2021-11-07 10:37+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,24 +37,24 @@ msgid "could not read from log file %s, offset %u, length %d: %s" msgstr "kunde inte läsa från loggfil %s, offset %u, längd %d: %s" -#: pg_waldump.c:702 +#: pg_waldump.c:712 #, c-format msgid "" "%s decodes and displays PostgreSQL write-ahead logs for debugging.\n" "\n" msgstr "%s avkodar och visar PostgreSQLs write-ahead-logg för debuggning.\n" -#: pg_waldump.c:704 +#: pg_waldump.c:714 #, c-format msgid "Usage:\n" msgstr "Användning:\n" -#: pg_waldump.c:705 +#: pg_waldump.c:715 #, c-format msgid " %s [OPTION]... [STARTSEG [ENDSEG]]\n" msgstr " %s [FLAGGA]... [STARTSEG [SLUTSEG]]\n" -#: pg_waldump.c:706 +#: pg_waldump.c:716 #, c-format msgid "" "\n" @@ -63,27 +63,27 @@ "\n" "Flaggor:\n" -#: pg_waldump.c:707 +#: pg_waldump.c:717 #, c-format msgid " -b, --bkp-details output detailed information about backup blocks\n" msgstr " -b, --bkp-details skriv detaljerad information om backupblock\n" -#: pg_waldump.c:708 +#: pg_waldump.c:718 #, c-format msgid " -e, --end=RECPTR stop reading at WAL location RECPTR\n" msgstr " -e, --end=RECPTR stoppa läsning vid WAL-position RECPTR\n" -#: pg_waldump.c:709 +#: pg_waldump.c:719 #, c-format msgid " -f, --follow keep retrying after reaching end of WAL\n" msgstr " -f, --follow fortsätt försök efter att ha nått slutet av WAL\n" -#: pg_waldump.c:710 +#: pg_waldump.c:720 #, c-format msgid " -n, --limit=N number of records to display\n" msgstr " -n, --limit=N antal poster att visa\n" -#: pg_waldump.c:711 +#: pg_waldump.c:721 #, c-format msgid "" " -p, --path=PATH directory in which to find log segment files or a\n" @@ -94,7 +94,7 @@ " katalog med en ./pg_wal som innehåller sådana filer\n" " (standard: aktuell katalog, ./pg_wal, $PGDATA/pg_wal)\n" -#: pg_waldump.c:714 +#: pg_waldump.c:724 #, c-format msgid "" " -r, --rmgr=RMGR only show records generated by resource manager RMGR;\n" @@ -103,12 +103,12 @@ " -r, --rmgr=RMGR visa bara poster skapade av resurshanteraren RMGR;\n" " använd --rmgr=list för att lista giltiga resurshanterarnamn\n" -#: pg_waldump.c:716 +#: pg_waldump.c:726 #, c-format msgid " -s, --start=RECPTR start reading at WAL location RECPTR\n" msgstr " -s, --start=RECPTR börja läsning vid WAL-position RECPTR\n" -#: pg_waldump.c:717 +#: pg_waldump.c:727 #, c-format msgid "" " -t, --timeline=TLI timeline from which to read log records\n" @@ -117,17 +117,17 @@ " -t, --timeline=TLI tidslinje från vilken vi läser loggposter\n" " (standard: 1 eller värdet som används i STARTSEG)\n" -#: pg_waldump.c:719 +#: pg_waldump.c:729 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version visa versionsinformation, avsluta sedan\n" -#: pg_waldump.c:720 +#: pg_waldump.c:730 #, c-format msgid " -x, --xid=XID only show records with transaction ID XID\n" msgstr " -x, --xid=XID visa baras poster med transaktions-ID XID\n" -#: pg_waldump.c:721 +#: pg_waldump.c:731 #, c-format msgid "" " -z, --stats[=record] show statistics instead of records\n" @@ -136,120 +136,114 @@ " -z, --stats[=post] visa statistik istället för poster\n" " (alternativt, visa statistik per post)\n" -#: pg_waldump.c:723 +#: pg_waldump.c:733 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help visa den här hjälpen, avsluta sedan\n" -#: pg_waldump.c:782 +#: pg_waldump.c:792 #, c-format msgid "%s: no arguments specified\n" msgstr "%s: inga argument angivna\n" -#: pg_waldump.c:797 +#: pg_waldump.c:807 #, c-format msgid "%s: could not parse end WAL location \"%s\"\n" msgstr "%s: kunde inte parsa slut-WAL-position \"%s\"\n" -#: pg_waldump.c:813 +#: pg_waldump.c:823 #, c-format msgid "%s: could not parse limit \"%s\"\n" msgstr "%s: kunde inte parsa gränsen \"%s\"\n" -#: pg_waldump.c:842 +#: pg_waldump.c:852 #, c-format msgid "%s: resource manager \"%s\" does not exist\n" msgstr "%s: resurshanterare \"%s\" finns inte\n" -#: pg_waldump.c:851 +#: pg_waldump.c:861 #, c-format msgid "%s: could not parse start WAL location \"%s\"\n" msgstr "%s: kunde inte parsa start-WAL-position \"%s\"\n" -#: pg_waldump.c:861 +#: pg_waldump.c:871 #, c-format msgid "%s: could not parse timeline \"%s\"\n" msgstr "%s: kunde inte parsa tidlinjen \"%s\"\n" -#: pg_waldump.c:873 +#: pg_waldump.c:883 #, c-format msgid "%s: could not parse \"%s\" as a transaction ID\n" msgstr "%s: kunde inte parsa \"%s\" som ett transaktions-ID\n" -#: pg_waldump.c:888 +#: pg_waldump.c:898 #, c-format msgid "%s: unrecognized argument to --stats: %s\n" msgstr "%s: okänt argument till --stats: %s\n" -#: pg_waldump.c:902 +#: pg_waldump.c:912 #, 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_waldump.c:913 +#: pg_waldump.c:923 #, c-format msgid "%s: path \"%s\" could not be opened: %s\n" msgstr "%s: sökvägen \"%s\" kunde inte öppnas: %s\n" -#: pg_waldump.c:934 +#: pg_waldump.c:944 #, c-format msgid "could not open directory \"%s\": %s" msgstr "kunde inte öppna katalog \"%s\": %s" -#: pg_waldump.c:940 pg_waldump.c:973 +#: pg_waldump.c:950 pg_waldump.c:983 #, c-format msgid "could not open file \"%s\"" msgstr "kunde inte öppna filen \"%s\"" -#: pg_waldump.c:951 +#: pg_waldump.c:961 #, c-format msgid "%s: start WAL location %X/%X is not inside file \"%s\"\n" msgstr "%s: start-WAL-position %X/%X är inte i filen \"%s\"\n" -#: pg_waldump.c:980 +#: pg_waldump.c:990 #, c-format msgid "ENDSEG %s is before STARTSEG %s" msgstr "SLUTSEG %s är före STARTSEG %s" -#: pg_waldump.c:995 +#: pg_waldump.c:1005 #, c-format msgid "%s: end WAL location %X/%X is not inside file \"%s\"\n" msgstr "%s: slut-WAL-position %X/%X är inte i filen \"%s\"\n" -#: pg_waldump.c:1007 +#: pg_waldump.c:1017 #, c-format msgid "%s: no start WAL location given\n" msgstr "%s: ingen start-WAL-position angiven\n" -#: pg_waldump.c:1016 +#: pg_waldump.c:1026 #, c-format msgid "out of memory" msgstr "slut på minne" -#: pg_waldump.c:1022 +#: pg_waldump.c:1032 #, c-format msgid "could not find a valid record after %X/%X" msgstr "kunde inte hitta en giltig post efter %X/%X" -#: pg_waldump.c:1032 +#: pg_waldump.c:1042 #, c-format msgid "first record is after %X/%X, at %X/%X, skipping over %u byte\n" msgid_plural "first record is after %X/%X, at %X/%X, skipping over %u bytes\n" msgstr[0] "första posten efter %X/%X, vid %X/%X, hoppar över %u byte\n" msgstr[1] "första posten efter %X/%X, vid %X/%X, hoppar över %u byte\n" -#: pg_waldump.c:1083 +#: pg_waldump.c:1093 #, c-format msgid "error in WAL record at %X/%X: %s" msgstr "fel i WAL-post vid %X/%X: %s" -#: pg_waldump.c:1093 +#: pg_waldump.c:1103 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Försök med \"%s --help\" för mer information.\n" - -#~ msgid "cannot open directory \"%s\": %s" -#~ msgstr "kan inte öppna katalogen \"%s\": %s" - -#~ msgid "could not seek in log segment %s to offset %u: %s" -#~ msgstr "kunde inte söka i loggsegment %s till offset %u: %s" diff -Nru postgresql-10-10.17/src/bin/psql/common.c postgresql-10-10.19/src/bin/psql/common.c --- postgresql-10-10.17/src/bin/psql/common.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/common.c 2021-11-08 22:05:38.000000000 +0000 @@ -29,6 +29,8 @@ #include "fe_utils/mbprint.h" +#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e)) + static bool ExecQueryUsingCursor(const char *query, double *elapsed_msec); static bool command_no_begin(const char *query); static bool is_select_command(const char *query); @@ -1805,7 +1807,7 @@ while (*query) { - int mblen = PQmblen(query, pset.encoding); + int mblen = PQmblenBounded(query, pset.encoding); /* * Note: we assume the encoding is a superset of ASCII, so that for @@ -1842,7 +1844,7 @@ query++; break; } - query += PQmblen(query, pset.encoding); + query += PQmblenBounded(query, pset.encoding); } } else if (cnestlevel > 0) @@ -1877,7 +1879,7 @@ */ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); /* * Transaction control commands. These should include every keyword that @@ -1908,7 +1910,7 @@ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); if (wordlen == 11 && pg_strncasecmp(query, "transaction", 11) == 0) return true; @@ -1942,7 +1944,7 @@ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0) return true; @@ -1958,7 +1960,7 @@ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); } if (wordlen == 5 && pg_strncasecmp(query, "index", 5) == 0) @@ -1969,7 +1971,7 @@ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); if (wordlen == 12 && pg_strncasecmp(query, "concurrently", 12) == 0) return true; @@ -1986,7 +1988,7 @@ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); /* ALTER SYSTEM isn't allowed in xacts */ if (wordlen == 6 && pg_strncasecmp(query, "system", 6) == 0) @@ -2009,7 +2011,7 @@ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0) return true; @@ -2027,7 +2029,7 @@ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); if (wordlen == 12 && pg_strncasecmp(query, "concurrently", 12) == 0) return true; @@ -2047,7 +2049,7 @@ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); if (wordlen == 3 && pg_strncasecmp(query, "all", 3) == 0) return true; @@ -2083,7 +2085,7 @@ */ wordlen = 0; while (isalpha((unsigned char) query[wordlen])) - wordlen += PQmblen(&query[wordlen], pset.encoding); + wordlen += PQmblenBounded(&query[wordlen], pset.encoding); if (wordlen == 6 && pg_strncasecmp(query, "select", 6) == 0) return true; diff -Nru postgresql-10-10.17/src/bin/psql/help.c postgresql-10-10.19/src/bin/psql/help.c --- postgresql-10-10.17/src/bin/psql/help.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/help.c 2021-11-08 22:05:38.000000000 +0000 @@ -245,7 +245,7 @@ fprintf(output, _(" \\dL[S+] [PATTERN] list procedural languages\n")); fprintf(output, _(" \\dm[S+] [PATTERN] list materialized views\n")); fprintf(output, _(" \\dn[S+] [PATTERN] list schemas\n")); - fprintf(output, _(" \\do[S] [PATTERN] list operators\n")); + fprintf(output, _(" \\do[S+] [PATTERN] list operators\n")); fprintf(output, _(" \\dO[S+] [PATTERN] list collations\n")); fprintf(output, _(" \\dp [PATTERN] list table, view, and sequence access privileges\n")); fprintf(output, _(" \\drds [PATRN1 [PATRN2]] list per-database role settings\n")); @@ -257,7 +257,7 @@ fprintf(output, _(" \\du[S+] [PATTERN] list roles\n")); fprintf(output, _(" \\dv[S+] [PATTERN] list views\n")); fprintf(output, _(" \\dx[+] [PATTERN] list extensions\n")); - fprintf(output, _(" \\dy [PATTERN] list event triggers\n")); + fprintf(output, _(" \\dy[+] [PATTERN] list event triggers\n")); fprintf(output, _(" \\l[+] [PATTERN] list databases\n")); fprintf(output, _(" \\sf[+] FUNCNAME show a function's definition\n")); fprintf(output, _(" \\sv[+] VIEWNAME show a view's definition\n")); diff -Nru postgresql-10-10.17/src/bin/psql/po/de.po postgresql-10-10.19/src/bin/psql/po/de.po --- postgresql-10-10.17/src/bin/psql/po/de.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/po/de.po 2021-11-08 22:05:38.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2021-01-13 05:14+0000\n" +"POT-Creation-Date: 2021-11-06 16:56+0000\n" "PO-Revision-Date: 2021-01-13 10:07+0100\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" @@ -53,7 +53,7 @@ msgstr "pclose fehlgeschlagen: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 command.c:3126 command.c:3175 command.c:3285 +#: ../../common/fe_memutils.c:98 command.c:3146 command.c:3195 command.c:3305 #: input.c:227 mainloop.c:82 mainloop.c:276 #, c-format msgid "out of memory\n" @@ -69,7 +69,7 @@ msgid "could not look up effective user ID %ld: %s" msgstr "konnte effektive Benutzer-ID %ld nicht nachschlagen: %s" -#: ../../common/username.c:45 command.c:555 +#: ../../common/username.c:45 command.c:556 msgid "user does not exist" msgstr "Benutzer existiert nicht" @@ -140,245 +140,245 @@ msgid "skipping recursive expansion of variable \"%s\"\n" msgstr "rekursive Auswertung der Variable »%s« wird ausgelassen\n" -#: command.c:223 +#: command.c:224 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Ungültige Anweisung \\%s. Versuchen Sie \\? für Hilfe.\n" -#: command.c:225 +#: command.c:226 #, c-format msgid "invalid command \\%s\n" msgstr "ungültige Anweisung \\%s\n" -#: command.c:243 +#: command.c:244 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: überflüssiges Argument »%s« ignoriert\n" -#: command.c:295 +#: command.c:296 #, c-format msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block\n" msgstr "Befehl \\%s ignoriert; verwenden Sie \\endif oder Strg-C um den aktuellen \\if-Block zu beenden\n" -#: command.c:553 +#: command.c:554 #, c-format msgid "could not get home directory for user ID %ld: %s\n" msgstr "konnte Home-Verzeichnis für Benutzer-ID %ld nicht ermitteln: %s\n" -#: command.c:571 +#: command.c:572 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: konnte nicht in das Verzeichnis »%s« wechseln: %s\n" -#: command.c:596 common.c:662 common.c:720 common.c:1308 +#: command.c:597 common.c:664 common.c:722 common.c:1310 #, 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:603 +#: command.c:604 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "Sie sind verbunden mit der Datenbank »%s« als Benutzer »%s« via Socket in »%s« auf Port »%s«.\n" -#: command.c:606 +#: command.c:607 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "Sie sind verbunden mit der Datenbank »%s« als Benutzer »%s« auf Host »%s« auf Port »%s«.\n" -#: command.c:895 command.c:985 command.c:1094 command.c:2503 +#: command.c:896 command.c:986 command.c:1095 command.c:2504 #, c-format msgid "no query buffer\n" msgstr "kein Anfragepuffer\n" -#: command.c:928 command.c:4932 +#: command.c:929 command.c:4972 #, c-format msgid "invalid line number: %s\n" msgstr "ungültige Zeilennummer: %s\n" -#: command.c:978 +#: command.c:979 #, c-format msgid "The server (version %s) does not support editing function source.\n" msgstr "Der Server (Version %s) unterstützt das Bearbeiten des Funktionsquelltextes nicht.\n" -#: command.c:1053 command.c:1134 +#: command.c:1054 command.c:1135 msgid "No changes" msgstr "keine Änderungen" -#: command.c:1087 +#: command.c:1088 #, c-format msgid "The server (version %s) does not support editing view definitions.\n" msgstr "Der Server (Version %s) unterstützt das Bearbeiten von Sichtdefinitionen nicht.\n" -#: command.c:1211 +#: command.c:1212 #, 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:1246 command.c:1868 command.c:3122 command.c:3307 command.c:5034 -#: common.c:173 common.c:244 common.c:555 common.c:1354 common.c:1382 -#: common.c:1483 copy.c:492 copy.c:711 large_obj.c:156 large_obj.c:191 +#: command.c:1247 command.c:1869 command.c:3142 command.c:3327 command.c:5074 +#: common.c:175 common.c:246 common.c:557 common.c:1356 common.c:1384 +#: common.c:1485 copy.c:492 copy.c:711 large_obj.c:156 large_obj.c:191 #: large_obj.c:253 #, c-format msgid "%s" msgstr "%s" -#: command.c:1250 +#: command.c:1251 msgid "out of memory" msgstr "Speicher aufgebraucht" -#: command.c:1253 +#: command.c:1254 msgid "There is no previous error." msgstr "Es gibt keinen vorangegangenen Fehler." -#: command.c:1424 command.c:1729 command.c:1743 command.c:1760 command.c:1920 -#: command.c:2157 command.c:2470 command.c:2510 +#: command.c:1425 command.c:1730 command.c:1744 command.c:1761 command.c:1921 +#: command.c:2158 command.c:2471 command.c:2511 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: notwendiges Argument fehlt\n" -#: command.c:1555 +#: command.c:1556 #, c-format msgid "\\elif: cannot occur after \\else\n" msgstr "\\elif: kann nicht nach \\else kommen\n" -#: command.c:1560 +#: command.c:1561 #, c-format msgid "\\elif: no matching \\if\n" msgstr "\\elif: kein passendes \\if\n" -#: command.c:1624 +#: command.c:1625 #, c-format msgid "\\else: cannot occur after \\else\n" msgstr "\\else: kann nicht nach \\else kommen\n" -#: command.c:1629 +#: command.c:1630 #, c-format msgid "\\else: no matching \\if\n" msgstr "\\else: kein passendes \\if\n" -#: command.c:1669 +#: command.c:1670 #, c-format msgid "\\endif: no matching \\if\n" msgstr "\\endif: kein passendes \\if\n" -#: command.c:1824 +#: command.c:1825 msgid "Query buffer is empty." msgstr "Anfragepuffer ist leer." -#: command.c:1846 +#: command.c:1847 msgid "Enter new password: " msgstr "Neues Passwort eingeben: " -#: command.c:1847 +#: command.c:1848 msgid "Enter it again: " msgstr "Geben Sie es noch einmal ein: " -#: command.c:1851 +#: command.c:1852 #, c-format msgid "Passwords didn't match.\n" msgstr "Passwörter stimmten nicht überein.\n" -#: command.c:1950 +#: command.c:1951 #, c-format msgid "\\%s: could not read value for variable\n" msgstr "\\%s: konnte Wert für Variable nicht lesen\n" -#: command.c:2053 +#: command.c:2054 msgid "Query buffer reset (cleared)." msgstr "Anfragepuffer wurde gelöscht." -#: command.c:2075 +#: command.c:2076 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "Befehlsgeschichte in Datei »%s« geschrieben.\n" -#: command.c:2162 +#: command.c:2163 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" msgstr "\\%s: Name der Umgebungsvariable darf kein »=« enthalten\n" -#: command.c:2218 +#: command.c:2219 #, c-format msgid "The server (version %s) does not support showing function source.\n" msgstr "Der Server (Version %s) unterstützt das Anzeigen des Funktionsquelltextes nicht.\n" -#: command.c:2225 +#: command.c:2226 #, c-format msgid "function name is required\n" msgstr "Funktionsname wird benötigt\n" -#: command.c:2312 +#: command.c:2313 #, c-format msgid "The server (version %s) does not support showing view definitions.\n" msgstr "Der Server (Version %s) unterstützt das Anzeigen von Sichtdefinitionen nicht.\n" -#: command.c:2319 +#: command.c:2320 #, c-format msgid "view name is required\n" msgstr "Sichtname wird benötigt\n" -#: command.c:2442 +#: command.c:2443 msgid "Timing is on." msgstr "Zeitmessung ist an." -#: command.c:2444 +#: command.c:2445 msgid "Timing is off." msgstr "Zeitmessung ist aus." -#: command.c:2529 command.c:2557 command.c:3685 command.c:3688 command.c:3691 -#: command.c:3697 command.c:3699 command.c:3707 command.c:3717 command.c:3726 -#: command.c:3740 command.c:3757 command.c:3815 common.c:69 copy.c:332 -#: copy.c:392 copy.c:405 psqlscanslash.l:761 psqlscanslash.l:772 -#: psqlscanslash.l:782 +#: command.c:2530 command.c:2558 command.c:3704 command.c:3707 command.c:3710 +#: command.c:3716 command.c:3718 command.c:3744 command.c:3754 command.c:3766 +#: command.c:3780 command.c:3797 command.c:3855 common.c:71 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:763 psqlscanslash.l:774 +#: psqlscanslash.l:784 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:2941 startup.c:205 +#: command.c:2942 startup.c:205 msgid "Password: " msgstr "Passwort: " -#: command.c:2946 startup.c:207 +#: command.c:2947 startup.c:207 #, c-format msgid "Password for user %s: " msgstr "Passwort für Benutzer %s: " -#: command.c:3000 +#: command.c:3001 #, c-format msgid "All connection parameters must be supplied because no database connection exists\n" msgstr "Alle Verbindungsparameter müssen angegeben werden, weil keine Datenbankverbindung besteht\n" -#: command.c:3313 +#: command.c:3333 #, c-format msgid "Previous connection kept\n" msgstr "Vorherige Verbindung wurde behalten\n" -#: command.c:3319 +#: command.c:3339 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:3360 +#: command.c:3380 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s« via Socket in »%s« auf Port »%s«.\n" -#: command.c:3363 +#: command.c:3383 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s« auf Host »%s« auf Port »%s«.\n" -#: command.c:3367 +#: command.c:3387 #, 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:3400 +#: command.c:3420 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, Server %s)\n" -#: command.c:3408 +#: command.c:3428 #, c-format msgid "" "WARNING: %s major version %s, server major version %s.\n" @@ -387,24 +387,24 @@ "WARNUNG: %s-Hauptversion %s, Server-Hauptversion %s.\n" " Einige Features von psql werden eventuell nicht funktionieren.\n" -#: command.c:3446 +#: command.c:3466 #, c-format msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" msgstr "SSL-Verbindung (Protokoll: %s, Verschlüsselungsmethode: %s, Bits: %s, Komprimierung: %s)\n" -#: command.c:3447 command.c:3448 command.c:3449 +#: command.c:3467 command.c:3468 command.c:3469 msgid "unknown" msgstr "unbekannt" -#: command.c:3450 help.c:45 +#: command.c:3470 help.c:45 msgid "off" msgstr "aus" -#: command.c:3450 help.c:45 +#: command.c:3470 help.c:45 msgid "on" msgstr "an" -#: command.c:3470 +#: command.c:3490 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -416,239 +416,239 @@ " richtig. Einzelheiten finden Sie auf der psql-Handbuchseite unter\n" " »Notes for Windows users«.\n" -#: command.c:3574 +#: command.c:3594 #, c-format msgid "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:3603 +#: command.c:3623 #, c-format msgid "could not start editor \"%s\"\n" msgstr "konnte Editor »%s« nicht starten\n" -#: command.c:3605 +#: command.c:3625 #, c-format msgid "could not start /bin/sh\n" msgstr "konnte /bin/sh nicht starten\n" -#: command.c:3643 +#: command.c:3662 #, c-format msgid "could not locate temporary directory: %s\n" msgstr "konnte temporäres Verzeichnis nicht finden: %s\n" -#: command.c:3670 +#: command.c:3689 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "konnte temporäre Datei »%s« nicht öffnen: %s\n" -#: command.c:3944 +#: command.c:3984 #, c-format msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" msgstr "\\pset: zulässige Formate sind unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" -#: command.c:3962 +#: command.c:4002 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: zulässige Linienstile sind ascii, old-ascii, unicode\n" -#: command.c:3977 +#: command.c:4017 #, c-format msgid "\\pset: allowed Unicode border line styles are single, double\n" msgstr "\\pset: zulässige Unicode-Rahmnenlinienstile sind single, double\n" -#: command.c:3992 +#: command.c:4032 #, c-format msgid "\\pset: allowed Unicode column line styles are single, double\n" msgstr "\\pset: zulässige Unicode-Spaltenlinienstile sind single, double\n" -#: command.c:4007 +#: command.c:4047 #, c-format msgid "\\pset: allowed Unicode header line styles are single, double\n" msgstr "\\pset: zulässige Unicode-Kopflinienstile sind single, double\n" -#: command.c:4172 command.c:4351 +#: command.c:4212 command.c:4391 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: unbekannte Option: %s\n" -#: command.c:4190 +#: command.c:4230 #, c-format msgid "Border style is %d.\n" msgstr "Rahmenstil ist %d.\n" -#: command.c:4196 +#: command.c:4236 #, c-format msgid "Target width is unset.\n" msgstr "Zielbreite ist nicht gesetzt.\n" -#: command.c:4198 +#: command.c:4238 #, c-format msgid "Target width is %d.\n" msgstr "Zielbreite ist %d.\n" -#: command.c:4205 +#: command.c:4245 #, c-format msgid "Expanded display is on.\n" msgstr "Erweiterte Anzeige ist an.\n" -#: command.c:4207 +#: command.c:4247 #, c-format msgid "Expanded display is used automatically.\n" msgstr "Erweiterte Anzeige wird automatisch verwendet.\n" -#: command.c:4209 +#: command.c:4249 #, c-format msgid "Expanded display is off.\n" msgstr "Erweiterte Anzeige ist aus.\n" -#: command.c:4216 command.c:4224 +#: command.c:4256 command.c:4264 #, c-format msgid "Field separator is zero byte.\n" msgstr "Feldtrennzeichen ist ein Null-Byte.\n" -#: command.c:4218 +#: command.c:4258 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Feldtrennzeichen ist »%s«.\n" -#: command.c:4231 +#: command.c:4271 #, c-format msgid "Default footer is on.\n" msgstr "Standardfußzeile ist an.\n" -#: command.c:4233 +#: command.c:4273 #, c-format msgid "Default footer is off.\n" msgstr "Standardfußzeile ist aus.\n" -#: command.c:4239 +#: command.c:4279 #, c-format msgid "Output format is %s.\n" msgstr "Ausgabeformat ist »%s«.\n" -#: command.c:4245 +#: command.c:4285 #, c-format msgid "Line style is %s.\n" msgstr "Linienstil ist %s.\n" -#: command.c:4252 +#: command.c:4292 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null-Anzeige ist »%s«.\n" -#: command.c:4260 +#: command.c:4300 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "Lokalisiertes Format für numerische Daten ist an.\n" -#: command.c:4262 +#: command.c:4302 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "Lokalisiertes Format für numerische Daten ist aus.\n" -#: command.c:4269 +#: command.c:4309 #, c-format msgid "Pager is used for long output.\n" msgstr "Pager wird für lange Ausgaben verwendet.\n" -#: command.c:4271 +#: command.c:4311 #, c-format msgid "Pager is always used.\n" msgstr "Pager wird immer verwendet.\n" -#: command.c:4273 +#: command.c:4313 #, c-format msgid "Pager usage is off.\n" msgstr "Pager-Verwendung ist aus.\n" -#: command.c:4279 +#: command.c:4319 #, c-format msgid "Pager won't be used for less than %d line.\n" msgid_plural "Pager won't be used for less than %d lines.\n" msgstr[0] "Pager wird nicht für weniger als %d Zeile verwendet werden.\n" msgstr[1] "Pager wird nicht für weniger als %d Zeilen verwendet werden.\n" -#: command.c:4289 command.c:4299 +#: command.c:4329 command.c:4339 #, c-format msgid "Record separator is zero byte.\n" msgstr "Satztrennzeichen ist ein Null-Byte.\n" -#: command.c:4291 +#: command.c:4331 #, c-format msgid "Record separator is .\n" msgstr "Satztrennzeichen ist .\n" -#: command.c:4293 +#: command.c:4333 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Satztrennzeichen ist »%s«.\n" -#: command.c:4306 +#: command.c:4346 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "Tabellenattribute sind »%s«.\n" -#: command.c:4309 +#: command.c:4349 #, c-format msgid "Table attributes unset.\n" msgstr "Tabellenattribute sind nicht gesetzt.\n" -#: command.c:4316 +#: command.c:4356 #, c-format msgid "Title is \"%s\".\n" msgstr "Titel ist »%s«.\n" -#: command.c:4318 +#: command.c:4358 #, c-format msgid "Title is unset.\n" msgstr "Titel ist nicht gesetzt.\n" -#: command.c:4325 +#: command.c:4365 #, c-format msgid "Tuples only is on.\n" msgstr "Nur Datenzeilen ist an.\n" -#: command.c:4327 +#: command.c:4367 #, c-format msgid "Tuples only is off.\n" msgstr "Nur Datenzeilen ist aus.\n" -#: command.c:4333 +#: command.c:4373 #, c-format msgid "Unicode border line style is \"%s\".\n" msgstr "Unicode-Rahmenlinienstil ist »%s«.\n" -#: command.c:4339 +#: command.c:4379 #, c-format msgid "Unicode column line style is \"%s\".\n" msgstr "Unicode-Spaltenlinienstil ist »%s«.\n" -#: command.c:4345 +#: command.c:4385 #, c-format msgid "Unicode header line style is \"%s\".\n" msgstr "Unicode-Kopflinienstil ist »%s«.\n" -#: command.c:4505 +#: command.c:4545 #, c-format msgid "\\!: failed\n" msgstr "\\!: fehlgeschlagen\n" -#: command.c:4530 common.c:768 +#: command.c:4570 common.c:770 #, c-format msgid "\\watch cannot be used with an empty query\n" msgstr "\\watch kann nicht mit einer leeren Anfrage verwendet werden\n" -#: command.c:4571 +#: command.c:4611 #, c-format msgid "%s\t%s (every %gs)\n" msgstr "%s\t%s (alle %gs)\n" -#: command.c:4574 +#: command.c:4614 #, c-format msgid "%s (every %gs)\n" msgstr "%s (alle %gs)\n" -#: command.c:4628 command.c:4635 common.c:668 common.c:675 common.c:1337 +#: command.c:4668 command.c:4675 common.c:670 common.c:677 common.c:1339 #, c-format msgid "" "********* QUERY **********\n" @@ -661,107 +661,107 @@ "**************************\n" "\n" -#: command.c:4827 +#: command.c:4867 #, c-format msgid "\"%s.%s\" is not a view\n" msgstr "»%s.%s« ist keine Sicht\n" -#: command.c:4843 +#: command.c:4883 #, c-format msgid "could not parse reloptions array\n" msgstr "konnte reloptions-Array nicht interpretieren\n" -#: common.c:158 +#: common.c:160 #, c-format msgid "cannot escape without active connection\n" msgstr "Escape kann nicht ohne aktive Verbindung ausgeführt werden\n" -#: common.c:199 +#: common.c:201 #, c-format msgid "shell command argument contains a newline or carriage return: \"%s\"\n" msgstr "Argument des Shell-Befehls enthält Newline oder Carriage Return: »%s«\n" -#: common.c:415 +#: common.c:417 #, c-format msgid "connection to server was lost\n" msgstr "Verbindung zum Server wurde verloren\n" -#: common.c:419 +#: common.c:421 #, c-format msgid "The connection to the server was lost. Attempting reset: " msgstr "Die Verbindung zum Server wurde verloren. Versuche Reset: " -#: common.c:424 +#: common.c:426 #, c-format msgid "Failed.\n" msgstr "Fehlgeschlagen.\n" -#: common.c:437 +#: common.c:439 #, c-format msgid "Succeeded.\n" msgstr "Erfolgreich.\n" -#: common.c:545 common.c:1057 common.c:1272 +#: common.c:547 common.c:1059 common.c:1274 #, c-format msgid "unexpected PQresultStatus: %d\n" msgstr "unerwarteter PQresultStatus: %d\n" -#: common.c:607 +#: common.c:609 #, c-format msgid "Time: %.3f ms\n" msgstr "Zeit: %.3f ms\n" -#: common.c:622 +#: common.c:624 #, c-format msgid "Time: %.3f ms (%02d:%06.3f)\n" msgstr "Zeit: %.3f ms (%02d:%06.3f)\n" -#: common.c:631 +#: common.c:633 #, c-format msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" msgstr "Zeit: %.3f ms (%02d:%02d:%06.3f)\n" -#: common.c:638 +#: common.c:640 #, c-format msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" msgstr "Zeit: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" -#: common.c:775 +#: common.c:777 #, c-format msgid "\\watch cannot be used with COPY\n" msgstr "\\watch kann nicht mit COPY verwendet werden\n" -#: common.c:780 +#: common.c:782 #, c-format msgid "unexpected result status for \\watch\n" msgstr "unerwarteter Ergebnisstatus für \\watch\n" -#: common.c:810 +#: common.c:812 #, c-format msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n" msgstr "Asynchrone Benachrichtigung »%s« mit Daten »%s« vom Serverprozess mit PID %d empfangen.\n" -#: common.c:813 +#: common.c:815 #, c-format msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" msgstr "Asynchrone Benachrichtigung »%s« vom Serverprozess mit PID %d empfangen.\n" -#: common.c:876 +#: common.c:878 #, c-format msgid "no rows returned for \\gset\n" msgstr "keine Zeilen für \\gset zurückgegeben\n" -#: common.c:881 +#: common.c:883 #, c-format msgid "more than one row returned for \\gset\n" msgstr "mehr als eine Zeile für \\gset zurückgegeben\n" -#: common.c:899 +#: common.c:901 #, c-format msgid "attempt to \\gset into specially treated variable \"%s\" ignored\n" msgstr "Versuch von \\gset in besonders behandelte Variable »%s« ignoriert\n" -#: common.c:1317 +#: common.c:1319 #, c-format msgid "" "***(Single step mode: verify command)*******************************************\n" @@ -772,17 +772,17 @@ "%s\n" "***(Drücken Sie die Eingabetaste um fortzufahren oder »x« um abzubrechen)*******\n" -#: common.c:1372 +#: common.c:1374 #, c-format msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" msgstr "Der Server (Version %s) unterstützt keine Sicherungspunkte für ON_ERROR_ROLLBACK.\n" -#: common.c:1428 +#: common.c:1430 #, c-format msgid "STATEMENT: %s\n" msgstr "ANWEISUNG: %s\n" -#: common.c:1471 +#: common.c:1473 #, c-format msgid "unexpected transaction status (%d)\n" msgstr "unerwarteter Transaktionsstatus (%d)\n" @@ -2707,8 +2707,8 @@ #: help.c:248 #, c-format -msgid " \\do[S] [PATTERN] list operators\n" -msgstr " \\do[S] [MUSTER] Operatoren auflisten\n" +msgid " \\do[S+] [PATTERN] list operators\n" +msgstr " \\do[S+] [MUSTER] Operatoren auflisten\n" #: help.c:249 #, c-format @@ -2769,8 +2769,8 @@ #: help.c:260 #, c-format -msgid " \\dy [PATTERN] list event triggers\n" -msgstr " \\dy [MUSTER] Ereignistrigger auflisten\n" +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [MUSTER] Ereignistrigger auflisten\n" #: help.c:261 #, c-format @@ -3409,11 +3409,11 @@ msgid " TMPDIR directory for temporary files\n" msgstr " TMPDIR Verzeichnis für temporäre Dateien\n" -#: help.c:477 +#: help.c:478 msgid "Available help:\n" msgstr "Verfügbare Hilfe:\n" -#: help.c:561 +#: help.c:569 #, c-format msgid "" "Command: %s\n" @@ -3428,7 +3428,7 @@ "%s\n" "\n" -#: help.c:577 +#: help.c:589 #, c-format msgid "" "No help available for \"%s\".\n" @@ -3523,12 +3523,12 @@ msgid "reached EOF without finding closing \\endif(s)\n" msgstr "Dateiende erreicht, aber schließendes \\endif fehlt\n" -#: psqlscanslash.l:615 +#: psqlscanslash.l:617 #, c-format msgid "unterminated quoted string\n" msgstr "Zeichenkette in Anführungszeichen nicht abgeschlossen\n" -#: psqlscanslash.l:788 +#: psqlscanslash.l:790 #, c-format msgid "%s: out of memory\n" msgstr "%s: Speicher aufgebraucht\n" @@ -3541,169 +3541,169 @@ #: sql_help.c:250 sql_help.c:252 sql_help.c:264 sql_help.c:265 sql_help.c:266 #: sql_help.c:268 sql_help.c:315 sql_help.c:317 sql_help.c:319 sql_help.c:321 #: sql_help.c:382 sql_help.c:387 sql_help.c:389 sql_help.c:432 sql_help.c:434 -#: sql_help.c:437 sql_help.c:439 sql_help.c:506 sql_help.c:511 sql_help.c:516 -#: sql_help.c:521 sql_help.c:526 sql_help.c:575 sql_help.c:577 sql_help.c:579 -#: sql_help.c:581 sql_help.c:584 sql_help.c:586 sql_help.c:597 sql_help.c:599 -#: sql_help.c:640 sql_help.c:642 sql_help.c:644 sql_help.c:647 sql_help.c:649 -#: sql_help.c:651 sql_help.c:684 sql_help.c:688 sql_help.c:692 sql_help.c:711 -#: sql_help.c:714 sql_help.c:717 sql_help.c:746 sql_help.c:758 sql_help.c:766 -#: sql_help.c:769 sql_help.c:772 sql_help.c:787 sql_help.c:790 sql_help.c:807 -#: sql_help.c:809 sql_help.c:811 sql_help.c:813 sql_help.c:816 sql_help.c:818 -#: sql_help.c:859 sql_help.c:882 sql_help.c:893 sql_help.c:895 sql_help.c:914 -#: sql_help.c:924 sql_help.c:926 sql_help.c:928 sql_help.c:940 sql_help.c:944 -#: sql_help.c:946 sql_help.c:957 sql_help.c:959 sql_help.c:961 sql_help.c:977 -#: sql_help.c:979 sql_help.c:983 sql_help.c:986 sql_help.c:987 sql_help.c:988 -#: sql_help.c:991 sql_help.c:993 sql_help.c:1084 sql_help.c:1086 -#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096 -#: sql_help.c:1099 sql_help.c:1102 sql_help.c:1168 sql_help.c:1170 -#: sql_help.c:1172 sql_help.c:1175 sql_help.c:1196 sql_help.c:1199 -#: sql_help.c:1202 sql_help.c:1205 sql_help.c:1209 sql_help.c:1211 -#: sql_help.c:1213 sql_help.c:1215 sql_help.c:1229 sql_help.c:1232 -#: sql_help.c:1234 sql_help.c:1236 sql_help.c:1246 sql_help.c:1248 -#: sql_help.c:1258 sql_help.c:1260 sql_help.c:1270 sql_help.c:1273 -#: sql_help.c:1295 sql_help.c:1297 sql_help.c:1299 sql_help.c:1302 -#: sql_help.c:1304 sql_help.c:1306 sql_help.c:1309 sql_help.c:1359 -#: sql_help.c:1401 sql_help.c:1404 sql_help.c:1406 sql_help.c:1408 -#: sql_help.c:1410 sql_help.c:1412 sql_help.c:1415 sql_help.c:1455 -#: sql_help.c:1666 sql_help.c:1730 sql_help.c:1749 sql_help.c:1762 -#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1834 sql_help.c:1854 -#: sql_help.c:1879 sql_help.c:1897 sql_help.c:1926 sql_help.c:2019 -#: sql_help.c:2064 sql_help.c:2087 sql_help.c:2107 sql_help.c:2108 -#: sql_help.c:2143 sql_help.c:2163 sql_help.c:2185 sql_help.c:2199 -#: sql_help.c:2214 sql_help.c:2244 sql_help.c:2269 sql_help.c:2315 -#: sql_help.c:2581 sql_help.c:2594 sql_help.c:2611 sql_help.c:2627 -#: sql_help.c:2667 sql_help.c:2719 sql_help.c:2723 sql_help.c:2725 -#: sql_help.c:2731 sql_help.c:2749 sql_help.c:2776 sql_help.c:2811 -#: sql_help.c:2823 sql_help.c:2832 sql_help.c:2876 sql_help.c:2890 -#: sql_help.c:2918 sql_help.c:2926 sql_help.c:2934 sql_help.c:2942 -#: sql_help.c:2950 sql_help.c:2958 sql_help.c:2966 sql_help.c:2974 -#: sql_help.c:2983 sql_help.c:2994 sql_help.c:3002 sql_help.c:3010 -#: sql_help.c:3018 sql_help.c:3026 sql_help.c:3036 sql_help.c:3045 -#: sql_help.c:3054 sql_help.c:3062 sql_help.c:3071 sql_help.c:3079 -#: sql_help.c:3087 sql_help.c:3096 sql_help.c:3104 sql_help.c:3112 -#: sql_help.c:3120 sql_help.c:3128 sql_help.c:3136 sql_help.c:3144 -#: sql_help.c:3152 sql_help.c:3160 sql_help.c:3168 sql_help.c:3176 -#: sql_help.c:3193 sql_help.c:3202 sql_help.c:3210 sql_help.c:3227 -#: sql_help.c:3242 sql_help.c:3513 sql_help.c:3564 sql_help.c:3593 -#: sql_help.c:3601 sql_help.c:4035 sql_help.c:4083 sql_help.c:4224 +#: sql_help.c:437 sql_help.c:439 sql_help.c:507 sql_help.c:512 sql_help.c:517 +#: sql_help.c:522 sql_help.c:527 sql_help.c:576 sql_help.c:578 sql_help.c:580 +#: sql_help.c:582 sql_help.c:585 sql_help.c:587 sql_help.c:598 sql_help.c:600 +#: sql_help.c:641 sql_help.c:643 sql_help.c:645 sql_help.c:648 sql_help.c:650 +#: sql_help.c:652 sql_help.c:685 sql_help.c:689 sql_help.c:693 sql_help.c:712 +#: sql_help.c:715 sql_help.c:718 sql_help.c:747 sql_help.c:759 sql_help.c:767 +#: sql_help.c:770 sql_help.c:773 sql_help.c:788 sql_help.c:791 sql_help.c:808 +#: sql_help.c:810 sql_help.c:812 sql_help.c:814 sql_help.c:817 sql_help.c:819 +#: sql_help.c:860 sql_help.c:883 sql_help.c:894 sql_help.c:896 sql_help.c:915 +#: sql_help.c:925 sql_help.c:927 sql_help.c:929 sql_help.c:941 sql_help.c:945 +#: sql_help.c:947 sql_help.c:958 sql_help.c:960 sql_help.c:962 sql_help.c:978 +#: sql_help.c:980 sql_help.c:984 sql_help.c:987 sql_help.c:988 sql_help.c:989 +#: sql_help.c:992 sql_help.c:994 sql_help.c:1085 sql_help.c:1087 +#: sql_help.c:1090 sql_help.c:1093 sql_help.c:1095 sql_help.c:1097 +#: sql_help.c:1100 sql_help.c:1103 sql_help.c:1169 sql_help.c:1171 +#: sql_help.c:1173 sql_help.c:1176 sql_help.c:1197 sql_help.c:1200 +#: sql_help.c:1203 sql_help.c:1206 sql_help.c:1210 sql_help.c:1212 +#: sql_help.c:1214 sql_help.c:1216 sql_help.c:1230 sql_help.c:1233 +#: sql_help.c:1235 sql_help.c:1237 sql_help.c:1247 sql_help.c:1249 +#: sql_help.c:1259 sql_help.c:1261 sql_help.c:1271 sql_help.c:1274 +#: sql_help.c:1296 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303 +#: sql_help.c:1305 sql_help.c:1307 sql_help.c:1310 sql_help.c:1360 +#: sql_help.c:1402 sql_help.c:1405 sql_help.c:1407 sql_help.c:1409 +#: sql_help.c:1411 sql_help.c:1413 sql_help.c:1416 sql_help.c:1456 +#: sql_help.c:1667 sql_help.c:1731 sql_help.c:1750 sql_help.c:1763 +#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1835 sql_help.c:1855 +#: sql_help.c:1880 sql_help.c:1898 sql_help.c:1928 sql_help.c:2022 +#: sql_help.c:2067 sql_help.c:2090 sql_help.c:2110 sql_help.c:2111 +#: sql_help.c:2146 sql_help.c:2166 sql_help.c:2188 sql_help.c:2202 +#: sql_help.c:2217 sql_help.c:2247 sql_help.c:2272 sql_help.c:2318 +#: sql_help.c:2584 sql_help.c:2597 sql_help.c:2614 sql_help.c:2630 +#: sql_help.c:2670 sql_help.c:2722 sql_help.c:2726 sql_help.c:2728 +#: sql_help.c:2734 sql_help.c:2752 sql_help.c:2779 sql_help.c:2814 +#: sql_help.c:2826 sql_help.c:2835 sql_help.c:2879 sql_help.c:2893 +#: sql_help.c:2921 sql_help.c:2929 sql_help.c:2937 sql_help.c:2945 +#: sql_help.c:2953 sql_help.c:2961 sql_help.c:2969 sql_help.c:2977 +#: sql_help.c:2986 sql_help.c:2997 sql_help.c:3005 sql_help.c:3013 +#: sql_help.c:3021 sql_help.c:3029 sql_help.c:3039 sql_help.c:3048 +#: sql_help.c:3057 sql_help.c:3065 sql_help.c:3074 sql_help.c:3082 +#: sql_help.c:3090 sql_help.c:3099 sql_help.c:3107 sql_help.c:3115 +#: sql_help.c:3123 sql_help.c:3131 sql_help.c:3139 sql_help.c:3147 +#: sql_help.c:3155 sql_help.c:3163 sql_help.c:3171 sql_help.c:3179 +#: sql_help.c:3196 sql_help.c:3205 sql_help.c:3213 sql_help.c:3230 +#: sql_help.c:3245 sql_help.c:3516 sql_help.c:3567 sql_help.c:3596 +#: sql_help.c:3604 sql_help.c:4038 sql_help.c:4086 sql_help.c:4227 msgid "name" msgstr "Name" -#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:326 sql_help.c:1524 -#: sql_help.c:2891 sql_help.c:3829 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:326 sql_help.c:1525 +#: sql_help.c:2894 sql_help.c:3832 msgid "aggregate_signature" msgstr "Aggregatsignatur" #: sql_help.c:38 sql_help.c:68 sql_help.c:83 sql_help.c:119 sql_help.c:251 -#: sql_help.c:269 sql_help.c:390 sql_help.c:438 sql_help.c:515 sql_help.c:561 -#: sql_help.c:576 sql_help.c:598 sql_help.c:648 sql_help.c:713 sql_help.c:768 -#: sql_help.c:789 sql_help.c:819 sql_help.c:860 sql_help.c:884 sql_help.c:894 -#: sql_help.c:927 sql_help.c:947 sql_help.c:960 sql_help.c:994 sql_help.c:1093 -#: sql_help.c:1169 sql_help.c:1212 sql_help.c:1233 sql_help.c:1247 -#: sql_help.c:1259 sql_help.c:1272 sql_help.c:1303 sql_help.c:1360 -#: sql_help.c:1409 +#: sql_help.c:269 sql_help.c:390 sql_help.c:438 sql_help.c:516 sql_help.c:562 +#: sql_help.c:577 sql_help.c:599 sql_help.c:649 sql_help.c:714 sql_help.c:769 +#: sql_help.c:790 sql_help.c:820 sql_help.c:861 sql_help.c:885 sql_help.c:895 +#: sql_help.c:928 sql_help.c:948 sql_help.c:961 sql_help.c:995 sql_help.c:1094 +#: sql_help.c:1170 sql_help.c:1213 sql_help.c:1234 sql_help.c:1248 +#: sql_help.c:1260 sql_help.c:1273 sql_help.c:1304 sql_help.c:1361 +#: sql_help.c:1410 msgid "new_name" msgstr "neuer_Name" #: sql_help.c:41 sql_help.c:70 sql_help.c:85 sql_help.c:121 sql_help.c:249 -#: sql_help.c:267 sql_help.c:388 sql_help.c:474 sql_help.c:520 sql_help.c:600 -#: sql_help.c:609 sql_help.c:667 sql_help.c:687 sql_help.c:716 sql_help.c:771 -#: sql_help.c:817 sql_help.c:896 sql_help.c:925 sql_help.c:945 sql_help.c:958 -#: sql_help.c:992 sql_help.c:1153 sql_help.c:1171 sql_help.c:1214 -#: sql_help.c:1235 sql_help.c:1298 sql_help.c:1407 sql_help.c:2567 +#: sql_help.c:267 sql_help.c:388 sql_help.c:474 sql_help.c:521 sql_help.c:601 +#: sql_help.c:610 sql_help.c:668 sql_help.c:688 sql_help.c:717 sql_help.c:772 +#: sql_help.c:818 sql_help.c:897 sql_help.c:926 sql_help.c:946 sql_help.c:959 +#: sql_help.c:993 sql_help.c:1154 sql_help.c:1172 sql_help.c:1215 +#: sql_help.c:1236 sql_help.c:1299 sql_help.c:1408 sql_help.c:2570 msgid "new_owner" msgstr "neuer_Eigentümer" #: sql_help.c:44 sql_help.c:72 sql_help.c:87 sql_help.c:253 sql_help.c:318 -#: sql_help.c:440 sql_help.c:525 sql_help.c:650 sql_help.c:691 sql_help.c:719 -#: sql_help.c:774 sql_help.c:929 sql_help.c:962 sql_help.c:1095 sql_help.c:1216 -#: sql_help.c:1237 sql_help.c:1249 sql_help.c:1261 sql_help.c:1305 -#: sql_help.c:1411 +#: sql_help.c:440 sql_help.c:526 sql_help.c:651 sql_help.c:692 sql_help.c:720 +#: sql_help.c:775 sql_help.c:930 sql_help.c:963 sql_help.c:1096 sql_help.c:1217 +#: sql_help.c:1238 sql_help.c:1250 sql_help.c:1262 sql_help.c:1306 +#: sql_help.c:1412 msgid "new_schema" msgstr "neues_Schema" -#: sql_help.c:45 sql_help.c:1580 sql_help.c:2892 sql_help.c:3850 +#: sql_help.c:45 sql_help.c:1581 sql_help.c:2895 sql_help.c:3853 msgid "where aggregate_signature is:" msgstr "wobei Aggregatsignatur Folgendes ist:" #: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:336 sql_help.c:361 -#: sql_help.c:364 sql_help.c:367 sql_help.c:507 sql_help.c:512 sql_help.c:517 -#: sql_help.c:522 sql_help.c:527 sql_help.c:1542 sql_help.c:1581 -#: sql_help.c:1584 sql_help.c:1587 sql_help.c:1731 sql_help.c:1750 -#: sql_help.c:1753 sql_help.c:2020 sql_help.c:2893 sql_help.c:2896 -#: sql_help.c:2899 sql_help.c:2984 sql_help.c:3397 sql_help.c:3739 -#: sql_help.c:3835 sql_help.c:3851 sql_help.c:3854 sql_help.c:3857 +#: sql_help.c:364 sql_help.c:367 sql_help.c:508 sql_help.c:513 sql_help.c:518 +#: sql_help.c:523 sql_help.c:528 sql_help.c:1543 sql_help.c:1582 +#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1732 sql_help.c:1751 +#: sql_help.c:1754 sql_help.c:2023 sql_help.c:2896 sql_help.c:2899 +#: sql_help.c:2902 sql_help.c:2987 sql_help.c:3400 sql_help.c:3742 +#: sql_help.c:3838 sql_help.c:3854 sql_help.c:3857 sql_help.c:3860 msgid "argmode" msgstr "Argmodus" #: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:337 sql_help.c:362 -#: sql_help.c:365 sql_help.c:368 sql_help.c:508 sql_help.c:513 sql_help.c:518 -#: sql_help.c:523 sql_help.c:528 sql_help.c:1543 sql_help.c:1582 -#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1732 sql_help.c:1751 -#: sql_help.c:1754 sql_help.c:2021 sql_help.c:2894 sql_help.c:2897 -#: sql_help.c:2900 sql_help.c:2985 sql_help.c:3836 sql_help.c:3852 -#: sql_help.c:3855 sql_help.c:3858 +#: sql_help.c:365 sql_help.c:368 sql_help.c:509 sql_help.c:514 sql_help.c:519 +#: sql_help.c:524 sql_help.c:529 sql_help.c:1544 sql_help.c:1583 +#: sql_help.c:1586 sql_help.c:1589 sql_help.c:1733 sql_help.c:1752 +#: sql_help.c:1755 sql_help.c:2024 sql_help.c:2897 sql_help.c:2900 +#: sql_help.c:2903 sql_help.c:2988 sql_help.c:3839 sql_help.c:3855 +#: sql_help.c:3858 sql_help.c:3861 msgid "argname" msgstr "Argname" #: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:338 sql_help.c:363 -#: sql_help.c:366 sql_help.c:369 sql_help.c:509 sql_help.c:514 sql_help.c:519 -#: sql_help.c:524 sql_help.c:529 sql_help.c:1544 sql_help.c:1583 -#: sql_help.c:1586 sql_help.c:1589 sql_help.c:2022 sql_help.c:2895 -#: sql_help.c:2898 sql_help.c:2901 sql_help.c:2986 sql_help.c:3837 -#: sql_help.c:3853 sql_help.c:3856 sql_help.c:3859 +#: sql_help.c:366 sql_help.c:369 sql_help.c:510 sql_help.c:515 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:1545 sql_help.c:1584 +#: sql_help.c:1587 sql_help.c:1590 sql_help.c:2025 sql_help.c:2898 +#: sql_help.c:2901 sql_help.c:2904 sql_help.c:2989 sql_help.c:3840 +#: sql_help.c:3856 sql_help.c:3859 sql_help.c:3862 msgid "argtype" msgstr "Argtyp" -#: sql_help.c:113 sql_help.c:385 sql_help.c:463 sql_help.c:475 sql_help.c:854 -#: sql_help.c:942 sql_help.c:1230 sql_help.c:1354 sql_help.c:1386 -#: sql_help.c:1637 sql_help.c:1643 sql_help.c:1929 sql_help.c:1970 -#: sql_help.c:1977 sql_help.c:1986 sql_help.c:2065 sql_help.c:2245 -#: sql_help.c:2337 sql_help.c:2596 sql_help.c:2777 sql_help.c:2799 -#: sql_help.c:3262 sql_help.c:3432 +#: sql_help.c:113 sql_help.c:385 sql_help.c:463 sql_help.c:475 sql_help.c:855 +#: sql_help.c:943 sql_help.c:1231 sql_help.c:1355 sql_help.c:1387 +#: sql_help.c:1638 sql_help.c:1644 sql_help.c:1931 sql_help.c:1972 +#: sql_help.c:1979 sql_help.c:1988 sql_help.c:2068 sql_help.c:2248 +#: sql_help.c:2340 sql_help.c:2599 sql_help.c:2780 sql_help.c:2802 +#: sql_help.c:3265 sql_help.c:3435 msgid "option" msgstr "Option" -#: sql_help.c:114 sql_help.c:855 sql_help.c:1355 sql_help.c:2066 -#: sql_help.c:2246 sql_help.c:2778 +#: sql_help.c:114 sql_help.c:856 sql_help.c:1356 sql_help.c:2069 +#: sql_help.c:2249 sql_help.c:2781 msgid "where option can be:" msgstr "wobei Option Folgendes sein kann:" -#: sql_help.c:115 sql_help.c:1861 +#: sql_help.c:115 sql_help.c:1862 msgid "allowconn" msgstr "allowconn" -#: sql_help.c:116 sql_help.c:856 sql_help.c:1356 sql_help.c:1862 -#: sql_help.c:2067 sql_help.c:2247 sql_help.c:2779 +#: sql_help.c:116 sql_help.c:857 sql_help.c:1357 sql_help.c:1863 +#: sql_help.c:2070 sql_help.c:2250 sql_help.c:2782 msgid "connlimit" msgstr "Verbindungslimit" -#: sql_help.c:117 sql_help.c:1863 +#: sql_help.c:117 sql_help.c:1864 msgid "istemplate" msgstr "istemplate" -#: sql_help.c:123 sql_help.c:588 sql_help.c:653 sql_help.c:1098 sql_help.c:1146 +#: sql_help.c:123 sql_help.c:589 sql_help.c:654 sql_help.c:1099 sql_help.c:1147 msgid "new_tablespace" msgstr "neuer_Tablespace" -#: sql_help.c:125 sql_help.c:128 sql_help.c:130 sql_help.c:534 sql_help.c:536 -#: sql_help.c:537 sql_help.c:863 sql_help.c:867 sql_help.c:870 sql_help.c:1005 -#: sql_help.c:1008 sql_help.c:1363 sql_help.c:1367 sql_help.c:1370 -#: sql_help.c:2031 sql_help.c:3618 sql_help.c:4024 +#: sql_help.c:125 sql_help.c:128 sql_help.c:130 sql_help.c:535 sql_help.c:537 +#: sql_help.c:538 sql_help.c:864 sql_help.c:868 sql_help.c:871 sql_help.c:1006 +#: sql_help.c:1009 sql_help.c:1364 sql_help.c:1368 sql_help.c:1371 +#: sql_help.c:2034 sql_help.c:3621 sql_help.c:4027 msgid "configuration_parameter" msgstr "Konfigurationsparameter" #: sql_help.c:126 sql_help.c:386 sql_help.c:458 sql_help.c:464 sql_help.c:476 -#: sql_help.c:535 sql_help.c:583 sql_help.c:659 sql_help.c:665 sql_help.c:815 -#: sql_help.c:864 sql_help.c:943 sql_help.c:982 sql_help.c:985 sql_help.c:990 -#: sql_help.c:1006 sql_help.c:1007 sql_help.c:1128 sql_help.c:1148 -#: sql_help.c:1174 sql_help.c:1231 sql_help.c:1364 sql_help.c:1387 -#: sql_help.c:1930 sql_help.c:1971 sql_help.c:1978 sql_help.c:1987 -#: sql_help.c:2032 sql_help.c:2033 sql_help.c:2095 sql_help.c:2127 -#: sql_help.c:2217 sql_help.c:2338 sql_help.c:2368 sql_help.c:2466 -#: sql_help.c:2478 sql_help.c:2491 sql_help.c:2531 sql_help.c:2553 -#: sql_help.c:2570 sql_help.c:2597 sql_help.c:2800 sql_help.c:3433 -#: sql_help.c:4025 sql_help.c:4026 +#: sql_help.c:536 sql_help.c:584 sql_help.c:660 sql_help.c:666 sql_help.c:816 +#: sql_help.c:865 sql_help.c:944 sql_help.c:983 sql_help.c:986 sql_help.c:991 +#: sql_help.c:1007 sql_help.c:1008 sql_help.c:1129 sql_help.c:1149 +#: sql_help.c:1175 sql_help.c:1232 sql_help.c:1365 sql_help.c:1388 +#: sql_help.c:1932 sql_help.c:1973 sql_help.c:1980 sql_help.c:1989 +#: sql_help.c:2035 sql_help.c:2036 sql_help.c:2098 sql_help.c:2130 +#: sql_help.c:2220 sql_help.c:2341 sql_help.c:2371 sql_help.c:2469 +#: sql_help.c:2481 sql_help.c:2494 sql_help.c:2534 sql_help.c:2556 +#: sql_help.c:2573 sql_help.c:2600 sql_help.c:2803 sql_help.c:3436 +#: sql_help.c:4028 sql_help.c:4029 msgid "value" msgstr "Wert" @@ -3711,9 +3711,9 @@ msgid "target_role" msgstr "Zielrolle" -#: sql_help.c:199 sql_help.c:1913 sql_help.c:2293 sql_help.c:2298 -#: sql_help.c:3379 sql_help.c:3386 sql_help.c:3400 sql_help.c:3406 -#: sql_help.c:3721 sql_help.c:3728 sql_help.c:3742 sql_help.c:3748 +#: sql_help.c:199 sql_help.c:1915 sql_help.c:2296 sql_help.c:2301 +#: sql_help.c:3382 sql_help.c:3389 sql_help.c:3403 sql_help.c:3409 +#: sql_help.c:3724 sql_help.c:3731 sql_help.c:3745 sql_help.c:3751 msgid "schema_name" msgstr "Schemaname" @@ -3727,30 +3727,30 @@ #: sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205 sql_help.c:206 #: sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210 sql_help.c:211 -#: sql_help.c:559 sql_help.c:587 sql_help.c:652 sql_help.c:792 sql_help.c:874 -#: sql_help.c:1097 sql_help.c:1374 sql_help.c:2070 sql_help.c:2071 -#: sql_help.c:2072 sql_help.c:2073 sql_help.c:2074 sql_help.c:2201 -#: sql_help.c:2250 sql_help.c:2251 sql_help.c:2252 sql_help.c:2253 -#: sql_help.c:2254 sql_help.c:2782 sql_help.c:2783 sql_help.c:2784 -#: sql_help.c:2785 sql_help.c:2786 sql_help.c:3412 sql_help.c:3416 -#: sql_help.c:3754 sql_help.c:3758 sql_help.c:4045 +#: sql_help.c:560 sql_help.c:588 sql_help.c:653 sql_help.c:793 sql_help.c:875 +#: sql_help.c:1098 sql_help.c:1375 sql_help.c:2073 sql_help.c:2074 +#: sql_help.c:2075 sql_help.c:2076 sql_help.c:2077 sql_help.c:2204 +#: sql_help.c:2253 sql_help.c:2254 sql_help.c:2255 sql_help.c:2256 +#: sql_help.c:2257 sql_help.c:2785 sql_help.c:2786 sql_help.c:2787 +#: sql_help.c:2788 sql_help.c:2789 sql_help.c:3415 sql_help.c:3419 +#: sql_help.c:3757 sql_help.c:3761 sql_help.c:4048 msgid "role_name" msgstr "Rollenname" -#: sql_help.c:237 sql_help.c:451 sql_help.c:1113 sql_help.c:1115 -#: sql_help.c:1403 sql_help.c:1882 sql_help.c:1886 sql_help.c:1990 -#: sql_help.c:1994 sql_help.c:2091 sql_help.c:2462 sql_help.c:2474 -#: sql_help.c:2487 sql_help.c:2495 sql_help.c:2506 sql_help.c:2535 -#: sql_help.c:3464 sql_help.c:3479 sql_help.c:3481 sql_help.c:3910 -#: sql_help.c:3911 sql_help.c:3920 sql_help.c:3961 sql_help.c:3962 -#: sql_help.c:3963 sql_help.c:3964 sql_help.c:3965 sql_help.c:3966 -#: sql_help.c:3999 sql_help.c:4000 sql_help.c:4005 sql_help.c:4010 -#: sql_help.c:4149 sql_help.c:4150 sql_help.c:4159 sql_help.c:4200 -#: sql_help.c:4201 sql_help.c:4202 sql_help.c:4203 sql_help.c:4204 -#: sql_help.c:4205 sql_help.c:4252 sql_help.c:4254 sql_help.c:4287 -#: sql_help.c:4343 sql_help.c:4344 sql_help.c:4353 sql_help.c:4394 -#: sql_help.c:4395 sql_help.c:4396 sql_help.c:4397 sql_help.c:4398 -#: sql_help.c:4399 +#: sql_help.c:237 sql_help.c:451 sql_help.c:1114 sql_help.c:1116 +#: sql_help.c:1404 sql_help.c:1883 sql_help.c:1887 sql_help.c:1992 +#: sql_help.c:1996 sql_help.c:2094 sql_help.c:2465 sql_help.c:2477 +#: sql_help.c:2490 sql_help.c:2498 sql_help.c:2509 sql_help.c:2538 +#: sql_help.c:3467 sql_help.c:3482 sql_help.c:3484 sql_help.c:3913 +#: sql_help.c:3914 sql_help.c:3923 sql_help.c:3964 sql_help.c:3965 +#: sql_help.c:3966 sql_help.c:3967 sql_help.c:3968 sql_help.c:3969 +#: sql_help.c:4002 sql_help.c:4003 sql_help.c:4008 sql_help.c:4013 +#: sql_help.c:4152 sql_help.c:4153 sql_help.c:4162 sql_help.c:4203 +#: sql_help.c:4204 sql_help.c:4205 sql_help.c:4206 sql_help.c:4207 +#: sql_help.c:4208 sql_help.c:4255 sql_help.c:4257 sql_help.c:4290 +#: sql_help.c:4346 sql_help.c:4347 sql_help.c:4356 sql_help.c:4397 +#: sql_help.c:4398 sql_help.c:4399 sql_help.c:4400 sql_help.c:4401 +#: sql_help.c:4402 msgid "expression" msgstr "Ausdruck" @@ -3759,18 +3759,18 @@ msgstr "Domänen-Constraint" #: sql_help.c:242 sql_help.c:244 sql_help.c:247 sql_help.c:466 sql_help.c:467 -#: sql_help.c:1090 sql_help.c:1134 sql_help.c:1135 sql_help.c:1136 -#: sql_help.c:1156 sql_help.c:1530 sql_help.c:1532 sql_help.c:1885 -#: sql_help.c:1989 sql_help.c:1993 sql_help.c:2494 sql_help.c:2505 -#: sql_help.c:3476 +#: sql_help.c:1091 sql_help.c:1135 sql_help.c:1136 sql_help.c:1137 +#: sql_help.c:1157 sql_help.c:1531 sql_help.c:1533 sql_help.c:1886 +#: sql_help.c:1991 sql_help.c:1995 sql_help.c:2497 sql_help.c:2508 +#: sql_help.c:3479 msgid "constraint_name" msgstr "Constraint-Name" -#: sql_help.c:245 sql_help.c:1091 +#: sql_help.c:245 sql_help.c:1092 msgid "new_constraint_name" msgstr "neuer_Constraint-Name" -#: sql_help.c:316 sql_help.c:941 +#: sql_help.c:316 sql_help.c:942 msgid "new_version" msgstr "neue_Version" @@ -3786,73 +3786,73 @@ #: sql_help.c:333 sql_help.c:334 sql_help.c:339 sql_help.c:343 sql_help.c:345 #: sql_help.c:347 sql_help.c:348 sql_help.c:349 sql_help.c:350 sql_help.c:351 #: sql_help.c:352 sql_help.c:353 sql_help.c:354 sql_help.c:355 sql_help.c:358 -#: sql_help.c:359 sql_help.c:1522 sql_help.c:1527 sql_help.c:1534 -#: sql_help.c:1535 sql_help.c:1536 sql_help.c:1537 sql_help.c:1538 -#: sql_help.c:1539 sql_help.c:1540 sql_help.c:1545 sql_help.c:1547 -#: sql_help.c:1551 sql_help.c:1553 sql_help.c:1557 sql_help.c:1558 -#: sql_help.c:1559 sql_help.c:1562 sql_help.c:1563 sql_help.c:1564 -#: sql_help.c:1565 sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 -#: sql_help.c:1569 sql_help.c:1570 sql_help.c:1571 sql_help.c:1572 -#: sql_help.c:1577 sql_help.c:1578 sql_help.c:3825 sql_help.c:3830 -#: sql_help.c:3831 sql_help.c:3832 sql_help.c:3833 sql_help.c:3839 -#: sql_help.c:3840 sql_help.c:3841 sql_help.c:3842 sql_help.c:3843 -#: sql_help.c:3844 sql_help.c:3845 sql_help.c:3846 sql_help.c:3847 -#: sql_help.c:3848 +#: sql_help.c:359 sql_help.c:1523 sql_help.c:1528 sql_help.c:1535 +#: sql_help.c:1536 sql_help.c:1537 sql_help.c:1538 sql_help.c:1539 +#: sql_help.c:1540 sql_help.c:1541 sql_help.c:1546 sql_help.c:1548 +#: sql_help.c:1552 sql_help.c:1554 sql_help.c:1558 sql_help.c:1559 +#: sql_help.c:1560 sql_help.c:1563 sql_help.c:1564 sql_help.c:1565 +#: sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 sql_help.c:1569 +#: sql_help.c:1570 sql_help.c:1571 sql_help.c:1572 sql_help.c:1573 +#: sql_help.c:1578 sql_help.c:1579 sql_help.c:3828 sql_help.c:3833 +#: sql_help.c:3834 sql_help.c:3835 sql_help.c:3836 sql_help.c:3842 +#: sql_help.c:3843 sql_help.c:3844 sql_help.c:3845 sql_help.c:3846 +#: sql_help.c:3847 sql_help.c:3848 sql_help.c:3849 sql_help.c:3850 +#: sql_help.c:3851 msgid "object_name" msgstr "Objektname" -#: sql_help.c:325 sql_help.c:1523 sql_help.c:3828 +#: sql_help.c:325 sql_help.c:1524 sql_help.c:3831 msgid "aggregate_name" msgstr "Aggregatname" -#: sql_help.c:327 sql_help.c:1525 sql_help.c:1796 sql_help.c:1800 -#: sql_help.c:1802 sql_help.c:2909 +#: sql_help.c:327 sql_help.c:1526 sql_help.c:1797 sql_help.c:1801 +#: sql_help.c:1803 sql_help.c:2912 msgid "source_type" msgstr "Quelltyp" -#: sql_help.c:328 sql_help.c:1526 sql_help.c:1797 sql_help.c:1801 -#: sql_help.c:1803 sql_help.c:2910 +#: sql_help.c:328 sql_help.c:1527 sql_help.c:1798 sql_help.c:1802 +#: sql_help.c:1804 sql_help.c:2913 msgid "target_type" msgstr "Zieltyp" -#: sql_help.c:335 sql_help.c:756 sql_help.c:1541 sql_help.c:1798 -#: sql_help.c:1837 sql_help.c:1900 sql_help.c:2144 sql_help.c:2175 -#: sql_help.c:2673 sql_help.c:3396 sql_help.c:3738 sql_help.c:3834 -#: sql_help.c:3939 sql_help.c:3943 sql_help.c:3947 sql_help.c:3950 -#: sql_help.c:4178 sql_help.c:4182 sql_help.c:4186 sql_help.c:4189 -#: sql_help.c:4372 sql_help.c:4376 sql_help.c:4380 sql_help.c:4383 +#: sql_help.c:335 sql_help.c:757 sql_help.c:1542 sql_help.c:1799 +#: sql_help.c:1838 sql_help.c:1902 sql_help.c:2147 sql_help.c:2178 +#: sql_help.c:2676 sql_help.c:3399 sql_help.c:3741 sql_help.c:3837 +#: sql_help.c:3942 sql_help.c:3946 sql_help.c:3950 sql_help.c:3953 +#: sql_help.c:4181 sql_help.c:4185 sql_help.c:4189 sql_help.c:4192 +#: sql_help.c:4375 sql_help.c:4379 sql_help.c:4383 sql_help.c:4386 msgid "function_name" msgstr "Funktionsname" -#: sql_help.c:340 sql_help.c:749 sql_help.c:1548 sql_help.c:2168 +#: sql_help.c:340 sql_help.c:750 sql_help.c:1549 sql_help.c:2171 msgid "operator_name" msgstr "Operatorname" -#: sql_help.c:341 sql_help.c:685 sql_help.c:689 sql_help.c:693 sql_help.c:1549 -#: sql_help.c:2145 sql_help.c:3027 +#: sql_help.c:341 sql_help.c:686 sql_help.c:690 sql_help.c:694 sql_help.c:1550 +#: sql_help.c:2148 sql_help.c:3030 msgid "left_type" msgstr "linker_Typ" -#: sql_help.c:342 sql_help.c:686 sql_help.c:690 sql_help.c:694 sql_help.c:1550 -#: sql_help.c:2146 sql_help.c:3028 +#: sql_help.c:342 sql_help.c:687 sql_help.c:691 sql_help.c:695 sql_help.c:1551 +#: sql_help.c:2149 sql_help.c:3031 msgid "right_type" msgstr "rechter_Typ" -#: sql_help.c:344 sql_help.c:346 sql_help.c:712 sql_help.c:715 sql_help.c:718 -#: sql_help.c:747 sql_help.c:759 sql_help.c:767 sql_help.c:770 sql_help.c:773 -#: sql_help.c:1552 sql_help.c:1554 sql_help.c:2165 sql_help.c:2186 -#: sql_help.c:2511 sql_help.c:3037 sql_help.c:3046 +#: sql_help.c:344 sql_help.c:346 sql_help.c:713 sql_help.c:716 sql_help.c:719 +#: sql_help.c:748 sql_help.c:760 sql_help.c:768 sql_help.c:771 sql_help.c:774 +#: sql_help.c:1553 sql_help.c:1555 sql_help.c:2168 sql_help.c:2189 +#: sql_help.c:2514 sql_help.c:3040 sql_help.c:3049 msgid "index_method" msgstr "Indexmethode" -#: sql_help.c:356 sql_help.c:1152 sql_help.c:1573 sql_help.c:2028 -#: sql_help.c:2469 sql_help.c:2640 sql_help.c:3184 sql_help.c:3410 -#: sql_help.c:3752 +#: sql_help.c:356 sql_help.c:1153 sql_help.c:1574 sql_help.c:2031 +#: sql_help.c:2472 sql_help.c:2643 sql_help.c:3187 sql_help.c:3413 +#: sql_help.c:3755 msgid "type_name" msgstr "Typname" -#: sql_help.c:357 sql_help.c:1574 sql_help.c:2027 sql_help.c:2641 -#: sql_help.c:2867 sql_help.c:3185 sql_help.c:3402 sql_help.c:3744 +#: sql_help.c:357 sql_help.c:1575 sql_help.c:2030 sql_help.c:2644 +#: sql_help.c:2870 sql_help.c:3188 sql_help.c:3405 sql_help.c:3747 msgid "lang_name" msgstr "Sprachname" @@ -3860,1814 +3860,1818 @@ msgid "and aggregate_signature is:" msgstr "und Aggregatsignatur Folgendes ist:" -#: sql_help.c:383 sql_help.c:1668 sql_help.c:1927 +#: sql_help.c:383 sql_help.c:1669 sql_help.c:1929 msgid "handler_function" msgstr "Handler-Funktion" -#: sql_help.c:384 sql_help.c:1928 +#: sql_help.c:384 sql_help.c:1930 msgid "validator_function" msgstr "Validator-Funktion" -#: sql_help.c:433 sql_help.c:510 sql_help.c:641 sql_help.c:1085 sql_help.c:1296 -#: sql_help.c:2502 sql_help.c:2503 sql_help.c:2519 sql_help.c:2520 +#: sql_help.c:433 sql_help.c:511 sql_help.c:642 sql_help.c:1086 sql_help.c:1297 +#: sql_help.c:2505 sql_help.c:2506 sql_help.c:2522 sql_help.c:2523 msgid "action" msgstr "Aktion" #: sql_help.c:435 sql_help.c:442 sql_help.c:446 sql_help.c:447 sql_help.c:450 #: sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:456 sql_help.c:459 -#: sql_help.c:461 sql_help.c:462 sql_help.c:645 sql_help.c:655 sql_help.c:657 -#: sql_help.c:660 sql_help.c:662 sql_help.c:923 sql_help.c:1087 sql_help.c:1105 -#: sql_help.c:1109 sql_help.c:1110 sql_help.c:1114 sql_help.c:1116 -#: sql_help.c:1117 sql_help.c:1118 sql_help.c:1120 sql_help.c:1123 -#: sql_help.c:1124 sql_help.c:1126 sql_help.c:1129 sql_help.c:1131 -#: sql_help.c:1402 sql_help.c:1405 sql_help.c:1425 sql_help.c:1529 -#: sql_help.c:1634 sql_help.c:1639 sql_help.c:1653 sql_help.c:1654 -#: sql_help.c:1655 sql_help.c:1968 sql_help.c:1981 sql_help.c:2025 -#: sql_help.c:2090 sql_help.c:2125 sql_help.c:2323 sql_help.c:2351 -#: sql_help.c:2352 sql_help.c:2453 sql_help.c:2461 sql_help.c:2470 -#: sql_help.c:2473 sql_help.c:2482 sql_help.c:2486 sql_help.c:2507 -#: sql_help.c:2509 sql_help.c:2516 sql_help.c:2534 sql_help.c:2551 -#: sql_help.c:2676 sql_help.c:2812 sql_help.c:3381 sql_help.c:3382 -#: sql_help.c:3463 sql_help.c:3478 sql_help.c:3480 sql_help.c:3482 -#: sql_help.c:3723 sql_help.c:3724 sql_help.c:3827 sql_help.c:3970 -#: sql_help.c:4209 sql_help.c:4251 sql_help.c:4253 sql_help.c:4255 -#: sql_help.c:4272 sql_help.c:4275 sql_help.c:4403 +#: sql_help.c:461 sql_help.c:462 sql_help.c:646 sql_help.c:656 sql_help.c:658 +#: sql_help.c:661 sql_help.c:663 sql_help.c:924 sql_help.c:1088 sql_help.c:1106 +#: sql_help.c:1110 sql_help.c:1111 sql_help.c:1115 sql_help.c:1117 +#: sql_help.c:1118 sql_help.c:1119 sql_help.c:1121 sql_help.c:1124 +#: sql_help.c:1125 sql_help.c:1127 sql_help.c:1130 sql_help.c:1132 +#: sql_help.c:1403 sql_help.c:1406 sql_help.c:1426 sql_help.c:1530 +#: sql_help.c:1635 sql_help.c:1640 sql_help.c:1654 sql_help.c:1655 +#: sql_help.c:1656 sql_help.c:1970 sql_help.c:1983 sql_help.c:2028 +#: sql_help.c:2093 sql_help.c:2128 sql_help.c:2326 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2456 sql_help.c:2464 sql_help.c:2473 +#: sql_help.c:2476 sql_help.c:2485 sql_help.c:2489 sql_help.c:2510 +#: sql_help.c:2512 sql_help.c:2519 sql_help.c:2537 sql_help.c:2554 +#: sql_help.c:2679 sql_help.c:2815 sql_help.c:3384 sql_help.c:3385 +#: sql_help.c:3466 sql_help.c:3481 sql_help.c:3483 sql_help.c:3485 +#: sql_help.c:3726 sql_help.c:3727 sql_help.c:3830 sql_help.c:3973 +#: sql_help.c:4212 sql_help.c:4254 sql_help.c:4256 sql_help.c:4258 +#: sql_help.c:4275 sql_help.c:4278 sql_help.c:4406 msgid "column_name" msgstr "Spaltenname" -#: sql_help.c:436 sql_help.c:646 sql_help.c:1088 +#: sql_help.c:436 sql_help.c:647 sql_help.c:1089 msgid "new_column_name" msgstr "neuer_Spaltenname" -#: sql_help.c:441 sql_help.c:531 sql_help.c:654 sql_help.c:1104 sql_help.c:1312 +#: sql_help.c:441 sql_help.c:532 sql_help.c:655 sql_help.c:1105 sql_help.c:1313 msgid "where action is one of:" msgstr "wobei Aktion Folgendes sein kann:" -#: sql_help.c:443 sql_help.c:448 sql_help.c:915 sql_help.c:1106 sql_help.c:1111 -#: sql_help.c:1314 sql_help.c:1318 sql_help.c:1880 sql_help.c:1969 -#: sql_help.c:2164 sql_help.c:2316 sql_help.c:2454 sql_help.c:2721 -#: sql_help.c:3565 +#: sql_help.c:443 sql_help.c:448 sql_help.c:916 sql_help.c:1107 sql_help.c:1112 +#: sql_help.c:1315 sql_help.c:1319 sql_help.c:1881 sql_help.c:1971 +#: sql_help.c:2167 sql_help.c:2319 sql_help.c:2457 sql_help.c:2724 +#: sql_help.c:3568 msgid "data_type" msgstr "Datentyp" -#: sql_help.c:444 sql_help.c:449 sql_help.c:1107 sql_help.c:1112 -#: sql_help.c:1315 sql_help.c:1319 sql_help.c:1881 sql_help.c:1972 -#: sql_help.c:2092 sql_help.c:2455 sql_help.c:2463 sql_help.c:2475 -#: sql_help.c:2488 sql_help.c:2722 sql_help.c:2728 sql_help.c:3473 +#: sql_help.c:444 sql_help.c:449 sql_help.c:1108 sql_help.c:1113 +#: sql_help.c:1316 sql_help.c:1320 sql_help.c:1882 sql_help.c:1974 +#: sql_help.c:2095 sql_help.c:2458 sql_help.c:2466 sql_help.c:2478 +#: sql_help.c:2491 sql_help.c:2725 sql_help.c:2731 sql_help.c:3476 msgid "collation" msgstr "Sortierfolge" -#: sql_help.c:445 sql_help.c:1108 sql_help.c:1973 sql_help.c:1982 -#: sql_help.c:2456 sql_help.c:2471 sql_help.c:2483 +#: sql_help.c:445 sql_help.c:1109 sql_help.c:1975 sql_help.c:1984 +#: sql_help.c:2459 sql_help.c:2474 sql_help.c:2486 msgid "column_constraint" msgstr "Spalten-Constraint" -#: sql_help.c:455 sql_help.c:656 sql_help.c:1125 +#: sql_help.c:455 sql_help.c:657 sql_help.c:1126 msgid "integer" msgstr "ganze_Zahl" -#: sql_help.c:457 sql_help.c:460 sql_help.c:658 sql_help.c:661 sql_help.c:1127 -#: sql_help.c:1130 +#: sql_help.c:457 sql_help.c:460 sql_help.c:659 sql_help.c:662 sql_help.c:1128 +#: sql_help.c:1131 msgid "attribute_option" msgstr "Attributoption" -#: sql_help.c:465 sql_help.c:1132 sql_help.c:1974 sql_help.c:1983 -#: sql_help.c:2457 sql_help.c:2472 sql_help.c:2484 +#: sql_help.c:465 sql_help.c:1133 sql_help.c:1976 sql_help.c:1985 +#: sql_help.c:2460 sql_help.c:2475 sql_help.c:2487 msgid "table_constraint" msgstr "Tabellen-Constraint" -#: sql_help.c:468 sql_help.c:469 sql_help.c:470 sql_help.c:471 sql_help.c:1137 -#: sql_help.c:1138 sql_help.c:1139 sql_help.c:1140 sql_help.c:1575 +#: sql_help.c:468 sql_help.c:469 sql_help.c:470 sql_help.c:471 sql_help.c:1138 +#: sql_help.c:1139 sql_help.c:1140 sql_help.c:1141 sql_help.c:1576 msgid "trigger_name" msgstr "Triggername" -#: sql_help.c:472 sql_help.c:473 sql_help.c:1150 sql_help.c:1151 -#: sql_help.c:1975 sql_help.c:1980 sql_help.c:2460 sql_help.c:2481 +#: sql_help.c:472 sql_help.c:473 sql_help.c:1151 sql_help.c:1152 +#: sql_help.c:1977 sql_help.c:1982 sql_help.c:2463 sql_help.c:2484 msgid "parent_table" msgstr "Elterntabelle" -#: sql_help.c:530 sql_help.c:580 sql_help.c:643 sql_help.c:1275 sql_help.c:1912 +#: sql_help.c:531 sql_help.c:581 sql_help.c:644 sql_help.c:1276 sql_help.c:1914 msgid "extension_name" msgstr "Erweiterungsname" -#: sql_help.c:532 sql_help.c:2029 +#: sql_help.c:533 sql_help.c:2032 msgid "execution_cost" msgstr "Ausführungskosten" -#: sql_help.c:533 sql_help.c:2030 +#: sql_help.c:534 sql_help.c:2033 msgid "result_rows" msgstr "Ergebniszeilen" -#: sql_help.c:554 sql_help.c:556 sql_help.c:853 sql_help.c:861 sql_help.c:865 -#: sql_help.c:868 sql_help.c:871 sql_help.c:1353 sql_help.c:1361 -#: sql_help.c:1365 sql_help.c:1368 sql_help.c:1371 sql_help.c:2294 -#: sql_help.c:2296 sql_help.c:2299 sql_help.c:2300 sql_help.c:3380 -#: sql_help.c:3384 sql_help.c:3387 sql_help.c:3389 sql_help.c:3391 -#: sql_help.c:3393 sql_help.c:3395 sql_help.c:3401 sql_help.c:3403 -#: sql_help.c:3405 sql_help.c:3407 sql_help.c:3409 sql_help.c:3411 -#: sql_help.c:3413 sql_help.c:3414 sql_help.c:3722 sql_help.c:3726 -#: sql_help.c:3729 sql_help.c:3731 sql_help.c:3733 sql_help.c:3735 -#: sql_help.c:3737 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747 -#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3753 sql_help.c:3755 -#: sql_help.c:3756 +#: sql_help.c:555 sql_help.c:557 sql_help.c:854 sql_help.c:862 sql_help.c:866 +#: sql_help.c:869 sql_help.c:872 sql_help.c:1354 sql_help.c:1362 +#: sql_help.c:1366 sql_help.c:1369 sql_help.c:1372 sql_help.c:2297 +#: sql_help.c:2299 sql_help.c:2302 sql_help.c:2303 sql_help.c:3383 +#: sql_help.c:3387 sql_help.c:3390 sql_help.c:3392 sql_help.c:3394 +#: sql_help.c:3396 sql_help.c:3398 sql_help.c:3404 sql_help.c:3406 +#: sql_help.c:3408 sql_help.c:3410 sql_help.c:3412 sql_help.c:3414 +#: sql_help.c:3416 sql_help.c:3417 sql_help.c:3725 sql_help.c:3729 +#: sql_help.c:3732 sql_help.c:3734 sql_help.c:3736 sql_help.c:3738 +#: sql_help.c:3740 sql_help.c:3746 sql_help.c:3748 sql_help.c:3750 +#: sql_help.c:3752 sql_help.c:3754 sql_help.c:3756 sql_help.c:3758 +#: sql_help.c:3759 msgid "role_specification" msgstr "Rollenangabe" -#: sql_help.c:555 sql_help.c:557 sql_help.c:1384 sql_help.c:1855 -#: sql_help.c:2302 sql_help.c:2797 sql_help.c:3218 sql_help.c:4055 +#: sql_help.c:556 sql_help.c:558 sql_help.c:1385 sql_help.c:1856 +#: sql_help.c:2305 sql_help.c:2800 sql_help.c:3221 sql_help.c:4058 msgid "user_name" msgstr "Benutzername" -#: sql_help.c:558 sql_help.c:873 sql_help.c:1373 sql_help.c:2301 -#: sql_help.c:3415 sql_help.c:3757 +#: sql_help.c:559 sql_help.c:874 sql_help.c:1374 sql_help.c:2304 +#: sql_help.c:3418 sql_help.c:3760 msgid "where role_specification can be:" msgstr "wobei Rollenangabe Folgendes sein kann:" -#: sql_help.c:560 +#: sql_help.c:561 msgid "group_name" msgstr "Gruppenname" -#: sql_help.c:578 sql_help.c:1860 sql_help.c:2096 sql_help.c:2128 -#: sql_help.c:2467 sql_help.c:2479 sql_help.c:2492 sql_help.c:2532 -#: sql_help.c:2554 sql_help.c:2566 sql_help.c:3408 sql_help.c:3750 +#: sql_help.c:579 sql_help.c:1861 sql_help.c:2099 sql_help.c:2131 +#: sql_help.c:2470 sql_help.c:2482 sql_help.c:2495 sql_help.c:2535 +#: sql_help.c:2557 sql_help.c:2569 sql_help.c:3411 sql_help.c:3753 msgid "tablespace_name" msgstr "Tablespace-Name" -#: sql_help.c:582 sql_help.c:585 sql_help.c:664 sql_help.c:666 sql_help.c:1147 -#: sql_help.c:1149 sql_help.c:2094 sql_help.c:2126 sql_help.c:2465 -#: sql_help.c:2477 sql_help.c:2490 sql_help.c:2530 sql_help.c:2552 +#: sql_help.c:583 sql_help.c:586 sql_help.c:665 sql_help.c:667 sql_help.c:1148 +#: sql_help.c:1150 sql_help.c:2097 sql_help.c:2129 sql_help.c:2468 +#: sql_help.c:2480 sql_help.c:2493 sql_help.c:2533 sql_help.c:2555 msgid "storage_parameter" msgstr "Storage-Parameter" -#: sql_help.c:608 sql_help.c:1546 sql_help.c:3838 +#: sql_help.c:609 sql_help.c:1547 sql_help.c:3841 msgid "large_object_oid" msgstr "Large-Object-OID" -#: sql_help.c:663 sql_help.c:1145 sql_help.c:1154 sql_help.c:1157 -#: sql_help.c:1465 +#: sql_help.c:664 sql_help.c:1146 sql_help.c:1155 sql_help.c:1158 +#: sql_help.c:1466 msgid "index_name" msgstr "Indexname" -#: sql_help.c:695 sql_help.c:2149 +#: sql_help.c:696 sql_help.c:2152 msgid "res_proc" msgstr "Res-Funktion" -#: sql_help.c:696 sql_help.c:2150 +#: sql_help.c:697 sql_help.c:2153 msgid "join_proc" msgstr "Join-Funktion" -#: sql_help.c:748 sql_help.c:760 sql_help.c:2167 +#: sql_help.c:749 sql_help.c:761 sql_help.c:2170 msgid "strategy_number" msgstr "Strategienummer" -#: sql_help.c:750 sql_help.c:751 sql_help.c:754 sql_help.c:755 sql_help.c:761 -#: sql_help.c:762 sql_help.c:764 sql_help.c:765 sql_help.c:2169 sql_help.c:2170 -#: sql_help.c:2173 sql_help.c:2174 +#: sql_help.c:751 sql_help.c:752 sql_help.c:755 sql_help.c:756 sql_help.c:762 +#: sql_help.c:763 sql_help.c:765 sql_help.c:766 sql_help.c:2172 sql_help.c:2173 +#: sql_help.c:2176 sql_help.c:2177 msgid "op_type" msgstr "Optyp" -#: sql_help.c:752 sql_help.c:2171 +#: sql_help.c:753 sql_help.c:2174 msgid "sort_family_name" msgstr "Sortierfamilienname" -#: sql_help.c:753 sql_help.c:763 sql_help.c:2172 +#: sql_help.c:754 sql_help.c:764 sql_help.c:2175 msgid "support_number" msgstr "Unterst-Nummer" -#: sql_help.c:757 sql_help.c:1799 sql_help.c:2176 sql_help.c:2643 -#: sql_help.c:2645 +#: sql_help.c:758 sql_help.c:1800 sql_help.c:2179 sql_help.c:2646 +#: sql_help.c:2648 msgid "argument_type" msgstr "Argumenttyp" -#: sql_help.c:788 sql_help.c:791 sql_help.c:808 sql_help.c:810 sql_help.c:812 -#: sql_help.c:883 sql_help.c:922 sql_help.c:1271 sql_help.c:1274 -#: sql_help.c:1424 sql_help.c:1464 sql_help.c:1531 sql_help.c:1556 -#: sql_help.c:1561 sql_help.c:1576 sql_help.c:1633 sql_help.c:1638 -#: sql_help.c:1967 sql_help.c:1979 sql_help.c:2088 sql_help.c:2124 -#: sql_help.c:2200 sql_help.c:2215 sql_help.c:2271 sql_help.c:2322 -#: sql_help.c:2353 sql_help.c:2452 sql_help.c:2468 sql_help.c:2480 -#: sql_help.c:2550 sql_help.c:2669 sql_help.c:2846 sql_help.c:3063 -#: sql_help.c:3088 sql_help.c:3194 sql_help.c:3378 sql_help.c:3383 -#: sql_help.c:3429 sql_help.c:3461 sql_help.c:3720 sql_help.c:3725 -#: sql_help.c:3826 sql_help.c:3925 sql_help.c:3927 sql_help.c:3976 -#: sql_help.c:4015 sql_help.c:4164 sql_help.c:4166 sql_help.c:4215 -#: sql_help.c:4249 sql_help.c:4271 sql_help.c:4273 sql_help.c:4274 -#: sql_help.c:4358 sql_help.c:4360 sql_help.c:4409 +#: sql_help.c:789 sql_help.c:792 sql_help.c:809 sql_help.c:811 sql_help.c:813 +#: sql_help.c:884 sql_help.c:923 sql_help.c:1272 sql_help.c:1275 +#: sql_help.c:1425 sql_help.c:1465 sql_help.c:1532 sql_help.c:1557 +#: sql_help.c:1562 sql_help.c:1577 sql_help.c:1634 sql_help.c:1639 +#: sql_help.c:1969 sql_help.c:1981 sql_help.c:2091 sql_help.c:2127 +#: sql_help.c:2203 sql_help.c:2218 sql_help.c:2274 sql_help.c:2325 +#: sql_help.c:2356 sql_help.c:2455 sql_help.c:2471 sql_help.c:2483 +#: sql_help.c:2553 sql_help.c:2672 sql_help.c:2849 sql_help.c:3066 +#: sql_help.c:3091 sql_help.c:3197 sql_help.c:3381 sql_help.c:3386 +#: sql_help.c:3432 sql_help.c:3464 sql_help.c:3723 sql_help.c:3728 +#: sql_help.c:3829 sql_help.c:3928 sql_help.c:3930 sql_help.c:3979 +#: sql_help.c:4018 sql_help.c:4167 sql_help.c:4169 sql_help.c:4218 +#: sql_help.c:4252 sql_help.c:4274 sql_help.c:4276 sql_help.c:4277 +#: sql_help.c:4361 sql_help.c:4363 sql_help.c:4412 msgid "table_name" msgstr "Tabellenname" -#: sql_help.c:793 sql_help.c:2202 +#: sql_help.c:794 sql_help.c:2205 msgid "using_expression" msgstr "Using-Ausdruck" -#: sql_help.c:794 sql_help.c:2203 +#: sql_help.c:795 sql_help.c:2206 msgid "check_expression" msgstr "Check-Ausdruck" -#: sql_help.c:814 sql_help.c:2216 +#: sql_help.c:815 sql_help.c:2219 msgid "publication_parameter" msgstr "Publikationsparameter" -#: sql_help.c:857 sql_help.c:1357 sql_help.c:2068 sql_help.c:2248 -#: sql_help.c:2780 +#: sql_help.c:858 sql_help.c:1358 sql_help.c:2071 sql_help.c:2251 +#: sql_help.c:2783 msgid "password" msgstr "Passwort" -#: sql_help.c:858 sql_help.c:1358 sql_help.c:2069 sql_help.c:2249 -#: sql_help.c:2781 +#: sql_help.c:859 sql_help.c:1359 sql_help.c:2072 sql_help.c:2252 +#: sql_help.c:2784 msgid "timestamp" msgstr "Zeit" -#: sql_help.c:862 sql_help.c:866 sql_help.c:869 sql_help.c:872 sql_help.c:1362 -#: sql_help.c:1366 sql_help.c:1369 sql_help.c:1372 sql_help.c:3388 -#: sql_help.c:3730 +#: sql_help.c:863 sql_help.c:867 sql_help.c:870 sql_help.c:873 sql_help.c:1363 +#: sql_help.c:1367 sql_help.c:1370 sql_help.c:1373 sql_help.c:3391 +#: sql_help.c:3733 msgid "database_name" msgstr "Datenbankname" -#: sql_help.c:916 sql_help.c:2317 +#: sql_help.c:917 sql_help.c:2320 msgid "increment" msgstr "Inkrement" -#: sql_help.c:917 sql_help.c:2318 +#: sql_help.c:918 sql_help.c:2321 msgid "minvalue" msgstr "Minwert" -#: sql_help.c:918 sql_help.c:2319 +#: sql_help.c:919 sql_help.c:2322 msgid "maxvalue" msgstr "Maxwert" -#: sql_help.c:919 sql_help.c:2320 sql_help.c:3923 sql_help.c:4013 -#: sql_help.c:4162 sql_help.c:4291 sql_help.c:4356 +#: sql_help.c:920 sql_help.c:2323 sql_help.c:3926 sql_help.c:4016 +#: sql_help.c:4165 sql_help.c:4294 sql_help.c:4359 msgid "start" msgstr "Start" -#: sql_help.c:920 sql_help.c:1122 +#: sql_help.c:921 sql_help.c:1123 msgid "restart" msgstr "Restart" -#: sql_help.c:921 sql_help.c:2321 +#: sql_help.c:922 sql_help.c:2324 msgid "cache" msgstr "Cache" -#: sql_help.c:978 sql_help.c:2365 +#: sql_help.c:979 sql_help.c:2368 msgid "conninfo" msgstr "Verbindungsinfo" -#: sql_help.c:980 sql_help.c:2366 +#: sql_help.c:981 sql_help.c:2369 msgid "publication_name" msgstr "Publikationsname" -#: sql_help.c:981 +#: sql_help.c:982 msgid "set_publication_option" msgstr "SET-Publikationsoption" -#: sql_help.c:984 +#: sql_help.c:985 msgid "refresh_option" msgstr "Refresh-Option" -#: sql_help.c:989 sql_help.c:2367 +#: sql_help.c:990 sql_help.c:2370 msgid "subscription_parameter" msgstr "Subskriptionsparameter" -#: sql_help.c:1100 sql_help.c:1103 +#: sql_help.c:1101 sql_help.c:1104 msgid "partition_name" msgstr "Partitionsname" -#: sql_help.c:1101 sql_help.c:1984 sql_help.c:2485 +#: sql_help.c:1102 sql_help.c:1986 sql_help.c:2488 msgid "partition_bound_spec" msgstr "Partitionsbegrenzungsangabe" -#: sql_help.c:1119 sql_help.c:2497 +#: sql_help.c:1120 sql_help.c:2500 msgid "sequence_options" msgstr "Sequenzoptionen" -#: sql_help.c:1121 +#: sql_help.c:1122 msgid "sequence_option" msgstr "Sequenzoption" -#: sql_help.c:1133 +#: sql_help.c:1134 msgid "table_constraint_using_index" msgstr "Tabellen-Constraint-für-Index" -#: sql_help.c:1141 sql_help.c:1142 sql_help.c:1143 sql_help.c:1144 +#: sql_help.c:1142 sql_help.c:1143 sql_help.c:1144 sql_help.c:1145 msgid "rewrite_rule_name" msgstr "Regelname" -#: sql_help.c:1155 +#: sql_help.c:1156 msgid "and table_constraint_using_index is:" msgstr "und Tabellen-Constraint-für-Index Folgendes ist:" -#: sql_help.c:1173 sql_help.c:1176 sql_help.c:2569 +#: sql_help.c:1174 sql_help.c:1177 sql_help.c:2572 msgid "tablespace_option" msgstr "Tablespace-Option" -#: sql_help.c:1197 sql_help.c:1200 sql_help.c:1206 sql_help.c:1210 +#: sql_help.c:1198 sql_help.c:1201 sql_help.c:1207 sql_help.c:1211 msgid "token_type" msgstr "Tokentyp" -#: sql_help.c:1198 sql_help.c:1201 +#: sql_help.c:1199 sql_help.c:1202 msgid "dictionary_name" msgstr "Wörterbuchname" -#: sql_help.c:1203 sql_help.c:1207 +#: sql_help.c:1204 sql_help.c:1208 msgid "old_dictionary" msgstr "altes_Wörterbuch" -#: sql_help.c:1204 sql_help.c:1208 +#: sql_help.c:1205 sql_help.c:1209 msgid "new_dictionary" msgstr "neues_Wörterbuch" -#: sql_help.c:1300 sql_help.c:1313 sql_help.c:1316 sql_help.c:1317 -#: sql_help.c:2720 +#: sql_help.c:1301 sql_help.c:1314 sql_help.c:1317 sql_help.c:1318 +#: sql_help.c:2723 msgid "attribute_name" msgstr "Attributname" -#: sql_help.c:1301 +#: sql_help.c:1302 msgid "new_attribute_name" msgstr "neuer_Attributname" -#: sql_help.c:1307 sql_help.c:1311 +#: sql_help.c:1308 sql_help.c:1312 msgid "new_enum_value" msgstr "neuer_Enum-Wert" -#: sql_help.c:1308 +#: sql_help.c:1309 msgid "neighbor_enum_value" msgstr "Nachbar-Enum-Wert" -#: sql_help.c:1310 +#: sql_help.c:1311 msgid "existing_enum_value" msgstr "existierender_Enum-Wert" -#: sql_help.c:1385 sql_help.c:1976 sql_help.c:1985 sql_help.c:2333 -#: sql_help.c:2798 sql_help.c:3219 sql_help.c:3394 sql_help.c:3430 -#: sql_help.c:3736 +#: sql_help.c:1386 sql_help.c:1978 sql_help.c:1987 sql_help.c:2336 +#: sql_help.c:2801 sql_help.c:3222 sql_help.c:3397 sql_help.c:3433 +#: sql_help.c:3739 msgid "server_name" msgstr "Servername" -#: sql_help.c:1413 sql_help.c:1416 sql_help.c:2813 +#: sql_help.c:1414 sql_help.c:1417 sql_help.c:2816 msgid "view_option_name" msgstr "Sichtoptionsname" -#: sql_help.c:1414 sql_help.c:2814 +#: sql_help.c:1415 sql_help.c:2817 msgid "view_option_value" msgstr "Sichtoptionswert" -#: sql_help.c:1439 sql_help.c:4071 sql_help.c:4073 sql_help.c:4097 +#: sql_help.c:1440 sql_help.c:4074 sql_help.c:4076 sql_help.c:4100 msgid "transaction_mode" msgstr "Transaktionsmodus" -#: sql_help.c:1440 sql_help.c:4074 sql_help.c:4098 +#: sql_help.c:1441 sql_help.c:4077 sql_help.c:4101 msgid "where transaction_mode is one of:" msgstr "wobei Transaktionsmodus Folgendes sein kann:" -#: sql_help.c:1528 +#: sql_help.c:1529 msgid "relation_name" msgstr "Relationsname" -#: sql_help.c:1533 sql_help.c:3390 sql_help.c:3732 +#: sql_help.c:1534 sql_help.c:3393 sql_help.c:3735 msgid "domain_name" msgstr "Domänenname" -#: sql_help.c:1555 +#: sql_help.c:1556 msgid "policy_name" msgstr "Policy-Name" -#: sql_help.c:1560 +#: sql_help.c:1561 msgid "rule_name" msgstr "Regelname" -#: sql_help.c:1579 +#: sql_help.c:1580 msgid "text" msgstr "Text" -#: sql_help.c:1604 sql_help.c:3574 sql_help.c:3773 +#: sql_help.c:1605 sql_help.c:3577 sql_help.c:3776 msgid "transaction_id" msgstr "Transaktions-ID" -#: sql_help.c:1635 sql_help.c:1641 sql_help.c:3500 +#: sql_help.c:1636 sql_help.c:1642 sql_help.c:3503 msgid "filename" msgstr "Dateiname" -#: sql_help.c:1636 sql_help.c:1642 sql_help.c:2273 sql_help.c:2274 -#: sql_help.c:2275 +#: sql_help.c:1637 sql_help.c:1643 sql_help.c:2276 sql_help.c:2277 +#: sql_help.c:2278 msgid "command" msgstr "Befehl" -#: sql_help.c:1640 sql_help.c:2129 sql_help.c:2555 sql_help.c:2815 -#: sql_help.c:2833 sql_help.c:3465 +#: sql_help.c:1641 sql_help.c:2132 sql_help.c:2558 sql_help.c:2818 +#: sql_help.c:2836 sql_help.c:3468 msgid "query" msgstr "Anfrage" -#: sql_help.c:1644 sql_help.c:3265 +#: sql_help.c:1645 sql_help.c:3268 msgid "where option can be one of:" msgstr "wobei Option eine der folgenden sein kann:" -#: sql_help.c:1645 +#: sql_help.c:1646 msgid "format_name" msgstr "Formatname" -#: sql_help.c:1646 sql_help.c:1647 sql_help.c:1650 sql_help.c:3266 -#: sql_help.c:3267 sql_help.c:3268 sql_help.c:3269 sql_help.c:3270 -#: sql_help.c:3271 +#: sql_help.c:1647 sql_help.c:1648 sql_help.c:1651 sql_help.c:3269 +#: sql_help.c:3270 sql_help.c:3271 sql_help.c:3272 sql_help.c:3273 +#: sql_help.c:3274 msgid "boolean" msgstr "boolean" -#: sql_help.c:1648 +#: sql_help.c:1649 msgid "delimiter_character" msgstr "Trennzeichen" -#: sql_help.c:1649 +#: sql_help.c:1650 msgid "null_string" msgstr "Null-Zeichenkette" -#: sql_help.c:1651 +#: sql_help.c:1652 msgid "quote_character" msgstr "Quote-Zeichen" -#: sql_help.c:1652 +#: sql_help.c:1653 msgid "escape_character" msgstr "Escape-Zeichen" -#: sql_help.c:1656 +#: sql_help.c:1657 msgid "encoding_name" msgstr "Kodierungsname" -#: sql_help.c:1667 +#: sql_help.c:1668 msgid "access_method_type" msgstr "Zugriffsmethodentyp" -#: sql_help.c:1733 sql_help.c:1752 sql_help.c:1755 +#: sql_help.c:1734 sql_help.c:1753 sql_help.c:1756 msgid "arg_data_type" msgstr "Arg-Datentyp" -#: sql_help.c:1734 sql_help.c:1756 sql_help.c:1764 +#: sql_help.c:1735 sql_help.c:1757 sql_help.c:1765 msgid "sfunc" msgstr "Übergangsfunktion" -#: sql_help.c:1735 sql_help.c:1757 sql_help.c:1765 +#: sql_help.c:1736 sql_help.c:1758 sql_help.c:1766 msgid "state_data_type" msgstr "Zustandsdatentyp" -#: sql_help.c:1736 sql_help.c:1758 sql_help.c:1766 +#: sql_help.c:1737 sql_help.c:1759 sql_help.c:1767 msgid "state_data_size" msgstr "Zustandsdatengröße" -#: sql_help.c:1737 sql_help.c:1759 sql_help.c:1767 +#: sql_help.c:1738 sql_help.c:1760 sql_help.c:1768 msgid "ffunc" msgstr "Abschlussfunktion" -#: sql_help.c:1738 sql_help.c:1768 +#: sql_help.c:1739 sql_help.c:1769 msgid "combinefunc" msgstr "Combine-Funktion" -#: sql_help.c:1739 sql_help.c:1769 +#: sql_help.c:1740 sql_help.c:1770 msgid "serialfunc" msgstr "Serialisierungsfunktion" -#: sql_help.c:1740 sql_help.c:1770 +#: sql_help.c:1741 sql_help.c:1771 msgid "deserialfunc" msgstr "Deserialisierungsfunktion" -#: sql_help.c:1741 sql_help.c:1760 sql_help.c:1771 +#: sql_help.c:1742 sql_help.c:1761 sql_help.c:1772 msgid "initial_condition" msgstr "Anfangswert" -#: sql_help.c:1742 sql_help.c:1772 +#: sql_help.c:1743 sql_help.c:1773 msgid "msfunc" msgstr "Moving-Übergangsfunktion" -#: sql_help.c:1743 sql_help.c:1773 +#: sql_help.c:1744 sql_help.c:1774 msgid "minvfunc" msgstr "Moving-Inversfunktion" -#: sql_help.c:1744 sql_help.c:1774 +#: sql_help.c:1745 sql_help.c:1775 msgid "mstate_data_type" msgstr "Moving-Zustandsdatentyp" -#: sql_help.c:1745 sql_help.c:1775 +#: sql_help.c:1746 sql_help.c:1776 msgid "mstate_data_size" msgstr "Moving-Zustandsdatengröße" -#: sql_help.c:1746 sql_help.c:1776 +#: sql_help.c:1747 sql_help.c:1777 msgid "mffunc" msgstr "Moving-Abschlussfunktion" -#: sql_help.c:1747 sql_help.c:1777 +#: sql_help.c:1748 sql_help.c:1778 msgid "minitial_condition" msgstr "Moving-Anfangswert" -#: sql_help.c:1748 sql_help.c:1778 +#: sql_help.c:1749 sql_help.c:1779 msgid "sort_operator" msgstr "Sortieroperator" -#: sql_help.c:1761 +#: sql_help.c:1762 msgid "or the old syntax" msgstr "oder die alte Syntax" -#: sql_help.c:1763 +#: sql_help.c:1764 msgid "base_type" msgstr "Basistyp" -#: sql_help.c:1819 +#: sql_help.c:1820 msgid "locale" msgstr "Locale" -#: sql_help.c:1820 sql_help.c:1858 +#: sql_help.c:1821 sql_help.c:1859 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1821 sql_help.c:1859 +#: sql_help.c:1822 sql_help.c:1860 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1822 sql_help.c:3824 +#: sql_help.c:1823 sql_help.c:3827 msgid "provider" msgstr "Provider" -#: sql_help.c:1823 sql_help.c:1914 +#: sql_help.c:1824 sql_help.c:1916 msgid "version" msgstr "Version" -#: sql_help.c:1825 +#: sql_help.c:1826 msgid "existing_collation" msgstr "existierende_Sortierfolge" -#: sql_help.c:1835 +#: sql_help.c:1836 msgid "source_encoding" msgstr "Quellkodierung" -#: sql_help.c:1836 +#: sql_help.c:1837 msgid "dest_encoding" msgstr "Zielkodierung" -#: sql_help.c:1856 sql_help.c:2595 +#: sql_help.c:1857 sql_help.c:2598 msgid "template" msgstr "Vorlage" -#: sql_help.c:1857 +#: sql_help.c:1858 msgid "encoding" msgstr "Kodierung" -#: sql_help.c:1883 +#: sql_help.c:1884 msgid "constraint" msgstr "Constraint" -#: sql_help.c:1884 +#: sql_help.c:1885 msgid "where constraint is:" msgstr "wobei Constraint Folgendes ist:" -#: sql_help.c:1898 sql_help.c:2270 sql_help.c:2668 +#: sql_help.c:1899 sql_help.c:2273 sql_help.c:2671 msgid "event" msgstr "Ereignis" -#: sql_help.c:1899 +#: sql_help.c:1900 msgid "filter_variable" msgstr "Filtervariable" -#: sql_help.c:1915 +#: sql_help.c:1901 +msgid "filter_value" +msgstr "Filterwert" + +#: sql_help.c:1917 msgid "old_version" msgstr "alte_Version" -#: sql_help.c:1988 sql_help.c:2493 +#: sql_help.c:1990 sql_help.c:2496 msgid "where column_constraint is:" msgstr "wobei Spalten-Constraint Folgendes ist:" -#: sql_help.c:1991 sql_help.c:2023 sql_help.c:2496 +#: sql_help.c:1993 sql_help.c:2026 sql_help.c:2499 msgid "default_expr" msgstr "Vorgabeausdruck" -#: sql_help.c:1992 sql_help.c:2504 +#: sql_help.c:1994 sql_help.c:2507 msgid "and table_constraint is:" msgstr "und Tabellen-Constraint Folgendes ist:" -#: sql_help.c:2024 +#: sql_help.c:2027 msgid "rettype" msgstr "Rückgabetyp" -#: sql_help.c:2026 +#: sql_help.c:2029 msgid "column_type" msgstr "Spaltentyp" -#: sql_help.c:2034 +#: sql_help.c:2037 msgid "definition" msgstr "Definition" -#: sql_help.c:2035 +#: sql_help.c:2038 msgid "obj_file" msgstr "Objektdatei" -#: sql_help.c:2036 +#: sql_help.c:2039 msgid "link_symbol" msgstr "Linksymbol" -#: sql_help.c:2037 +#: sql_help.c:2040 msgid "attribute" msgstr "Attribut" -#: sql_help.c:2075 sql_help.c:2255 sql_help.c:2787 +#: sql_help.c:2078 sql_help.c:2258 sql_help.c:2790 msgid "uid" msgstr "Uid" -#: sql_help.c:2089 +#: sql_help.c:2092 msgid "method" msgstr "Methode" -#: sql_help.c:2093 sql_help.c:2464 sql_help.c:2476 sql_help.c:2489 -#: sql_help.c:2536 sql_help.c:3474 +#: sql_help.c:2096 sql_help.c:2467 sql_help.c:2479 sql_help.c:2492 +#: sql_help.c:2539 sql_help.c:3477 msgid "opclass" msgstr "Opklasse" -#: sql_help.c:2097 sql_help.c:2515 +#: sql_help.c:2100 sql_help.c:2518 msgid "predicate" msgstr "Prädikat" -#: sql_help.c:2109 +#: sql_help.c:2112 msgid "call_handler" msgstr "Handler" -#: sql_help.c:2110 +#: sql_help.c:2113 msgid "inline_handler" msgstr "Inline-Handler" -#: sql_help.c:2111 +#: sql_help.c:2114 msgid "valfunction" msgstr "Valfunktion" -#: sql_help.c:2147 +#: sql_help.c:2150 msgid "com_op" msgstr "Kommutator-Op" -#: sql_help.c:2148 +#: sql_help.c:2151 msgid "neg_op" msgstr "Umkehrungs-Op" -#: sql_help.c:2166 +#: sql_help.c:2169 msgid "family_name" msgstr "Familienname" -#: sql_help.c:2177 +#: sql_help.c:2180 msgid "storage_type" msgstr "Storage-Typ" -#: sql_help.c:2272 sql_help.c:2672 sql_help.c:2849 sql_help.c:3484 -#: sql_help.c:3914 sql_help.c:3916 sql_help.c:4004 sql_help.c:4006 -#: sql_help.c:4153 sql_help.c:4155 sql_help.c:4258 sql_help.c:4347 -#: sql_help.c:4349 +#: sql_help.c:2275 sql_help.c:2675 sql_help.c:2852 sql_help.c:3487 +#: sql_help.c:3917 sql_help.c:3919 sql_help.c:4007 sql_help.c:4009 +#: sql_help.c:4156 sql_help.c:4158 sql_help.c:4261 sql_help.c:4350 +#: sql_help.c:4352 msgid "condition" msgstr "Bedingung" -#: sql_help.c:2276 sql_help.c:2675 +#: sql_help.c:2279 sql_help.c:2678 msgid "where event can be one of:" msgstr "wobei Ereignis eins der folgenden sein kann:" -#: sql_help.c:2295 sql_help.c:2297 +#: sql_help.c:2298 sql_help.c:2300 msgid "schema_element" msgstr "Schemaelement" -#: sql_help.c:2334 +#: sql_help.c:2337 msgid "server_type" msgstr "Servertyp" -#: sql_help.c:2335 +#: sql_help.c:2338 msgid "server_version" msgstr "Serverversion" -#: sql_help.c:2336 sql_help.c:3392 sql_help.c:3734 +#: sql_help.c:2339 sql_help.c:3395 sql_help.c:3737 msgid "fdw_name" msgstr "FDW-Name" -#: sql_help.c:2349 +#: sql_help.c:2352 msgid "statistics_name" msgstr "Statistikname" -#: sql_help.c:2350 +#: sql_help.c:2353 msgid "statistics_kind" msgstr "Statistikart" -#: sql_help.c:2364 +#: sql_help.c:2367 msgid "subscription_name" msgstr "Subskriptionsname" -#: sql_help.c:2458 +#: sql_help.c:2461 msgid "source_table" msgstr "Quelltabelle" -#: sql_help.c:2459 +#: sql_help.c:2462 msgid "like_option" msgstr "Like-Option" -#: sql_help.c:2498 sql_help.c:2499 sql_help.c:2508 sql_help.c:2510 -#: sql_help.c:2514 +#: sql_help.c:2501 sql_help.c:2502 sql_help.c:2511 sql_help.c:2513 +#: sql_help.c:2517 msgid "index_parameters" msgstr "Indexparameter" -#: sql_help.c:2500 sql_help.c:2517 +#: sql_help.c:2503 sql_help.c:2520 msgid "reftable" msgstr "Reftabelle" -#: sql_help.c:2501 sql_help.c:2518 +#: sql_help.c:2504 sql_help.c:2521 msgid "refcolumn" msgstr "Refspalte" -#: sql_help.c:2512 +#: sql_help.c:2515 msgid "exclude_element" msgstr "Exclude-Element" -#: sql_help.c:2513 sql_help.c:3921 sql_help.c:4011 sql_help.c:4160 -#: sql_help.c:4289 sql_help.c:4354 +#: sql_help.c:2516 sql_help.c:3924 sql_help.c:4014 sql_help.c:4163 +#: sql_help.c:4292 sql_help.c:4357 msgid "operator" msgstr "Operator" -#: sql_help.c:2521 +#: sql_help.c:2524 msgid "and like_option is:" msgstr "und Like-Option Folgendes ist:" -#: sql_help.c:2522 +#: sql_help.c:2525 msgid "and partition_bound_spec is:" msgstr "und Partitionsbegrenzungsangabe Folgendes ist:" -#: sql_help.c:2523 sql_help.c:2525 sql_help.c:2527 +#: sql_help.c:2526 sql_help.c:2528 sql_help.c:2530 msgid "numeric_literal" msgstr "numerische_Konstante" -#: sql_help.c:2524 sql_help.c:2526 sql_help.c:2528 +#: sql_help.c:2527 sql_help.c:2529 sql_help.c:2531 msgid "string_literal" msgstr "Zeichenkettenkonstante" -#: sql_help.c:2529 +#: sql_help.c:2532 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "Indexparameter bei UNIQUE-, PRIMARY KEY- und EXCLUDE-Constraints sind:" -#: sql_help.c:2533 +#: sql_help.c:2536 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "Exclude-Element in einem EXCLUDE-Constraint ist:" -#: sql_help.c:2568 +#: sql_help.c:2571 msgid "directory" msgstr "Verzeichnis" -#: sql_help.c:2582 +#: sql_help.c:2585 msgid "parser_name" msgstr "Parser-Name" -#: sql_help.c:2583 +#: sql_help.c:2586 msgid "source_config" msgstr "Quellkonfig" -#: sql_help.c:2612 +#: sql_help.c:2615 msgid "start_function" msgstr "Startfunktion" -#: sql_help.c:2613 +#: sql_help.c:2616 msgid "gettoken_function" msgstr "Gettext-Funktion" -#: sql_help.c:2614 +#: sql_help.c:2617 msgid "end_function" msgstr "Endfunktion" -#: sql_help.c:2615 +#: sql_help.c:2618 msgid "lextypes_function" msgstr "Lextypenfunktion" -#: sql_help.c:2616 +#: sql_help.c:2619 msgid "headline_function" msgstr "Headline-Funktion" -#: sql_help.c:2628 +#: sql_help.c:2631 msgid "init_function" msgstr "Init-Funktion" -#: sql_help.c:2629 +#: sql_help.c:2632 msgid "lexize_function" msgstr "Lexize-Funktion" -#: sql_help.c:2642 +#: sql_help.c:2645 msgid "from_sql_function_name" msgstr "From-SQL-Funktionsname" -#: sql_help.c:2644 +#: sql_help.c:2647 msgid "to_sql_function_name" msgstr "To-SQL-Funktionsname" -#: sql_help.c:2670 +#: sql_help.c:2673 msgid "referenced_table_name" msgstr "verwiesener_Tabellenname" -#: sql_help.c:2671 +#: sql_help.c:2674 msgid "transition_relation_name" msgstr "Übergangsrelationsname" -#: sql_help.c:2674 +#: sql_help.c:2677 msgid "arguments" msgstr "Argumente" -#: sql_help.c:2724 sql_help.c:3849 +#: sql_help.c:2727 sql_help.c:3852 msgid "label" msgstr "Label" -#: sql_help.c:2726 +#: sql_help.c:2729 msgid "subtype" msgstr "Untertyp" -#: sql_help.c:2727 +#: sql_help.c:2730 msgid "subtype_operator_class" msgstr "Untertyp-Operatorklasse" -#: sql_help.c:2729 +#: sql_help.c:2732 msgid "canonical_function" msgstr "Canonical-Funktion" -#: sql_help.c:2730 +#: sql_help.c:2733 msgid "subtype_diff_function" msgstr "Untertyp-Diff-Funktion" -#: sql_help.c:2732 +#: sql_help.c:2735 msgid "input_function" msgstr "Eingabefunktion" -#: sql_help.c:2733 +#: sql_help.c:2736 msgid "output_function" msgstr "Ausgabefunktion" -#: sql_help.c:2734 +#: sql_help.c:2737 msgid "receive_function" msgstr "Empfangsfunktion" -#: sql_help.c:2735 +#: sql_help.c:2738 msgid "send_function" msgstr "Sendefunktion" -#: sql_help.c:2736 +#: sql_help.c:2739 msgid "type_modifier_input_function" msgstr "Typmod-Eingabefunktion" -#: sql_help.c:2737 +#: sql_help.c:2740 msgid "type_modifier_output_function" msgstr "Typmod-Ausgabefunktion" -#: sql_help.c:2738 +#: sql_help.c:2741 msgid "analyze_function" msgstr "Analyze-Funktion" -#: sql_help.c:2739 +#: sql_help.c:2742 msgid "internallength" msgstr "interne_Länge" -#: sql_help.c:2740 +#: sql_help.c:2743 msgid "alignment" msgstr "Ausrichtung" -#: sql_help.c:2741 +#: sql_help.c:2744 msgid "storage" msgstr "Speicherung" -#: sql_help.c:2742 +#: sql_help.c:2745 msgid "like_type" msgstr "wie_Typ" -#: sql_help.c:2743 +#: sql_help.c:2746 msgid "category" msgstr "Kategorie" -#: sql_help.c:2744 +#: sql_help.c:2747 msgid "preferred" msgstr "bevorzugt" -#: sql_help.c:2745 +#: sql_help.c:2748 msgid "default" msgstr "Vorgabewert" -#: sql_help.c:2746 +#: sql_help.c:2749 msgid "element" msgstr "Element" -#: sql_help.c:2747 +#: sql_help.c:2750 msgid "delimiter" msgstr "Trennzeichen" -#: sql_help.c:2748 +#: sql_help.c:2751 msgid "collatable" msgstr "sortierbar" -#: sql_help.c:2845 sql_help.c:3460 sql_help.c:3909 sql_help.c:3998 -#: sql_help.c:4148 sql_help.c:4248 sql_help.c:4342 +#: sql_help.c:2848 sql_help.c:3463 sql_help.c:3912 sql_help.c:4001 +#: sql_help.c:4151 sql_help.c:4251 sql_help.c:4345 msgid "with_query" msgstr "With-Anfrage" -#: sql_help.c:2847 sql_help.c:3462 sql_help.c:3928 sql_help.c:3934 -#: sql_help.c:3937 sql_help.c:3941 sql_help.c:3945 sql_help.c:3953 -#: sql_help.c:4167 sql_help.c:4173 sql_help.c:4176 sql_help.c:4180 -#: sql_help.c:4184 sql_help.c:4192 sql_help.c:4250 sql_help.c:4361 -#: sql_help.c:4367 sql_help.c:4370 sql_help.c:4374 sql_help.c:4378 -#: sql_help.c:4386 +#: sql_help.c:2850 sql_help.c:3465 sql_help.c:3931 sql_help.c:3937 +#: sql_help.c:3940 sql_help.c:3944 sql_help.c:3948 sql_help.c:3956 +#: sql_help.c:4170 sql_help.c:4176 sql_help.c:4179 sql_help.c:4183 +#: sql_help.c:4187 sql_help.c:4195 sql_help.c:4253 sql_help.c:4364 +#: sql_help.c:4370 sql_help.c:4373 sql_help.c:4377 sql_help.c:4381 +#: sql_help.c:4389 msgid "alias" msgstr "Alias" -#: sql_help.c:2848 sql_help.c:3913 sql_help.c:3955 sql_help.c:3957 -#: sql_help.c:4003 sql_help.c:4152 sql_help.c:4194 sql_help.c:4196 -#: sql_help.c:4257 sql_help.c:4346 sql_help.c:4388 sql_help.c:4390 +#: sql_help.c:2851 sql_help.c:3916 sql_help.c:3958 sql_help.c:3960 +#: sql_help.c:4006 sql_help.c:4155 sql_help.c:4197 sql_help.c:4199 +#: sql_help.c:4260 sql_help.c:4349 sql_help.c:4391 sql_help.c:4393 msgid "from_item" msgstr "From-Element" -#: sql_help.c:2850 sql_help.c:3297 sql_help.c:3541 sql_help.c:4259 +#: sql_help.c:2853 sql_help.c:3300 sql_help.c:3544 sql_help.c:4262 msgid "cursor_name" msgstr "Cursor-Name" -#: sql_help.c:2851 sql_help.c:3468 sql_help.c:4260 +#: sql_help.c:2854 sql_help.c:3471 sql_help.c:4263 msgid "output_expression" msgstr "Ausgabeausdruck" -#: sql_help.c:2852 sql_help.c:3469 sql_help.c:3912 sql_help.c:4001 -#: sql_help.c:4151 sql_help.c:4261 sql_help.c:4345 +#: sql_help.c:2855 sql_help.c:3472 sql_help.c:3915 sql_help.c:4004 +#: sql_help.c:4154 sql_help.c:4264 sql_help.c:4348 msgid "output_name" msgstr "Ausgabename" -#: sql_help.c:2868 +#: sql_help.c:2871 msgid "code" msgstr "Code" -#: sql_help.c:3243 +#: sql_help.c:3246 msgid "parameter" msgstr "Parameter" -#: sql_help.c:3263 sql_help.c:3264 sql_help.c:3566 +#: sql_help.c:3266 sql_help.c:3267 sql_help.c:3569 msgid "statement" msgstr "Anweisung" -#: sql_help.c:3296 sql_help.c:3540 +#: sql_help.c:3299 sql_help.c:3543 msgid "direction" msgstr "Richtung" -#: sql_help.c:3298 sql_help.c:3542 +#: sql_help.c:3301 sql_help.c:3545 msgid "where direction can be empty or one of:" msgstr "wobei Richtung leer sein kann oder Folgendes:" -#: sql_help.c:3299 sql_help.c:3300 sql_help.c:3301 sql_help.c:3302 -#: sql_help.c:3303 sql_help.c:3543 sql_help.c:3544 sql_help.c:3545 -#: sql_help.c:3546 sql_help.c:3547 sql_help.c:3922 sql_help.c:3924 -#: sql_help.c:4012 sql_help.c:4014 sql_help.c:4161 sql_help.c:4163 -#: sql_help.c:4290 sql_help.c:4292 sql_help.c:4355 sql_help.c:4357 +#: sql_help.c:3302 sql_help.c:3303 sql_help.c:3304 sql_help.c:3305 +#: sql_help.c:3306 sql_help.c:3546 sql_help.c:3547 sql_help.c:3548 +#: sql_help.c:3549 sql_help.c:3550 sql_help.c:3925 sql_help.c:3927 +#: sql_help.c:4015 sql_help.c:4017 sql_help.c:4164 sql_help.c:4166 +#: sql_help.c:4293 sql_help.c:4295 sql_help.c:4358 sql_help.c:4360 msgid "count" msgstr "Anzahl" -#: sql_help.c:3385 sql_help.c:3727 +#: sql_help.c:3388 sql_help.c:3730 msgid "sequence_name" msgstr "Sequenzname" -#: sql_help.c:3398 sql_help.c:3740 +#: sql_help.c:3401 sql_help.c:3743 msgid "arg_name" msgstr "Argname" -#: sql_help.c:3399 sql_help.c:3741 +#: sql_help.c:3402 sql_help.c:3744 msgid "arg_type" msgstr "Argtyp" -#: sql_help.c:3404 sql_help.c:3746 +#: sql_help.c:3407 sql_help.c:3749 msgid "loid" msgstr "Large-Object-OID" -#: sql_help.c:3428 +#: sql_help.c:3431 msgid "remote_schema" msgstr "fernes_Schema" -#: sql_help.c:3431 +#: sql_help.c:3434 msgid "local_schema" msgstr "lokales_Schema" -#: sql_help.c:3466 +#: sql_help.c:3469 msgid "conflict_target" msgstr "Konfliktziel" -#: sql_help.c:3467 +#: sql_help.c:3470 msgid "conflict_action" msgstr "Konfliktaktion" -#: sql_help.c:3470 +#: sql_help.c:3473 msgid "where conflict_target can be one of:" msgstr "wobei Konfliktziel Folgendes sein kann:" -#: sql_help.c:3471 +#: sql_help.c:3474 msgid "index_column_name" msgstr "Indexspaltenname" -#: sql_help.c:3472 +#: sql_help.c:3475 msgid "index_expression" msgstr "Indexausdruck" -#: sql_help.c:3475 +#: sql_help.c:3478 msgid "index_predicate" msgstr "Indexprädikat" -#: sql_help.c:3477 +#: sql_help.c:3480 msgid "and conflict_action is one of:" msgstr "und Konfliktaktion Folgendes sein kann:" -#: sql_help.c:3483 sql_help.c:4256 +#: sql_help.c:3486 sql_help.c:4259 msgid "sub-SELECT" msgstr "Sub-SELECT" -#: sql_help.c:3492 sql_help.c:3555 sql_help.c:4232 +#: sql_help.c:3495 sql_help.c:3558 sql_help.c:4235 msgid "channel" msgstr "Kanal" -#: sql_help.c:3514 +#: sql_help.c:3517 msgid "lockmode" msgstr "Sperrmodus" -#: sql_help.c:3515 +#: sql_help.c:3518 msgid "where lockmode is one of:" msgstr "wobei Sperrmodus Folgendes sein kann:" -#: sql_help.c:3556 +#: sql_help.c:3559 msgid "payload" msgstr "Payload" -#: sql_help.c:3583 +#: sql_help.c:3586 msgid "old_role" msgstr "alte_Rolle" -#: sql_help.c:3584 +#: sql_help.c:3587 msgid "new_role" msgstr "neue_Rolle" -#: sql_help.c:3609 sql_help.c:3781 sql_help.c:3789 +#: sql_help.c:3612 sql_help.c:3784 sql_help.c:3792 msgid "savepoint_name" msgstr "Sicherungspunktsname" -#: sql_help.c:3915 sql_help.c:3967 sql_help.c:4154 sql_help.c:4206 -#: sql_help.c:4348 sql_help.c:4400 +#: sql_help.c:3918 sql_help.c:3970 sql_help.c:4157 sql_help.c:4209 +#: sql_help.c:4351 sql_help.c:4403 msgid "grouping_element" msgstr "Gruppierelement" -#: sql_help.c:3917 sql_help.c:4007 sql_help.c:4156 sql_help.c:4350 +#: sql_help.c:3920 sql_help.c:4010 sql_help.c:4159 sql_help.c:4353 msgid "window_name" msgstr "Fenstername" -#: sql_help.c:3918 sql_help.c:4008 sql_help.c:4157 sql_help.c:4351 +#: sql_help.c:3921 sql_help.c:4011 sql_help.c:4160 sql_help.c:4354 msgid "window_definition" msgstr "Fensterdefinition" -#: sql_help.c:3919 sql_help.c:3933 sql_help.c:3971 sql_help.c:4009 -#: sql_help.c:4158 sql_help.c:4172 sql_help.c:4210 sql_help.c:4352 -#: sql_help.c:4366 sql_help.c:4404 +#: sql_help.c:3922 sql_help.c:3936 sql_help.c:3974 sql_help.c:4012 +#: sql_help.c:4161 sql_help.c:4175 sql_help.c:4213 sql_help.c:4355 +#: sql_help.c:4369 sql_help.c:4407 msgid "select" msgstr "Select" -#: sql_help.c:3926 sql_help.c:4165 sql_help.c:4359 +#: sql_help.c:3929 sql_help.c:4168 sql_help.c:4362 msgid "where from_item can be one of:" msgstr "wobei From-Element Folgendes sein kann:" -#: sql_help.c:3929 sql_help.c:3935 sql_help.c:3938 sql_help.c:3942 -#: sql_help.c:3954 sql_help.c:4168 sql_help.c:4174 sql_help.c:4177 -#: sql_help.c:4181 sql_help.c:4193 sql_help.c:4362 sql_help.c:4368 -#: sql_help.c:4371 sql_help.c:4375 sql_help.c:4387 +#: sql_help.c:3932 sql_help.c:3938 sql_help.c:3941 sql_help.c:3945 +#: sql_help.c:3957 sql_help.c:4171 sql_help.c:4177 sql_help.c:4180 +#: sql_help.c:4184 sql_help.c:4196 sql_help.c:4365 sql_help.c:4371 +#: sql_help.c:4374 sql_help.c:4378 sql_help.c:4390 msgid "column_alias" msgstr "Spaltenalias" -#: sql_help.c:3930 sql_help.c:4169 sql_help.c:4363 +#: sql_help.c:3933 sql_help.c:4172 sql_help.c:4366 msgid "sampling_method" msgstr "Stichprobenmethode" -#: sql_help.c:3931 sql_help.c:3940 sql_help.c:3944 sql_help.c:3948 -#: sql_help.c:3951 sql_help.c:4170 sql_help.c:4179 sql_help.c:4183 -#: sql_help.c:4187 sql_help.c:4190 sql_help.c:4364 sql_help.c:4373 -#: sql_help.c:4377 sql_help.c:4381 sql_help.c:4384 +#: sql_help.c:3934 sql_help.c:3943 sql_help.c:3947 sql_help.c:3951 +#: sql_help.c:3954 sql_help.c:4173 sql_help.c:4182 sql_help.c:4186 +#: sql_help.c:4190 sql_help.c:4193 sql_help.c:4367 sql_help.c:4376 +#: sql_help.c:4380 sql_help.c:4384 sql_help.c:4387 msgid "argument" msgstr "Argument" -#: sql_help.c:3932 sql_help.c:4171 sql_help.c:4365 +#: sql_help.c:3935 sql_help.c:4174 sql_help.c:4368 msgid "seed" msgstr "Startwert" -#: sql_help.c:3936 sql_help.c:3969 sql_help.c:4175 sql_help.c:4208 -#: sql_help.c:4369 sql_help.c:4402 +#: sql_help.c:3939 sql_help.c:3972 sql_help.c:4178 sql_help.c:4211 +#: sql_help.c:4372 sql_help.c:4405 msgid "with_query_name" msgstr "With-Anfragename" -#: sql_help.c:3946 sql_help.c:3949 sql_help.c:3952 sql_help.c:4185 -#: sql_help.c:4188 sql_help.c:4191 sql_help.c:4379 sql_help.c:4382 -#: sql_help.c:4385 +#: sql_help.c:3949 sql_help.c:3952 sql_help.c:3955 sql_help.c:4188 +#: sql_help.c:4191 sql_help.c:4194 sql_help.c:4382 sql_help.c:4385 +#: sql_help.c:4388 msgid "column_definition" msgstr "Spaltendefinition" -#: sql_help.c:3956 sql_help.c:4195 sql_help.c:4389 +#: sql_help.c:3959 sql_help.c:4198 sql_help.c:4392 msgid "join_type" msgstr "Verbundtyp" -#: sql_help.c:3958 sql_help.c:4197 sql_help.c:4391 +#: sql_help.c:3961 sql_help.c:4200 sql_help.c:4394 msgid "join_condition" msgstr "Verbundbedingung" -#: sql_help.c:3959 sql_help.c:4198 sql_help.c:4392 +#: sql_help.c:3962 sql_help.c:4201 sql_help.c:4395 msgid "join_column" msgstr "Verbundspalte" -#: sql_help.c:3960 sql_help.c:4199 sql_help.c:4393 +#: sql_help.c:3963 sql_help.c:4202 sql_help.c:4396 msgid "and grouping_element can be one of:" msgstr "und Gruppierelement eins der folgenden sein kann:" -#: sql_help.c:3968 sql_help.c:4207 sql_help.c:4401 +#: sql_help.c:3971 sql_help.c:4210 sql_help.c:4404 msgid "and with_query is:" msgstr "und With-Anfrage ist:" -#: sql_help.c:3972 sql_help.c:4211 sql_help.c:4405 +#: sql_help.c:3975 sql_help.c:4214 sql_help.c:4408 msgid "values" msgstr "values" -#: sql_help.c:3973 sql_help.c:4212 sql_help.c:4406 +#: sql_help.c:3976 sql_help.c:4215 sql_help.c:4409 msgid "insert" msgstr "insert" -#: sql_help.c:3974 sql_help.c:4213 sql_help.c:4407 +#: sql_help.c:3977 sql_help.c:4216 sql_help.c:4410 msgid "update" msgstr "update" -#: sql_help.c:3975 sql_help.c:4214 sql_help.c:4408 +#: sql_help.c:3978 sql_help.c:4217 sql_help.c:4411 msgid "delete" msgstr "delete" -#: sql_help.c:4002 +#: sql_help.c:4005 msgid "new_table" msgstr "neue_Tabelle" -#: sql_help.c:4027 +#: sql_help.c:4030 msgid "timezone" msgstr "Zeitzone" -#: sql_help.c:4072 +#: sql_help.c:4075 msgid "snapshot_id" msgstr "Snapshot-ID" -#: sql_help.c:4288 +#: sql_help.c:4291 msgid "sort_expression" msgstr "Sortierausdruck" -#: sql_help.c:4415 sql_help.c:5200 +#: sql_help.c:4418 sql_help.c:5203 msgid "abort the current transaction" msgstr "bricht die aktuelle Transaktion ab" -#: sql_help.c:4420 +#: sql_help.c:4423 msgid "change the definition of an aggregate function" msgstr "ändert die Definition einer Aggregatfunktion" -#: sql_help.c:4425 +#: sql_help.c:4428 msgid "change the definition of a collation" msgstr "ändert die Definition einer Sortierfolge" -#: sql_help.c:4430 +#: sql_help.c:4433 msgid "change the definition of a conversion" msgstr "ändert die Definition einer Zeichensatzkonversion" -#: sql_help.c:4435 +#: sql_help.c:4438 msgid "change a database" msgstr "ändert eine Datenbank" -#: sql_help.c:4440 +#: sql_help.c:4443 msgid "define default access privileges" msgstr "definiert vorgegebene Zugriffsprivilegien" -#: sql_help.c:4445 +#: sql_help.c:4448 msgid "change the definition of a domain" msgstr "ändert die Definition einer Domäne" -#: sql_help.c:4450 +#: sql_help.c:4453 msgid "change the definition of an event trigger" msgstr "ändert die Definition eines Ereignistriggers" -#: sql_help.c:4455 +#: sql_help.c:4458 msgid "change the definition of an extension" msgstr "ändert die Definition einer Erweiterung" -#: sql_help.c:4460 +#: sql_help.c:4463 msgid "change the definition of a foreign-data wrapper" msgstr "ändert die Definition eines Fremddaten-Wrappers" -#: sql_help.c:4465 +#: sql_help.c:4468 msgid "change the definition of a foreign table" msgstr "ändert die Definition einer Fremdtabelle" -#: sql_help.c:4470 +#: sql_help.c:4473 msgid "change the definition of a function" msgstr "ändert die Definition einer Funktion" -#: sql_help.c:4475 +#: sql_help.c:4478 msgid "change role name or membership" msgstr "ändert Rollenname oder -mitglieder" -#: sql_help.c:4480 +#: sql_help.c:4483 msgid "change the definition of an index" msgstr "ändert die Definition eines Index" -#: sql_help.c:4485 +#: sql_help.c:4488 msgid "change the definition of a procedural language" msgstr "ändert die Definition einer prozeduralen Sprache" -#: sql_help.c:4490 +#: sql_help.c:4493 msgid "change the definition of a large object" msgstr "ändert die Definition eines Large Object" -#: sql_help.c:4495 +#: sql_help.c:4498 msgid "change the definition of a materialized view" msgstr "ändert die Definition einer materialisierten Sicht" -#: sql_help.c:4500 +#: sql_help.c:4503 msgid "change the definition of an operator" msgstr "ändert die Definition eines Operators" -#: sql_help.c:4505 +#: sql_help.c:4508 msgid "change the definition of an operator class" msgstr "ändert die Definition einer Operatorklasse" -#: sql_help.c:4510 +#: sql_help.c:4513 msgid "change the definition of an operator family" msgstr "ändert die Definition einer Operatorfamilie" -#: sql_help.c:4515 +#: sql_help.c:4518 msgid "change the definition of a row level security policy" msgstr "ändert die Definition einer Policy für Sicherheit auf Zeilenebene" -#: sql_help.c:4520 +#: sql_help.c:4523 msgid "change the definition of a publication" msgstr "ändert die Definition einer Publikation" -#: sql_help.c:4525 sql_help.c:4605 +#: sql_help.c:4528 sql_help.c:4608 msgid "change a database role" msgstr "ändert eine Datenbankrolle" -#: sql_help.c:4530 +#: sql_help.c:4533 msgid "change the definition of a rule" msgstr "ändert die Definition einer Regel" -#: sql_help.c:4535 +#: sql_help.c:4538 msgid "change the definition of a schema" msgstr "ändert die Definition eines Schemas" -#: sql_help.c:4540 +#: sql_help.c:4543 msgid "change the definition of a sequence generator" msgstr "ändert die Definition eines Sequenzgenerators" -#: sql_help.c:4545 +#: sql_help.c:4548 msgid "change the definition of a foreign server" msgstr "ändert die Definition eines Fremdservers" -#: sql_help.c:4550 +#: sql_help.c:4553 msgid "change the definition of an extended statistics object" msgstr "ändert die Definition eines erweiterten Statistikobjekts" -#: sql_help.c:4555 +#: sql_help.c:4558 msgid "change the definition of a subscription" msgstr "ändert die Definition einer Subskription" -#: sql_help.c:4560 +#: sql_help.c:4563 msgid "change a server configuration parameter" msgstr "ändert einen Server-Konfigurationsparameter" -#: sql_help.c:4565 +#: sql_help.c:4568 msgid "change the definition of a table" msgstr "ändert die Definition einer Tabelle" -#: sql_help.c:4570 +#: sql_help.c:4573 msgid "change the definition of a tablespace" msgstr "ändert die Definition eines Tablespace" -#: sql_help.c:4575 +#: sql_help.c:4578 msgid "change the definition of a text search configuration" msgstr "ändert die Definition einer Textsuchekonfiguration" -#: sql_help.c:4580 +#: sql_help.c:4583 msgid "change the definition of a text search dictionary" msgstr "ändert die Definition eines Textsuchewörterbuchs" -#: sql_help.c:4585 +#: sql_help.c:4588 msgid "change the definition of a text search parser" msgstr "ändert die Definition eines Textsucheparsers" -#: sql_help.c:4590 +#: sql_help.c:4593 msgid "change the definition of a text search template" msgstr "ändert die Definition einer Textsuchevorlage" -#: sql_help.c:4595 +#: sql_help.c:4598 msgid "change the definition of a trigger" msgstr "ändert die Definition eines Triggers" -#: sql_help.c:4600 +#: sql_help.c:4603 msgid "change the definition of a type" msgstr "ändert die Definition eines Typs" -#: sql_help.c:4610 +#: sql_help.c:4613 msgid "change the definition of a user mapping" msgstr "ändert die Definition einer Benutzerabbildung" -#: sql_help.c:4615 +#: sql_help.c:4618 msgid "change the definition of a view" msgstr "ändert die Definition einer Sicht" -#: sql_help.c:4620 +#: sql_help.c:4623 msgid "collect statistics about a database" msgstr "sammelt Statistiken über eine Datenbank" -#: sql_help.c:4625 sql_help.c:5265 +#: sql_help.c:4628 sql_help.c:5268 msgid "start a transaction block" msgstr "startet einen Transaktionsblock" -#: sql_help.c:4630 +#: sql_help.c:4633 msgid "force a write-ahead log checkpoint" msgstr "erzwingt einen Checkpoint im Write-Ahead-Log" -#: sql_help.c:4635 +#: sql_help.c:4638 msgid "close a cursor" msgstr "schließt einen Cursor" -#: sql_help.c:4640 +#: sql_help.c:4643 msgid "cluster a table according to an index" msgstr "clustert eine Tabelle nach einem Index" -#: sql_help.c:4645 +#: sql_help.c:4648 msgid "define or change the comment of an object" msgstr "definiert oder ändert den Kommentar eines Objektes" -#: sql_help.c:4650 sql_help.c:5100 +#: sql_help.c:4653 sql_help.c:5103 msgid "commit the current transaction" msgstr "schließt die aktuelle Transaktion ab" -#: sql_help.c:4655 +#: sql_help.c:4658 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "schließt eine Transaktion ab, die vorher für Two-Phase-Commit vorbereitet worden war" -#: sql_help.c:4660 +#: sql_help.c:4663 msgid "copy data between a file and a table" msgstr "kopiert Daten zwischen einer Datei und einer Tabelle" -#: sql_help.c:4665 +#: sql_help.c:4668 msgid "define a new access method" msgstr "definiert eine neue Zugriffsmethode" -#: sql_help.c:4670 +#: sql_help.c:4673 msgid "define a new aggregate function" msgstr "definiert eine neue Aggregatfunktion" -#: sql_help.c:4675 +#: sql_help.c:4678 msgid "define a new cast" msgstr "definiert eine neue Typumwandlung" -#: sql_help.c:4680 +#: sql_help.c:4683 msgid "define a new collation" msgstr "definiert eine neue Sortierfolge" -#: sql_help.c:4685 +#: sql_help.c:4688 msgid "define a new encoding conversion" msgstr "definiert eine neue Kodierungskonversion" -#: sql_help.c:4690 +#: sql_help.c:4693 msgid "create a new database" msgstr "erzeugt eine neue Datenbank" -#: sql_help.c:4695 +#: sql_help.c:4698 msgid "define a new domain" msgstr "definiert eine neue Domäne" -#: sql_help.c:4700 +#: sql_help.c:4703 msgid "define a new event trigger" msgstr "definiert einen neuen Ereignistrigger" -#: sql_help.c:4705 +#: sql_help.c:4708 msgid "install an extension" msgstr "installiert eine Erweiterung" -#: sql_help.c:4710 +#: sql_help.c:4713 msgid "define a new foreign-data wrapper" msgstr "definiert einen neuen Fremddaten-Wrapper" -#: sql_help.c:4715 +#: sql_help.c:4718 msgid "define a new foreign table" msgstr "definiert eine neue Fremdtabelle" -#: sql_help.c:4720 +#: sql_help.c:4723 msgid "define a new function" msgstr "definiert eine neue Funktion" -#: sql_help.c:4725 sql_help.c:4770 sql_help.c:4855 +#: sql_help.c:4728 sql_help.c:4773 sql_help.c:4858 msgid "define a new database role" msgstr "definiert eine neue Datenbankrolle" -#: sql_help.c:4730 +#: sql_help.c:4733 msgid "define a new index" msgstr "definiert einen neuen Index" -#: sql_help.c:4735 +#: sql_help.c:4738 msgid "define a new procedural language" msgstr "definiert eine neue prozedurale Sprache" -#: sql_help.c:4740 +#: sql_help.c:4743 msgid "define a new materialized view" msgstr "definiert eine neue materialisierte Sicht" -#: sql_help.c:4745 +#: sql_help.c:4748 msgid "define a new operator" msgstr "definiert einen neuen Operator" -#: sql_help.c:4750 +#: sql_help.c:4753 msgid "define a new operator class" msgstr "definiert eine neue Operatorklasse" -#: sql_help.c:4755 +#: sql_help.c:4758 msgid "define a new operator family" msgstr "definiert eine neue Operatorfamilie" -#: sql_help.c:4760 +#: sql_help.c:4763 msgid "define a new row level security policy for a table" msgstr "definiert eine neue Policy für Sicherheit auf Zeilenebene für eine Tabelle" -#: sql_help.c:4765 +#: sql_help.c:4768 msgid "define a new publication" msgstr "definiert eine neue Publikation" -#: sql_help.c:4775 +#: sql_help.c:4778 msgid "define a new rewrite rule" msgstr "definiert eine neue Umschreiberegel" -#: sql_help.c:4780 +#: sql_help.c:4783 msgid "define a new schema" msgstr "definiert ein neues Schema" -#: sql_help.c:4785 +#: sql_help.c:4788 msgid "define a new sequence generator" msgstr "definiert einen neuen Sequenzgenerator" -#: sql_help.c:4790 +#: sql_help.c:4793 msgid "define a new foreign server" msgstr "definiert einen neuen Fremdserver" -#: sql_help.c:4795 +#: sql_help.c:4798 msgid "define extended statistics" msgstr "definiert erweiterte Statistiken" -#: sql_help.c:4800 +#: sql_help.c:4803 msgid "define a new subscription" msgstr "definiert eine neue Subskription" -#: sql_help.c:4805 +#: sql_help.c:4808 msgid "define a new table" msgstr "definiert eine neue Tabelle" -#: sql_help.c:4810 sql_help.c:5230 +#: sql_help.c:4813 sql_help.c:5233 msgid "define a new table from the results of a query" msgstr "definiert eine neue Tabelle aus den Ergebnissen einer Anfrage" -#: sql_help.c:4815 +#: sql_help.c:4818 msgid "define a new tablespace" msgstr "definiert einen neuen Tablespace" -#: sql_help.c:4820 +#: sql_help.c:4823 msgid "define a new text search configuration" msgstr "definiert eine neue Textsuchekonfiguration" -#: sql_help.c:4825 +#: sql_help.c:4828 msgid "define a new text search dictionary" msgstr "definiert ein neues Textsuchewörterbuch" -#: sql_help.c:4830 +#: sql_help.c:4833 msgid "define a new text search parser" msgstr "definiert einen neuen Textsucheparser" -#: sql_help.c:4835 +#: sql_help.c:4838 msgid "define a new text search template" msgstr "definiert eine neue Textsuchevorlage" -#: sql_help.c:4840 +#: sql_help.c:4843 msgid "define a new transform" msgstr "definiert eine neue Transformation" -#: sql_help.c:4845 +#: sql_help.c:4848 msgid "define a new trigger" msgstr "definiert einen neuen Trigger" -#: sql_help.c:4850 +#: sql_help.c:4853 msgid "define a new data type" msgstr "definiert einen neuen Datentyp" -#: sql_help.c:4860 +#: sql_help.c:4863 msgid "define a new mapping of a user to a foreign server" msgstr "definiert eine neue Abbildung eines Benutzers auf einen Fremdserver" -#: sql_help.c:4865 +#: sql_help.c:4868 msgid "define a new view" msgstr "definiert eine neue Sicht" -#: sql_help.c:4870 +#: sql_help.c:4873 msgid "deallocate a prepared statement" msgstr "gibt einen vorbereiteten Befehl frei" -#: sql_help.c:4875 +#: sql_help.c:4878 msgid "define a cursor" msgstr "definiert einen Cursor" -#: sql_help.c:4880 +#: sql_help.c:4883 msgid "delete rows of a table" msgstr "löscht Zeilen einer Tabelle" -#: sql_help.c:4885 +#: sql_help.c:4888 msgid "discard session state" msgstr "verwirft den Sitzungszustand" -#: sql_help.c:4890 +#: sql_help.c:4893 msgid "execute an anonymous code block" msgstr "führt einen anonymen Codeblock aus" -#: sql_help.c:4895 +#: sql_help.c:4898 msgid "remove an access method" msgstr "entfernt eine Zugriffsmethode" -#: sql_help.c:4900 +#: sql_help.c:4903 msgid "remove an aggregate function" msgstr "entfernt eine Aggregatfunktion" -#: sql_help.c:4905 +#: sql_help.c:4908 msgid "remove a cast" msgstr "entfernt eine Typumwandlung" -#: sql_help.c:4910 +#: sql_help.c:4913 msgid "remove a collation" msgstr "entfernt eine Sortierfolge" -#: sql_help.c:4915 +#: sql_help.c:4918 msgid "remove a conversion" msgstr "entfernt eine Zeichensatzkonversion" -#: sql_help.c:4920 +#: sql_help.c:4923 msgid "remove a database" msgstr "entfernt eine Datenbank" -#: sql_help.c:4925 +#: sql_help.c:4928 msgid "remove a domain" msgstr "entfernt eine Domäne" -#: sql_help.c:4930 +#: sql_help.c:4933 msgid "remove an event trigger" msgstr "entfernt einen Ereignistrigger" -#: sql_help.c:4935 +#: sql_help.c:4938 msgid "remove an extension" msgstr "entfernt eine Erweiterung" -#: sql_help.c:4940 +#: sql_help.c:4943 msgid "remove a foreign-data wrapper" msgstr "entfernt einen Fremddaten-Wrapper" -#: sql_help.c:4945 +#: sql_help.c:4948 msgid "remove a foreign table" msgstr "entfernt eine Fremdtabelle" -#: sql_help.c:4950 +#: sql_help.c:4953 msgid "remove a function" msgstr "entfernt eine Funktion" -#: sql_help.c:4955 sql_help.c:5005 sql_help.c:5085 +#: sql_help.c:4958 sql_help.c:5008 sql_help.c:5088 msgid "remove a database role" msgstr "entfernt eine Datenbankrolle" -#: sql_help.c:4960 +#: sql_help.c:4963 msgid "remove an index" msgstr "entfernt einen Index" -#: sql_help.c:4965 +#: sql_help.c:4968 msgid "remove a procedural language" msgstr "entfernt eine prozedurale Sprache" -#: sql_help.c:4970 +#: sql_help.c:4973 msgid "remove a materialized view" msgstr "entfernt eine materialisierte Sicht" -#: sql_help.c:4975 +#: sql_help.c:4978 msgid "remove an operator" msgstr "entfernt einen Operator" -#: sql_help.c:4980 +#: sql_help.c:4983 msgid "remove an operator class" msgstr "entfernt eine Operatorklasse" -#: sql_help.c:4985 +#: sql_help.c:4988 msgid "remove an operator family" msgstr "entfernt eine Operatorfamilie" -#: sql_help.c:4990 +#: sql_help.c:4993 msgid "remove database objects owned by a database role" msgstr "entfernt die einer Datenbankrolle gehörenden Datenbankobjekte" -#: sql_help.c:4995 +#: sql_help.c:4998 msgid "remove a row level security policy from a table" msgstr "entfernt eine Policy für Sicherheit auf Zeilenebene von einer Tabelle" -#: sql_help.c:5000 +#: sql_help.c:5003 msgid "remove a publication" msgstr "entfernt eine Publikation" -#: sql_help.c:5010 +#: sql_help.c:5013 msgid "remove a rewrite rule" msgstr "entfernt eine Umschreiberegel" -#: sql_help.c:5015 +#: sql_help.c:5018 msgid "remove a schema" msgstr "entfernt ein Schema" -#: sql_help.c:5020 +#: sql_help.c:5023 msgid "remove a sequence" msgstr "entfernt eine Sequenz" -#: sql_help.c:5025 +#: sql_help.c:5028 msgid "remove a foreign server descriptor" msgstr "entfernt einen Fremdserverdeskriptor" -#: sql_help.c:5030 +#: sql_help.c:5033 msgid "remove extended statistics" msgstr "entfernt erweiterte Statistiken" -#: sql_help.c:5035 +#: sql_help.c:5038 msgid "remove a subscription" msgstr "entfernt eine Subskription" -#: sql_help.c:5040 +#: sql_help.c:5043 msgid "remove a table" msgstr "entfernt eine Tabelle" -#: sql_help.c:5045 +#: sql_help.c:5048 msgid "remove a tablespace" msgstr "entfernt einen Tablespace" -#: sql_help.c:5050 +#: sql_help.c:5053 msgid "remove a text search configuration" msgstr "entfernt eine Textsuchekonfiguration" -#: sql_help.c:5055 +#: sql_help.c:5058 msgid "remove a text search dictionary" msgstr "entfernt ein Textsuchewörterbuch" -#: sql_help.c:5060 +#: sql_help.c:5063 msgid "remove a text search parser" msgstr "entfernt einen Textsucheparser" -#: sql_help.c:5065 +#: sql_help.c:5068 msgid "remove a text search template" msgstr "entfernt eine Textsuchevorlage" -#: sql_help.c:5070 +#: sql_help.c:5073 msgid "remove a transform" msgstr "entfernt eine Transformation" -#: sql_help.c:5075 +#: sql_help.c:5078 msgid "remove a trigger" msgstr "entfernt einen Trigger" -#: sql_help.c:5080 +#: sql_help.c:5083 msgid "remove a data type" msgstr "entfernt einen Datentyp" -#: sql_help.c:5090 +#: sql_help.c:5093 msgid "remove a user mapping for a foreign server" msgstr "entfernt eine Benutzerabbildung für einen Fremdserver" -#: sql_help.c:5095 +#: sql_help.c:5098 msgid "remove a view" msgstr "entfernt eine Sicht" -#: sql_help.c:5105 +#: sql_help.c:5108 msgid "execute a prepared statement" msgstr "führt einen vorbereiteten Befehl aus" -#: sql_help.c:5110 +#: sql_help.c:5113 msgid "show the execution plan of a statement" msgstr "zeigt den Ausführungsplan eines Befehls" -#: sql_help.c:5115 +#: sql_help.c:5118 msgid "retrieve rows from a query using a cursor" msgstr "liest Zeilen aus einer Anfrage mit einem Cursor" -#: sql_help.c:5120 +#: sql_help.c:5123 msgid "define access privileges" msgstr "definiert Zugriffsprivilegien" -#: sql_help.c:5125 +#: sql_help.c:5128 msgid "import table definitions from a foreign server" msgstr "importiert Tabellendefinitionen von einem Fremdserver" -#: sql_help.c:5130 +#: sql_help.c:5133 msgid "create new rows in a table" msgstr "erzeugt neue Zeilen in einer Tabelle" -#: sql_help.c:5135 +#: sql_help.c:5138 msgid "listen for a notification" msgstr "hört auf eine Benachrichtigung" -#: sql_help.c:5140 +#: sql_help.c:5143 msgid "load a shared library file" msgstr "lädt eine dynamische Bibliotheksdatei" -#: sql_help.c:5145 +#: sql_help.c:5148 msgid "lock a table" msgstr "sperrt eine Tabelle" -#: sql_help.c:5150 +#: sql_help.c:5153 msgid "position a cursor" msgstr "positioniert einen Cursor" -#: sql_help.c:5155 +#: sql_help.c:5158 msgid "generate a notification" msgstr "erzeugt eine Benachrichtigung" -#: sql_help.c:5160 +#: sql_help.c:5163 msgid "prepare a statement for execution" msgstr "bereitet einen Befehl zur Ausführung vor" -#: sql_help.c:5165 +#: sql_help.c:5168 msgid "prepare the current transaction for two-phase commit" msgstr "bereitet die aktuelle Transaktion für Two-Phase-Commit vor" -#: sql_help.c:5170 +#: sql_help.c:5173 msgid "change the ownership of database objects owned by a database role" msgstr "ändert den Eigentümer der der Rolle gehörenden Datenbankobjekte" -#: sql_help.c:5175 +#: sql_help.c:5178 msgid "replace the contents of a materialized view" msgstr "ersetzt den Inhalt einer materialisierten Sicht" -#: sql_help.c:5180 +#: sql_help.c:5183 msgid "rebuild indexes" msgstr "baut Indexe neu" -#: sql_help.c:5185 +#: sql_help.c:5188 msgid "destroy a previously defined savepoint" msgstr "gibt einen zuvor definierten Sicherungspunkt frei" -#: sql_help.c:5190 +#: sql_help.c:5193 msgid "restore the value of a run-time parameter to the default value" msgstr "setzt einen Konfigurationsparameter auf die Voreinstellung zurück" -#: sql_help.c:5195 +#: sql_help.c:5198 msgid "remove access privileges" msgstr "entfernt Zugriffsprivilegien" -#: sql_help.c:5205 +#: sql_help.c:5208 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "storniert eine Transaktion, die vorher für Two-Phase-Commit vorbereitet worden war" -#: sql_help.c:5210 +#: sql_help.c:5213 msgid "roll back to a savepoint" msgstr "rollt eine Transaktion bis zu einem Sicherungspunkt zurück" -#: sql_help.c:5215 +#: sql_help.c:5218 msgid "define a new savepoint within the current transaction" msgstr "definiert einen neuen Sicherungspunkt in der aktuellen Transaktion" -#: sql_help.c:5220 +#: sql_help.c:5223 msgid "define or change a security label applied to an object" msgstr "definiert oder ändert ein Security-Label eines Objektes" -#: sql_help.c:5225 sql_help.c:5270 sql_help.c:5300 +#: sql_help.c:5228 sql_help.c:5273 sql_help.c:5303 msgid "retrieve rows from a table or view" msgstr "liest Zeilen aus einer Tabelle oder Sicht" -#: sql_help.c:5235 +#: sql_help.c:5238 msgid "change a run-time parameter" msgstr "ändert einen Konfigurationsparameter" -#: sql_help.c:5240 +#: sql_help.c:5243 msgid "set constraint check timing for the current transaction" msgstr "setzt die Zeitsteuerung für Check-Constraints in der aktuellen Transaktion" -#: sql_help.c:5245 +#: sql_help.c:5248 msgid "set the current user identifier of the current session" msgstr "setzt den aktuellen Benutzernamen der aktuellen Sitzung" -#: sql_help.c:5250 +#: sql_help.c:5253 msgid "set the session user identifier and the current user identifier of the current session" msgstr "setzt den Sitzungsbenutzernamen und den aktuellen Benutzernamen der aktuellen Sitzung" -#: sql_help.c:5255 +#: sql_help.c:5258 msgid "set the characteristics of the current transaction" msgstr "setzt die Charakteristika der aktuellen Transaktion" -#: sql_help.c:5260 +#: sql_help.c:5263 msgid "show the value of a run-time parameter" msgstr "zeigt den Wert eines Konfigurationsparameters" -#: sql_help.c:5275 +#: sql_help.c:5278 msgid "empty a table or set of tables" msgstr "leert eine oder mehrere Tabellen" -#: sql_help.c:5280 +#: sql_help.c:5283 msgid "stop listening for a notification" msgstr "beendet das Hören auf eine Benachrichtigung" -#: sql_help.c:5285 +#: sql_help.c:5288 msgid "update rows of a table" msgstr "aktualisiert Zeilen einer Tabelle" -#: sql_help.c:5290 +#: sql_help.c:5293 msgid "garbage-collect and optionally analyze a database" msgstr "säubert und analysiert eine Datenbank" -#: sql_help.c:5295 +#: sql_help.c:5298 msgid "compute a set of rows" msgstr "berechnet eine Zeilenmenge" @@ -5710,7 +5714,7 @@ msgid "%s: could not find own program executable\n" msgstr "%s: konnte eigene Programmdatei nicht finden\n" -#: tab-complete.c:4214 +#: tab-complete.c:4216 #, c-format msgid "" "tab completion query failed: %s\n" diff -Nru postgresql-10-10.17/src/bin/psql/po/fr.po postgresql-10-10.19/src/bin/psql/po/fr.po --- postgresql-10-10.17/src/bin/psql/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-11-23 13:14+0000\n" -"PO-Revision-Date: 2020-11-24 08:53+0100\n" +"POT-Creation-Date: 2021-10-05 15:28+0000\n" +"PO-Revision-Date: 2021-10-06 11:32+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" "Language: fr\n" @@ -18,7 +18,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -56,7 +56,7 @@ msgstr "échec de pclose : %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 command.c:3099 command.c:3148 command.c:3253 +#: ../../common/fe_memutils.c:98 command.c:3146 command.c:3195 command.c:3305 #: input.c:227 mainloop.c:82 mainloop.c:276 #, c-format msgid "out of memory\n" @@ -72,14 +72,14 @@ msgid "could not look up effective user ID %ld: %s" msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s" -#: ../../common/username.c:45 command.c:555 +#: ../../common/username.c:45 command.c:556 msgid "user does not exist" msgstr "l'utilisateur n'existe pas" #: ../../common/username.c:60 #, c-format msgid "user name lookup failure: error code %lu" -msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu" +msgstr "échec de la recherche du nom d'utilisateur : code d'erreur %lu" #: ../../common/wait_error.c:45 #, c-format @@ -147,247 +147,247 @@ msgid "skipping recursive expansion of variable \"%s\"\n" msgstr "ignore l'expansion récursive de la variable « %s »\n" -#: command.c:223 +#: command.c:224 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Commande \\%s invalide. Essayez \\? pour l'aide-mémoire.\n" -#: command.c:225 +#: command.c:226 #, c-format msgid "invalid command \\%s\n" msgstr "commande \\%s invalide\n" -#: command.c:243 +#: command.c:244 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s : argument « %s » supplémentaire ignoré\n" -#: command.c:295 +#: command.c:296 #, c-format msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block\n" msgstr "commande \\%s ignorée ; utilisez \\endif ou Ctrl-C pour quitter le bloc \\if courant\n" -#: command.c:553 +#: command.c:554 #, c-format msgid "could not get home directory for user ID %ld: %s\n" msgstr "n'a pas pu obtenir le répertoire principal pour l'identifiant d'utilisateur %ld : %s\n" -#: command.c:571 +#: command.c:572 #, 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:596 common.c:662 common.c:720 common.c:1308 +#: command.c:597 common.c:664 common.c:722 common.c:1310 #, 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:603 +#: command.c:604 #, 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:606 +#: command.c:607 #, 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:895 command.c:985 command.c:1094 command.c:2503 +#: command.c:896 command.c:986 command.c:1095 command.c:2504 #, c-format msgid "no query buffer\n" msgstr "aucun tampon de requête\n" -#: command.c:928 command.c:4900 +#: command.c:929 command.c:4972 #, c-format msgid "invalid line number: %s\n" msgstr "numéro de ligne invalide : %s\n" -#: command.c:978 +#: command.c:979 #, c-format msgid "The server (version %s) does not support editing function source.\n" msgstr "Le serveur (version %s) ne supporte pas l'édition du code de la fonction.\n" -#: command.c:1053 command.c:1134 +#: command.c:1054 command.c:1135 msgid "No changes" msgstr "Aucun changement" -#: command.c:1087 +#: command.c:1088 #, c-format msgid "The server (version %s) does not support editing view definitions.\n" msgstr "Le serveur (version %s) ne supporte pas l'édition des définitions de vue.\n" -#: command.c:1211 +#: command.c:1212 #, 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:1246 command.c:1868 command.c:3095 command.c:3275 command.c:5002 -#: common.c:173 common.c:244 common.c:555 common.c:1354 common.c:1382 -#: common.c:1483 copy.c:492 copy.c:711 large_obj.c:156 large_obj.c:191 +#: command.c:1247 command.c:1869 command.c:3142 command.c:3327 command.c:5074 +#: common.c:175 common.c:246 common.c:557 common.c:1356 common.c:1384 +#: common.c:1485 copy.c:492 copy.c:711 large_obj.c:156 large_obj.c:191 #: large_obj.c:253 #, c-format msgid "%s" msgstr "%s" -#: command.c:1250 +#: command.c:1251 msgid "out of memory" msgstr "mémoire épuisée" -#: command.c:1253 +#: command.c:1254 msgid "There is no previous error." msgstr "Il n'y a pas d'erreur précédente." -#: command.c:1424 command.c:1729 command.c:1743 command.c:1760 command.c:1920 -#: command.c:2157 command.c:2470 command.c:2510 +#: command.c:1425 command.c:1730 command.c:1744 command.c:1761 command.c:1921 +#: command.c:2158 command.c:2471 command.c:2511 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s : argument requis manquant\n" -#: command.c:1555 +#: command.c:1556 #, c-format msgid "\\elif: cannot occur after \\else\n" msgstr "\\elif : ne peut pas survenir après \\else\n" -#: command.c:1560 +#: command.c:1561 #, c-format msgid "\\elif: no matching \\if\n" msgstr "\\elif : pas de \\if correspondant\n" -#: command.c:1624 +#: command.c:1625 #, c-format msgid "\\else: cannot occur after \\else\n" msgstr "\\else : ne peut pas survenir après \\else\n" -#: command.c:1629 +#: command.c:1630 #, c-format msgid "\\else: no matching \\if\n" msgstr "\\else : pas de \\if correspondant\n" -#: command.c:1669 +#: command.c:1670 #, c-format msgid "\\endif: no matching \\if\n" msgstr "\\endif : pas de \\if correspondant\n" -#: command.c:1824 +#: command.c:1825 msgid "Query buffer is empty." msgstr "Le tampon de requête est vide." -#: command.c:1846 +#: command.c:1847 msgid "Enter new password: " msgstr "Saisissez le nouveau mot de passe : " -#: command.c:1847 +#: command.c:1848 msgid "Enter it again: " msgstr "Saisissez-le à nouveau : " -#: command.c:1851 +#: command.c:1852 #, c-format msgid "Passwords didn't match.\n" msgstr "Les mots de passe ne sont pas identiques.\n" -#: command.c:1950 +#: command.c:1951 #, c-format msgid "\\%s: could not read value for variable\n" msgstr "\\%s : n'a pas pu lire la valeur pour la variable\n" -#: command.c:2053 +#: command.c:2054 msgid "Query buffer reset (cleared)." msgstr "Le tampon de requête a été effacé." -#: command.c:2075 +#: command.c:2076 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "Historique sauvegardé dans le fichier « %s ».\n" -#: command.c:2162 +#: command.c:2163 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" msgstr "\\%s : le nom de la variable d'environnement ne doit pas contenir « = »\n" -#: command.c:2218 +#: command.c:2219 #, c-format msgid "The server (version %s) does not support showing function source.\n" msgstr "Le serveur (version %s) ne supporte pas l'affichage du code de la fonction.\n" -#: command.c:2225 +#: command.c:2226 #, c-format msgid "function name is required\n" msgstr "le nom de la fonction est requis\n" -#: command.c:2312 +#: command.c:2313 #, c-format msgid "The server (version %s) does not support showing view definitions.\n" msgstr "Le serveur (version %s) ne supporte pas l'affichage des définitions de vues.\n" -#: command.c:2319 +#: command.c:2320 #, c-format msgid "view name is required\n" msgstr "le nom de la vue est requis\n" -#: command.c:2442 +#: command.c:2443 msgid "Timing is on." msgstr "Chronométrage activé." -#: command.c:2444 +#: command.c:2445 msgid "Timing is off." msgstr "Chronométrage désactivé." -#: command.c:2529 command.c:2557 command.c:3653 command.c:3656 command.c:3659 -#: command.c:3665 command.c:3667 command.c:3675 command.c:3685 command.c:3694 -#: command.c:3708 command.c:3725 command.c:3783 common.c:69 copy.c:332 -#: copy.c:392 copy.c:405 psqlscanslash.l:761 psqlscanslash.l:772 -#: psqlscanslash.l:782 +#: command.c:2530 command.c:2558 command.c:3704 command.c:3707 command.c:3710 +#: command.c:3716 command.c:3718 command.c:3744 command.c:3754 command.c:3766 +#: command.c:3780 command.c:3797 command.c:3855 common.c:71 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:763 psqlscanslash.l:774 +#: psqlscanslash.l:784 #, c-format msgid "%s: %s\n" msgstr "%s : %s\n" -#: command.c:2941 startup.c:205 +#: command.c:2942 startup.c:205 msgid "Password: " msgstr "Mot de passe : " -#: command.c:2946 startup.c:207 +#: command.c:2947 startup.c:207 #, c-format msgid "Password for user %s: " msgstr "Mot de passe pour l'utilisateur %s : " -#: command.c:2999 +#: command.c:3001 #, c-format msgid "All connection parameters must be supplied because no database connection exists\n" msgstr "" "Tous les paramètres de connexions doivent être fournis car il n'y a pas de connexion\n" "à une base de données existante.\n" -#: command.c:3281 +#: command.c:3333 #, c-format msgid "Previous connection kept\n" msgstr "Connexion précédente conservée\n" -#: command.c:3287 +#: command.c:3339 #, c-format msgid "\\connect: %s" msgstr "\\connect : %s" -#: command.c:3328 +#: command.c:3380 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s » via le socket dans « %s » via le port « %s ».\n" -#: command.c:3331 +#: command.c:3383 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s » sur l'hôte « %s » via le port « %s ».\n" -#: command.c:3335 +#: command.c:3387 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\".\n" msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s ».\n" -#: command.c:3368 +#: command.c:3420 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, serveur %s)\n" -#: command.c:3376 +#: command.c:3428 #, c-format msgid "" "WARNING: %s major version %s, server major version %s.\n" @@ -396,24 +396,24 @@ "ATTENTION : %s version majeure %s, version majeure du serveur %s.\n" " Certaines fonctionnalités de psql pourraient ne pas fonctionner.\n" -#: command.c:3414 +#: command.c:3466 #, c-format msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" msgstr "Connexion SSL (protocole : %s, chiffrement : %s, bits : %s, compression : %s)\n" -#: command.c:3415 command.c:3416 command.c:3417 +#: command.c:3467 command.c:3468 command.c:3469 msgid "unknown" msgstr "inconnu" -#: command.c:3418 help.c:45 +#: command.c:3470 help.c:45 msgid "off" msgstr "désactivé" -#: command.c:3418 help.c:45 +#: command.c:3470 help.c:45 msgid "on" msgstr "activé" -#: command.c:3438 +#: command.c:3490 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -425,243 +425,243 @@ " Voir la section « Notes aux utilisateurs de Windows » de la page\n" " référence de psql pour les détails.\n" -#: command.c:3542 +#: command.c:3594 #, c-format msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" msgstr "" "la variable d'environnement EDITOR_LINENUMBER_SWITCH doit être configurée\n" "pour spécifier un numéro de ligne\n" -#: command.c:3571 +#: command.c:3623 #, c-format msgid "could not start editor \"%s\"\n" msgstr "n'a pas pu exécuter l'éditeur « %s »\n" -#: command.c:3573 +#: command.c:3625 #, c-format msgid "could not start /bin/sh\n" msgstr "n'a pas pu exécuter /bin/sh\n" -#: command.c:3611 +#: command.c:3662 #, c-format msgid "could not locate temporary directory: %s\n" msgstr "n'a pas pu localiser le répertoire temporaire : %s\n" -#: command.c:3638 +#: command.c:3689 #, 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:3912 +#: command.c:3984 #, c-format msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" msgstr "" "\\pset : les formats autorisés sont unaligned, aligned, wrapped, html, asciidoc, latex,\n" "latex-longtable, troff-ms\n" -#: command.c:3930 +#: command.c:4002 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: les styles de lignes autorisés sont ascii, old-ascii, unicode\n" -#: command.c:3945 +#: command.c:4017 #, c-format msgid "\\pset: allowed Unicode border line styles are single, double\n" msgstr "\\pset : les styles autorisés de ligne de bordure Unicode sont single, double\n" -#: command.c:3960 +#: command.c:4032 #, c-format msgid "\\pset: allowed Unicode column line styles are single, double\n" msgstr "\\pset : les styles autorisés pour la ligne de colonne Unicode sont single, double\n" -#: command.c:3975 +#: command.c:4047 #, c-format msgid "\\pset: allowed Unicode header line styles are single, double\n" msgstr "\\pset : les styles autorisés pour la ligne d'en-tête Unicode sont single, double\n" -#: command.c:4140 command.c:4319 +#: command.c:4212 command.c:4391 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset : option inconnue : %s\n" -#: command.c:4158 +#: command.c:4230 #, c-format msgid "Border style is %d.\n" msgstr "Le style de bordure est %d.\n" -#: command.c:4164 +#: command.c:4236 #, c-format msgid "Target width is unset.\n" msgstr "La largeur cible n'est pas configuré.\n" -#: command.c:4166 +#: command.c:4238 #, c-format msgid "Target width is %d.\n" msgstr "La largeur cible est %d.\n" -#: command.c:4173 +#: command.c:4245 #, c-format msgid "Expanded display is on.\n" msgstr "Affichage étendu activé.\n" -#: command.c:4175 +#: command.c:4247 #, c-format msgid "Expanded display is used automatically.\n" msgstr "L'affichage étendu est utilisé automatiquement.\n" -#: command.c:4177 +#: command.c:4249 #, c-format msgid "Expanded display is off.\n" msgstr "Affichage étendu désactivé.\n" -#: command.c:4184 command.c:4192 +#: command.c:4256 command.c:4264 #, c-format msgid "Field separator is zero byte.\n" msgstr "Le séparateur de champs est l'octet zéro.\n" -#: command.c:4186 +#: command.c:4258 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Le séparateur de champs est « %s ».\n" -#: command.c:4199 +#: command.c:4271 #, c-format msgid "Default footer is on.\n" msgstr "Le bas de page pas défaut est activé.\n" -#: command.c:4201 +#: command.c:4273 #, c-format msgid "Default footer is off.\n" msgstr "Le bas de page par défaut est désactivé.\n" -#: command.c:4207 +#: command.c:4279 #, c-format msgid "Output format is %s.\n" msgstr "Le format de sortie est %s.\n" -#: command.c:4213 +#: command.c:4285 #, c-format msgid "Line style is %s.\n" msgstr "Le style de ligne est %s.\n" -#: command.c:4220 +#: command.c:4292 #, c-format msgid "Null display is \"%s\".\n" msgstr "L'affichage de null est « %s ».\n" -#: command.c:4228 +#: command.c:4300 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "L'affichage de la sortie numérique adaptée à la locale est activé.\n" -#: command.c:4230 +#: command.c:4302 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "L'affichage de la sortie numérique adaptée à la locale est désactivé.\n" -#: command.c:4237 +#: command.c:4309 #, c-format msgid "Pager is used for long output.\n" msgstr "Le paginateur est utilisé pour les affichages longs.\n" -#: command.c:4239 +#: command.c:4311 #, c-format msgid "Pager is always used.\n" msgstr "Le paginateur est toujours utilisé.\n" -#: command.c:4241 +#: command.c:4313 #, c-format msgid "Pager usage is off.\n" msgstr "L'utilisation du paginateur est désactivé.\n" -#: command.c:4247 +#: command.c:4319 #, c-format msgid "Pager won't be used for less than %d line.\n" msgid_plural "Pager won't be used for less than %d lines.\n" msgstr[0] "Le paginateur ne sera pas utilisé pour moins que %d ligne.\n" msgstr[1] "Le paginateur ne sera pas utilisé pour moins que %d lignes.\n" -#: command.c:4257 command.c:4267 +#: command.c:4329 command.c:4339 #, c-format msgid "Record separator is zero byte.\n" msgstr "Le séparateur d'enregistrements est l'octet zéro.\n" -#: command.c:4259 +#: command.c:4331 #, c-format msgid "Record separator is .\n" msgstr "Le séparateur d'enregistrement est .\n" -#: command.c:4261 +#: command.c:4333 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Le séparateur d'enregistrements est « %s ».\n" -#: command.c:4274 +#: command.c:4346 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "Les attributs de la table sont « %s ».\n" -#: command.c:4277 +#: command.c:4349 #, c-format msgid "Table attributes unset.\n" msgstr "Les attributs de la table ne sont pas définis.\n" -#: command.c:4284 +#: command.c:4356 #, c-format msgid "Title is \"%s\".\n" msgstr "Le titre est « %s ».\n" -#: command.c:4286 +#: command.c:4358 #, c-format msgid "Title is unset.\n" msgstr "Le titre n'est pas défini.\n" -#: command.c:4293 +#: command.c:4365 #, c-format msgid "Tuples only is on.\n" msgstr "L'affichage des tuples seuls est activé.\n" -#: command.c:4295 +#: command.c:4367 #, c-format msgid "Tuples only is off.\n" msgstr "L'affichage des tuples seuls est désactivé.\n" -#: command.c:4301 +#: command.c:4373 #, c-format msgid "Unicode border line style is \"%s\".\n" msgstr "Le style de bordure Unicode est « %s ».\n" -#: command.c:4307 +#: command.c:4379 #, c-format msgid "Unicode column line style is \"%s\".\n" msgstr "Le style de ligne Unicode est « %s ».\n" -#: command.c:4313 +#: command.c:4385 #, c-format msgid "Unicode header line style is \"%s\".\n" msgstr "Le style d'en-tête Unicode est « %s ».\n" -#: command.c:4473 +#: command.c:4545 #, c-format msgid "\\!: failed\n" msgstr "\\! : échec\n" -#: command.c:4498 common.c:768 +#: command.c:4570 common.c:770 #, c-format msgid "\\watch cannot be used with an empty query\n" msgstr "\\watch ne peut pas être utilisé avec une requête vide\n" -#: command.c:4539 +#: command.c:4611 #, c-format msgid "%s\t%s (every %gs)\n" msgstr "%s\t%s (chaque %gs)\n" -#: command.c:4542 +#: command.c:4614 #, c-format msgid "%s (every %gs)\n" msgstr "%s (chaque %gs)\n" -#: command.c:4596 command.c:4603 common.c:668 common.c:675 common.c:1337 +#: command.c:4668 command.c:4675 common.c:670 common.c:677 common.c:1339 #, c-format msgid "" "********* QUERY **********\n" @@ -674,111 +674,111 @@ "**************************\n" "\n" -#: command.c:4795 +#: command.c:4867 #, c-format msgid "\"%s.%s\" is not a view\n" msgstr "« %s.%s » n'est pas une vue\n" -#: command.c:4811 +#: command.c:4883 #, c-format msgid "could not parse reloptions array\n" msgstr "n'a pas pu analyser le tableau reloptions\n" -#: common.c:158 +#: common.c:160 #, c-format msgid "cannot escape without active connection\n" msgstr "ne peut mettre entre guillemets sans connexion active\n" -#: common.c:199 +#: common.c:201 #, c-format msgid "shell command argument contains a newline or carriage return: \"%s\"\n" msgstr "l'argument de la commande shell contient un retour à la ligne ou un retour chariot : « %s »\n" -#: common.c:415 +#: common.c:417 #, c-format msgid "connection to server was lost\n" msgstr "la connexion au serveur a été perdue\n" -#: common.c:419 +#: common.c:421 #, c-format msgid "The connection to the server was lost. Attempting reset: " msgstr "La connexion au serveur a été perdue. Tentative de réinitialisation : " -#: common.c:424 +#: common.c:426 #, c-format msgid "Failed.\n" msgstr "Échec.\n" -#: common.c:437 +#: common.c:439 #, c-format msgid "Succeeded.\n" msgstr "Succès.\n" -#: common.c:545 common.c:1057 common.c:1272 +#: common.c:547 common.c:1059 common.c:1274 #, c-format msgid "unexpected PQresultStatus: %d\n" msgstr "PQresultStatus inattendu : %d\n" -#: common.c:607 +#: common.c:609 #, c-format msgid "Time: %.3f ms\n" msgstr "Temps : %.3f ms\n" -#: common.c:622 +#: common.c:624 #, c-format msgid "Time: %.3f ms (%02d:%06.3f)\n" msgstr "Durée : %.3f ms (%02d:%06.3f)\n" -#: common.c:631 +#: common.c:633 #, c-format msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" msgstr "Durée : %.3f ms (%02d:%02d:%06.3f)\n" -#: common.c:638 +#: common.c:640 #, c-format msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" msgstr "Durée : %.3f ms (%.0f d %02d:%02d:%06.3f)\n" -#: common.c:775 +#: common.c:777 #, c-format msgid "\\watch cannot be used with COPY\n" msgstr "\\watch ne peut pas être utilisé avec COPY\n" -#: common.c:780 +#: common.c:782 #, c-format msgid "unexpected result status for \\watch\n" msgstr "statut résultat inattendu pour \\watch\n" -#: common.c:810 +#: common.c:812 #, c-format msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n" msgstr "" "Notification asynchrone « %s » reçue avec le contenu « %s » en provenance du\n" "processus serveur de PID %d.\n" -#: common.c:813 +#: common.c:815 #, c-format msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" msgstr "" "Notification asynchrone « %s » reçue en provenance du processus serveur de\n" "PID %d.\n" -#: common.c:876 +#: common.c:878 #, c-format msgid "no rows returned for \\gset\n" msgstr "aucune ligne retournée pour \\gset\n" -#: common.c:881 +#: common.c:883 #, c-format msgid "more than one row returned for \\gset\n" msgstr "plus d'une ligne retournée pour \\gset\n" -#: common.c:899 +#: common.c:901 #, c-format msgid "attempt to \\gset into specially treated variable \"%s\" ignored\n" msgstr "tentative ignorée d'utilisation de \\gset dans une variable traitée spécialement « %s »\n" -#: common.c:1317 +#: common.c:1319 #, c-format msgid "" "***(Single step mode: verify command)*******************************************\n" @@ -789,19 +789,19 @@ "%s\n" "***(appuyez sur entrée pour l'exécuter ou tapez x puis entrée pour annuler)***\n" -#: common.c:1372 +#: common.c:1374 #, c-format msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" msgstr "" "Le serveur (version %s) ne supporte pas les points de sauvegarde pour\n" "ON_ERROR_ROLLBACK.\n" -#: common.c:1428 +#: common.c:1430 #, c-format msgid "STATEMENT: %s\n" msgstr "INSTRUCTION : %s\n" -#: common.c:1471 +#: common.c:1473 #, c-format msgid "unexpected transaction status (%d)\n" msgstr "état de la transaction inattendu (%d)\n" @@ -2119,7 +2119,7 @@ " psql [OPTION]... [DBNAME [USERNAME]]\n" "\n" msgstr "" -" psql [OPTIONS]... [NOM_BASE [NOM_UTILISATEUR]]\n" +" psql [OPTIONS]... [BASE [UTILISATEUR]]\n" "\n" #: help.c:77 @@ -2131,28 +2131,26 @@ #, 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" +" -c, --command=COMMANDE exécute une commande unique (SQL ou interne), puis\n" +" quitte\n" #: help.c:83 #, c-format msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr "" -" -d, --dbname=NOM_BASE\n" -" indique le nom de la base de données à laquelle se\n" -" connecter (par défaut : « %s »)\n" +" -d, --dbname=NOM_BASE indique le nom de la base de données à laquelle se\n" +" connecter (par défaut : « %s »)\n" #: help.c:84 #, 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" +" -f, --file=FICHIER exécute les commandes du fichier, puis quitte\n" #: help.c:85 #, c-format msgid " -l, --list list available databases, then exit\n" -msgstr " -l, --list affiche les bases de données disponibles, puis quitte\n" +msgstr " -l, --list affiche les bases de données disponibles, puis quitte\n" #: help.c:86 #, c-format @@ -2162,18 +2160,18 @@ " (e.g., -v ON_ERROR_STOP=1)\n" msgstr "" " -v, --set=, --variable=NOM=VALEUR\n" -" configure la variable psql NOM en VALEUR\n" -" (e.g., -v ON_ERROR_STOP=1)\n" +" configure la variable psql NOM en VALEUR\n" +" (e.g., -v ON_ERROR_STOP=1)\n" #: help.c:89 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" #: help.c:90 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" -msgstr " -X, --no-psqlrc ne lit pas le fichier de démarrage (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc ne lit pas le fichier de démarrage (~/.psqlrc)\n" #: help.c:91 #, c-format @@ -2182,22 +2180,22 @@ " execute as a single transaction (if non-interactive)\n" msgstr "" " -1 (« un »), --single-transaction\n" -" exécute dans une transaction unique (si non intéractif)\n" +" exécute dans une transaction unique (si non interactif)\n" #: help.c:93 #, c-format msgid " -?, --help[=options] show this help, then exit\n" -msgstr " -?, --help[=options] affiche cette aide et quitte\n" +msgstr " -?, --help[=options] affiche cette aide et quitte\n" #: help.c:94 #, c-format msgid " --help=commands list backslash commands, then exit\n" -msgstr " --help=commandes liste les méta-commandes, puis quitte\n" +msgstr " --help=commands liste les méta-commandes, puis quitte\n" #: help.c:95 #, c-format msgid " --help=variables list special variables, then exit\n" -msgstr " --help=variables liste les variables spéciales, puis quitte\n" +msgstr " --help=variables liste les variables spéciales, puis quitte\n" #: help.c:97 #, c-format @@ -2211,72 +2209,66 @@ #: help.c:98 #, c-format msgid " -a, --echo-all echo all input from script\n" -msgstr " -a, --echo-all affiche les lignes du script\n" +msgstr " -a, --echo-all affiche les lignes du script\n" #: help.c:99 #, c-format msgid " -b, --echo-errors echo failed commands\n" -msgstr " -b, --echo-errors affiche les commandes échouées\n" +msgstr " -b, --echo-errors affiche les commandes échouées\n" #: help.c:100 #, 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" +" -e, --echo-queries affiche les commandes envoyées au serveur\n" #: help.c:101 #, 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" +" -E, --echo-hidden affiche les requêtes engendrées par les commandes\n" +" internes\n" #: help.c:102 #, 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" +" -L, --log-file=FICHIER envoie les traces dans le fichier\n" #: help.c:103 #, c-format msgid " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr "" -" -n, --no-readline\n" -" désactive l'édition avancée de la ligne de commande\n" -" (readline)\n" +" -n, --no-readline désactive l'édition avancée de la ligne de commande\n" +" (readline)\n" #: help.c:104 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr "" -" -o, --output=FICHIER\n" -" écrit les résultats des requêtes dans un fichier (ou\n" -" |tube)\n" +" -o, --output=FICHIER écrit les résultats des requêtes dans un fichier (ou\n" +" |tube)\n" #: help.c:105 #, c-format msgid " -q, --quiet run quietly (no messages, only query output)\n" msgstr "" -" -q, --quiet s'exécute silencieusement (pas de messages, uniquement le\n" -" résultat des requêtes)\n" +" -q, --quiet s'exécute silencieusement (pas de messages, uniquement\n" +" le résultat des requêtes)\n" #: help.c:106 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr "" -" -s, --single-step\n" -" active le mode étape par étape (confirmation pour chaque\n" -" requête)\n" +" -s, --single-step active le mode étape par étape (confirmation pour\n" +" chaque requête)\n" #: help.c:107 #, c-format msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" msgstr "" -" -S, --single-line\n" -" active le mode ligne par ligne (EOL termine la commande\n" -" SQL)\n" +" -S, --single-line active le mode ligne par ligne (EOL termine la\n" +" commande SQL)\n" #: help.c:109 #, c-format @@ -2291,8 +2283,8 @@ #, 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" +" -A, --no-align active le mode d'affichage non aligné des tables (-P\n" +" format=unaligned)\n" #: help.c:111 #, c-format @@ -2301,21 +2293,22 @@ " field separator for unaligned output (default: \"%s\")\n" msgstr "" " -F, --field-separator=CHAINE\n" -" séparateur de champs pour un affichage non aligné\n" -" (par défaut : « %s »)\n" +" séparateur de champs pour un affichage non aligné\n" +" (par défaut : « %s »)\n" #: help.c:114 #, 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" +msgstr "" +" -H, --html active le mode d'affichage HTML des tables\n" +" (-P format=html)\n" #: help.c:115 #, c-format msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n" msgstr "" -" -P, --pset=VAR[=ARG]\n" -" initialise l'option d'impression VAR à ARG (voir la\n" -" commande \\pset)\n" +" -P, --pset=VAR[=ARG] initialise l'option d'impression VAR à ARG (voir la\n" +" commande \\pset)\n" #: help.c:116 #, c-format @@ -2324,28 +2317,26 @@ " record separator for unaligned output (default: newline)\n" msgstr "" " -R, --record-separator=CHAINE\n" -" séparateur d'enregistrements pour un affichage non aligné\n" -" (par défaut : saut de ligne)\n" +" séparateur d'enregistrements pour un affichage non\n" +" aligné (par défaut : saut de ligne)\n" #: help.c:118 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr "" -" -t, --tuples-only\n" -" affiche seulement les lignes (-P tuples_only)\n" +" -t, --tuples-only affiche seulement les lignes (-P tuples_only)\n" #: help.c:119 #, c-format msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" msgstr "" -" -T, --table-attr=TEXTE\n" -" initialise les attributs des balises HTML de tableau\n" -" (largeur, bordure) (-P tableattr=)\n" +" -T, --table-attr=TEXTE initialise les attributs des balises HTML de tableau\n" +" (largeur, bordure) (-P tableattr=)\n" #: help.c:120 #, c-format msgid " -x, --expanded turn on expanded table output\n" -msgstr " -x, --expanded active l'affichage étendu des tables (-P expanded)\n" +msgstr " -x, --expanded active l'affichage étendu des tables (-P expanded)\n" #: help.c:121 #, c-format @@ -2354,8 +2345,8 @@ " set field separator for unaligned output to zero byte\n" msgstr "" " -z, --field-separator-zero\n" -" initialise le séparateur de champs pour un affichage non\n" -" aligné à l'octet zéro\n" +" initialise le séparateur de champs pour un affichage\n" +" non aligné à l'octet zéro\n" #: help.c:123 #, c-format @@ -2364,8 +2355,8 @@ " set record separator for unaligned output to zero byte\n" msgstr "" " -0, --record-separator-zero\n" -" initialise le séparateur d'enregistrements pour un affichage\n" -" non aligné à l'octet zéro\n" +" initialise le séparateur d'enregistrements pour un\n" +" affichage non aligné à l'octet zéro\n" #: help.c:126 #, c-format @@ -2380,8 +2371,8 @@ #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" msgstr "" -" -h, --host=HOTE nom d'hôte du serveur de la base de données ou répertoire\n" -" de la socket (par défaut : %s)\n" +" -h, --host=HOTE nom d'hôte du serveur de la base de données ou\n" +" répertoire de la socket (par défaut : %s)\n" #: help.c:130 msgid "local socket" @@ -2391,30 +2382,28 @@ #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr "" -" -p, --port=PORT port du serveur de la base de données (par défaut :\n" -" « %s »)\n" +" -p, --port=PORT port du serveur de la base de données (par défaut :\n" +" « %s »)\n" #: help.c:139 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr "" -" -U, --username=NOM\n" -" nom d'utilisateur de la base de données (par défaut :\n" -" « %s »)\n" +" -U, --username=NOM nom d'utilisateur de la base de données (par défaut :\n" +" « %s »)\n" #: help.c:140 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr "" -" -w, --no-password\n" -" ne demande jamais un mot de passe\n" +" -w, --no-password ne demande jamais un mot de passe\n" #: help.c:141 #, 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" +" -W, --password force la demande du mot de passe (devrait survenir\n" +" automatiquement)\n" #: help.c:143 #, c-format @@ -2793,8 +2782,8 @@ #: help.c:248 #, c-format -msgid " \\do[S] [PATTERN] list operators\n" -msgstr " \\do[S] [MODÈLE] affiche la liste des opérateurs\n" +msgid " \\do[S+] [PATTERN] list operators\n" +msgstr " \\do[S+] [MODÈLE] affiche la liste des opérateurs\n" #: help.c:249 #, c-format @@ -2855,8 +2844,8 @@ #: help.c:260 #, c-format -msgid " \\dy [PATTERN] list event triggers\n" -msgstr " \\dy [MODÈLE] affiche les triggers sur évènement\n" +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [MODÈLE] affiche les triggers sur évènement\n" #: help.c:261 #, c-format @@ -3491,11 +3480,11 @@ msgid " TMPDIR directory for temporary files\n" msgstr " TMPDIR répertoire pour les fichiers temporaires\n" -#: help.c:477 +#: help.c:478 msgid "Available help:\n" msgstr "Aide-mémoire disponible :\n" -#: help.c:561 +#: help.c:569 #, c-format msgid "" "Command: %s\n" @@ -3510,7 +3499,7 @@ "%s\n" "\n" -#: help.c:577 +#: help.c:589 #, c-format msgid "" "No help available for \"%s\".\n" @@ -3605,12 +3594,12 @@ msgid "reached EOF without finding closing \\endif(s)\n" msgstr "a atteint EOF sans trouver le(s) \\endif fermant\n" -#: psqlscanslash.l:615 +#: psqlscanslash.l:617 #, c-format msgid "unterminated quoted string\n" msgstr "chaîne entre guillemets non terminée\n" -#: psqlscanslash.l:788 +#: psqlscanslash.l:790 #, c-format msgid "%s: out of memory\n" msgstr "%s : mémoire épuisée\n" @@ -3623,169 +3612,169 @@ #: sql_help.c:250 sql_help.c:252 sql_help.c:264 sql_help.c:265 sql_help.c:266 #: sql_help.c:268 sql_help.c:315 sql_help.c:317 sql_help.c:319 sql_help.c:321 #: sql_help.c:382 sql_help.c:387 sql_help.c:389 sql_help.c:432 sql_help.c:434 -#: sql_help.c:437 sql_help.c:439 sql_help.c:506 sql_help.c:511 sql_help.c:516 -#: sql_help.c:521 sql_help.c:526 sql_help.c:575 sql_help.c:577 sql_help.c:579 -#: sql_help.c:581 sql_help.c:584 sql_help.c:586 sql_help.c:597 sql_help.c:599 -#: sql_help.c:640 sql_help.c:642 sql_help.c:644 sql_help.c:647 sql_help.c:649 -#: sql_help.c:651 sql_help.c:684 sql_help.c:688 sql_help.c:692 sql_help.c:711 -#: sql_help.c:714 sql_help.c:717 sql_help.c:746 sql_help.c:758 sql_help.c:766 -#: sql_help.c:769 sql_help.c:772 sql_help.c:787 sql_help.c:790 sql_help.c:807 -#: sql_help.c:809 sql_help.c:811 sql_help.c:813 sql_help.c:816 sql_help.c:818 -#: sql_help.c:859 sql_help.c:882 sql_help.c:893 sql_help.c:895 sql_help.c:914 -#: sql_help.c:924 sql_help.c:926 sql_help.c:928 sql_help.c:940 sql_help.c:944 -#: sql_help.c:946 sql_help.c:957 sql_help.c:959 sql_help.c:961 sql_help.c:977 -#: sql_help.c:979 sql_help.c:983 sql_help.c:986 sql_help.c:987 sql_help.c:988 -#: sql_help.c:991 sql_help.c:993 sql_help.c:1084 sql_help.c:1086 -#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096 -#: sql_help.c:1099 sql_help.c:1102 sql_help.c:1168 sql_help.c:1170 -#: sql_help.c:1172 sql_help.c:1175 sql_help.c:1196 sql_help.c:1199 -#: sql_help.c:1202 sql_help.c:1205 sql_help.c:1209 sql_help.c:1211 -#: sql_help.c:1213 sql_help.c:1215 sql_help.c:1229 sql_help.c:1232 -#: sql_help.c:1234 sql_help.c:1236 sql_help.c:1246 sql_help.c:1248 -#: sql_help.c:1258 sql_help.c:1260 sql_help.c:1270 sql_help.c:1273 -#: sql_help.c:1295 sql_help.c:1297 sql_help.c:1299 sql_help.c:1302 -#: sql_help.c:1304 sql_help.c:1306 sql_help.c:1309 sql_help.c:1359 -#: sql_help.c:1401 sql_help.c:1404 sql_help.c:1406 sql_help.c:1408 -#: sql_help.c:1410 sql_help.c:1412 sql_help.c:1415 sql_help.c:1455 -#: sql_help.c:1666 sql_help.c:1730 sql_help.c:1749 sql_help.c:1762 -#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1834 sql_help.c:1854 -#: sql_help.c:1879 sql_help.c:1897 sql_help.c:1926 sql_help.c:2019 -#: sql_help.c:2064 sql_help.c:2087 sql_help.c:2107 sql_help.c:2108 -#: sql_help.c:2143 sql_help.c:2163 sql_help.c:2185 sql_help.c:2199 -#: sql_help.c:2214 sql_help.c:2244 sql_help.c:2269 sql_help.c:2315 -#: sql_help.c:2581 sql_help.c:2594 sql_help.c:2611 sql_help.c:2627 -#: sql_help.c:2667 sql_help.c:2719 sql_help.c:2723 sql_help.c:2725 -#: sql_help.c:2731 sql_help.c:2749 sql_help.c:2776 sql_help.c:2811 -#: sql_help.c:2823 sql_help.c:2832 sql_help.c:2876 sql_help.c:2890 -#: sql_help.c:2918 sql_help.c:2926 sql_help.c:2934 sql_help.c:2942 -#: sql_help.c:2950 sql_help.c:2958 sql_help.c:2966 sql_help.c:2974 -#: sql_help.c:2983 sql_help.c:2994 sql_help.c:3002 sql_help.c:3010 -#: sql_help.c:3018 sql_help.c:3026 sql_help.c:3036 sql_help.c:3045 -#: sql_help.c:3054 sql_help.c:3062 sql_help.c:3071 sql_help.c:3079 -#: sql_help.c:3087 sql_help.c:3096 sql_help.c:3104 sql_help.c:3112 -#: sql_help.c:3120 sql_help.c:3128 sql_help.c:3136 sql_help.c:3144 -#: sql_help.c:3152 sql_help.c:3160 sql_help.c:3168 sql_help.c:3176 -#: sql_help.c:3193 sql_help.c:3202 sql_help.c:3210 sql_help.c:3227 -#: sql_help.c:3242 sql_help.c:3513 sql_help.c:3564 sql_help.c:3593 -#: sql_help.c:3601 sql_help.c:4035 sql_help.c:4083 sql_help.c:4224 +#: sql_help.c:437 sql_help.c:439 sql_help.c:507 sql_help.c:512 sql_help.c:517 +#: sql_help.c:522 sql_help.c:527 sql_help.c:576 sql_help.c:578 sql_help.c:580 +#: sql_help.c:582 sql_help.c:585 sql_help.c:587 sql_help.c:598 sql_help.c:600 +#: sql_help.c:641 sql_help.c:643 sql_help.c:645 sql_help.c:648 sql_help.c:650 +#: sql_help.c:652 sql_help.c:685 sql_help.c:689 sql_help.c:693 sql_help.c:712 +#: sql_help.c:715 sql_help.c:718 sql_help.c:747 sql_help.c:759 sql_help.c:767 +#: sql_help.c:770 sql_help.c:773 sql_help.c:788 sql_help.c:791 sql_help.c:808 +#: sql_help.c:810 sql_help.c:812 sql_help.c:814 sql_help.c:817 sql_help.c:819 +#: sql_help.c:860 sql_help.c:883 sql_help.c:894 sql_help.c:896 sql_help.c:915 +#: sql_help.c:925 sql_help.c:927 sql_help.c:929 sql_help.c:941 sql_help.c:945 +#: sql_help.c:947 sql_help.c:958 sql_help.c:960 sql_help.c:962 sql_help.c:978 +#: sql_help.c:980 sql_help.c:984 sql_help.c:987 sql_help.c:988 sql_help.c:989 +#: sql_help.c:992 sql_help.c:994 sql_help.c:1085 sql_help.c:1087 +#: sql_help.c:1090 sql_help.c:1093 sql_help.c:1095 sql_help.c:1097 +#: sql_help.c:1100 sql_help.c:1103 sql_help.c:1169 sql_help.c:1171 +#: sql_help.c:1173 sql_help.c:1176 sql_help.c:1197 sql_help.c:1200 +#: sql_help.c:1203 sql_help.c:1206 sql_help.c:1210 sql_help.c:1212 +#: sql_help.c:1214 sql_help.c:1216 sql_help.c:1230 sql_help.c:1233 +#: sql_help.c:1235 sql_help.c:1237 sql_help.c:1247 sql_help.c:1249 +#: sql_help.c:1259 sql_help.c:1261 sql_help.c:1271 sql_help.c:1274 +#: sql_help.c:1296 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303 +#: sql_help.c:1305 sql_help.c:1307 sql_help.c:1310 sql_help.c:1360 +#: sql_help.c:1402 sql_help.c:1405 sql_help.c:1407 sql_help.c:1409 +#: sql_help.c:1411 sql_help.c:1413 sql_help.c:1416 sql_help.c:1456 +#: sql_help.c:1667 sql_help.c:1731 sql_help.c:1750 sql_help.c:1763 +#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1835 sql_help.c:1855 +#: sql_help.c:1880 sql_help.c:1898 sql_help.c:1928 sql_help.c:2022 +#: sql_help.c:2067 sql_help.c:2090 sql_help.c:2110 sql_help.c:2111 +#: sql_help.c:2146 sql_help.c:2166 sql_help.c:2188 sql_help.c:2202 +#: sql_help.c:2217 sql_help.c:2247 sql_help.c:2272 sql_help.c:2318 +#: sql_help.c:2584 sql_help.c:2597 sql_help.c:2614 sql_help.c:2630 +#: sql_help.c:2670 sql_help.c:2722 sql_help.c:2726 sql_help.c:2728 +#: sql_help.c:2734 sql_help.c:2752 sql_help.c:2779 sql_help.c:2814 +#: sql_help.c:2826 sql_help.c:2835 sql_help.c:2879 sql_help.c:2893 +#: sql_help.c:2921 sql_help.c:2929 sql_help.c:2937 sql_help.c:2945 +#: sql_help.c:2953 sql_help.c:2961 sql_help.c:2969 sql_help.c:2977 +#: sql_help.c:2986 sql_help.c:2997 sql_help.c:3005 sql_help.c:3013 +#: sql_help.c:3021 sql_help.c:3029 sql_help.c:3039 sql_help.c:3048 +#: sql_help.c:3057 sql_help.c:3065 sql_help.c:3074 sql_help.c:3082 +#: sql_help.c:3090 sql_help.c:3099 sql_help.c:3107 sql_help.c:3115 +#: sql_help.c:3123 sql_help.c:3131 sql_help.c:3139 sql_help.c:3147 +#: sql_help.c:3155 sql_help.c:3163 sql_help.c:3171 sql_help.c:3179 +#: sql_help.c:3196 sql_help.c:3205 sql_help.c:3213 sql_help.c:3230 +#: sql_help.c:3245 sql_help.c:3516 sql_help.c:3567 sql_help.c:3596 +#: sql_help.c:3604 sql_help.c:4038 sql_help.c:4086 sql_help.c:4227 msgid "name" msgstr "nom" -#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:326 sql_help.c:1524 -#: sql_help.c:2891 sql_help.c:3829 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:326 sql_help.c:1525 +#: sql_help.c:2894 sql_help.c:3832 msgid "aggregate_signature" msgstr "signature_agrégat" #: sql_help.c:38 sql_help.c:68 sql_help.c:83 sql_help.c:119 sql_help.c:251 -#: sql_help.c:269 sql_help.c:390 sql_help.c:438 sql_help.c:515 sql_help.c:561 -#: sql_help.c:576 sql_help.c:598 sql_help.c:648 sql_help.c:713 sql_help.c:768 -#: sql_help.c:789 sql_help.c:819 sql_help.c:860 sql_help.c:884 sql_help.c:894 -#: sql_help.c:927 sql_help.c:947 sql_help.c:960 sql_help.c:994 sql_help.c:1093 -#: sql_help.c:1169 sql_help.c:1212 sql_help.c:1233 sql_help.c:1247 -#: sql_help.c:1259 sql_help.c:1272 sql_help.c:1303 sql_help.c:1360 -#: sql_help.c:1409 +#: sql_help.c:269 sql_help.c:390 sql_help.c:438 sql_help.c:516 sql_help.c:562 +#: sql_help.c:577 sql_help.c:599 sql_help.c:649 sql_help.c:714 sql_help.c:769 +#: sql_help.c:790 sql_help.c:820 sql_help.c:861 sql_help.c:885 sql_help.c:895 +#: sql_help.c:928 sql_help.c:948 sql_help.c:961 sql_help.c:995 sql_help.c:1094 +#: sql_help.c:1170 sql_help.c:1213 sql_help.c:1234 sql_help.c:1248 +#: sql_help.c:1260 sql_help.c:1273 sql_help.c:1304 sql_help.c:1361 +#: sql_help.c:1410 msgid "new_name" msgstr "nouveau_nom" #: sql_help.c:41 sql_help.c:70 sql_help.c:85 sql_help.c:121 sql_help.c:249 -#: sql_help.c:267 sql_help.c:388 sql_help.c:474 sql_help.c:520 sql_help.c:600 -#: sql_help.c:609 sql_help.c:667 sql_help.c:687 sql_help.c:716 sql_help.c:771 -#: sql_help.c:817 sql_help.c:896 sql_help.c:925 sql_help.c:945 sql_help.c:958 -#: sql_help.c:992 sql_help.c:1153 sql_help.c:1171 sql_help.c:1214 -#: sql_help.c:1235 sql_help.c:1298 sql_help.c:1407 sql_help.c:2567 +#: sql_help.c:267 sql_help.c:388 sql_help.c:474 sql_help.c:521 sql_help.c:601 +#: sql_help.c:610 sql_help.c:668 sql_help.c:688 sql_help.c:717 sql_help.c:772 +#: sql_help.c:818 sql_help.c:897 sql_help.c:926 sql_help.c:946 sql_help.c:959 +#: sql_help.c:993 sql_help.c:1154 sql_help.c:1172 sql_help.c:1215 +#: sql_help.c:1236 sql_help.c:1299 sql_help.c:1408 sql_help.c:2570 msgid "new_owner" msgstr "nouveau_propriétaire" #: sql_help.c:44 sql_help.c:72 sql_help.c:87 sql_help.c:253 sql_help.c:318 -#: sql_help.c:440 sql_help.c:525 sql_help.c:650 sql_help.c:691 sql_help.c:719 -#: sql_help.c:774 sql_help.c:929 sql_help.c:962 sql_help.c:1095 sql_help.c:1216 -#: sql_help.c:1237 sql_help.c:1249 sql_help.c:1261 sql_help.c:1305 -#: sql_help.c:1411 +#: sql_help.c:440 sql_help.c:526 sql_help.c:651 sql_help.c:692 sql_help.c:720 +#: sql_help.c:775 sql_help.c:930 sql_help.c:963 sql_help.c:1096 sql_help.c:1217 +#: sql_help.c:1238 sql_help.c:1250 sql_help.c:1262 sql_help.c:1306 +#: sql_help.c:1412 msgid "new_schema" msgstr "nouveau_schéma" -#: sql_help.c:45 sql_help.c:1580 sql_help.c:2892 sql_help.c:3850 +#: sql_help.c:45 sql_help.c:1581 sql_help.c:2895 sql_help.c:3853 msgid "where aggregate_signature is:" msgstr "où signature_agrégat est :" #: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:336 sql_help.c:361 -#: sql_help.c:364 sql_help.c:367 sql_help.c:507 sql_help.c:512 sql_help.c:517 -#: sql_help.c:522 sql_help.c:527 sql_help.c:1542 sql_help.c:1581 -#: sql_help.c:1584 sql_help.c:1587 sql_help.c:1731 sql_help.c:1750 -#: sql_help.c:1753 sql_help.c:2020 sql_help.c:2893 sql_help.c:2896 -#: sql_help.c:2899 sql_help.c:2984 sql_help.c:3397 sql_help.c:3739 -#: sql_help.c:3835 sql_help.c:3851 sql_help.c:3854 sql_help.c:3857 +#: sql_help.c:364 sql_help.c:367 sql_help.c:508 sql_help.c:513 sql_help.c:518 +#: sql_help.c:523 sql_help.c:528 sql_help.c:1543 sql_help.c:1582 +#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1732 sql_help.c:1751 +#: sql_help.c:1754 sql_help.c:2023 sql_help.c:2896 sql_help.c:2899 +#: sql_help.c:2902 sql_help.c:2987 sql_help.c:3400 sql_help.c:3742 +#: sql_help.c:3838 sql_help.c:3854 sql_help.c:3857 sql_help.c:3860 msgid "argmode" msgstr "mode_argument" #: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:337 sql_help.c:362 -#: sql_help.c:365 sql_help.c:368 sql_help.c:508 sql_help.c:513 sql_help.c:518 -#: sql_help.c:523 sql_help.c:528 sql_help.c:1543 sql_help.c:1582 -#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1732 sql_help.c:1751 -#: sql_help.c:1754 sql_help.c:2021 sql_help.c:2894 sql_help.c:2897 -#: sql_help.c:2900 sql_help.c:2985 sql_help.c:3836 sql_help.c:3852 -#: sql_help.c:3855 sql_help.c:3858 +#: sql_help.c:365 sql_help.c:368 sql_help.c:509 sql_help.c:514 sql_help.c:519 +#: sql_help.c:524 sql_help.c:529 sql_help.c:1544 sql_help.c:1583 +#: sql_help.c:1586 sql_help.c:1589 sql_help.c:1733 sql_help.c:1752 +#: sql_help.c:1755 sql_help.c:2024 sql_help.c:2897 sql_help.c:2900 +#: sql_help.c:2903 sql_help.c:2988 sql_help.c:3839 sql_help.c:3855 +#: sql_help.c:3858 sql_help.c:3861 msgid "argname" msgstr "nom_agrégat" #: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:338 sql_help.c:363 -#: sql_help.c:366 sql_help.c:369 sql_help.c:509 sql_help.c:514 sql_help.c:519 -#: sql_help.c:524 sql_help.c:529 sql_help.c:1544 sql_help.c:1583 -#: sql_help.c:1586 sql_help.c:1589 sql_help.c:2022 sql_help.c:2895 -#: sql_help.c:2898 sql_help.c:2901 sql_help.c:2986 sql_help.c:3837 -#: sql_help.c:3853 sql_help.c:3856 sql_help.c:3859 +#: sql_help.c:366 sql_help.c:369 sql_help.c:510 sql_help.c:515 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:1545 sql_help.c:1584 +#: sql_help.c:1587 sql_help.c:1590 sql_help.c:2025 sql_help.c:2898 +#: sql_help.c:2901 sql_help.c:2904 sql_help.c:2989 sql_help.c:3840 +#: sql_help.c:3856 sql_help.c:3859 sql_help.c:3862 msgid "argtype" msgstr "type_argument" -#: sql_help.c:113 sql_help.c:385 sql_help.c:463 sql_help.c:475 sql_help.c:854 -#: sql_help.c:942 sql_help.c:1230 sql_help.c:1354 sql_help.c:1386 -#: sql_help.c:1637 sql_help.c:1643 sql_help.c:1929 sql_help.c:1970 -#: sql_help.c:1977 sql_help.c:1986 sql_help.c:2065 sql_help.c:2245 -#: sql_help.c:2337 sql_help.c:2596 sql_help.c:2777 sql_help.c:2799 -#: sql_help.c:3262 sql_help.c:3432 +#: sql_help.c:113 sql_help.c:385 sql_help.c:463 sql_help.c:475 sql_help.c:855 +#: sql_help.c:943 sql_help.c:1231 sql_help.c:1355 sql_help.c:1387 +#: sql_help.c:1638 sql_help.c:1644 sql_help.c:1931 sql_help.c:1972 +#: sql_help.c:1979 sql_help.c:1988 sql_help.c:2068 sql_help.c:2248 +#: sql_help.c:2340 sql_help.c:2599 sql_help.c:2780 sql_help.c:2802 +#: sql_help.c:3265 sql_help.c:3435 msgid "option" msgstr "option" -#: sql_help.c:114 sql_help.c:855 sql_help.c:1355 sql_help.c:2066 -#: sql_help.c:2246 sql_help.c:2778 +#: sql_help.c:114 sql_help.c:856 sql_help.c:1356 sql_help.c:2069 +#: sql_help.c:2249 sql_help.c:2781 msgid "where option can be:" msgstr "où option peut être :" -#: sql_help.c:115 sql_help.c:1861 +#: sql_help.c:115 sql_help.c:1862 msgid "allowconn" msgstr "allowconn" -#: sql_help.c:116 sql_help.c:856 sql_help.c:1356 sql_help.c:1862 -#: sql_help.c:2067 sql_help.c:2247 sql_help.c:2779 +#: sql_help.c:116 sql_help.c:857 sql_help.c:1357 sql_help.c:1863 +#: sql_help.c:2070 sql_help.c:2250 sql_help.c:2782 msgid "connlimit" msgstr "limite_de_connexion" -#: sql_help.c:117 sql_help.c:1863 +#: sql_help.c:117 sql_help.c:1864 msgid "istemplate" msgstr "istemplate" -#: sql_help.c:123 sql_help.c:588 sql_help.c:653 sql_help.c:1098 sql_help.c:1146 +#: sql_help.c:123 sql_help.c:589 sql_help.c:654 sql_help.c:1099 sql_help.c:1147 msgid "new_tablespace" msgstr "nouveau_tablespace" -#: sql_help.c:125 sql_help.c:128 sql_help.c:130 sql_help.c:534 sql_help.c:536 -#: sql_help.c:537 sql_help.c:863 sql_help.c:867 sql_help.c:870 sql_help.c:1005 -#: sql_help.c:1008 sql_help.c:1363 sql_help.c:1367 sql_help.c:1370 -#: sql_help.c:2031 sql_help.c:3618 sql_help.c:4024 +#: sql_help.c:125 sql_help.c:128 sql_help.c:130 sql_help.c:535 sql_help.c:537 +#: sql_help.c:538 sql_help.c:864 sql_help.c:868 sql_help.c:871 sql_help.c:1006 +#: sql_help.c:1009 sql_help.c:1364 sql_help.c:1368 sql_help.c:1371 +#: sql_help.c:2034 sql_help.c:3621 sql_help.c:4027 msgid "configuration_parameter" msgstr "paramètre_configuration" #: sql_help.c:126 sql_help.c:386 sql_help.c:458 sql_help.c:464 sql_help.c:476 -#: sql_help.c:535 sql_help.c:583 sql_help.c:659 sql_help.c:665 sql_help.c:815 -#: sql_help.c:864 sql_help.c:943 sql_help.c:982 sql_help.c:985 sql_help.c:990 -#: sql_help.c:1006 sql_help.c:1007 sql_help.c:1128 sql_help.c:1148 -#: sql_help.c:1174 sql_help.c:1231 sql_help.c:1364 sql_help.c:1387 -#: sql_help.c:1930 sql_help.c:1971 sql_help.c:1978 sql_help.c:1987 -#: sql_help.c:2032 sql_help.c:2033 sql_help.c:2095 sql_help.c:2127 -#: sql_help.c:2217 sql_help.c:2338 sql_help.c:2368 sql_help.c:2466 -#: sql_help.c:2478 sql_help.c:2491 sql_help.c:2531 sql_help.c:2553 -#: sql_help.c:2570 sql_help.c:2597 sql_help.c:2800 sql_help.c:3433 -#: sql_help.c:4025 sql_help.c:4026 +#: sql_help.c:536 sql_help.c:584 sql_help.c:660 sql_help.c:666 sql_help.c:816 +#: sql_help.c:865 sql_help.c:944 sql_help.c:983 sql_help.c:986 sql_help.c:991 +#: sql_help.c:1007 sql_help.c:1008 sql_help.c:1129 sql_help.c:1149 +#: sql_help.c:1175 sql_help.c:1232 sql_help.c:1365 sql_help.c:1388 +#: sql_help.c:1932 sql_help.c:1973 sql_help.c:1980 sql_help.c:1989 +#: sql_help.c:2035 sql_help.c:2036 sql_help.c:2098 sql_help.c:2130 +#: sql_help.c:2220 sql_help.c:2341 sql_help.c:2371 sql_help.c:2469 +#: sql_help.c:2481 sql_help.c:2494 sql_help.c:2534 sql_help.c:2556 +#: sql_help.c:2573 sql_help.c:2600 sql_help.c:2803 sql_help.c:3436 +#: sql_help.c:4028 sql_help.c:4029 msgid "value" msgstr "valeur" @@ -3793,9 +3782,9 @@ msgid "target_role" msgstr "rôle_cible" -#: sql_help.c:199 sql_help.c:1913 sql_help.c:2293 sql_help.c:2298 -#: sql_help.c:3379 sql_help.c:3386 sql_help.c:3400 sql_help.c:3406 -#: sql_help.c:3721 sql_help.c:3728 sql_help.c:3742 sql_help.c:3748 +#: sql_help.c:199 sql_help.c:1915 sql_help.c:2296 sql_help.c:2301 +#: sql_help.c:3382 sql_help.c:3389 sql_help.c:3403 sql_help.c:3409 +#: sql_help.c:3724 sql_help.c:3731 sql_help.c:3745 sql_help.c:3751 msgid "schema_name" msgstr "nom_schéma" @@ -3809,30 +3798,30 @@ #: sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205 sql_help.c:206 #: sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210 sql_help.c:211 -#: sql_help.c:559 sql_help.c:587 sql_help.c:652 sql_help.c:792 sql_help.c:874 -#: sql_help.c:1097 sql_help.c:1374 sql_help.c:2070 sql_help.c:2071 -#: sql_help.c:2072 sql_help.c:2073 sql_help.c:2074 sql_help.c:2201 -#: sql_help.c:2250 sql_help.c:2251 sql_help.c:2252 sql_help.c:2253 -#: sql_help.c:2254 sql_help.c:2782 sql_help.c:2783 sql_help.c:2784 -#: sql_help.c:2785 sql_help.c:2786 sql_help.c:3412 sql_help.c:3416 -#: sql_help.c:3754 sql_help.c:3758 sql_help.c:4045 +#: sql_help.c:560 sql_help.c:588 sql_help.c:653 sql_help.c:793 sql_help.c:875 +#: sql_help.c:1098 sql_help.c:1375 sql_help.c:2073 sql_help.c:2074 +#: sql_help.c:2075 sql_help.c:2076 sql_help.c:2077 sql_help.c:2204 +#: sql_help.c:2253 sql_help.c:2254 sql_help.c:2255 sql_help.c:2256 +#: sql_help.c:2257 sql_help.c:2785 sql_help.c:2786 sql_help.c:2787 +#: sql_help.c:2788 sql_help.c:2789 sql_help.c:3415 sql_help.c:3419 +#: sql_help.c:3757 sql_help.c:3761 sql_help.c:4048 msgid "role_name" msgstr "nom_rôle" -#: sql_help.c:237 sql_help.c:451 sql_help.c:1113 sql_help.c:1115 -#: sql_help.c:1403 sql_help.c:1882 sql_help.c:1886 sql_help.c:1990 -#: sql_help.c:1994 sql_help.c:2091 sql_help.c:2462 sql_help.c:2474 -#: sql_help.c:2487 sql_help.c:2495 sql_help.c:2506 sql_help.c:2535 -#: sql_help.c:3464 sql_help.c:3479 sql_help.c:3481 sql_help.c:3910 -#: sql_help.c:3911 sql_help.c:3920 sql_help.c:3961 sql_help.c:3962 -#: sql_help.c:3963 sql_help.c:3964 sql_help.c:3965 sql_help.c:3966 -#: sql_help.c:3999 sql_help.c:4000 sql_help.c:4005 sql_help.c:4010 -#: sql_help.c:4149 sql_help.c:4150 sql_help.c:4159 sql_help.c:4200 -#: sql_help.c:4201 sql_help.c:4202 sql_help.c:4203 sql_help.c:4204 -#: sql_help.c:4205 sql_help.c:4252 sql_help.c:4254 sql_help.c:4287 -#: sql_help.c:4343 sql_help.c:4344 sql_help.c:4353 sql_help.c:4394 -#: sql_help.c:4395 sql_help.c:4396 sql_help.c:4397 sql_help.c:4398 -#: sql_help.c:4399 +#: sql_help.c:237 sql_help.c:451 sql_help.c:1114 sql_help.c:1116 +#: sql_help.c:1404 sql_help.c:1883 sql_help.c:1887 sql_help.c:1992 +#: sql_help.c:1996 sql_help.c:2094 sql_help.c:2465 sql_help.c:2477 +#: sql_help.c:2490 sql_help.c:2498 sql_help.c:2509 sql_help.c:2538 +#: sql_help.c:3467 sql_help.c:3482 sql_help.c:3484 sql_help.c:3913 +#: sql_help.c:3914 sql_help.c:3923 sql_help.c:3964 sql_help.c:3965 +#: sql_help.c:3966 sql_help.c:3967 sql_help.c:3968 sql_help.c:3969 +#: sql_help.c:4002 sql_help.c:4003 sql_help.c:4008 sql_help.c:4013 +#: sql_help.c:4152 sql_help.c:4153 sql_help.c:4162 sql_help.c:4203 +#: sql_help.c:4204 sql_help.c:4205 sql_help.c:4206 sql_help.c:4207 +#: sql_help.c:4208 sql_help.c:4255 sql_help.c:4257 sql_help.c:4290 +#: sql_help.c:4346 sql_help.c:4347 sql_help.c:4356 sql_help.c:4397 +#: sql_help.c:4398 sql_help.c:4399 sql_help.c:4400 sql_help.c:4401 +#: sql_help.c:4402 msgid "expression" msgstr "expression" @@ -3841,18 +3830,18 @@ msgstr "contrainte_domaine" #: sql_help.c:242 sql_help.c:244 sql_help.c:247 sql_help.c:466 sql_help.c:467 -#: sql_help.c:1090 sql_help.c:1134 sql_help.c:1135 sql_help.c:1136 -#: sql_help.c:1156 sql_help.c:1530 sql_help.c:1532 sql_help.c:1885 -#: sql_help.c:1989 sql_help.c:1993 sql_help.c:2494 sql_help.c:2505 -#: sql_help.c:3476 +#: sql_help.c:1091 sql_help.c:1135 sql_help.c:1136 sql_help.c:1137 +#: sql_help.c:1157 sql_help.c:1531 sql_help.c:1533 sql_help.c:1886 +#: sql_help.c:1991 sql_help.c:1995 sql_help.c:2497 sql_help.c:2508 +#: sql_help.c:3479 msgid "constraint_name" msgstr "nom_contrainte" -#: sql_help.c:245 sql_help.c:1091 +#: sql_help.c:245 sql_help.c:1092 msgid "new_constraint_name" msgstr "nouvelle_nom_contrainte" -#: sql_help.c:316 sql_help.c:941 +#: sql_help.c:316 sql_help.c:942 msgid "new_version" msgstr "nouvelle_version" @@ -3868,73 +3857,73 @@ #: sql_help.c:333 sql_help.c:334 sql_help.c:339 sql_help.c:343 sql_help.c:345 #: sql_help.c:347 sql_help.c:348 sql_help.c:349 sql_help.c:350 sql_help.c:351 #: sql_help.c:352 sql_help.c:353 sql_help.c:354 sql_help.c:355 sql_help.c:358 -#: sql_help.c:359 sql_help.c:1522 sql_help.c:1527 sql_help.c:1534 -#: sql_help.c:1535 sql_help.c:1536 sql_help.c:1537 sql_help.c:1538 -#: sql_help.c:1539 sql_help.c:1540 sql_help.c:1545 sql_help.c:1547 -#: sql_help.c:1551 sql_help.c:1553 sql_help.c:1557 sql_help.c:1558 -#: sql_help.c:1559 sql_help.c:1562 sql_help.c:1563 sql_help.c:1564 -#: sql_help.c:1565 sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 -#: sql_help.c:1569 sql_help.c:1570 sql_help.c:1571 sql_help.c:1572 -#: sql_help.c:1577 sql_help.c:1578 sql_help.c:3825 sql_help.c:3830 -#: sql_help.c:3831 sql_help.c:3832 sql_help.c:3833 sql_help.c:3839 -#: sql_help.c:3840 sql_help.c:3841 sql_help.c:3842 sql_help.c:3843 -#: sql_help.c:3844 sql_help.c:3845 sql_help.c:3846 sql_help.c:3847 -#: sql_help.c:3848 +#: sql_help.c:359 sql_help.c:1523 sql_help.c:1528 sql_help.c:1535 +#: sql_help.c:1536 sql_help.c:1537 sql_help.c:1538 sql_help.c:1539 +#: sql_help.c:1540 sql_help.c:1541 sql_help.c:1546 sql_help.c:1548 +#: sql_help.c:1552 sql_help.c:1554 sql_help.c:1558 sql_help.c:1559 +#: sql_help.c:1560 sql_help.c:1563 sql_help.c:1564 sql_help.c:1565 +#: sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 sql_help.c:1569 +#: sql_help.c:1570 sql_help.c:1571 sql_help.c:1572 sql_help.c:1573 +#: sql_help.c:1578 sql_help.c:1579 sql_help.c:3828 sql_help.c:3833 +#: sql_help.c:3834 sql_help.c:3835 sql_help.c:3836 sql_help.c:3842 +#: sql_help.c:3843 sql_help.c:3844 sql_help.c:3845 sql_help.c:3846 +#: sql_help.c:3847 sql_help.c:3848 sql_help.c:3849 sql_help.c:3850 +#: sql_help.c:3851 msgid "object_name" msgstr "nom_objet" -#: sql_help.c:325 sql_help.c:1523 sql_help.c:3828 +#: sql_help.c:325 sql_help.c:1524 sql_help.c:3831 msgid "aggregate_name" msgstr "nom_agrégat" -#: sql_help.c:327 sql_help.c:1525 sql_help.c:1796 sql_help.c:1800 -#: sql_help.c:1802 sql_help.c:2909 +#: sql_help.c:327 sql_help.c:1526 sql_help.c:1797 sql_help.c:1801 +#: sql_help.c:1803 sql_help.c:2912 msgid "source_type" msgstr "type_source" -#: sql_help.c:328 sql_help.c:1526 sql_help.c:1797 sql_help.c:1801 -#: sql_help.c:1803 sql_help.c:2910 +#: sql_help.c:328 sql_help.c:1527 sql_help.c:1798 sql_help.c:1802 +#: sql_help.c:1804 sql_help.c:2913 msgid "target_type" msgstr "type_cible" -#: sql_help.c:335 sql_help.c:756 sql_help.c:1541 sql_help.c:1798 -#: sql_help.c:1837 sql_help.c:1900 sql_help.c:2144 sql_help.c:2175 -#: sql_help.c:2673 sql_help.c:3396 sql_help.c:3738 sql_help.c:3834 -#: sql_help.c:3939 sql_help.c:3943 sql_help.c:3947 sql_help.c:3950 -#: sql_help.c:4178 sql_help.c:4182 sql_help.c:4186 sql_help.c:4189 -#: sql_help.c:4372 sql_help.c:4376 sql_help.c:4380 sql_help.c:4383 +#: sql_help.c:335 sql_help.c:757 sql_help.c:1542 sql_help.c:1799 +#: sql_help.c:1838 sql_help.c:1902 sql_help.c:2147 sql_help.c:2178 +#: sql_help.c:2676 sql_help.c:3399 sql_help.c:3741 sql_help.c:3837 +#: sql_help.c:3942 sql_help.c:3946 sql_help.c:3950 sql_help.c:3953 +#: sql_help.c:4181 sql_help.c:4185 sql_help.c:4189 sql_help.c:4192 +#: sql_help.c:4375 sql_help.c:4379 sql_help.c:4383 sql_help.c:4386 msgid "function_name" msgstr "nom_fonction" -#: sql_help.c:340 sql_help.c:749 sql_help.c:1548 sql_help.c:2168 +#: sql_help.c:340 sql_help.c:750 sql_help.c:1549 sql_help.c:2171 msgid "operator_name" msgstr "nom_opérateur" -#: sql_help.c:341 sql_help.c:685 sql_help.c:689 sql_help.c:693 sql_help.c:1549 -#: sql_help.c:2145 sql_help.c:3027 +#: sql_help.c:341 sql_help.c:686 sql_help.c:690 sql_help.c:694 sql_help.c:1550 +#: sql_help.c:2148 sql_help.c:3030 msgid "left_type" msgstr "type_argument_gauche" -#: sql_help.c:342 sql_help.c:686 sql_help.c:690 sql_help.c:694 sql_help.c:1550 -#: sql_help.c:2146 sql_help.c:3028 +#: sql_help.c:342 sql_help.c:687 sql_help.c:691 sql_help.c:695 sql_help.c:1551 +#: sql_help.c:2149 sql_help.c:3031 msgid "right_type" msgstr "type_argument_droit" -#: sql_help.c:344 sql_help.c:346 sql_help.c:712 sql_help.c:715 sql_help.c:718 -#: sql_help.c:747 sql_help.c:759 sql_help.c:767 sql_help.c:770 sql_help.c:773 -#: sql_help.c:1552 sql_help.c:1554 sql_help.c:2165 sql_help.c:2186 -#: sql_help.c:2511 sql_help.c:3037 sql_help.c:3046 +#: sql_help.c:344 sql_help.c:346 sql_help.c:713 sql_help.c:716 sql_help.c:719 +#: sql_help.c:748 sql_help.c:760 sql_help.c:768 sql_help.c:771 sql_help.c:774 +#: sql_help.c:1553 sql_help.c:1555 sql_help.c:2168 sql_help.c:2189 +#: sql_help.c:2514 sql_help.c:3040 sql_help.c:3049 msgid "index_method" msgstr "méthode_indexage" -#: sql_help.c:356 sql_help.c:1152 sql_help.c:1573 sql_help.c:2028 -#: sql_help.c:2469 sql_help.c:2640 sql_help.c:3184 sql_help.c:3410 -#: sql_help.c:3752 +#: sql_help.c:356 sql_help.c:1153 sql_help.c:1574 sql_help.c:2031 +#: sql_help.c:2472 sql_help.c:2643 sql_help.c:3187 sql_help.c:3413 +#: sql_help.c:3755 msgid "type_name" msgstr "nom_type" -#: sql_help.c:357 sql_help.c:1574 sql_help.c:2027 sql_help.c:2641 -#: sql_help.c:2867 sql_help.c:3185 sql_help.c:3402 sql_help.c:3744 +#: sql_help.c:357 sql_help.c:1575 sql_help.c:2030 sql_help.c:2644 +#: sql_help.c:2870 sql_help.c:3188 sql_help.c:3405 sql_help.c:3747 msgid "lang_name" msgstr "nom_langage" @@ -3942,1827 +3931,1831 @@ msgid "and aggregate_signature is:" msgstr "et signature_agrégat est :" -#: sql_help.c:383 sql_help.c:1668 sql_help.c:1927 +#: sql_help.c:383 sql_help.c:1669 sql_help.c:1929 msgid "handler_function" msgstr "fonction_gestionnaire" -#: sql_help.c:384 sql_help.c:1928 +#: sql_help.c:384 sql_help.c:1930 msgid "validator_function" msgstr "fonction_validateur" -#: sql_help.c:433 sql_help.c:510 sql_help.c:641 sql_help.c:1085 sql_help.c:1296 -#: sql_help.c:2502 sql_help.c:2503 sql_help.c:2519 sql_help.c:2520 +#: sql_help.c:433 sql_help.c:511 sql_help.c:642 sql_help.c:1086 sql_help.c:1297 +#: sql_help.c:2505 sql_help.c:2506 sql_help.c:2522 sql_help.c:2523 msgid "action" msgstr "action" #: sql_help.c:435 sql_help.c:442 sql_help.c:446 sql_help.c:447 sql_help.c:450 #: sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:456 sql_help.c:459 -#: sql_help.c:461 sql_help.c:462 sql_help.c:645 sql_help.c:655 sql_help.c:657 -#: sql_help.c:660 sql_help.c:662 sql_help.c:923 sql_help.c:1087 sql_help.c:1105 -#: sql_help.c:1109 sql_help.c:1110 sql_help.c:1114 sql_help.c:1116 -#: sql_help.c:1117 sql_help.c:1118 sql_help.c:1120 sql_help.c:1123 -#: sql_help.c:1124 sql_help.c:1126 sql_help.c:1129 sql_help.c:1131 -#: sql_help.c:1402 sql_help.c:1405 sql_help.c:1425 sql_help.c:1529 -#: sql_help.c:1634 sql_help.c:1639 sql_help.c:1653 sql_help.c:1654 -#: sql_help.c:1655 sql_help.c:1968 sql_help.c:1981 sql_help.c:2025 -#: sql_help.c:2090 sql_help.c:2125 sql_help.c:2323 sql_help.c:2351 -#: sql_help.c:2352 sql_help.c:2453 sql_help.c:2461 sql_help.c:2470 -#: sql_help.c:2473 sql_help.c:2482 sql_help.c:2486 sql_help.c:2507 -#: sql_help.c:2509 sql_help.c:2516 sql_help.c:2534 sql_help.c:2551 -#: sql_help.c:2676 sql_help.c:2812 sql_help.c:3381 sql_help.c:3382 -#: sql_help.c:3463 sql_help.c:3478 sql_help.c:3480 sql_help.c:3482 -#: sql_help.c:3723 sql_help.c:3724 sql_help.c:3827 sql_help.c:3970 -#: sql_help.c:4209 sql_help.c:4251 sql_help.c:4253 sql_help.c:4255 -#: sql_help.c:4272 sql_help.c:4275 sql_help.c:4403 +#: sql_help.c:461 sql_help.c:462 sql_help.c:646 sql_help.c:656 sql_help.c:658 +#: sql_help.c:661 sql_help.c:663 sql_help.c:924 sql_help.c:1088 sql_help.c:1106 +#: sql_help.c:1110 sql_help.c:1111 sql_help.c:1115 sql_help.c:1117 +#: sql_help.c:1118 sql_help.c:1119 sql_help.c:1121 sql_help.c:1124 +#: sql_help.c:1125 sql_help.c:1127 sql_help.c:1130 sql_help.c:1132 +#: sql_help.c:1403 sql_help.c:1406 sql_help.c:1426 sql_help.c:1530 +#: sql_help.c:1635 sql_help.c:1640 sql_help.c:1654 sql_help.c:1655 +#: sql_help.c:1656 sql_help.c:1970 sql_help.c:1983 sql_help.c:2028 +#: sql_help.c:2093 sql_help.c:2128 sql_help.c:2326 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2456 sql_help.c:2464 sql_help.c:2473 +#: sql_help.c:2476 sql_help.c:2485 sql_help.c:2489 sql_help.c:2510 +#: sql_help.c:2512 sql_help.c:2519 sql_help.c:2537 sql_help.c:2554 +#: sql_help.c:2679 sql_help.c:2815 sql_help.c:3384 sql_help.c:3385 +#: sql_help.c:3466 sql_help.c:3481 sql_help.c:3483 sql_help.c:3485 +#: sql_help.c:3726 sql_help.c:3727 sql_help.c:3830 sql_help.c:3973 +#: sql_help.c:4212 sql_help.c:4254 sql_help.c:4256 sql_help.c:4258 +#: sql_help.c:4275 sql_help.c:4278 sql_help.c:4406 msgid "column_name" msgstr "nom_colonne" -#: sql_help.c:436 sql_help.c:646 sql_help.c:1088 +#: sql_help.c:436 sql_help.c:647 sql_help.c:1089 msgid "new_column_name" msgstr "nouvelle_nom_colonne" -#: sql_help.c:441 sql_help.c:531 sql_help.c:654 sql_help.c:1104 sql_help.c:1312 +#: sql_help.c:441 sql_help.c:532 sql_help.c:655 sql_help.c:1105 sql_help.c:1313 msgid "where action is one of:" msgstr "où action fait partie de :" -#: sql_help.c:443 sql_help.c:448 sql_help.c:915 sql_help.c:1106 sql_help.c:1111 -#: sql_help.c:1314 sql_help.c:1318 sql_help.c:1880 sql_help.c:1969 -#: sql_help.c:2164 sql_help.c:2316 sql_help.c:2454 sql_help.c:2721 -#: sql_help.c:3565 +#: sql_help.c:443 sql_help.c:448 sql_help.c:916 sql_help.c:1107 sql_help.c:1112 +#: sql_help.c:1315 sql_help.c:1319 sql_help.c:1881 sql_help.c:1971 +#: sql_help.c:2167 sql_help.c:2319 sql_help.c:2457 sql_help.c:2724 +#: sql_help.c:3568 msgid "data_type" msgstr "type_données" -#: sql_help.c:444 sql_help.c:449 sql_help.c:1107 sql_help.c:1112 -#: sql_help.c:1315 sql_help.c:1319 sql_help.c:1881 sql_help.c:1972 -#: sql_help.c:2092 sql_help.c:2455 sql_help.c:2463 sql_help.c:2475 -#: sql_help.c:2488 sql_help.c:2722 sql_help.c:2728 sql_help.c:3473 +#: sql_help.c:444 sql_help.c:449 sql_help.c:1108 sql_help.c:1113 +#: sql_help.c:1316 sql_help.c:1320 sql_help.c:1882 sql_help.c:1974 +#: sql_help.c:2095 sql_help.c:2458 sql_help.c:2466 sql_help.c:2478 +#: sql_help.c:2491 sql_help.c:2725 sql_help.c:2731 sql_help.c:3476 msgid "collation" msgstr "collationnement" -#: sql_help.c:445 sql_help.c:1108 sql_help.c:1973 sql_help.c:1982 -#: sql_help.c:2456 sql_help.c:2471 sql_help.c:2483 +#: sql_help.c:445 sql_help.c:1109 sql_help.c:1975 sql_help.c:1984 +#: sql_help.c:2459 sql_help.c:2474 sql_help.c:2486 msgid "column_constraint" msgstr "contrainte_colonne" -#: sql_help.c:455 sql_help.c:656 sql_help.c:1125 +#: sql_help.c:455 sql_help.c:657 sql_help.c:1126 msgid "integer" msgstr "entier" -#: sql_help.c:457 sql_help.c:460 sql_help.c:658 sql_help.c:661 sql_help.c:1127 -#: sql_help.c:1130 +#: sql_help.c:457 sql_help.c:460 sql_help.c:659 sql_help.c:662 sql_help.c:1128 +#: sql_help.c:1131 msgid "attribute_option" msgstr "option_attribut" -#: sql_help.c:465 sql_help.c:1132 sql_help.c:1974 sql_help.c:1983 -#: sql_help.c:2457 sql_help.c:2472 sql_help.c:2484 +#: sql_help.c:465 sql_help.c:1133 sql_help.c:1976 sql_help.c:1985 +#: sql_help.c:2460 sql_help.c:2475 sql_help.c:2487 msgid "table_constraint" msgstr "contrainte_table" -#: sql_help.c:468 sql_help.c:469 sql_help.c:470 sql_help.c:471 sql_help.c:1137 -#: sql_help.c:1138 sql_help.c:1139 sql_help.c:1140 sql_help.c:1575 +#: sql_help.c:468 sql_help.c:469 sql_help.c:470 sql_help.c:471 sql_help.c:1138 +#: sql_help.c:1139 sql_help.c:1140 sql_help.c:1141 sql_help.c:1576 msgid "trigger_name" msgstr "nom_trigger" -#: sql_help.c:472 sql_help.c:473 sql_help.c:1150 sql_help.c:1151 -#: sql_help.c:1975 sql_help.c:1980 sql_help.c:2460 sql_help.c:2481 +#: sql_help.c:472 sql_help.c:473 sql_help.c:1151 sql_help.c:1152 +#: sql_help.c:1977 sql_help.c:1982 sql_help.c:2463 sql_help.c:2484 msgid "parent_table" msgstr "table_parent" -#: sql_help.c:530 sql_help.c:580 sql_help.c:643 sql_help.c:1275 sql_help.c:1912 +#: sql_help.c:531 sql_help.c:581 sql_help.c:644 sql_help.c:1276 sql_help.c:1914 msgid "extension_name" msgstr "nom_extension" -#: sql_help.c:532 sql_help.c:2029 +#: sql_help.c:533 sql_help.c:2032 msgid "execution_cost" msgstr "coût_exécution" -#: sql_help.c:533 sql_help.c:2030 +#: sql_help.c:534 sql_help.c:2033 msgid "result_rows" msgstr "lignes_de_résultat" -#: sql_help.c:554 sql_help.c:556 sql_help.c:853 sql_help.c:861 sql_help.c:865 -#: sql_help.c:868 sql_help.c:871 sql_help.c:1353 sql_help.c:1361 -#: sql_help.c:1365 sql_help.c:1368 sql_help.c:1371 sql_help.c:2294 -#: sql_help.c:2296 sql_help.c:2299 sql_help.c:2300 sql_help.c:3380 -#: sql_help.c:3384 sql_help.c:3387 sql_help.c:3389 sql_help.c:3391 -#: sql_help.c:3393 sql_help.c:3395 sql_help.c:3401 sql_help.c:3403 -#: sql_help.c:3405 sql_help.c:3407 sql_help.c:3409 sql_help.c:3411 -#: sql_help.c:3413 sql_help.c:3414 sql_help.c:3722 sql_help.c:3726 -#: sql_help.c:3729 sql_help.c:3731 sql_help.c:3733 sql_help.c:3735 -#: sql_help.c:3737 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747 -#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3753 sql_help.c:3755 -#: sql_help.c:3756 +#: sql_help.c:555 sql_help.c:557 sql_help.c:854 sql_help.c:862 sql_help.c:866 +#: sql_help.c:869 sql_help.c:872 sql_help.c:1354 sql_help.c:1362 +#: sql_help.c:1366 sql_help.c:1369 sql_help.c:1372 sql_help.c:2297 +#: sql_help.c:2299 sql_help.c:2302 sql_help.c:2303 sql_help.c:3383 +#: sql_help.c:3387 sql_help.c:3390 sql_help.c:3392 sql_help.c:3394 +#: sql_help.c:3396 sql_help.c:3398 sql_help.c:3404 sql_help.c:3406 +#: sql_help.c:3408 sql_help.c:3410 sql_help.c:3412 sql_help.c:3414 +#: sql_help.c:3416 sql_help.c:3417 sql_help.c:3725 sql_help.c:3729 +#: sql_help.c:3732 sql_help.c:3734 sql_help.c:3736 sql_help.c:3738 +#: sql_help.c:3740 sql_help.c:3746 sql_help.c:3748 sql_help.c:3750 +#: sql_help.c:3752 sql_help.c:3754 sql_help.c:3756 sql_help.c:3758 +#: sql_help.c:3759 msgid "role_specification" msgstr "specification_role" -#: sql_help.c:555 sql_help.c:557 sql_help.c:1384 sql_help.c:1855 -#: sql_help.c:2302 sql_help.c:2797 sql_help.c:3218 sql_help.c:4055 +#: sql_help.c:556 sql_help.c:558 sql_help.c:1385 sql_help.c:1856 +#: sql_help.c:2305 sql_help.c:2800 sql_help.c:3221 sql_help.c:4058 msgid "user_name" msgstr "nom_utilisateur" -#: sql_help.c:558 sql_help.c:873 sql_help.c:1373 sql_help.c:2301 -#: sql_help.c:3415 sql_help.c:3757 +#: sql_help.c:559 sql_help.c:874 sql_help.c:1374 sql_help.c:2304 +#: sql_help.c:3418 sql_help.c:3760 msgid "where role_specification can be:" msgstr "où specification_role peut être :" -#: sql_help.c:560 +#: sql_help.c:561 msgid "group_name" msgstr "nom_groupe" -#: sql_help.c:578 sql_help.c:1860 sql_help.c:2096 sql_help.c:2128 -#: sql_help.c:2467 sql_help.c:2479 sql_help.c:2492 sql_help.c:2532 -#: sql_help.c:2554 sql_help.c:2566 sql_help.c:3408 sql_help.c:3750 +#: sql_help.c:579 sql_help.c:1861 sql_help.c:2099 sql_help.c:2131 +#: sql_help.c:2470 sql_help.c:2482 sql_help.c:2495 sql_help.c:2535 +#: sql_help.c:2557 sql_help.c:2569 sql_help.c:3411 sql_help.c:3753 msgid "tablespace_name" msgstr "nom_tablespace" -#: sql_help.c:582 sql_help.c:585 sql_help.c:664 sql_help.c:666 sql_help.c:1147 -#: sql_help.c:1149 sql_help.c:2094 sql_help.c:2126 sql_help.c:2465 -#: sql_help.c:2477 sql_help.c:2490 sql_help.c:2530 sql_help.c:2552 +#: sql_help.c:583 sql_help.c:586 sql_help.c:665 sql_help.c:667 sql_help.c:1148 +#: sql_help.c:1150 sql_help.c:2097 sql_help.c:2129 sql_help.c:2468 +#: sql_help.c:2480 sql_help.c:2493 sql_help.c:2533 sql_help.c:2555 msgid "storage_parameter" msgstr "paramètre_stockage" -#: sql_help.c:608 sql_help.c:1546 sql_help.c:3838 +#: sql_help.c:609 sql_help.c:1547 sql_help.c:3841 msgid "large_object_oid" msgstr "oid_large_object" -#: sql_help.c:663 sql_help.c:1145 sql_help.c:1154 sql_help.c:1157 -#: sql_help.c:1465 +#: sql_help.c:664 sql_help.c:1146 sql_help.c:1155 sql_help.c:1158 +#: sql_help.c:1466 msgid "index_name" msgstr "nom_index" -#: sql_help.c:695 sql_help.c:2149 +#: sql_help.c:696 sql_help.c:2152 msgid "res_proc" msgstr "res_proc" -#: sql_help.c:696 sql_help.c:2150 +#: sql_help.c:697 sql_help.c:2153 msgid "join_proc" msgstr "join_proc" -#: sql_help.c:748 sql_help.c:760 sql_help.c:2167 +#: sql_help.c:749 sql_help.c:761 sql_help.c:2170 msgid "strategy_number" msgstr "numéro_de_stratégie" -#: sql_help.c:750 sql_help.c:751 sql_help.c:754 sql_help.c:755 sql_help.c:761 -#: sql_help.c:762 sql_help.c:764 sql_help.c:765 sql_help.c:2169 sql_help.c:2170 -#: sql_help.c:2173 sql_help.c:2174 +#: sql_help.c:751 sql_help.c:752 sql_help.c:755 sql_help.c:756 sql_help.c:762 +#: sql_help.c:763 sql_help.c:765 sql_help.c:766 sql_help.c:2172 sql_help.c:2173 +#: sql_help.c:2176 sql_help.c:2177 msgid "op_type" msgstr "type_op" -#: sql_help.c:752 sql_help.c:2171 +#: sql_help.c:753 sql_help.c:2174 msgid "sort_family_name" msgstr "nom_famille_tri" -#: sql_help.c:753 sql_help.c:763 sql_help.c:2172 +#: sql_help.c:754 sql_help.c:764 sql_help.c:2175 msgid "support_number" msgstr "numéro_de_support" -#: sql_help.c:757 sql_help.c:1799 sql_help.c:2176 sql_help.c:2643 -#: sql_help.c:2645 +#: sql_help.c:758 sql_help.c:1800 sql_help.c:2179 sql_help.c:2646 +#: sql_help.c:2648 msgid "argument_type" msgstr "type_argument" -#: sql_help.c:788 sql_help.c:791 sql_help.c:808 sql_help.c:810 sql_help.c:812 -#: sql_help.c:883 sql_help.c:922 sql_help.c:1271 sql_help.c:1274 -#: sql_help.c:1424 sql_help.c:1464 sql_help.c:1531 sql_help.c:1556 -#: sql_help.c:1561 sql_help.c:1576 sql_help.c:1633 sql_help.c:1638 -#: sql_help.c:1967 sql_help.c:1979 sql_help.c:2088 sql_help.c:2124 -#: sql_help.c:2200 sql_help.c:2215 sql_help.c:2271 sql_help.c:2322 -#: sql_help.c:2353 sql_help.c:2452 sql_help.c:2468 sql_help.c:2480 -#: sql_help.c:2550 sql_help.c:2669 sql_help.c:2846 sql_help.c:3063 -#: sql_help.c:3088 sql_help.c:3194 sql_help.c:3378 sql_help.c:3383 -#: sql_help.c:3429 sql_help.c:3461 sql_help.c:3720 sql_help.c:3725 -#: sql_help.c:3826 sql_help.c:3925 sql_help.c:3927 sql_help.c:3976 -#: sql_help.c:4015 sql_help.c:4164 sql_help.c:4166 sql_help.c:4215 -#: sql_help.c:4249 sql_help.c:4271 sql_help.c:4273 sql_help.c:4274 -#: sql_help.c:4358 sql_help.c:4360 sql_help.c:4409 +#: sql_help.c:789 sql_help.c:792 sql_help.c:809 sql_help.c:811 sql_help.c:813 +#: sql_help.c:884 sql_help.c:923 sql_help.c:1272 sql_help.c:1275 +#: sql_help.c:1425 sql_help.c:1465 sql_help.c:1532 sql_help.c:1557 +#: sql_help.c:1562 sql_help.c:1577 sql_help.c:1634 sql_help.c:1639 +#: sql_help.c:1969 sql_help.c:1981 sql_help.c:2091 sql_help.c:2127 +#: sql_help.c:2203 sql_help.c:2218 sql_help.c:2274 sql_help.c:2325 +#: sql_help.c:2356 sql_help.c:2455 sql_help.c:2471 sql_help.c:2483 +#: sql_help.c:2553 sql_help.c:2672 sql_help.c:2849 sql_help.c:3066 +#: sql_help.c:3091 sql_help.c:3197 sql_help.c:3381 sql_help.c:3386 +#: sql_help.c:3432 sql_help.c:3464 sql_help.c:3723 sql_help.c:3728 +#: sql_help.c:3829 sql_help.c:3928 sql_help.c:3930 sql_help.c:3979 +#: sql_help.c:4018 sql_help.c:4167 sql_help.c:4169 sql_help.c:4218 +#: sql_help.c:4252 sql_help.c:4274 sql_help.c:4276 sql_help.c:4277 +#: sql_help.c:4361 sql_help.c:4363 sql_help.c:4412 msgid "table_name" msgstr "nom_table" -#: sql_help.c:793 sql_help.c:2202 +#: sql_help.c:794 sql_help.c:2205 msgid "using_expression" msgstr "expression_using" -#: sql_help.c:794 sql_help.c:2203 +#: sql_help.c:795 sql_help.c:2206 msgid "check_expression" msgstr "expression_check" -#: sql_help.c:814 sql_help.c:2216 +#: sql_help.c:815 sql_help.c:2219 msgid "publication_parameter" msgstr "paramètre_publication" -#: sql_help.c:857 sql_help.c:1357 sql_help.c:2068 sql_help.c:2248 -#: sql_help.c:2780 +#: sql_help.c:858 sql_help.c:1358 sql_help.c:2071 sql_help.c:2251 +#: sql_help.c:2783 msgid "password" msgstr "mot_de_passe" -#: sql_help.c:858 sql_help.c:1358 sql_help.c:2069 sql_help.c:2249 -#: sql_help.c:2781 +#: sql_help.c:859 sql_help.c:1359 sql_help.c:2072 sql_help.c:2252 +#: sql_help.c:2784 msgid "timestamp" msgstr "horodatage" -#: sql_help.c:862 sql_help.c:866 sql_help.c:869 sql_help.c:872 sql_help.c:1362 -#: sql_help.c:1366 sql_help.c:1369 sql_help.c:1372 sql_help.c:3388 -#: sql_help.c:3730 +#: sql_help.c:863 sql_help.c:867 sql_help.c:870 sql_help.c:873 sql_help.c:1363 +#: sql_help.c:1367 sql_help.c:1370 sql_help.c:1373 sql_help.c:3391 +#: sql_help.c:3733 msgid "database_name" msgstr "nom_base_de_donnée" -#: sql_help.c:916 sql_help.c:2317 +#: sql_help.c:917 sql_help.c:2320 msgid "increment" msgstr "incrément" -#: sql_help.c:917 sql_help.c:2318 +#: sql_help.c:918 sql_help.c:2321 msgid "minvalue" msgstr "valeur_min" -#: sql_help.c:918 sql_help.c:2319 +#: sql_help.c:919 sql_help.c:2322 msgid "maxvalue" msgstr "valeur_max" -#: sql_help.c:919 sql_help.c:2320 sql_help.c:3923 sql_help.c:4013 -#: sql_help.c:4162 sql_help.c:4291 sql_help.c:4356 +#: sql_help.c:920 sql_help.c:2323 sql_help.c:3926 sql_help.c:4016 +#: sql_help.c:4165 sql_help.c:4294 sql_help.c:4359 msgid "start" msgstr "début" -#: sql_help.c:920 sql_help.c:1122 +#: sql_help.c:921 sql_help.c:1123 msgid "restart" msgstr "nouveau_début" -#: sql_help.c:921 sql_help.c:2321 +#: sql_help.c:922 sql_help.c:2324 msgid "cache" msgstr "cache" -#: sql_help.c:978 sql_help.c:2365 +#: sql_help.c:979 sql_help.c:2368 msgid "conninfo" msgstr "conninfo" -#: sql_help.c:980 sql_help.c:2366 +#: sql_help.c:981 sql_help.c:2369 msgid "publication_name" msgstr "nom_publication" -#: sql_help.c:981 +#: sql_help.c:982 msgid "set_publication_option" msgstr "option_ensemble_publication" -#: sql_help.c:984 +#: sql_help.c:985 msgid "refresh_option" msgstr "option_rafraichissement" -#: sql_help.c:989 sql_help.c:2367 +#: sql_help.c:990 sql_help.c:2370 msgid "subscription_parameter" msgstr "paramètre_souscription" -#: sql_help.c:1100 sql_help.c:1103 +#: sql_help.c:1101 sql_help.c:1104 msgid "partition_name" msgstr "nom_partition" -#: sql_help.c:1101 sql_help.c:1984 sql_help.c:2485 +#: sql_help.c:1102 sql_help.c:1986 sql_help.c:2488 msgid "partition_bound_spec" msgstr "partition_bound_spec" -#: sql_help.c:1119 sql_help.c:2497 +#: sql_help.c:1120 sql_help.c:2500 msgid "sequence_options" msgstr "options_séquence" -#: sql_help.c:1121 +#: sql_help.c:1122 msgid "sequence_option" msgstr "option_séquence" -#: sql_help.c:1133 +#: sql_help.c:1134 msgid "table_constraint_using_index" msgstr "contrainte_table_utilisant_index" -#: sql_help.c:1141 sql_help.c:1142 sql_help.c:1143 sql_help.c:1144 +#: sql_help.c:1142 sql_help.c:1143 sql_help.c:1144 sql_help.c:1145 msgid "rewrite_rule_name" msgstr "nom_règle_réécriture" -#: sql_help.c:1155 +#: sql_help.c:1156 msgid "and table_constraint_using_index is:" msgstr "et contrainte_table_utilisant_index est :" -#: sql_help.c:1173 sql_help.c:1176 sql_help.c:2569 +#: sql_help.c:1174 sql_help.c:1177 sql_help.c:2572 msgid "tablespace_option" msgstr "option_tablespace" -#: sql_help.c:1197 sql_help.c:1200 sql_help.c:1206 sql_help.c:1210 +#: sql_help.c:1198 sql_help.c:1201 sql_help.c:1207 sql_help.c:1211 msgid "token_type" msgstr "type_jeton" -#: sql_help.c:1198 sql_help.c:1201 +#: sql_help.c:1199 sql_help.c:1202 msgid "dictionary_name" msgstr "nom_dictionnaire" -#: sql_help.c:1203 sql_help.c:1207 +#: sql_help.c:1204 sql_help.c:1208 msgid "old_dictionary" msgstr "ancien_dictionnaire" -#: sql_help.c:1204 sql_help.c:1208 +#: sql_help.c:1205 sql_help.c:1209 msgid "new_dictionary" msgstr "nouveau_dictionnaire" -#: sql_help.c:1300 sql_help.c:1313 sql_help.c:1316 sql_help.c:1317 -#: sql_help.c:2720 +#: sql_help.c:1301 sql_help.c:1314 sql_help.c:1317 sql_help.c:1318 +#: sql_help.c:2723 msgid "attribute_name" msgstr "nom_attribut" -#: sql_help.c:1301 +#: sql_help.c:1302 msgid "new_attribute_name" msgstr "nouveau_nom_attribut" -#: sql_help.c:1307 sql_help.c:1311 +#: sql_help.c:1308 sql_help.c:1312 msgid "new_enum_value" msgstr "nouvelle_valeur_enum" -#: sql_help.c:1308 +#: sql_help.c:1309 msgid "neighbor_enum_value" msgstr "valeur_enum_voisine" -#: sql_help.c:1310 +#: sql_help.c:1311 msgid "existing_enum_value" msgstr "valeur_enum_existante" -#: sql_help.c:1385 sql_help.c:1976 sql_help.c:1985 sql_help.c:2333 -#: sql_help.c:2798 sql_help.c:3219 sql_help.c:3394 sql_help.c:3430 -#: sql_help.c:3736 +#: sql_help.c:1386 sql_help.c:1978 sql_help.c:1987 sql_help.c:2336 +#: sql_help.c:2801 sql_help.c:3222 sql_help.c:3397 sql_help.c:3433 +#: sql_help.c:3739 msgid "server_name" msgstr "nom_serveur" -#: sql_help.c:1413 sql_help.c:1416 sql_help.c:2813 +#: sql_help.c:1414 sql_help.c:1417 sql_help.c:2816 msgid "view_option_name" msgstr "nom_option_vue" -#: sql_help.c:1414 sql_help.c:2814 +#: sql_help.c:1415 sql_help.c:2817 msgid "view_option_value" msgstr "valeur_option_vue" -#: sql_help.c:1439 sql_help.c:4071 sql_help.c:4073 sql_help.c:4097 +#: sql_help.c:1440 sql_help.c:4074 sql_help.c:4076 sql_help.c:4100 msgid "transaction_mode" msgstr "mode_transaction" -#: sql_help.c:1440 sql_help.c:4074 sql_help.c:4098 +#: sql_help.c:1441 sql_help.c:4077 sql_help.c:4101 msgid "where transaction_mode is one of:" msgstr "où mode_transaction fait partie de :" -#: sql_help.c:1528 +#: sql_help.c:1529 msgid "relation_name" msgstr "nom_relation" -#: sql_help.c:1533 sql_help.c:3390 sql_help.c:3732 +#: sql_help.c:1534 sql_help.c:3393 sql_help.c:3735 msgid "domain_name" msgstr "nom_domaine" -#: sql_help.c:1555 +#: sql_help.c:1556 msgid "policy_name" msgstr "nom_politique" -#: sql_help.c:1560 +#: sql_help.c:1561 msgid "rule_name" msgstr "nom_règle" -#: sql_help.c:1579 +#: sql_help.c:1580 msgid "text" msgstr "texte" -#: sql_help.c:1604 sql_help.c:3574 sql_help.c:3773 +#: sql_help.c:1605 sql_help.c:3577 sql_help.c:3776 msgid "transaction_id" msgstr "id_transaction" -#: sql_help.c:1635 sql_help.c:1641 sql_help.c:3500 +#: sql_help.c:1636 sql_help.c:1642 sql_help.c:3503 msgid "filename" msgstr "nom_fichier" -#: sql_help.c:1636 sql_help.c:1642 sql_help.c:2273 sql_help.c:2274 -#: sql_help.c:2275 +#: sql_help.c:1637 sql_help.c:1643 sql_help.c:2276 sql_help.c:2277 +#: sql_help.c:2278 msgid "command" msgstr "commande" -#: sql_help.c:1640 sql_help.c:2129 sql_help.c:2555 sql_help.c:2815 -#: sql_help.c:2833 sql_help.c:3465 +#: sql_help.c:1641 sql_help.c:2132 sql_help.c:2558 sql_help.c:2818 +#: sql_help.c:2836 sql_help.c:3468 msgid "query" msgstr "requête" -#: sql_help.c:1644 sql_help.c:3265 +#: sql_help.c:1645 sql_help.c:3268 msgid "where option can be one of:" msgstr "où option fait partie de :" -#: sql_help.c:1645 +#: sql_help.c:1646 msgid "format_name" msgstr "nom_format" -#: sql_help.c:1646 sql_help.c:1647 sql_help.c:1650 sql_help.c:3266 -#: sql_help.c:3267 sql_help.c:3268 sql_help.c:3269 sql_help.c:3270 -#: sql_help.c:3271 +#: sql_help.c:1647 sql_help.c:1648 sql_help.c:1651 sql_help.c:3269 +#: sql_help.c:3270 sql_help.c:3271 sql_help.c:3272 sql_help.c:3273 +#: sql_help.c:3274 msgid "boolean" msgstr "boolean" -#: sql_help.c:1648 +#: sql_help.c:1649 msgid "delimiter_character" msgstr "caractère_délimiteur" -#: sql_help.c:1649 +#: sql_help.c:1650 msgid "null_string" msgstr "chaîne_null" -#: sql_help.c:1651 +#: sql_help.c:1652 msgid "quote_character" msgstr "caractère_guillemet" -#: sql_help.c:1652 +#: sql_help.c:1653 msgid "escape_character" msgstr "chaîne_d_échappement" -#: sql_help.c:1656 +#: sql_help.c:1657 msgid "encoding_name" msgstr "nom_encodage" -#: sql_help.c:1667 +#: sql_help.c:1668 msgid "access_method_type" msgstr "access_method_type" -#: sql_help.c:1733 sql_help.c:1752 sql_help.c:1755 +#: sql_help.c:1734 sql_help.c:1753 sql_help.c:1756 msgid "arg_data_type" msgstr "type_données_arg" -#: sql_help.c:1734 sql_help.c:1756 sql_help.c:1764 +#: sql_help.c:1735 sql_help.c:1757 sql_help.c:1765 msgid "sfunc" msgstr "sfunc" -#: sql_help.c:1735 sql_help.c:1757 sql_help.c:1765 +#: sql_help.c:1736 sql_help.c:1758 sql_help.c:1766 msgid "state_data_type" msgstr "type_de_données_statut" -#: sql_help.c:1736 sql_help.c:1758 sql_help.c:1766 +#: sql_help.c:1737 sql_help.c:1759 sql_help.c:1767 msgid "state_data_size" msgstr "taille_de_données_statut" -#: sql_help.c:1737 sql_help.c:1759 sql_help.c:1767 +#: sql_help.c:1738 sql_help.c:1760 sql_help.c:1768 msgid "ffunc" msgstr "ffunc" -#: sql_help.c:1738 sql_help.c:1768 +#: sql_help.c:1739 sql_help.c:1769 msgid "combinefunc" msgstr "combinefunc" -#: sql_help.c:1739 sql_help.c:1769 +#: sql_help.c:1740 sql_help.c:1770 msgid "serialfunc" msgstr "serialfunc" -#: sql_help.c:1740 sql_help.c:1770 +#: sql_help.c:1741 sql_help.c:1771 msgid "deserialfunc" msgstr "deserialfunc" -#: sql_help.c:1741 sql_help.c:1760 sql_help.c:1771 +#: sql_help.c:1742 sql_help.c:1761 sql_help.c:1772 msgid "initial_condition" msgstr "condition_initiale" -#: sql_help.c:1742 sql_help.c:1772 +#: sql_help.c:1743 sql_help.c:1773 msgid "msfunc" msgstr "msfunc" -#: sql_help.c:1743 sql_help.c:1773 +#: sql_help.c:1744 sql_help.c:1774 msgid "minvfunc" msgstr "minvfunc" -#: sql_help.c:1744 sql_help.c:1774 +#: sql_help.c:1745 sql_help.c:1775 msgid "mstate_data_type" msgstr "m_type_de_données_statut" -#: sql_help.c:1745 sql_help.c:1775 +#: sql_help.c:1746 sql_help.c:1776 msgid "mstate_data_size" msgstr "m_taille_de_données_statut" -#: sql_help.c:1746 sql_help.c:1776 +#: sql_help.c:1747 sql_help.c:1777 msgid "mffunc" msgstr "mffunc" -#: sql_help.c:1747 sql_help.c:1777 +#: sql_help.c:1748 sql_help.c:1778 msgid "minitial_condition" msgstr "m_condition_initiale" -#: sql_help.c:1748 sql_help.c:1778 +#: sql_help.c:1749 sql_help.c:1779 msgid "sort_operator" msgstr "opérateur_de_tri" -#: sql_help.c:1761 +#: sql_help.c:1762 msgid "or the old syntax" msgstr "ou l'ancienne syntaxe" -#: sql_help.c:1763 +#: sql_help.c:1764 msgid "base_type" msgstr "type_base" -#: sql_help.c:1819 +#: sql_help.c:1820 msgid "locale" msgstr "locale" -#: sql_help.c:1820 sql_help.c:1858 +#: sql_help.c:1821 sql_help.c:1859 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1821 sql_help.c:1859 +#: sql_help.c:1822 sql_help.c:1860 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1822 sql_help.c:3824 +#: sql_help.c:1823 sql_help.c:3827 msgid "provider" msgstr "fournisseur" -#: sql_help.c:1823 sql_help.c:1914 +#: sql_help.c:1824 sql_help.c:1916 msgid "version" msgstr "version" -#: sql_help.c:1825 +#: sql_help.c:1826 msgid "existing_collation" msgstr "collationnement_existant" -#: sql_help.c:1835 +#: sql_help.c:1836 msgid "source_encoding" msgstr "encodage_source" -#: sql_help.c:1836 +#: sql_help.c:1837 msgid "dest_encoding" msgstr "encodage_destination" -#: sql_help.c:1856 sql_help.c:2595 +#: sql_help.c:1857 sql_help.c:2598 msgid "template" msgstr "modèle" -#: sql_help.c:1857 +#: sql_help.c:1858 msgid "encoding" msgstr "encodage" -#: sql_help.c:1883 +#: sql_help.c:1884 msgid "constraint" msgstr "contrainte" -#: sql_help.c:1884 +#: sql_help.c:1885 msgid "where constraint is:" msgstr "où la contrainte est :" -#: sql_help.c:1898 sql_help.c:2270 sql_help.c:2668 +#: sql_help.c:1899 sql_help.c:2273 sql_help.c:2671 msgid "event" msgstr "événement" -#: sql_help.c:1899 +#: sql_help.c:1900 msgid "filter_variable" msgstr "filter_variable" -#: sql_help.c:1915 +#: sql_help.c:1901 +msgid "filter_value" +msgstr "filtre_valeur" + +#: sql_help.c:1917 msgid "old_version" msgstr "ancienne_version" -#: sql_help.c:1988 sql_help.c:2493 +#: sql_help.c:1990 sql_help.c:2496 msgid "where column_constraint is:" msgstr "où contrainte_colonne est :" -#: sql_help.c:1991 sql_help.c:2023 sql_help.c:2496 +#: sql_help.c:1993 sql_help.c:2026 sql_help.c:2499 msgid "default_expr" msgstr "expression_par_défaut" -#: sql_help.c:1992 sql_help.c:2504 +#: sql_help.c:1994 sql_help.c:2507 msgid "and table_constraint is:" msgstr "et contrainte_table est :" -#: sql_help.c:2024 +#: sql_help.c:2027 msgid "rettype" msgstr "type_en_retour" -#: sql_help.c:2026 +#: sql_help.c:2029 msgid "column_type" msgstr "type_colonne" -#: sql_help.c:2034 +#: sql_help.c:2037 msgid "definition" msgstr "définition" -#: sql_help.c:2035 +#: sql_help.c:2038 msgid "obj_file" msgstr "fichier_objet" -#: sql_help.c:2036 +#: sql_help.c:2039 msgid "link_symbol" msgstr "symbole_link" -#: sql_help.c:2037 +#: sql_help.c:2040 msgid "attribute" msgstr "attribut" -#: sql_help.c:2075 sql_help.c:2255 sql_help.c:2787 +#: sql_help.c:2078 sql_help.c:2258 sql_help.c:2790 msgid "uid" msgstr "uid" -#: sql_help.c:2089 +#: sql_help.c:2092 msgid "method" msgstr "méthode" -#: sql_help.c:2093 sql_help.c:2464 sql_help.c:2476 sql_help.c:2489 -#: sql_help.c:2536 sql_help.c:3474 +#: sql_help.c:2096 sql_help.c:2467 sql_help.c:2479 sql_help.c:2492 +#: sql_help.c:2539 sql_help.c:3477 msgid "opclass" msgstr "classe_d_opérateur" -#: sql_help.c:2097 sql_help.c:2515 +#: sql_help.c:2100 sql_help.c:2518 msgid "predicate" msgstr "prédicat" -#: sql_help.c:2109 +#: sql_help.c:2112 msgid "call_handler" msgstr "gestionnaire_d_appel" -#: sql_help.c:2110 +#: sql_help.c:2113 msgid "inline_handler" msgstr "gestionnaire_en_ligne" -#: sql_help.c:2111 +#: sql_help.c:2114 msgid "valfunction" msgstr "fonction_val" -#: sql_help.c:2147 +#: sql_help.c:2150 msgid "com_op" msgstr "com_op" -#: sql_help.c:2148 +#: sql_help.c:2151 msgid "neg_op" msgstr "neg_op" -#: sql_help.c:2166 +#: sql_help.c:2169 msgid "family_name" msgstr "nom_famille" -#: sql_help.c:2177 +#: sql_help.c:2180 msgid "storage_type" msgstr "type_stockage" -#: sql_help.c:2272 sql_help.c:2672 sql_help.c:2849 sql_help.c:3484 -#: sql_help.c:3914 sql_help.c:3916 sql_help.c:4004 sql_help.c:4006 -#: sql_help.c:4153 sql_help.c:4155 sql_help.c:4258 sql_help.c:4347 -#: sql_help.c:4349 +#: sql_help.c:2275 sql_help.c:2675 sql_help.c:2852 sql_help.c:3487 +#: sql_help.c:3917 sql_help.c:3919 sql_help.c:4007 sql_help.c:4009 +#: sql_help.c:4156 sql_help.c:4158 sql_help.c:4261 sql_help.c:4350 +#: sql_help.c:4352 msgid "condition" msgstr "condition" -#: sql_help.c:2276 sql_help.c:2675 +#: sql_help.c:2279 sql_help.c:2678 msgid "where event can be one of:" msgstr "où événement fait partie de :" -#: sql_help.c:2295 sql_help.c:2297 +#: sql_help.c:2298 sql_help.c:2300 msgid "schema_element" msgstr "élément_schéma" -#: sql_help.c:2334 +#: sql_help.c:2337 msgid "server_type" msgstr "type_serveur" -#: sql_help.c:2335 +#: sql_help.c:2338 msgid "server_version" msgstr "version_serveur" -#: sql_help.c:2336 sql_help.c:3392 sql_help.c:3734 +#: sql_help.c:2339 sql_help.c:3395 sql_help.c:3737 msgid "fdw_name" msgstr "nom_fdw" -#: sql_help.c:2349 +#: sql_help.c:2352 msgid "statistics_name" msgstr "nom_statistique" -#: sql_help.c:2350 +#: sql_help.c:2353 msgid "statistics_kind" msgstr "statistics_kind" -#: sql_help.c:2364 +#: sql_help.c:2367 msgid "subscription_name" msgstr "nom_souscription" -#: sql_help.c:2458 +#: sql_help.c:2461 msgid "source_table" msgstr "table_source" -#: sql_help.c:2459 +#: sql_help.c:2462 msgid "like_option" msgstr "option_like" -#: sql_help.c:2498 sql_help.c:2499 sql_help.c:2508 sql_help.c:2510 -#: sql_help.c:2514 +#: sql_help.c:2501 sql_help.c:2502 sql_help.c:2511 sql_help.c:2513 +#: sql_help.c:2517 msgid "index_parameters" msgstr "paramètres_index" -#: sql_help.c:2500 sql_help.c:2517 +#: sql_help.c:2503 sql_help.c:2520 msgid "reftable" msgstr "table_référence" -#: sql_help.c:2501 sql_help.c:2518 +#: sql_help.c:2504 sql_help.c:2521 msgid "refcolumn" msgstr "colonne_référence" -#: sql_help.c:2512 +#: sql_help.c:2515 msgid "exclude_element" msgstr "élément_exclusion" -#: sql_help.c:2513 sql_help.c:3921 sql_help.c:4011 sql_help.c:4160 -#: sql_help.c:4289 sql_help.c:4354 +#: sql_help.c:2516 sql_help.c:3924 sql_help.c:4014 sql_help.c:4163 +#: sql_help.c:4292 sql_help.c:4357 msgid "operator" msgstr "opérateur" -#: sql_help.c:2521 +#: sql_help.c:2524 msgid "and like_option is:" msgstr "et option_like est :" -#: sql_help.c:2522 +#: sql_help.c:2525 msgid "and partition_bound_spec is:" msgstr "et partition_bound_spec est :" -#: sql_help.c:2523 sql_help.c:2525 sql_help.c:2527 +#: sql_help.c:2526 sql_help.c:2528 sql_help.c:2530 msgid "numeric_literal" msgstr "numeric_literal" -#: sql_help.c:2524 sql_help.c:2526 sql_help.c:2528 +#: sql_help.c:2527 sql_help.c:2529 sql_help.c:2531 msgid "string_literal" msgstr "littéral_chaîne" -#: sql_help.c:2529 +#: sql_help.c:2532 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:2533 +#: sql_help.c:2536 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "élément_exclusion dans une contrainte EXCLUDE est :" -#: sql_help.c:2568 +#: sql_help.c:2571 msgid "directory" msgstr "répertoire" -#: sql_help.c:2582 +#: sql_help.c:2585 msgid "parser_name" msgstr "nom_analyseur" -#: sql_help.c:2583 +#: sql_help.c:2586 msgid "source_config" msgstr "configuration_source" -#: sql_help.c:2612 +#: sql_help.c:2615 msgid "start_function" msgstr "fonction_start" -#: sql_help.c:2613 +#: sql_help.c:2616 msgid "gettoken_function" msgstr "fonction_gettoken" -#: sql_help.c:2614 +#: sql_help.c:2617 msgid "end_function" msgstr "fonction_end" -#: sql_help.c:2615 +#: sql_help.c:2618 msgid "lextypes_function" msgstr "fonction_lextypes" -#: sql_help.c:2616 +#: sql_help.c:2619 msgid "headline_function" msgstr "fonction_headline" -#: sql_help.c:2628 +#: sql_help.c:2631 msgid "init_function" msgstr "fonction_init" -#: sql_help.c:2629 +#: sql_help.c:2632 msgid "lexize_function" msgstr "fonction_lexize" -#: sql_help.c:2642 +#: sql_help.c:2645 msgid "from_sql_function_name" msgstr "nom_fonction_from_sql" -#: sql_help.c:2644 +#: sql_help.c:2647 msgid "to_sql_function_name" msgstr "nom_fonction_to_sql" -#: sql_help.c:2670 +#: sql_help.c:2673 msgid "referenced_table_name" msgstr "nom_table_référencée" -#: sql_help.c:2671 +#: sql_help.c:2674 msgid "transition_relation_name" msgstr "nom_relation_transition" -#: sql_help.c:2674 +#: sql_help.c:2677 msgid "arguments" msgstr "arguments" -#: sql_help.c:2724 sql_help.c:3849 +#: sql_help.c:2727 sql_help.c:3852 msgid "label" msgstr "label" -#: sql_help.c:2726 +#: sql_help.c:2729 msgid "subtype" msgstr "sous_type" -#: sql_help.c:2727 +#: sql_help.c:2730 msgid "subtype_operator_class" msgstr "classe_opérateur_sous_type" -#: sql_help.c:2729 +#: sql_help.c:2732 msgid "canonical_function" msgstr "fonction_canonique" -#: sql_help.c:2730 +#: sql_help.c:2733 msgid "subtype_diff_function" msgstr "fonction_diff_sous_type" -#: sql_help.c:2732 +#: sql_help.c:2735 msgid "input_function" msgstr "fonction_en_sortie" -#: sql_help.c:2733 +#: sql_help.c:2736 msgid "output_function" msgstr "fonction_en_sortie" -#: sql_help.c:2734 +#: sql_help.c:2737 msgid "receive_function" msgstr "fonction_receive" -#: sql_help.c:2735 +#: sql_help.c:2738 msgid "send_function" msgstr "fonction_send" -#: sql_help.c:2736 +#: sql_help.c:2739 msgid "type_modifier_input_function" msgstr "fonction_en_entrée_modificateur_type" -#: sql_help.c:2737 +#: sql_help.c:2740 msgid "type_modifier_output_function" msgstr "fonction_en_sortie_modificateur_type" -#: sql_help.c:2738 +#: sql_help.c:2741 msgid "analyze_function" msgstr "fonction_analyze" -#: sql_help.c:2739 +#: sql_help.c:2742 msgid "internallength" msgstr "longueur_interne" -#: sql_help.c:2740 +#: sql_help.c:2743 msgid "alignment" msgstr "alignement" -#: sql_help.c:2741 +#: sql_help.c:2744 msgid "storage" msgstr "stockage" -#: sql_help.c:2742 +#: sql_help.c:2745 msgid "like_type" msgstr "type_like" -#: sql_help.c:2743 +#: sql_help.c:2746 msgid "category" msgstr "catégorie" -#: sql_help.c:2744 +#: sql_help.c:2747 msgid "preferred" msgstr "préféré" -#: sql_help.c:2745 +#: sql_help.c:2748 msgid "default" msgstr "par défaut" -#: sql_help.c:2746 +#: sql_help.c:2749 msgid "element" msgstr "élément" -#: sql_help.c:2747 +#: sql_help.c:2750 msgid "delimiter" msgstr "délimiteur" -#: sql_help.c:2748 +#: sql_help.c:2751 msgid "collatable" msgstr "collationnable" -#: sql_help.c:2845 sql_help.c:3460 sql_help.c:3909 sql_help.c:3998 -#: sql_help.c:4148 sql_help.c:4248 sql_help.c:4342 +#: sql_help.c:2848 sql_help.c:3463 sql_help.c:3912 sql_help.c:4001 +#: sql_help.c:4151 sql_help.c:4251 sql_help.c:4345 msgid "with_query" msgstr "requête_with" -#: sql_help.c:2847 sql_help.c:3462 sql_help.c:3928 sql_help.c:3934 -#: sql_help.c:3937 sql_help.c:3941 sql_help.c:3945 sql_help.c:3953 -#: sql_help.c:4167 sql_help.c:4173 sql_help.c:4176 sql_help.c:4180 -#: sql_help.c:4184 sql_help.c:4192 sql_help.c:4250 sql_help.c:4361 -#: sql_help.c:4367 sql_help.c:4370 sql_help.c:4374 sql_help.c:4378 -#: sql_help.c:4386 +#: sql_help.c:2850 sql_help.c:3465 sql_help.c:3931 sql_help.c:3937 +#: sql_help.c:3940 sql_help.c:3944 sql_help.c:3948 sql_help.c:3956 +#: sql_help.c:4170 sql_help.c:4176 sql_help.c:4179 sql_help.c:4183 +#: sql_help.c:4187 sql_help.c:4195 sql_help.c:4253 sql_help.c:4364 +#: sql_help.c:4370 sql_help.c:4373 sql_help.c:4377 sql_help.c:4381 +#: sql_help.c:4389 msgid "alias" msgstr "alias" -#: sql_help.c:2848 sql_help.c:3913 sql_help.c:3955 sql_help.c:3957 -#: sql_help.c:4003 sql_help.c:4152 sql_help.c:4194 sql_help.c:4196 -#: sql_help.c:4257 sql_help.c:4346 sql_help.c:4388 sql_help.c:4390 +#: sql_help.c:2851 sql_help.c:3916 sql_help.c:3958 sql_help.c:3960 +#: sql_help.c:4006 sql_help.c:4155 sql_help.c:4197 sql_help.c:4199 +#: sql_help.c:4260 sql_help.c:4349 sql_help.c:4391 sql_help.c:4393 msgid "from_item" msgstr "élément_from" -#: sql_help.c:2850 sql_help.c:3297 sql_help.c:3541 sql_help.c:4259 +#: sql_help.c:2853 sql_help.c:3300 sql_help.c:3544 sql_help.c:4262 msgid "cursor_name" msgstr "nom_curseur" -#: sql_help.c:2851 sql_help.c:3468 sql_help.c:4260 +#: sql_help.c:2854 sql_help.c:3471 sql_help.c:4263 msgid "output_expression" msgstr "expression_en_sortie" -#: sql_help.c:2852 sql_help.c:3469 sql_help.c:3912 sql_help.c:4001 -#: sql_help.c:4151 sql_help.c:4261 sql_help.c:4345 +#: sql_help.c:2855 sql_help.c:3472 sql_help.c:3915 sql_help.c:4004 +#: sql_help.c:4154 sql_help.c:4264 sql_help.c:4348 msgid "output_name" msgstr "nom_en_sortie" -#: sql_help.c:2868 +#: sql_help.c:2871 msgid "code" msgstr "code" -#: sql_help.c:3243 +#: sql_help.c:3246 msgid "parameter" msgstr "paramètre" -#: sql_help.c:3263 sql_help.c:3264 sql_help.c:3566 +#: sql_help.c:3266 sql_help.c:3267 sql_help.c:3569 msgid "statement" msgstr "instruction" -#: sql_help.c:3296 sql_help.c:3540 +#: sql_help.c:3299 sql_help.c:3543 msgid "direction" msgstr "direction" -#: sql_help.c:3298 sql_help.c:3542 +#: sql_help.c:3301 sql_help.c:3545 msgid "where direction can be empty or one of:" msgstr "où direction peut être vide ou faire partie de :" -#: sql_help.c:3299 sql_help.c:3300 sql_help.c:3301 sql_help.c:3302 -#: sql_help.c:3303 sql_help.c:3543 sql_help.c:3544 sql_help.c:3545 -#: sql_help.c:3546 sql_help.c:3547 sql_help.c:3922 sql_help.c:3924 -#: sql_help.c:4012 sql_help.c:4014 sql_help.c:4161 sql_help.c:4163 -#: sql_help.c:4290 sql_help.c:4292 sql_help.c:4355 sql_help.c:4357 +#: sql_help.c:3302 sql_help.c:3303 sql_help.c:3304 sql_help.c:3305 +#: sql_help.c:3306 sql_help.c:3546 sql_help.c:3547 sql_help.c:3548 +#: sql_help.c:3549 sql_help.c:3550 sql_help.c:3925 sql_help.c:3927 +#: sql_help.c:4015 sql_help.c:4017 sql_help.c:4164 sql_help.c:4166 +#: sql_help.c:4293 sql_help.c:4295 sql_help.c:4358 sql_help.c:4360 msgid "count" msgstr "nombre" -#: sql_help.c:3385 sql_help.c:3727 +#: sql_help.c:3388 sql_help.c:3730 msgid "sequence_name" msgstr "nom_séquence" -#: sql_help.c:3398 sql_help.c:3740 +#: sql_help.c:3401 sql_help.c:3743 msgid "arg_name" msgstr "nom_argument" -#: sql_help.c:3399 sql_help.c:3741 +#: sql_help.c:3402 sql_help.c:3744 msgid "arg_type" msgstr "type_arg" -#: sql_help.c:3404 sql_help.c:3746 +#: sql_help.c:3407 sql_help.c:3749 msgid "loid" msgstr "loid" -#: sql_help.c:3428 +#: sql_help.c:3431 msgid "remote_schema" msgstr "schema_distant" -#: sql_help.c:3431 +#: sql_help.c:3434 msgid "local_schema" msgstr "schéma_local" -#: sql_help.c:3466 +#: sql_help.c:3469 msgid "conflict_target" msgstr "cible_conflit" -#: sql_help.c:3467 +#: sql_help.c:3470 msgid "conflict_action" msgstr "action_conflit" -#: sql_help.c:3470 +#: sql_help.c:3473 msgid "where conflict_target can be one of:" msgstr "où cible_conflit fait partie de :" -#: sql_help.c:3471 +#: sql_help.c:3474 msgid "index_column_name" msgstr "index_nom_colonne" -#: sql_help.c:3472 +#: sql_help.c:3475 msgid "index_expression" msgstr "index_expression" -#: sql_help.c:3475 +#: sql_help.c:3478 msgid "index_predicate" msgstr "index_prédicat" -#: sql_help.c:3477 +#: sql_help.c:3480 msgid "and conflict_action is one of:" msgstr "où action_conflit fait partie de :" -#: sql_help.c:3483 sql_help.c:4256 +#: sql_help.c:3486 sql_help.c:4259 msgid "sub-SELECT" msgstr "sous-SELECT" -#: sql_help.c:3492 sql_help.c:3555 sql_help.c:4232 +#: sql_help.c:3495 sql_help.c:3558 sql_help.c:4235 msgid "channel" msgstr "canal" -#: sql_help.c:3514 +#: sql_help.c:3517 msgid "lockmode" msgstr "mode_de_verrou" -#: sql_help.c:3515 +#: sql_help.c:3518 msgid "where lockmode is one of:" msgstr "où mode_de_verrou fait partie de :" -#: sql_help.c:3556 +#: sql_help.c:3559 msgid "payload" msgstr "contenu" -#: sql_help.c:3583 +#: sql_help.c:3586 msgid "old_role" msgstr "ancien_rôle" -#: sql_help.c:3584 +#: sql_help.c:3587 msgid "new_role" msgstr "nouveau_rôle" -#: sql_help.c:3609 sql_help.c:3781 sql_help.c:3789 +#: sql_help.c:3612 sql_help.c:3784 sql_help.c:3792 msgid "savepoint_name" msgstr "nom_savepoint" -#: sql_help.c:3915 sql_help.c:3967 sql_help.c:4154 sql_help.c:4206 -#: sql_help.c:4348 sql_help.c:4400 +#: sql_help.c:3918 sql_help.c:3970 sql_help.c:4157 sql_help.c:4209 +#: sql_help.c:4351 sql_help.c:4403 msgid "grouping_element" msgstr "element_regroupement" -#: sql_help.c:3917 sql_help.c:4007 sql_help.c:4156 sql_help.c:4350 +#: sql_help.c:3920 sql_help.c:4010 sql_help.c:4159 sql_help.c:4353 msgid "window_name" msgstr "nom_window" -#: sql_help.c:3918 sql_help.c:4008 sql_help.c:4157 sql_help.c:4351 +#: sql_help.c:3921 sql_help.c:4011 sql_help.c:4160 sql_help.c:4354 msgid "window_definition" msgstr "définition_window" -#: sql_help.c:3919 sql_help.c:3933 sql_help.c:3971 sql_help.c:4009 -#: sql_help.c:4158 sql_help.c:4172 sql_help.c:4210 sql_help.c:4352 -#: sql_help.c:4366 sql_help.c:4404 +#: sql_help.c:3922 sql_help.c:3936 sql_help.c:3974 sql_help.c:4012 +#: sql_help.c:4161 sql_help.c:4175 sql_help.c:4213 sql_help.c:4355 +#: sql_help.c:4369 sql_help.c:4407 msgid "select" msgstr "sélection" -#: sql_help.c:3926 sql_help.c:4165 sql_help.c:4359 +#: sql_help.c:3929 sql_help.c:4168 sql_help.c:4362 msgid "where from_item can be one of:" msgstr "où élément_from fait partie de :" -#: sql_help.c:3929 sql_help.c:3935 sql_help.c:3938 sql_help.c:3942 -#: sql_help.c:3954 sql_help.c:4168 sql_help.c:4174 sql_help.c:4177 -#: sql_help.c:4181 sql_help.c:4193 sql_help.c:4362 sql_help.c:4368 -#: sql_help.c:4371 sql_help.c:4375 sql_help.c:4387 +#: sql_help.c:3932 sql_help.c:3938 sql_help.c:3941 sql_help.c:3945 +#: sql_help.c:3957 sql_help.c:4171 sql_help.c:4177 sql_help.c:4180 +#: sql_help.c:4184 sql_help.c:4196 sql_help.c:4365 sql_help.c:4371 +#: sql_help.c:4374 sql_help.c:4378 sql_help.c:4390 msgid "column_alias" msgstr "alias_colonne" -#: sql_help.c:3930 sql_help.c:4169 sql_help.c:4363 +#: sql_help.c:3933 sql_help.c:4172 sql_help.c:4366 msgid "sampling_method" msgstr "méthode_echantillonnage" -#: sql_help.c:3931 sql_help.c:3940 sql_help.c:3944 sql_help.c:3948 -#: sql_help.c:3951 sql_help.c:4170 sql_help.c:4179 sql_help.c:4183 -#: sql_help.c:4187 sql_help.c:4190 sql_help.c:4364 sql_help.c:4373 -#: sql_help.c:4377 sql_help.c:4381 sql_help.c:4384 +#: sql_help.c:3934 sql_help.c:3943 sql_help.c:3947 sql_help.c:3951 +#: sql_help.c:3954 sql_help.c:4173 sql_help.c:4182 sql_help.c:4186 +#: sql_help.c:4190 sql_help.c:4193 sql_help.c:4367 sql_help.c:4376 +#: sql_help.c:4380 sql_help.c:4384 sql_help.c:4387 msgid "argument" msgstr "argument" -#: sql_help.c:3932 sql_help.c:4171 sql_help.c:4365 +#: sql_help.c:3935 sql_help.c:4174 sql_help.c:4368 msgid "seed" msgstr "graine" -#: sql_help.c:3936 sql_help.c:3969 sql_help.c:4175 sql_help.c:4208 -#: sql_help.c:4369 sql_help.c:4402 +#: sql_help.c:3939 sql_help.c:3972 sql_help.c:4178 sql_help.c:4211 +#: sql_help.c:4372 sql_help.c:4405 msgid "with_query_name" msgstr "nom_requête_with" -#: sql_help.c:3946 sql_help.c:3949 sql_help.c:3952 sql_help.c:4185 -#: sql_help.c:4188 sql_help.c:4191 sql_help.c:4379 sql_help.c:4382 -#: sql_help.c:4385 +#: sql_help.c:3949 sql_help.c:3952 sql_help.c:3955 sql_help.c:4188 +#: sql_help.c:4191 sql_help.c:4194 sql_help.c:4382 sql_help.c:4385 +#: sql_help.c:4388 msgid "column_definition" msgstr "définition_colonne" -#: sql_help.c:3956 sql_help.c:4195 sql_help.c:4389 +#: sql_help.c:3959 sql_help.c:4198 sql_help.c:4392 msgid "join_type" msgstr "type_de_jointure" -#: sql_help.c:3958 sql_help.c:4197 sql_help.c:4391 +#: sql_help.c:3961 sql_help.c:4200 sql_help.c:4394 msgid "join_condition" msgstr "condition_de_jointure" -#: sql_help.c:3959 sql_help.c:4198 sql_help.c:4392 +#: sql_help.c:3962 sql_help.c:4201 sql_help.c:4395 msgid "join_column" msgstr "colonne_de_jointure" -#: sql_help.c:3960 sql_help.c:4199 sql_help.c:4393 +#: sql_help.c:3963 sql_help.c:4202 sql_help.c:4396 msgid "and grouping_element can be one of:" msgstr "où element_regroupement fait partie de :" -#: sql_help.c:3968 sql_help.c:4207 sql_help.c:4401 +#: sql_help.c:3971 sql_help.c:4210 sql_help.c:4404 msgid "and with_query is:" msgstr "et requête_with est :" -#: sql_help.c:3972 sql_help.c:4211 sql_help.c:4405 +#: sql_help.c:3975 sql_help.c:4214 sql_help.c:4408 msgid "values" msgstr "valeurs" -#: sql_help.c:3973 sql_help.c:4212 sql_help.c:4406 +#: sql_help.c:3976 sql_help.c:4215 sql_help.c:4409 msgid "insert" msgstr "insert" -#: sql_help.c:3974 sql_help.c:4213 sql_help.c:4407 +#: sql_help.c:3977 sql_help.c:4216 sql_help.c:4410 msgid "update" msgstr "update" -#: sql_help.c:3975 sql_help.c:4214 sql_help.c:4408 +#: sql_help.c:3978 sql_help.c:4217 sql_help.c:4411 msgid "delete" msgstr "delete" -#: sql_help.c:4002 +#: sql_help.c:4005 msgid "new_table" msgstr "nouvelle_table" -#: sql_help.c:4027 +#: sql_help.c:4030 msgid "timezone" msgstr "fuseau_horaire" -#: sql_help.c:4072 +#: sql_help.c:4075 msgid "snapshot_id" msgstr "id_snapshot" -#: sql_help.c:4288 +#: sql_help.c:4291 msgid "sort_expression" msgstr "expression_de_tri" -#: sql_help.c:4415 sql_help.c:5200 +#: sql_help.c:4418 sql_help.c:5203 msgid "abort the current transaction" msgstr "abandonner la transaction en cours" -#: sql_help.c:4420 +#: sql_help.c:4423 msgid "change the definition of an aggregate function" msgstr "modifier la définition d'une fonction d'agrégation" -#: sql_help.c:4425 +#: sql_help.c:4428 msgid "change the definition of a collation" msgstr "modifier la définition d'un collationnement" -#: sql_help.c:4430 +#: sql_help.c:4433 msgid "change the definition of a conversion" msgstr "modifier la définition d'une conversion" -#: sql_help.c:4435 +#: sql_help.c:4438 msgid "change a database" msgstr "modifier une base de données" -#: sql_help.c:4440 +#: sql_help.c:4443 msgid "define default access privileges" msgstr "définir les droits d'accès par défaut" -#: sql_help.c:4445 +#: sql_help.c:4448 msgid "change the definition of a domain" msgstr "modifier la définition d'un domaine" -#: sql_help.c:4450 +#: sql_help.c:4453 msgid "change the definition of an event trigger" msgstr "modifier la définition d'un trigger sur évènement" -#: sql_help.c:4455 +#: sql_help.c:4458 msgid "change the definition of an extension" msgstr "modifier la définition d'une extension" -#: sql_help.c:4460 +#: sql_help.c:4463 msgid "change the definition of a foreign-data wrapper" msgstr "modifier la définition d'un wrapper de données distantes" -#: sql_help.c:4465 +#: sql_help.c:4468 msgid "change the definition of a foreign table" msgstr "modifier la définition d'une table distante" -#: sql_help.c:4470 +#: sql_help.c:4473 msgid "change the definition of a function" msgstr "modifier la définition d'une fonction" -#: sql_help.c:4475 +#: sql_help.c:4478 msgid "change role name or membership" msgstr "modifier le nom d'un groupe ou la liste des ses membres" -#: sql_help.c:4480 +#: sql_help.c:4483 msgid "change the definition of an index" msgstr "modifier la définition d'un index" -#: sql_help.c:4485 +#: sql_help.c:4488 msgid "change the definition of a procedural language" msgstr "modifier la définition d'un langage procédural" -#: sql_help.c:4490 +#: sql_help.c:4493 msgid "change the definition of a large object" msgstr "modifier la définition d'un « Large Object »" -#: sql_help.c:4495 +#: sql_help.c:4498 msgid "change the definition of a materialized view" msgstr "modifier la définition d'une vue matérialisée" -#: sql_help.c:4500 +#: sql_help.c:4503 msgid "change the definition of an operator" msgstr "modifier la définition d'un opérateur" -#: sql_help.c:4505 +#: sql_help.c:4508 msgid "change the definition of an operator class" msgstr "modifier la définition d'une classe d'opérateurs" -#: sql_help.c:4510 +#: sql_help.c:4513 msgid "change the definition of an operator family" msgstr "modifier la définition d'une famille d'opérateur" -#: sql_help.c:4515 +#: sql_help.c:4518 msgid "change the definition of a row level security policy" msgstr "modifier la définition d'une politique de sécurité au niveau ligne" -#: sql_help.c:4520 +#: sql_help.c:4523 msgid "change the definition of a publication" msgstr "modifier la définition d'une publication" -#: sql_help.c:4525 sql_help.c:4605 +#: sql_help.c:4528 sql_help.c:4608 msgid "change a database role" msgstr "modifier un rôle" -#: sql_help.c:4530 +#: sql_help.c:4533 msgid "change the definition of a rule" msgstr "modifier la définition d'une règle" -#: sql_help.c:4535 +#: sql_help.c:4538 msgid "change the definition of a schema" msgstr "modifier la définition d'un schéma" -#: sql_help.c:4540 +#: sql_help.c:4543 msgid "change the definition of a sequence generator" msgstr "modifier la définition d'un générateur de séquence" -#: sql_help.c:4545 +#: sql_help.c:4548 msgid "change the definition of a foreign server" msgstr "modifier la définition d'un serveur distant" -#: sql_help.c:4550 +#: sql_help.c:4553 msgid "change the definition of an extended statistics object" msgstr "modifier la définition d'un objet de statistiques étendues" -#: sql_help.c:4555 +#: sql_help.c:4558 msgid "change the definition of a subscription" msgstr "modifier la définition d'une souscription" -#: sql_help.c:4560 +#: sql_help.c:4563 msgid "change a server configuration parameter" msgstr "modifie un paramètre de configuration du serveur" -#: sql_help.c:4565 +#: sql_help.c:4568 msgid "change the definition of a table" msgstr "modifier la définition d'une table" -#: sql_help.c:4570 +#: sql_help.c:4573 msgid "change the definition of a tablespace" msgstr "modifier la définition d'un tablespace" -#: sql_help.c:4575 +#: sql_help.c:4578 msgid "change the definition of a text search configuration" msgstr "modifier la définition d'une configuration de la recherche de texte" -#: sql_help.c:4580 +#: sql_help.c:4583 msgid "change the definition of a text search dictionary" msgstr "modifier la définition d'un dictionnaire de la recherche de texte" -#: sql_help.c:4585 +#: sql_help.c:4588 msgid "change the definition of a text search parser" msgstr "modifier la définition d'un analyseur de la recherche de texte" -#: sql_help.c:4590 +#: sql_help.c:4593 msgid "change the definition of a text search template" msgstr "modifier la définition d'un modèle de la recherche de texte" -#: sql_help.c:4595 +#: sql_help.c:4598 msgid "change the definition of a trigger" msgstr "modifier la définition d'un trigger" -#: sql_help.c:4600 +#: sql_help.c:4603 msgid "change the definition of a type" msgstr "modifier la définition d'un type" -#: sql_help.c:4610 +#: sql_help.c:4613 msgid "change the definition of a user mapping" msgstr "modifier la définition d'une correspondance d'utilisateur" -#: sql_help.c:4615 +#: sql_help.c:4618 msgid "change the definition of a view" msgstr "modifier la définition d'une vue" -#: sql_help.c:4620 +#: sql_help.c:4623 msgid "collect statistics about a database" msgstr "acquérir des statistiques concernant la base de données" -#: sql_help.c:4625 sql_help.c:5265 +#: sql_help.c:4628 sql_help.c:5268 msgid "start a transaction block" msgstr "débuter un bloc de transaction" -#: sql_help.c:4630 +#: sql_help.c:4633 msgid "force a write-ahead log checkpoint" msgstr "forcer un point de vérification des journaux de transactions" -#: sql_help.c:4635 +#: sql_help.c:4638 msgid "close a cursor" msgstr "fermer un curseur" -#: sql_help.c:4640 +#: sql_help.c:4643 msgid "cluster a table according to an index" msgstr "réorganiser (cluster) une table en fonction d'un index" -#: sql_help.c:4645 +#: sql_help.c:4648 msgid "define or change the comment of an object" msgstr "définir ou modifier les commentaires d'un objet" -#: sql_help.c:4650 sql_help.c:5100 +#: sql_help.c:4653 sql_help.c:5103 msgid "commit the current transaction" msgstr "valider la transaction en cours" -#: sql_help.c:4655 +#: sql_help.c:4658 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "" "valider une transaction précédemment préparée pour une validation en deux\n" "phases" -#: sql_help.c:4660 +#: sql_help.c:4663 msgid "copy data between a file and a table" msgstr "copier des données entre un fichier et une table" -#: sql_help.c:4665 +#: sql_help.c:4668 msgid "define a new access method" msgstr "définir une nouvelle méthode d'accès" -#: sql_help.c:4670 +#: sql_help.c:4673 msgid "define a new aggregate function" msgstr "définir une nouvelle fonction d'agrégation" -#: sql_help.c:4675 +#: sql_help.c:4678 msgid "define a new cast" msgstr "définir un nouveau transtypage" -#: sql_help.c:4680 +#: sql_help.c:4683 msgid "define a new collation" msgstr "définir un nouveau collationnement" -#: sql_help.c:4685 +#: sql_help.c:4688 msgid "define a new encoding conversion" msgstr "définir une nouvelle conversion d'encodage" -#: sql_help.c:4690 +#: sql_help.c:4693 msgid "create a new database" msgstr "créer une nouvelle base de données" -#: sql_help.c:4695 +#: sql_help.c:4698 msgid "define a new domain" msgstr "définir un nouveau domaine" -#: sql_help.c:4700 +#: sql_help.c:4703 msgid "define a new event trigger" msgstr "définir un nouveau trigger sur évènement" -#: sql_help.c:4705 +#: sql_help.c:4708 msgid "install an extension" msgstr "installer une extension" -#: sql_help.c:4710 +#: sql_help.c:4713 msgid "define a new foreign-data wrapper" msgstr "définir un nouveau wrapper de données distantes" -#: sql_help.c:4715 +#: sql_help.c:4718 msgid "define a new foreign table" msgstr "définir une nouvelle table distante" -#: sql_help.c:4720 +#: sql_help.c:4723 msgid "define a new function" msgstr "définir une nouvelle fonction" -#: sql_help.c:4725 sql_help.c:4770 sql_help.c:4855 +#: sql_help.c:4728 sql_help.c:4773 sql_help.c:4858 msgid "define a new database role" msgstr "définir un nouveau rôle" -#: sql_help.c:4730 +#: sql_help.c:4733 msgid "define a new index" msgstr "définir un nouvel index" -#: sql_help.c:4735 +#: sql_help.c:4738 msgid "define a new procedural language" msgstr "définir un nouveau langage de procédures" -#: sql_help.c:4740 +#: sql_help.c:4743 msgid "define a new materialized view" msgstr "définir une nouvelle vue matérialisée" -#: sql_help.c:4745 +#: sql_help.c:4748 msgid "define a new operator" msgstr "définir un nouvel opérateur" -#: sql_help.c:4750 +#: sql_help.c:4753 msgid "define a new operator class" msgstr "définir une nouvelle classe d'opérateur" -#: sql_help.c:4755 +#: sql_help.c:4758 msgid "define a new operator family" msgstr "définir une nouvelle famille d'opérateur" -#: sql_help.c:4760 +#: sql_help.c:4763 msgid "define a new row level security policy for a table" msgstr "définir une nouvelle politique de sécurité au niveau ligne pour une table" -#: sql_help.c:4765 +#: sql_help.c:4768 msgid "define a new publication" msgstr "définir une nouvelle publication" -#: sql_help.c:4775 +#: sql_help.c:4778 msgid "define a new rewrite rule" msgstr "définir une nouvelle règle de réécriture" -#: sql_help.c:4780 +#: sql_help.c:4783 msgid "define a new schema" msgstr "définir un nouveau schéma" -#: sql_help.c:4785 +#: sql_help.c:4788 msgid "define a new sequence generator" msgstr "définir un nouveau générateur de séquence" -#: sql_help.c:4790 +#: sql_help.c:4793 msgid "define a new foreign server" msgstr "définir un nouveau serveur distant" -#: sql_help.c:4795 +#: sql_help.c:4798 msgid "define extended statistics" msgstr "définir des statistiques étendues" -#: sql_help.c:4800 +#: sql_help.c:4803 msgid "define a new subscription" msgstr "définir une nouvelle souscription" -#: sql_help.c:4805 +#: sql_help.c:4808 msgid "define a new table" msgstr "définir une nouvelle table" -#: sql_help.c:4810 sql_help.c:5230 +#: sql_help.c:4813 sql_help.c:5233 msgid "define a new table from the results of a query" msgstr "définir une nouvelle table à partir des résultats d'une requête" -#: sql_help.c:4815 +#: sql_help.c:4818 msgid "define a new tablespace" msgstr "définir un nouveau tablespace" -#: sql_help.c:4820 +#: sql_help.c:4823 msgid "define a new text search configuration" msgstr "définir une nouvelle configuration de la recherche de texte" -#: sql_help.c:4825 +#: sql_help.c:4828 msgid "define a new text search dictionary" msgstr "définir un nouveau dictionnaire de la recherche de texte" -#: sql_help.c:4830 +#: sql_help.c:4833 msgid "define a new text search parser" msgstr "définir un nouvel analyseur de la recherche de texte" -#: sql_help.c:4835 +#: sql_help.c:4838 msgid "define a new text search template" msgstr "définir un nouveau modèle de la recherche de texte" -#: sql_help.c:4840 +#: sql_help.c:4843 msgid "define a new transform" msgstr "définir une nouvelle transformation" -#: sql_help.c:4845 +#: sql_help.c:4848 msgid "define a new trigger" msgstr "définir un nouveau trigger" -#: sql_help.c:4850 +#: sql_help.c:4853 msgid "define a new data type" msgstr "définir un nouveau type de données" -#: sql_help.c:4860 +#: sql_help.c:4863 msgid "define a new mapping of a user to a foreign server" msgstr "définit une nouvelle correspondance d'un utilisateur vers un serveur distant" -#: sql_help.c:4865 +#: sql_help.c:4868 msgid "define a new view" msgstr "définir une nouvelle vue" -#: sql_help.c:4870 +#: sql_help.c:4873 msgid "deallocate a prepared statement" msgstr "désallouer une instruction préparée" -#: sql_help.c:4875 +#: sql_help.c:4878 msgid "define a cursor" msgstr "définir un curseur" -#: sql_help.c:4880 +#: sql_help.c:4883 msgid "delete rows of a table" msgstr "supprimer des lignes d'une table" -#: sql_help.c:4885 +#: sql_help.c:4888 msgid "discard session state" msgstr "annuler l'état de la session" -#: sql_help.c:4890 +#: sql_help.c:4893 msgid "execute an anonymous code block" msgstr "exécute un bloc de code anonyme" -#: sql_help.c:4895 +#: sql_help.c:4898 msgid "remove an access method" msgstr "supprimer une méthode d'accès" -#: sql_help.c:4900 +#: sql_help.c:4903 msgid "remove an aggregate function" msgstr "supprimer une fonction d'agrégation" -#: sql_help.c:4905 +#: sql_help.c:4908 msgid "remove a cast" msgstr "supprimer un transtypage" -#: sql_help.c:4910 +#: sql_help.c:4913 msgid "remove a collation" msgstr "supprimer un collationnement" -#: sql_help.c:4915 +#: sql_help.c:4918 msgid "remove a conversion" msgstr "supprimer une conversion" -#: sql_help.c:4920 +#: sql_help.c:4923 msgid "remove a database" msgstr "supprimer une base de données" -#: sql_help.c:4925 +#: sql_help.c:4928 msgid "remove a domain" msgstr "supprimer un domaine" -#: sql_help.c:4930 +#: sql_help.c:4933 msgid "remove an event trigger" msgstr "supprimer un trigger sur évènement" -#: sql_help.c:4935 +#: sql_help.c:4938 msgid "remove an extension" msgstr "supprimer une extension" -#: sql_help.c:4940 +#: sql_help.c:4943 msgid "remove a foreign-data wrapper" msgstr "supprimer un wrapper de données distantes" -#: sql_help.c:4945 +#: sql_help.c:4948 msgid "remove a foreign table" msgstr "supprimer une table distante" -#: sql_help.c:4950 +#: sql_help.c:4953 msgid "remove a function" msgstr "supprimer une fonction" -#: sql_help.c:4955 sql_help.c:5005 sql_help.c:5085 +#: sql_help.c:4958 sql_help.c:5008 sql_help.c:5088 msgid "remove a database role" msgstr "supprimer un rôle de la base de données" -#: sql_help.c:4960 +#: sql_help.c:4963 msgid "remove an index" msgstr "supprimer un index" -#: sql_help.c:4965 +#: sql_help.c:4968 msgid "remove a procedural language" msgstr "supprimer un langage procédural" -#: sql_help.c:4970 +#: sql_help.c:4973 msgid "remove a materialized view" msgstr "supprimer une vue matérialisée" -#: sql_help.c:4975 +#: sql_help.c:4978 msgid "remove an operator" msgstr "supprimer un opérateur" -#: sql_help.c:4980 +#: sql_help.c:4983 msgid "remove an operator class" msgstr "supprimer une classe d'opérateur" -#: sql_help.c:4985 +#: sql_help.c:4988 msgid "remove an operator family" msgstr "supprimer une famille d'opérateur" -#: sql_help.c:4990 +#: sql_help.c:4993 msgid "remove database objects owned by a database role" msgstr "supprimer les objets appartenant à un rôle" -#: sql_help.c:4995 +#: sql_help.c:4998 msgid "remove a row level security policy from a table" msgstr "supprimer une nouvelle politique de sécurité au niveau ligne pour une table" -#: sql_help.c:5000 +#: sql_help.c:5003 msgid "remove a publication" msgstr "supprimer une publication" -#: sql_help.c:5010 +#: sql_help.c:5013 msgid "remove a rewrite rule" msgstr "supprimer une règle de réécriture" -#: sql_help.c:5015 +#: sql_help.c:5018 msgid "remove a schema" msgstr "supprimer un schéma" -#: sql_help.c:5020 +#: sql_help.c:5023 msgid "remove a sequence" msgstr "supprimer une séquence" -#: sql_help.c:5025 +#: sql_help.c:5028 msgid "remove a foreign server descriptor" msgstr "supprimer un descripteur de serveur distant" -#: sql_help.c:5030 +#: sql_help.c:5033 msgid "remove extended statistics" msgstr "supprimer des statistiques étendues" -#: sql_help.c:5035 +#: sql_help.c:5038 msgid "remove a subscription" msgstr "supprimer une souscription" -#: sql_help.c:5040 +#: sql_help.c:5043 msgid "remove a table" msgstr "supprimer une table" -#: sql_help.c:5045 +#: sql_help.c:5048 msgid "remove a tablespace" msgstr "supprimer un tablespace" -#: sql_help.c:5050 +#: sql_help.c:5053 msgid "remove a text search configuration" msgstr "supprimer une configuration de la recherche de texte" -#: sql_help.c:5055 +#: sql_help.c:5058 msgid "remove a text search dictionary" msgstr "supprimer un dictionnaire de la recherche de texte" -#: sql_help.c:5060 +#: sql_help.c:5063 msgid "remove a text search parser" msgstr "supprimer un analyseur de la recherche de texte" -#: sql_help.c:5065 +#: sql_help.c:5068 msgid "remove a text search template" msgstr "supprimer un modèle de la recherche de texte" -#: sql_help.c:5070 +#: sql_help.c:5073 msgid "remove a transform" msgstr "supprimer une transformation" -#: sql_help.c:5075 +#: sql_help.c:5078 msgid "remove a trigger" msgstr "supprimer un trigger" -#: sql_help.c:5080 +#: sql_help.c:5083 msgid "remove a data type" msgstr "supprimer un type de données" -#: sql_help.c:5090 +#: sql_help.c:5093 msgid "remove a user mapping for a foreign server" msgstr "supprime une correspondance utilisateur pour un serveur distant" -#: sql_help.c:5095 +#: sql_help.c:5098 msgid "remove a view" msgstr "supprimer une vue" -#: sql_help.c:5105 +#: sql_help.c:5108 msgid "execute a prepared statement" msgstr "exécuter une instruction préparée" -#: sql_help.c:5110 +#: sql_help.c:5113 msgid "show the execution plan of a statement" msgstr "afficher le plan d'exécution d'une instruction" -#: sql_help.c:5115 +#: sql_help.c:5118 msgid "retrieve rows from a query using a cursor" msgstr "extraire certaines lignes d'une requête à l'aide d'un curseur" -#: sql_help.c:5120 +#: sql_help.c:5123 msgid "define access privileges" msgstr "définir des privilèges d'accès" -#: sql_help.c:5125 +#: sql_help.c:5128 msgid "import table definitions from a foreign server" msgstr "importer la définition d'une table à partir d'un serveur distant" -#: sql_help.c:5130 +#: sql_help.c:5133 msgid "create new rows in a table" msgstr "créer de nouvelles lignes dans une table" -#: sql_help.c:5135 +#: sql_help.c:5138 msgid "listen for a notification" msgstr "se mettre à l'écoute d'une notification" -#: sql_help.c:5140 +#: sql_help.c:5143 msgid "load a shared library file" msgstr "charger un fichier de bibliothèque partagée" -#: sql_help.c:5145 +#: sql_help.c:5148 msgid "lock a table" msgstr "verrouiller une table" -#: sql_help.c:5150 +#: sql_help.c:5153 msgid "position a cursor" msgstr "positionner un curseur" -#: sql_help.c:5155 +#: sql_help.c:5158 msgid "generate a notification" msgstr "engendrer une notification" -#: sql_help.c:5160 +#: sql_help.c:5163 msgid "prepare a statement for execution" msgstr "préparer une instruction pour exécution" -#: sql_help.c:5165 +#: sql_help.c:5168 msgid "prepare the current transaction for two-phase commit" msgstr "préparer la transaction en cours pour une validation en deux phases" -#: sql_help.c:5170 +#: sql_help.c:5173 msgid "change the ownership of database objects owned by a database role" msgstr "changer le propriétaire des objets d'un rôle" -#: sql_help.c:5175 +#: sql_help.c:5178 msgid "replace the contents of a materialized view" msgstr "remplacer le contenu d'une vue matérialisée" -#: sql_help.c:5180 +#: sql_help.c:5183 msgid "rebuild indexes" msgstr "reconstruire des index" -#: sql_help.c:5185 +#: sql_help.c:5188 msgid "destroy a previously defined savepoint" msgstr "détruire un point de retournement précédemment défini" -#: sql_help.c:5190 +#: sql_help.c:5193 msgid "restore the value of a run-time parameter to the default value" msgstr "réinitialiser un paramètre d'exécution à sa valeur par défaut" -#: sql_help.c:5195 +#: sql_help.c:5198 msgid "remove access privileges" msgstr "supprimer des privilèges d'accès" -#: sql_help.c:5205 +#: sql_help.c:5208 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "" "annuler une transaction précédemment préparée pour une validation en deux\n" "phases" -#: sql_help.c:5210 +#: sql_help.c:5213 msgid "roll back to a savepoint" msgstr "annuler jusqu'au point de retournement" -#: sql_help.c:5215 +#: sql_help.c:5218 msgid "define a new savepoint within the current transaction" msgstr "définir un nouveau point de retournement pour la transaction en cours" -#: sql_help.c:5220 +#: sql_help.c:5223 msgid "define or change a security label applied to an object" msgstr "définir ou modifier un label de sécurité à un objet" -#: sql_help.c:5225 sql_help.c:5270 sql_help.c:5300 +#: sql_help.c:5228 sql_help.c:5273 sql_help.c:5303 msgid "retrieve rows from a table or view" msgstr "extraire des lignes d'une table ou d'une vue" -#: sql_help.c:5235 +#: sql_help.c:5238 msgid "change a run-time parameter" msgstr "modifier un paramètre d'exécution" -#: sql_help.c:5240 +#: sql_help.c:5243 msgid "set constraint check timing for the current transaction" msgstr "définir le moment de la vérification des contraintes pour la transaction en cours" -#: sql_help.c:5245 +#: sql_help.c:5248 msgid "set the current user identifier of the current session" msgstr "définir l'identifiant actuel de l'utilisateur de la session courante" -#: sql_help.c:5250 +#: sql_help.c:5253 msgid "set the session user identifier and the current user identifier of the current session" msgstr "" "définir l'identifiant de l'utilisateur de session et l'identifiant actuel de\n" "l'utilisateur de la session courante" -#: sql_help.c:5255 +#: sql_help.c:5258 msgid "set the characteristics of the current transaction" msgstr "définir les caractéristiques de la transaction en cours" -#: sql_help.c:5260 +#: sql_help.c:5263 msgid "show the value of a run-time parameter" msgstr "afficher la valeur d'un paramètre d'exécution" -#: sql_help.c:5275 +#: sql_help.c:5278 msgid "empty a table or set of tables" msgstr "vider une table ou un ensemble de tables" -#: sql_help.c:5280 +#: sql_help.c:5283 msgid "stop listening for a notification" msgstr "arrêter l'écoute d'une notification" -#: sql_help.c:5285 +#: sql_help.c:5288 msgid "update rows of a table" msgstr "actualiser les lignes d'une table" -#: sql_help.c:5290 +#: sql_help.c:5293 msgid "garbage-collect and optionally analyze a database" msgstr "compacter et optionnellement analyser une base de données" -#: sql_help.c:5295 +#: sql_help.c:5298 msgid "compute a set of rows" msgstr "calculer un ensemble de lignes" #: startup.c:187 #, c-format msgid "%s: -1 can only be used in non-interactive mode\n" -msgstr "%s p: -1 peut seulement être utilisé dans un mode non intéractif\n" +msgstr "%s p: -1 peut seulement être utilisé dans un mode non interactif\n" #: startup.c:290 #, c-format @@ -5798,7 +5791,7 @@ msgid "%s: could not find own program executable\n" msgstr "%s : n'a pas pu trouver son propre exécutable\n" -#: tab-complete.c:4214 +#: tab-complete.c:4216 #, c-format msgid "" "tab completion query failed: %s\n" diff -Nru postgresql-10-10.17/src/bin/psql/po/ru.po postgresql-10-10.19/src/bin/psql/po/ru.po --- postgresql-10-10.17/src/bin/psql/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -4,13 +4,14 @@ # Serguei A. Mokhov , 2001-2005. # Oleg Bartunov , 2004-2005. # Sergey Burladyan , 2012. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. +# Maxim Yablokov , 2021. msgid "" msgstr "" "Project-Id-Version: psql (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2021-02-08 07:31+0300\n" -"PO-Revision-Date: 2020-11-20 15:23+0300\n" +"POT-Creation-Date: 2021-09-29 11:52+0300\n" +"PO-Revision-Date: 2021-11-08 05:44+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -56,7 +57,7 @@ msgstr "ошибка pclose: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 command.c:3126 command.c:3175 command.c:3285 +#: ../../common/fe_memutils.c:98 command.c:3146 command.c:3195 command.c:3305 #: input.c:227 mainloop.c:82 mainloop.c:276 #, c-format msgid "out of memory\n" @@ -72,7 +73,7 @@ msgid "could not look up effective user ID %ld: %s" msgstr "выяснить эффективный идентификатор пользователя (%ld) не удалось: %s" -#: ../../common/username.c:45 command.c:555 +#: ../../common/username.c:45 command.c:556 msgid "user does not exist" msgstr "пользователь не существует" @@ -146,22 +147,22 @@ msgid "skipping recursive expansion of variable \"%s\"\n" msgstr "рекурсивное расширение переменной \"%s\" пропускается\n" -#: command.c:223 +#: command.c:224 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Неверная команда \\%s. Справка по командам: \\?\n" -#: command.c:225 +#: command.c:226 #, c-format msgid "invalid command \\%s\n" msgstr "неверная команда \\%s\n" -#: command.c:243 +#: command.c:244 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: лишний аргумент \"%s\" пропущен\n" -#: command.c:295 +#: command.c:296 #, c-format msgid "" "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block\n" @@ -169,22 +170,22 @@ "команда \\%s игнорируется; добавьте \\endif или нажмите Ctrl-C для " "завершения текущего блока \\if\n" -#: command.c:553 +#: command.c:554 #, c-format msgid "could not get home directory for user ID %ld: %s\n" msgstr "не удалось получить домашний каталог пользователя c ид. %ld: %s\n" -#: command.c:571 +#: command.c:572 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: не удалось перейти в каталог \"%s\": %s\n" -#: command.c:596 common.c:662 common.c:720 common.c:1308 +#: command.c:597 common.c:664 common.c:722 common.c:1310 #, c-format msgid "You are currently not connected to a database.\n" msgstr "В данный момент вы не подключены к базе данных.\n" -#: command.c:603 +#: command.c:604 #, c-format msgid "" "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at " @@ -193,7 +194,7 @@ "Вы подключены к базе данных \"%s\" как пользователь \"%s\" через сокет в \"%s" "\", порт \"%s\".\n" -#: command.c:606 +#: command.c:607 #, c-format msgid "" "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port " @@ -202,170 +203,170 @@ "Вы подключены к базе данных \"%s\" как пользователь \"%s\" (сервер \"%s\", " "порт \"%s\").\n" -#: command.c:895 command.c:985 command.c:1094 command.c:2503 +#: command.c:896 command.c:986 command.c:1095 command.c:2504 #, c-format msgid "no query buffer\n" msgstr "нет буфера запросов\n" -#: command.c:928 command.c:4932 +#: command.c:929 command.c:4972 #, c-format msgid "invalid line number: %s\n" msgstr "неверный номер строки: %s\n" -#: command.c:978 +#: command.c:979 #, c-format msgid "The server (version %s) does not support editing function source.\n" msgstr "" "Сервер (версия %s) не поддерживает редактирование исходного кода функции.\n" -#: command.c:1053 command.c:1134 +#: command.c:1054 command.c:1135 msgid "No changes" msgstr "Изменений нет" -#: command.c:1087 +#: command.c:1088 #, c-format msgid "The server (version %s) does not support editing view definitions.\n" msgstr "" "Сервер (версия %s) не поддерживает редактирование определения " "представления.\n" -#: command.c:1211 +#: command.c:1212 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "" "%s: неверное название кодировки символов или не найдена процедура " "перекодировки\n" -#: command.c:1246 command.c:1868 command.c:3122 command.c:3307 command.c:5034 -#: common.c:173 common.c:244 common.c:555 common.c:1354 common.c:1382 -#: common.c:1483 copy.c:492 copy.c:711 large_obj.c:156 large_obj.c:191 +#: command.c:1247 command.c:1869 command.c:3142 command.c:3327 command.c:5074 +#: common.c:175 common.c:246 common.c:557 common.c:1356 common.c:1384 +#: common.c:1485 copy.c:492 copy.c:711 large_obj.c:156 large_obj.c:191 #: large_obj.c:253 #, c-format msgid "%s" msgstr "%s" -#: command.c:1250 +#: command.c:1251 msgid "out of memory" msgstr "нехватка памяти" -#: command.c:1253 +#: command.c:1254 msgid "There is no previous error." msgstr "Ошибки не было." -#: command.c:1424 command.c:1729 command.c:1743 command.c:1760 command.c:1920 -#: command.c:2157 command.c:2470 command.c:2510 +#: command.c:1425 command.c:1730 command.c:1744 command.c:1761 command.c:1921 +#: command.c:2158 command.c:2471 command.c:2511 #, c-format msgid "\\%s: missing required argument\n" msgstr "отсутствует необходимый аргумент \\%s\n" -#: command.c:1555 +#: command.c:1556 #, c-format msgid "\\elif: cannot occur after \\else\n" msgstr "\\elif не может находиться после \\else\n" -#: command.c:1560 +#: command.c:1561 #, c-format msgid "\\elif: no matching \\if\n" msgstr "\\elif без соответствующего \\if\n" -#: command.c:1624 +#: command.c:1625 #, c-format msgid "\\else: cannot occur after \\else\n" msgstr "\\else не может находиться после \\else\n" -#: command.c:1629 +#: command.c:1630 #, c-format msgid "\\else: no matching \\if\n" msgstr "\\else без соответствующего \\if\n" -#: command.c:1669 +#: command.c:1670 #, c-format msgid "\\endif: no matching \\if\n" msgstr "\\endif без соответствующего \\if\n" -#: command.c:1824 +#: command.c:1825 msgid "Query buffer is empty." msgstr "Буфер запроса пуст." -#: command.c:1846 +#: command.c:1847 msgid "Enter new password: " msgstr "Введите новый пароль: " -#: command.c:1847 +#: command.c:1848 msgid "Enter it again: " msgstr "Повторите его: " -#: command.c:1851 +#: command.c:1852 #, c-format msgid "Passwords didn't match.\n" msgstr "Пароли не совпадают.\n" -#: command.c:1950 +#: command.c:1951 #, c-format msgid "\\%s: could not read value for variable\n" msgstr "\\%s: не удалось прочитать значение переменной\n" -#: command.c:2053 +#: command.c:2054 msgid "Query buffer reset (cleared)." msgstr "Буфер запроса сброшен (очищен)." -#: command.c:2075 +#: command.c:2076 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "История записана в файл \"%s\".\n" -#: command.c:2162 +#: command.c:2163 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" msgstr "\\%s: имя переменной окружения не может содержать знак \"=\"\n" -#: command.c:2218 +#: command.c:2219 #, c-format msgid "The server (version %s) does not support showing function source.\n" msgstr "Сервер (версия %s) не поддерживает вывод исходного кода функции.\n" -#: command.c:2225 +#: command.c:2226 #, c-format msgid "function name is required\n" msgstr "требуется имя функции\n" -#: command.c:2312 +#: command.c:2313 #, c-format msgid "The server (version %s) does not support showing view definitions.\n" msgstr "Сервер (версия %s) не поддерживает вывод определения представлений.\n" -#: command.c:2319 +#: command.c:2320 #, c-format msgid "view name is required\n" msgstr "требуется имя представления\n" -#: command.c:2442 +#: command.c:2443 msgid "Timing is on." msgstr "Секундомер включён." -#: command.c:2444 +#: command.c:2445 msgid "Timing is off." msgstr "Секундомер выключен." -#: command.c:2529 command.c:2557 command.c:3685 command.c:3688 command.c:3691 -#: command.c:3697 command.c:3699 command.c:3707 command.c:3717 command.c:3726 -#: command.c:3740 command.c:3757 command.c:3815 common.c:69 copy.c:332 -#: copy.c:392 copy.c:405 psqlscanslash.l:761 psqlscanslash.l:772 -#: psqlscanslash.l:782 +#: command.c:2530 command.c:2558 command.c:3704 command.c:3707 command.c:3710 +#: command.c:3716 command.c:3718 command.c:3744 command.c:3754 command.c:3766 +#: command.c:3780 command.c:3797 command.c:3855 common.c:71 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:763 psqlscanslash.l:774 +#: psqlscanslash.l:784 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:2941 startup.c:205 +#: command.c:2942 startup.c:205 msgid "Password: " msgstr "Пароль: " -#: command.c:2946 startup.c:207 +#: command.c:2947 startup.c:207 #, c-format msgid "Password for user %s: " msgstr "Пароль пользователя %s: " -#: command.c:3000 +#: command.c:3001 #, c-format msgid "" "All connection parameters must be supplied because no database connection " @@ -374,17 +375,17 @@ "Без подключения к базе данных необходимо указывать все параметры " "подключения\n" -#: command.c:3313 +#: command.c:3333 #, c-format msgid "Previous connection kept\n" msgstr "Сохранено предыдущее подключение\n" -#: command.c:3319 +#: command.c:3339 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:3360 +#: command.c:3380 #, c-format msgid "" "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " @@ -393,7 +394,7 @@ "Вы подключены к базе данных \"%s\" как пользователь \"%s\" через сокет в \"%s" "\", порт \"%s\".\n" -#: command.c:3363 +#: command.c:3383 #, c-format msgid "" "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " @@ -402,17 +403,17 @@ "Вы подключены к базе данных \"%s\" как пользователь \"%s\" (сервер \"%s\", " "порт \"%s\").\n" -#: command.c:3367 +#: command.c:3387 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\".\n" msgstr "Вы подключены к базе данных \"%s\" как пользователь \"%s\".\n" -#: command.c:3400 +#: command.c:3420 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, сервер %s)\n" -#: command.c:3408 +#: command.c:3428 #, c-format msgid "" "WARNING: %s major version %s, server major version %s.\n" @@ -421,24 +422,24 @@ "ПРЕДУПРЕЖДЕНИЕ: %s имеет базовую версию %s, а сервер - %s.\n" " Часть функций psql может не работать.\n" -#: command.c:3446 +#: command.c:3466 #, c-format msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" msgstr "SSL-соединение (протокол: %s, шифр: %s, бит: %s, сжатие: %s)\n" -#: command.c:3447 command.c:3448 command.c:3449 +#: command.c:3467 command.c:3468 command.c:3469 msgid "unknown" msgstr "неизвестно" -#: command.c:3450 help.c:45 +#: command.c:3470 help.c:45 msgid "off" msgstr "выкл." -#: command.c:3450 help.c:45 +#: command.c:3470 help.c:45 msgid "on" msgstr "вкл." -#: command.c:3470 +#: command.c:3490 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -451,7 +452,7 @@ " Подробнее об этом смотрите документацию psql, раздел\n" " \"Notes for Windows users\".\n" -#: command.c:3574 +#: command.c:3594 #, c-format msgid "" "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " @@ -460,27 +461,27 @@ "в переменной окружения PSQL_EDITOR_LINENUMBER_ARG должен быть указан номер " "строки\n" -#: command.c:3603 +#: command.c:3623 #, c-format msgid "could not start editor \"%s\"\n" msgstr "не удалось запустить редактор \"%s\"\n" -#: command.c:3605 +#: command.c:3625 #, c-format msgid "could not start /bin/sh\n" msgstr "не удалось запустить /bin/sh\n" -#: command.c:3643 +#: command.c:3662 #, c-format msgid "could not locate temporary directory: %s\n" msgstr "не удалось найти временный каталог: %s\n" -#: command.c:3670 +#: command.c:3689 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "не удалось открыть временный файл \"%s\": %s\n" -#: command.c:3944 +#: command.c:3984 #, c-format msgid "" "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, " @@ -489,122 +490,122 @@ "\\pset: допустимые форматы: unaligned, aligned, wrapped, html, asciidoc, " "latex, latex-longtable, troff-ms\n" -#: command.c:3962 +#: command.c:4002 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: допустимые стили линий: ascii, old-ascii, unicode\n" -#: command.c:3977 +#: command.c:4017 #, c-format msgid "\\pset: allowed Unicode border line styles are single, double\n" msgstr "\\pset: допустимые стили Unicode-линий границ: single, double\n" -#: command.c:3992 +#: command.c:4032 #, c-format msgid "\\pset: allowed Unicode column line styles are single, double\n" msgstr "\\pset: допустимые стили Unicode-линий столбцов: single, double\n" -#: command.c:4007 +#: command.c:4047 #, c-format msgid "\\pset: allowed Unicode header line styles are single, double\n" msgstr "\\pset: допустимые стили Unicode-линий заголовков: single, double\n" -#: command.c:4172 command.c:4351 +#: command.c:4212 command.c:4391 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "неизвестный параметр \\pset: %s\n" -#: command.c:4190 +#: command.c:4230 #, c-format msgid "Border style is %d.\n" msgstr "Стиль границ: %d.\n" -#: command.c:4196 +#: command.c:4236 #, c-format msgid "Target width is unset.\n" msgstr "Ширина вывода сброшена.\n" -#: command.c:4198 +#: command.c:4238 #, c-format msgid "Target width is %d.\n" msgstr "Ширина вывода: %d.\n" -#: command.c:4205 +#: command.c:4245 #, c-format msgid "Expanded display is on.\n" msgstr "Расширенный вывод включён.\n" -#: command.c:4207 +#: command.c:4247 #, c-format msgid "Expanded display is used automatically.\n" msgstr "Расширенный вывод применяется автоматически.\n" -#: command.c:4209 +#: command.c:4249 #, c-format msgid "Expanded display is off.\n" msgstr "Расширенный вывод выключен.\n" -#: command.c:4216 command.c:4224 +#: command.c:4256 command.c:4264 #, c-format msgid "Field separator is zero byte.\n" msgstr "Разделитель полей - нулевой байт.\n" -#: command.c:4218 +#: command.c:4258 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Разделитель полей: \"%s\".\n" -#: command.c:4231 +#: command.c:4271 #, c-format msgid "Default footer is on.\n" msgstr "Строка итогов включена.\n" -#: command.c:4233 +#: command.c:4273 #, c-format msgid "Default footer is off.\n" msgstr "Строка итогов выключена.\n" -#: command.c:4239 +#: command.c:4279 #, c-format msgid "Output format is %s.\n" msgstr "Формат вывода: %s.\n" -#: command.c:4245 +#: command.c:4285 #, c-format msgid "Line style is %s.\n" msgstr "Установлен стиль линий: %s.\n" -#: command.c:4252 +#: command.c:4292 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null выводится как: \"%s\".\n" -#: command.c:4260 +#: command.c:4300 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "Локализованный вывод чисел включён.\n" -#: command.c:4262 +#: command.c:4302 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "Локализованный вывод чисел выключен.\n" -#: command.c:4269 +#: command.c:4309 #, c-format msgid "Pager is used for long output.\n" msgstr "Постраничник используется для вывода длинного текста.\n" -#: command.c:4271 +#: command.c:4311 #, c-format msgid "Pager is always used.\n" msgstr "Постраничник используется всегда.\n" -#: command.c:4273 +#: command.c:4313 #, c-format msgid "Pager usage is off.\n" msgstr "Постраничник выключен.\n" -#: command.c:4279 +#: command.c:4319 #, c-format msgid "Pager won't be used for less than %d line.\n" msgid_plural "Pager won't be used for less than %d lines.\n" @@ -612,87 +613,87 @@ msgstr[1] "Постраничник не будет использоваться, если строк меньше %d\n" msgstr[2] "Постраничник не будет использоваться, если строк меньше %d\n" -#: command.c:4289 command.c:4299 +#: command.c:4329 command.c:4339 #, c-format msgid "Record separator is zero byte.\n" msgstr "Разделитель записей - нулевой байт.\n" -#: command.c:4291 +#: command.c:4331 #, c-format msgid "Record separator is .\n" msgstr "Разделитель записей: <новая строка>.\n" -#: command.c:4293 +#: command.c:4333 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Разделитель записей: \"%s\".\n" -#: command.c:4306 +#: command.c:4346 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "Атрибуты HTML-таблицы: \"%s\".\n" -#: command.c:4309 +#: command.c:4349 #, c-format msgid "Table attributes unset.\n" msgstr "Атрибуты HTML-таблицы не заданы.\n" -#: command.c:4316 +#: command.c:4356 #, c-format msgid "Title is \"%s\".\n" msgstr "Заголовок: \"%s\".\n" -#: command.c:4318 +#: command.c:4358 #, c-format msgid "Title is unset.\n" msgstr "Заголовок не задан.\n" -#: command.c:4325 +#: command.c:4365 #, c-format msgid "Tuples only is on.\n" msgstr "Режим вывода только кортежей включён.\n" -#: command.c:4327 +#: command.c:4367 #, c-format msgid "Tuples only is off.\n" msgstr "Режим вывода только кортежей выключен.\n" -#: command.c:4333 +#: command.c:4373 #, c-format msgid "Unicode border line style is \"%s\".\n" msgstr "Стиль Unicode-линий границ: \"%s\".\n" -#: command.c:4339 +#: command.c:4379 #, c-format msgid "Unicode column line style is \"%s\".\n" msgstr "Стиль Unicode-линий столбцов: \"%s\".\n" -#: command.c:4345 +#: command.c:4385 #, c-format msgid "Unicode header line style is \"%s\".\n" msgstr "Стиль Unicode-линий границ: \"%s\".\n" -#: command.c:4505 +#: command.c:4545 #, c-format msgid "\\!: failed\n" msgstr "\\!: ошибка\n" -#: command.c:4530 common.c:768 +#: command.c:4570 common.c:770 #, c-format msgid "\\watch cannot be used with an empty query\n" msgstr "\\watch нельзя использовать с пустым запросом\n" -#: command.c:4571 +#: command.c:4611 #, c-format msgid "%s\t%s (every %gs)\n" msgstr "%s\t%s (обновление: %g с)\n" -#: command.c:4574 +#: command.c:4614 #, c-format msgid "%s (every %gs)\n" msgstr "%s (обновление: %g с)\n" -#: command.c:4628 command.c:4635 common.c:668 common.c:675 common.c:1337 +#: command.c:4668 command.c:4675 common.c:670 common.c:677 common.c:1339 #, c-format msgid "" "********* QUERY **********\n" @@ -705,84 +706,84 @@ "**************************\n" "\n" -#: command.c:4827 +#: command.c:4867 #, c-format msgid "\"%s.%s\" is not a view\n" -msgstr "\"%s.%s\" - не представление\n" +msgstr "\"%s.%s\" — не представление\n" -#: command.c:4843 +#: command.c:4883 #, c-format msgid "could not parse reloptions array\n" msgstr "не удалось разобрать массив reloptions\n" -#: common.c:158 +#: common.c:160 #, c-format msgid "cannot escape without active connection\n" msgstr "экранирование строк не работает без подключения к БД\n" -#: common.c:199 +#: common.c:201 #, c-format msgid "shell command argument contains a newline or carriage return: \"%s\"\n" msgstr "" "аргумент команды оболочки содержит символ новой строки или перевода каретки: " "\"%s\"\n" -#: common.c:415 +#: common.c:417 #, c-format msgid "connection to server was lost\n" msgstr "подключение к серверу было потеряно\n" -#: common.c:419 +#: common.c:421 #, c-format msgid "The connection to the server was lost. Attempting reset: " msgstr "Подключение к серверу потеряно. Попытка восстановления " -#: common.c:424 +#: common.c:426 #, c-format msgid "Failed.\n" msgstr "неудачна.\n" -#: common.c:437 +#: common.c:439 #, c-format msgid "Succeeded.\n" msgstr "удачна.\n" -#: common.c:545 common.c:1057 common.c:1272 +#: common.c:547 common.c:1059 common.c:1274 #, c-format msgid "unexpected PQresultStatus: %d\n" msgstr "неожиданное значение PQresultStatus: %d\n" -#: common.c:607 +#: common.c:609 #, c-format msgid "Time: %.3f ms\n" msgstr "Время: %.3f мс\n" -#: common.c:622 +#: common.c:624 #, c-format msgid "Time: %.3f ms (%02d:%06.3f)\n" msgstr "Время: %.3f мс (%02d:%06.3f)\n" -#: common.c:631 +#: common.c:633 #, c-format msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" msgstr "Время: %.3f мс (%02d:%02d:%06.3f)\n" -#: common.c:638 +#: common.c:640 #, c-format msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" msgstr "Время: %.3f мс (%.0f д. %02d:%02d:%06.3f)\n" -#: common.c:775 +#: common.c:777 #, c-format msgid "\\watch cannot be used with COPY\n" msgstr "\\watch нельзя использовать с COPY\n" -#: common.c:780 +#: common.c:782 #, c-format msgid "unexpected result status for \\watch\n" msgstr "неожиданное состояние результата для \\watch\n" -#: common.c:810 +#: common.c:812 #, c-format msgid "" "Asynchronous notification \"%s\" with payload \"%s\" received from server " @@ -791,30 +792,30 @@ "Получено асинхронное уведомление \"%s\" с сообщением-нагрузкой \"%s\" от " "серверного процесса с PID %d.\n" -#: common.c:813 +#: common.c:815 #, c-format msgid "" "Asynchronous notification \"%s\" received from server process with PID %d.\n" msgstr "" "Получено асинхронное уведомление \"%s\" от серверного процесса с PID %d.\n" -#: common.c:876 +#: common.c:878 #, c-format msgid "no rows returned for \\gset\n" msgstr "сервер не возвратил строк для \\gset\n" -#: common.c:881 +#: common.c:883 #, c-format msgid "more than one row returned for \\gset\n" msgstr "сервер возвратил больше одной строки для \\gset\n" -#: common.c:899 +#: common.c:901 #, c-format msgid "attempt to \\gset into specially treated variable \"%s\" ignored\n" msgstr "" "попытка выполнить \\gset со специальной переменной \"%s\" игнорируется\n" -#: common.c:1317 +#: common.c:1319 #, c-format msgid "" "***(Single step mode: verify " @@ -828,19 +829,19 @@ "%s\n" "***(Enter - выполнение; x и Enter - отмена)**************\n" -#: common.c:1372 +#: common.c:1374 #, c-format msgid "" "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" msgstr "" "Сервер (версия %s) не поддерживает точки сохранения для ON_ERROR_ROLLBACK.\n" -#: common.c:1428 +#: common.c:1430 #, c-format msgid "STATEMENT: %s\n" msgstr "ОПЕРАТОР: %s\n" -#: common.c:1471 +#: common.c:1473 #, c-format msgid "unexpected transaction status (%d)\n" msgstr "неожиданное состояние транзакции (%d)\n" @@ -1431,7 +1432,7 @@ #: describe.c:1982 #, c-format msgid "Partition of: %s %s" -msgstr "Секция из: %s %s" +msgstr "Секция: %s %s" #: describe.c:1988 #, c-format @@ -1854,7 +1855,7 @@ #: describe.c:3932 msgid "Provider" -msgstr "Поставщик" +msgstr "Провайдер" #: describe.c:3967 msgid "List of collations" @@ -2074,7 +2075,7 @@ #: describe.c:5038 #, c-format msgid "Did not find any extensions.\n" -msgstr "Расширения не найдены.\n" +msgstr "Никакие расширения не найдены.\n" #: describe.c:5082 msgid "Object description" @@ -2875,8 +2876,8 @@ #: help.c:248 #, c-format -msgid " \\do[S] [PATTERN] list operators\n" -msgstr " \\do[S] [МАСКА] список операторов\n" +msgid " \\do[S+] [PATTERN] list operators\n" +msgstr " \\do[S+] [МАСКА] список операторов\n" #: help.c:249 #, c-format @@ -2939,8 +2940,8 @@ #: help.c:260 #, c-format -msgid " \\dy [PATTERN] list event triggers\n" -msgstr " \\dy [МАСКА] список событийных триггеров\n" +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [МАСКА] список событийных триггеров\n" #: help.c:261 #, c-format @@ -3803,12 +3804,12 @@ msgid "reached EOF without finding closing \\endif(s)\n" msgstr "в закончившемся потоке команд не хватает \\endif\n" -#: psqlscanslash.l:615 +#: psqlscanslash.l:617 #, c-format msgid "unterminated quoted string\n" msgstr "незавершённая строка в кавычках\n" -#: psqlscanslash.l:788 +#: psqlscanslash.l:790 #, c-format msgid "%s: out of memory\n" msgstr "%s: нехватка памяти\n" @@ -3821,169 +3822,169 @@ #: sql_help.c:250 sql_help.c:252 sql_help.c:264 sql_help.c:265 sql_help.c:266 #: sql_help.c:268 sql_help.c:315 sql_help.c:317 sql_help.c:319 sql_help.c:321 #: sql_help.c:382 sql_help.c:387 sql_help.c:389 sql_help.c:432 sql_help.c:434 -#: sql_help.c:437 sql_help.c:439 sql_help.c:506 sql_help.c:511 sql_help.c:516 -#: sql_help.c:521 sql_help.c:526 sql_help.c:575 sql_help.c:577 sql_help.c:579 -#: sql_help.c:581 sql_help.c:584 sql_help.c:586 sql_help.c:597 sql_help.c:599 -#: sql_help.c:640 sql_help.c:642 sql_help.c:644 sql_help.c:647 sql_help.c:649 -#: sql_help.c:651 sql_help.c:684 sql_help.c:688 sql_help.c:692 sql_help.c:711 -#: sql_help.c:714 sql_help.c:717 sql_help.c:746 sql_help.c:758 sql_help.c:766 -#: sql_help.c:769 sql_help.c:772 sql_help.c:787 sql_help.c:790 sql_help.c:807 -#: sql_help.c:809 sql_help.c:811 sql_help.c:813 sql_help.c:816 sql_help.c:818 -#: sql_help.c:859 sql_help.c:882 sql_help.c:893 sql_help.c:895 sql_help.c:914 -#: sql_help.c:924 sql_help.c:926 sql_help.c:928 sql_help.c:940 sql_help.c:944 -#: sql_help.c:946 sql_help.c:957 sql_help.c:959 sql_help.c:961 sql_help.c:977 -#: sql_help.c:979 sql_help.c:983 sql_help.c:986 sql_help.c:987 sql_help.c:988 -#: sql_help.c:991 sql_help.c:993 sql_help.c:1084 sql_help.c:1086 -#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096 -#: sql_help.c:1099 sql_help.c:1102 sql_help.c:1168 sql_help.c:1170 -#: sql_help.c:1172 sql_help.c:1175 sql_help.c:1196 sql_help.c:1199 -#: sql_help.c:1202 sql_help.c:1205 sql_help.c:1209 sql_help.c:1211 -#: sql_help.c:1213 sql_help.c:1215 sql_help.c:1229 sql_help.c:1232 -#: sql_help.c:1234 sql_help.c:1236 sql_help.c:1246 sql_help.c:1248 -#: sql_help.c:1258 sql_help.c:1260 sql_help.c:1270 sql_help.c:1273 -#: sql_help.c:1295 sql_help.c:1297 sql_help.c:1299 sql_help.c:1302 -#: sql_help.c:1304 sql_help.c:1306 sql_help.c:1309 sql_help.c:1359 -#: sql_help.c:1401 sql_help.c:1404 sql_help.c:1406 sql_help.c:1408 -#: sql_help.c:1410 sql_help.c:1412 sql_help.c:1415 sql_help.c:1455 -#: sql_help.c:1666 sql_help.c:1730 sql_help.c:1749 sql_help.c:1762 -#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1834 sql_help.c:1854 -#: sql_help.c:1879 sql_help.c:1897 sql_help.c:1926 sql_help.c:2019 -#: sql_help.c:2064 sql_help.c:2087 sql_help.c:2107 sql_help.c:2108 -#: sql_help.c:2143 sql_help.c:2163 sql_help.c:2185 sql_help.c:2199 -#: sql_help.c:2214 sql_help.c:2244 sql_help.c:2269 sql_help.c:2315 -#: sql_help.c:2581 sql_help.c:2594 sql_help.c:2611 sql_help.c:2627 -#: sql_help.c:2667 sql_help.c:2719 sql_help.c:2723 sql_help.c:2725 -#: sql_help.c:2731 sql_help.c:2749 sql_help.c:2776 sql_help.c:2811 -#: sql_help.c:2823 sql_help.c:2832 sql_help.c:2876 sql_help.c:2890 -#: sql_help.c:2918 sql_help.c:2926 sql_help.c:2934 sql_help.c:2942 -#: sql_help.c:2950 sql_help.c:2958 sql_help.c:2966 sql_help.c:2974 -#: sql_help.c:2983 sql_help.c:2994 sql_help.c:3002 sql_help.c:3010 -#: sql_help.c:3018 sql_help.c:3026 sql_help.c:3036 sql_help.c:3045 -#: sql_help.c:3054 sql_help.c:3062 sql_help.c:3071 sql_help.c:3079 -#: sql_help.c:3087 sql_help.c:3096 sql_help.c:3104 sql_help.c:3112 -#: sql_help.c:3120 sql_help.c:3128 sql_help.c:3136 sql_help.c:3144 -#: sql_help.c:3152 sql_help.c:3160 sql_help.c:3168 sql_help.c:3176 -#: sql_help.c:3193 sql_help.c:3202 sql_help.c:3210 sql_help.c:3227 -#: sql_help.c:3242 sql_help.c:3513 sql_help.c:3564 sql_help.c:3593 -#: sql_help.c:3601 sql_help.c:4035 sql_help.c:4083 sql_help.c:4224 +#: sql_help.c:437 sql_help.c:439 sql_help.c:507 sql_help.c:512 sql_help.c:517 +#: sql_help.c:522 sql_help.c:527 sql_help.c:576 sql_help.c:578 sql_help.c:580 +#: sql_help.c:582 sql_help.c:585 sql_help.c:587 sql_help.c:598 sql_help.c:600 +#: sql_help.c:641 sql_help.c:643 sql_help.c:645 sql_help.c:648 sql_help.c:650 +#: sql_help.c:652 sql_help.c:685 sql_help.c:689 sql_help.c:693 sql_help.c:712 +#: sql_help.c:715 sql_help.c:718 sql_help.c:747 sql_help.c:759 sql_help.c:767 +#: sql_help.c:770 sql_help.c:773 sql_help.c:788 sql_help.c:791 sql_help.c:808 +#: sql_help.c:810 sql_help.c:812 sql_help.c:814 sql_help.c:817 sql_help.c:819 +#: sql_help.c:860 sql_help.c:883 sql_help.c:894 sql_help.c:896 sql_help.c:915 +#: sql_help.c:925 sql_help.c:927 sql_help.c:929 sql_help.c:941 sql_help.c:945 +#: sql_help.c:947 sql_help.c:958 sql_help.c:960 sql_help.c:962 sql_help.c:978 +#: sql_help.c:980 sql_help.c:984 sql_help.c:987 sql_help.c:988 sql_help.c:989 +#: sql_help.c:992 sql_help.c:994 sql_help.c:1085 sql_help.c:1087 +#: sql_help.c:1090 sql_help.c:1093 sql_help.c:1095 sql_help.c:1097 +#: sql_help.c:1100 sql_help.c:1103 sql_help.c:1169 sql_help.c:1171 +#: sql_help.c:1173 sql_help.c:1176 sql_help.c:1197 sql_help.c:1200 +#: sql_help.c:1203 sql_help.c:1206 sql_help.c:1210 sql_help.c:1212 +#: sql_help.c:1214 sql_help.c:1216 sql_help.c:1230 sql_help.c:1233 +#: sql_help.c:1235 sql_help.c:1237 sql_help.c:1247 sql_help.c:1249 +#: sql_help.c:1259 sql_help.c:1261 sql_help.c:1271 sql_help.c:1274 +#: sql_help.c:1296 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303 +#: sql_help.c:1305 sql_help.c:1307 sql_help.c:1310 sql_help.c:1360 +#: sql_help.c:1402 sql_help.c:1405 sql_help.c:1407 sql_help.c:1409 +#: sql_help.c:1411 sql_help.c:1413 sql_help.c:1416 sql_help.c:1456 +#: sql_help.c:1667 sql_help.c:1731 sql_help.c:1750 sql_help.c:1763 +#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1835 sql_help.c:1855 +#: sql_help.c:1880 sql_help.c:1898 sql_help.c:1928 sql_help.c:2022 +#: sql_help.c:2067 sql_help.c:2090 sql_help.c:2110 sql_help.c:2111 +#: sql_help.c:2146 sql_help.c:2166 sql_help.c:2188 sql_help.c:2202 +#: sql_help.c:2217 sql_help.c:2247 sql_help.c:2272 sql_help.c:2318 +#: sql_help.c:2584 sql_help.c:2597 sql_help.c:2614 sql_help.c:2630 +#: sql_help.c:2670 sql_help.c:2722 sql_help.c:2726 sql_help.c:2728 +#: sql_help.c:2734 sql_help.c:2752 sql_help.c:2779 sql_help.c:2814 +#: sql_help.c:2826 sql_help.c:2835 sql_help.c:2879 sql_help.c:2893 +#: sql_help.c:2921 sql_help.c:2929 sql_help.c:2937 sql_help.c:2945 +#: sql_help.c:2953 sql_help.c:2961 sql_help.c:2969 sql_help.c:2977 +#: sql_help.c:2986 sql_help.c:2997 sql_help.c:3005 sql_help.c:3013 +#: sql_help.c:3021 sql_help.c:3029 sql_help.c:3039 sql_help.c:3048 +#: sql_help.c:3057 sql_help.c:3065 sql_help.c:3074 sql_help.c:3082 +#: sql_help.c:3090 sql_help.c:3099 sql_help.c:3107 sql_help.c:3115 +#: sql_help.c:3123 sql_help.c:3131 sql_help.c:3139 sql_help.c:3147 +#: sql_help.c:3155 sql_help.c:3163 sql_help.c:3171 sql_help.c:3179 +#: sql_help.c:3196 sql_help.c:3205 sql_help.c:3213 sql_help.c:3230 +#: sql_help.c:3245 sql_help.c:3516 sql_help.c:3567 sql_help.c:3596 +#: sql_help.c:3604 sql_help.c:4038 sql_help.c:4086 sql_help.c:4227 msgid "name" msgstr "имя" -#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:326 sql_help.c:1524 -#: sql_help.c:2891 sql_help.c:3829 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:326 sql_help.c:1525 +#: sql_help.c:2894 sql_help.c:3832 msgid "aggregate_signature" msgstr "сигнатура_агр_функции" #: sql_help.c:38 sql_help.c:68 sql_help.c:83 sql_help.c:119 sql_help.c:251 -#: sql_help.c:269 sql_help.c:390 sql_help.c:438 sql_help.c:515 sql_help.c:561 -#: sql_help.c:576 sql_help.c:598 sql_help.c:648 sql_help.c:713 sql_help.c:768 -#: sql_help.c:789 sql_help.c:819 sql_help.c:860 sql_help.c:884 sql_help.c:894 -#: sql_help.c:927 sql_help.c:947 sql_help.c:960 sql_help.c:994 sql_help.c:1093 -#: sql_help.c:1169 sql_help.c:1212 sql_help.c:1233 sql_help.c:1247 -#: sql_help.c:1259 sql_help.c:1272 sql_help.c:1303 sql_help.c:1360 -#: sql_help.c:1409 +#: sql_help.c:269 sql_help.c:390 sql_help.c:438 sql_help.c:516 sql_help.c:562 +#: sql_help.c:577 sql_help.c:599 sql_help.c:649 sql_help.c:714 sql_help.c:769 +#: sql_help.c:790 sql_help.c:820 sql_help.c:861 sql_help.c:885 sql_help.c:895 +#: sql_help.c:928 sql_help.c:948 sql_help.c:961 sql_help.c:995 sql_help.c:1094 +#: sql_help.c:1170 sql_help.c:1213 sql_help.c:1234 sql_help.c:1248 +#: sql_help.c:1260 sql_help.c:1273 sql_help.c:1304 sql_help.c:1361 +#: sql_help.c:1410 msgid "new_name" msgstr "новое_имя" #: sql_help.c:41 sql_help.c:70 sql_help.c:85 sql_help.c:121 sql_help.c:249 -#: sql_help.c:267 sql_help.c:388 sql_help.c:474 sql_help.c:520 sql_help.c:600 -#: sql_help.c:609 sql_help.c:667 sql_help.c:687 sql_help.c:716 sql_help.c:771 -#: sql_help.c:817 sql_help.c:896 sql_help.c:925 sql_help.c:945 sql_help.c:958 -#: sql_help.c:992 sql_help.c:1153 sql_help.c:1171 sql_help.c:1214 -#: sql_help.c:1235 sql_help.c:1298 sql_help.c:1407 sql_help.c:2567 +#: sql_help.c:267 sql_help.c:388 sql_help.c:474 sql_help.c:521 sql_help.c:601 +#: sql_help.c:610 sql_help.c:668 sql_help.c:688 sql_help.c:717 sql_help.c:772 +#: sql_help.c:818 sql_help.c:897 sql_help.c:926 sql_help.c:946 sql_help.c:959 +#: sql_help.c:993 sql_help.c:1154 sql_help.c:1172 sql_help.c:1215 +#: sql_help.c:1236 sql_help.c:1299 sql_help.c:1408 sql_help.c:2570 msgid "new_owner" msgstr "новый_владелец" #: sql_help.c:44 sql_help.c:72 sql_help.c:87 sql_help.c:253 sql_help.c:318 -#: sql_help.c:440 sql_help.c:525 sql_help.c:650 sql_help.c:691 sql_help.c:719 -#: sql_help.c:774 sql_help.c:929 sql_help.c:962 sql_help.c:1095 sql_help.c:1216 -#: sql_help.c:1237 sql_help.c:1249 sql_help.c:1261 sql_help.c:1305 -#: sql_help.c:1411 +#: sql_help.c:440 sql_help.c:526 sql_help.c:651 sql_help.c:692 sql_help.c:720 +#: sql_help.c:775 sql_help.c:930 sql_help.c:963 sql_help.c:1096 sql_help.c:1217 +#: sql_help.c:1238 sql_help.c:1250 sql_help.c:1262 sql_help.c:1306 +#: sql_help.c:1412 msgid "new_schema" msgstr "новая_схема" -#: sql_help.c:45 sql_help.c:1580 sql_help.c:2892 sql_help.c:3850 +#: sql_help.c:45 sql_help.c:1581 sql_help.c:2895 sql_help.c:3853 msgid "where aggregate_signature is:" msgstr "где сигнатура_агр_функции:" #: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:336 sql_help.c:361 -#: sql_help.c:364 sql_help.c:367 sql_help.c:507 sql_help.c:512 sql_help.c:517 -#: sql_help.c:522 sql_help.c:527 sql_help.c:1542 sql_help.c:1581 -#: sql_help.c:1584 sql_help.c:1587 sql_help.c:1731 sql_help.c:1750 -#: sql_help.c:1753 sql_help.c:2020 sql_help.c:2893 sql_help.c:2896 -#: sql_help.c:2899 sql_help.c:2984 sql_help.c:3397 sql_help.c:3739 -#: sql_help.c:3835 sql_help.c:3851 sql_help.c:3854 sql_help.c:3857 +#: sql_help.c:364 sql_help.c:367 sql_help.c:508 sql_help.c:513 sql_help.c:518 +#: sql_help.c:523 sql_help.c:528 sql_help.c:1543 sql_help.c:1582 +#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1732 sql_help.c:1751 +#: sql_help.c:1754 sql_help.c:2023 sql_help.c:2896 sql_help.c:2899 +#: sql_help.c:2902 sql_help.c:2987 sql_help.c:3400 sql_help.c:3742 +#: sql_help.c:3838 sql_help.c:3854 sql_help.c:3857 sql_help.c:3860 msgid "argmode" msgstr "режим_аргумента" #: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:337 sql_help.c:362 -#: sql_help.c:365 sql_help.c:368 sql_help.c:508 sql_help.c:513 sql_help.c:518 -#: sql_help.c:523 sql_help.c:528 sql_help.c:1543 sql_help.c:1582 -#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1732 sql_help.c:1751 -#: sql_help.c:1754 sql_help.c:2021 sql_help.c:2894 sql_help.c:2897 -#: sql_help.c:2900 sql_help.c:2985 sql_help.c:3836 sql_help.c:3852 -#: sql_help.c:3855 sql_help.c:3858 +#: sql_help.c:365 sql_help.c:368 sql_help.c:509 sql_help.c:514 sql_help.c:519 +#: sql_help.c:524 sql_help.c:529 sql_help.c:1544 sql_help.c:1583 +#: sql_help.c:1586 sql_help.c:1589 sql_help.c:1733 sql_help.c:1752 +#: sql_help.c:1755 sql_help.c:2024 sql_help.c:2897 sql_help.c:2900 +#: sql_help.c:2903 sql_help.c:2988 sql_help.c:3839 sql_help.c:3855 +#: sql_help.c:3858 sql_help.c:3861 msgid "argname" msgstr "имя_аргумента" #: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:338 sql_help.c:363 -#: sql_help.c:366 sql_help.c:369 sql_help.c:509 sql_help.c:514 sql_help.c:519 -#: sql_help.c:524 sql_help.c:529 sql_help.c:1544 sql_help.c:1583 -#: sql_help.c:1586 sql_help.c:1589 sql_help.c:2022 sql_help.c:2895 -#: sql_help.c:2898 sql_help.c:2901 sql_help.c:2986 sql_help.c:3837 -#: sql_help.c:3853 sql_help.c:3856 sql_help.c:3859 +#: sql_help.c:366 sql_help.c:369 sql_help.c:510 sql_help.c:515 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:1545 sql_help.c:1584 +#: sql_help.c:1587 sql_help.c:1590 sql_help.c:2025 sql_help.c:2898 +#: sql_help.c:2901 sql_help.c:2904 sql_help.c:2989 sql_help.c:3840 +#: sql_help.c:3856 sql_help.c:3859 sql_help.c:3862 msgid "argtype" msgstr "тип_аргумента" -#: sql_help.c:113 sql_help.c:385 sql_help.c:463 sql_help.c:475 sql_help.c:854 -#: sql_help.c:942 sql_help.c:1230 sql_help.c:1354 sql_help.c:1386 -#: sql_help.c:1637 sql_help.c:1643 sql_help.c:1929 sql_help.c:1970 -#: sql_help.c:1977 sql_help.c:1986 sql_help.c:2065 sql_help.c:2245 -#: sql_help.c:2337 sql_help.c:2596 sql_help.c:2777 sql_help.c:2799 -#: sql_help.c:3262 sql_help.c:3432 +#: sql_help.c:113 sql_help.c:385 sql_help.c:463 sql_help.c:475 sql_help.c:855 +#: sql_help.c:943 sql_help.c:1231 sql_help.c:1355 sql_help.c:1387 +#: sql_help.c:1638 sql_help.c:1644 sql_help.c:1931 sql_help.c:1972 +#: sql_help.c:1979 sql_help.c:1988 sql_help.c:2068 sql_help.c:2248 +#: sql_help.c:2340 sql_help.c:2599 sql_help.c:2780 sql_help.c:2802 +#: sql_help.c:3265 sql_help.c:3435 msgid "option" msgstr "параметр" -#: sql_help.c:114 sql_help.c:855 sql_help.c:1355 sql_help.c:2066 -#: sql_help.c:2246 sql_help.c:2778 +#: sql_help.c:114 sql_help.c:856 sql_help.c:1356 sql_help.c:2069 +#: sql_help.c:2249 sql_help.c:2781 msgid "where option can be:" msgstr "где допустимые параметры:" -#: sql_help.c:115 sql_help.c:1861 +#: sql_help.c:115 sql_help.c:1862 msgid "allowconn" msgstr "разр_подключения" -#: sql_help.c:116 sql_help.c:856 sql_help.c:1356 sql_help.c:1862 -#: sql_help.c:2067 sql_help.c:2247 sql_help.c:2779 +#: sql_help.c:116 sql_help.c:857 sql_help.c:1357 sql_help.c:1863 +#: sql_help.c:2070 sql_help.c:2250 sql_help.c:2782 msgid "connlimit" msgstr "предел_подключений" -#: sql_help.c:117 sql_help.c:1863 +#: sql_help.c:117 sql_help.c:1864 msgid "istemplate" msgstr "это_шаблон" -#: sql_help.c:123 sql_help.c:588 sql_help.c:653 sql_help.c:1098 sql_help.c:1146 +#: sql_help.c:123 sql_help.c:589 sql_help.c:654 sql_help.c:1099 sql_help.c:1147 msgid "new_tablespace" msgstr "новое_табл_пространство" -#: sql_help.c:125 sql_help.c:128 sql_help.c:130 sql_help.c:534 sql_help.c:536 -#: sql_help.c:537 sql_help.c:863 sql_help.c:867 sql_help.c:870 sql_help.c:1005 -#: sql_help.c:1008 sql_help.c:1363 sql_help.c:1367 sql_help.c:1370 -#: sql_help.c:2031 sql_help.c:3618 sql_help.c:4024 +#: sql_help.c:125 sql_help.c:128 sql_help.c:130 sql_help.c:535 sql_help.c:537 +#: sql_help.c:538 sql_help.c:864 sql_help.c:868 sql_help.c:871 sql_help.c:1006 +#: sql_help.c:1009 sql_help.c:1364 sql_help.c:1368 sql_help.c:1371 +#: sql_help.c:2034 sql_help.c:3621 sql_help.c:4027 msgid "configuration_parameter" msgstr "параметр_конфигурации" #: sql_help.c:126 sql_help.c:386 sql_help.c:458 sql_help.c:464 sql_help.c:476 -#: sql_help.c:535 sql_help.c:583 sql_help.c:659 sql_help.c:665 sql_help.c:815 -#: sql_help.c:864 sql_help.c:943 sql_help.c:982 sql_help.c:985 sql_help.c:990 -#: sql_help.c:1006 sql_help.c:1007 sql_help.c:1128 sql_help.c:1148 -#: sql_help.c:1174 sql_help.c:1231 sql_help.c:1364 sql_help.c:1387 -#: sql_help.c:1930 sql_help.c:1971 sql_help.c:1978 sql_help.c:1987 -#: sql_help.c:2032 sql_help.c:2033 sql_help.c:2095 sql_help.c:2127 -#: sql_help.c:2217 sql_help.c:2338 sql_help.c:2368 sql_help.c:2466 -#: sql_help.c:2478 sql_help.c:2491 sql_help.c:2531 sql_help.c:2553 -#: sql_help.c:2570 sql_help.c:2597 sql_help.c:2800 sql_help.c:3433 -#: sql_help.c:4025 sql_help.c:4026 +#: sql_help.c:536 sql_help.c:584 sql_help.c:660 sql_help.c:666 sql_help.c:816 +#: sql_help.c:865 sql_help.c:944 sql_help.c:983 sql_help.c:986 sql_help.c:991 +#: sql_help.c:1007 sql_help.c:1008 sql_help.c:1129 sql_help.c:1149 +#: sql_help.c:1175 sql_help.c:1232 sql_help.c:1365 sql_help.c:1388 +#: sql_help.c:1932 sql_help.c:1973 sql_help.c:1980 sql_help.c:1989 +#: sql_help.c:2035 sql_help.c:2036 sql_help.c:2098 sql_help.c:2130 +#: sql_help.c:2220 sql_help.c:2341 sql_help.c:2371 sql_help.c:2469 +#: sql_help.c:2481 sql_help.c:2494 sql_help.c:2534 sql_help.c:2556 +#: sql_help.c:2573 sql_help.c:2600 sql_help.c:2803 sql_help.c:3436 +#: sql_help.c:4028 sql_help.c:4029 msgid "value" msgstr "значение" @@ -3991,9 +3992,9 @@ msgid "target_role" msgstr "целевая_роль" -#: sql_help.c:199 sql_help.c:1913 sql_help.c:2293 sql_help.c:2298 -#: sql_help.c:3379 sql_help.c:3386 sql_help.c:3400 sql_help.c:3406 -#: sql_help.c:3721 sql_help.c:3728 sql_help.c:3742 sql_help.c:3748 +#: sql_help.c:199 sql_help.c:1915 sql_help.c:2296 sql_help.c:2301 +#: sql_help.c:3382 sql_help.c:3389 sql_help.c:3403 sql_help.c:3409 +#: sql_help.c:3724 sql_help.c:3731 sql_help.c:3745 sql_help.c:3751 msgid "schema_name" msgstr "имя_схемы" @@ -4007,30 +4008,30 @@ #: sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205 sql_help.c:206 #: sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210 sql_help.c:211 -#: sql_help.c:559 sql_help.c:587 sql_help.c:652 sql_help.c:792 sql_help.c:874 -#: sql_help.c:1097 sql_help.c:1374 sql_help.c:2070 sql_help.c:2071 -#: sql_help.c:2072 sql_help.c:2073 sql_help.c:2074 sql_help.c:2201 -#: sql_help.c:2250 sql_help.c:2251 sql_help.c:2252 sql_help.c:2253 -#: sql_help.c:2254 sql_help.c:2782 sql_help.c:2783 sql_help.c:2784 -#: sql_help.c:2785 sql_help.c:2786 sql_help.c:3412 sql_help.c:3416 -#: sql_help.c:3754 sql_help.c:3758 sql_help.c:4045 +#: sql_help.c:560 sql_help.c:588 sql_help.c:653 sql_help.c:793 sql_help.c:875 +#: sql_help.c:1098 sql_help.c:1375 sql_help.c:2073 sql_help.c:2074 +#: sql_help.c:2075 sql_help.c:2076 sql_help.c:2077 sql_help.c:2204 +#: sql_help.c:2253 sql_help.c:2254 sql_help.c:2255 sql_help.c:2256 +#: sql_help.c:2257 sql_help.c:2785 sql_help.c:2786 sql_help.c:2787 +#: sql_help.c:2788 sql_help.c:2789 sql_help.c:3415 sql_help.c:3419 +#: sql_help.c:3757 sql_help.c:3761 sql_help.c:4048 msgid "role_name" msgstr "имя_роли" -#: sql_help.c:237 sql_help.c:451 sql_help.c:1113 sql_help.c:1115 -#: sql_help.c:1403 sql_help.c:1882 sql_help.c:1886 sql_help.c:1990 -#: sql_help.c:1994 sql_help.c:2091 sql_help.c:2462 sql_help.c:2474 -#: sql_help.c:2487 sql_help.c:2495 sql_help.c:2506 sql_help.c:2535 -#: sql_help.c:3464 sql_help.c:3479 sql_help.c:3481 sql_help.c:3910 -#: sql_help.c:3911 sql_help.c:3920 sql_help.c:3961 sql_help.c:3962 -#: sql_help.c:3963 sql_help.c:3964 sql_help.c:3965 sql_help.c:3966 -#: sql_help.c:3999 sql_help.c:4000 sql_help.c:4005 sql_help.c:4010 -#: sql_help.c:4149 sql_help.c:4150 sql_help.c:4159 sql_help.c:4200 -#: sql_help.c:4201 sql_help.c:4202 sql_help.c:4203 sql_help.c:4204 -#: sql_help.c:4205 sql_help.c:4252 sql_help.c:4254 sql_help.c:4287 -#: sql_help.c:4343 sql_help.c:4344 sql_help.c:4353 sql_help.c:4394 -#: sql_help.c:4395 sql_help.c:4396 sql_help.c:4397 sql_help.c:4398 -#: sql_help.c:4399 +#: sql_help.c:237 sql_help.c:451 sql_help.c:1114 sql_help.c:1116 +#: sql_help.c:1404 sql_help.c:1883 sql_help.c:1887 sql_help.c:1992 +#: sql_help.c:1996 sql_help.c:2094 sql_help.c:2465 sql_help.c:2477 +#: sql_help.c:2490 sql_help.c:2498 sql_help.c:2509 sql_help.c:2538 +#: sql_help.c:3467 sql_help.c:3482 sql_help.c:3484 sql_help.c:3913 +#: sql_help.c:3914 sql_help.c:3923 sql_help.c:3964 sql_help.c:3965 +#: sql_help.c:3966 sql_help.c:3967 sql_help.c:3968 sql_help.c:3969 +#: sql_help.c:4002 sql_help.c:4003 sql_help.c:4008 sql_help.c:4013 +#: sql_help.c:4152 sql_help.c:4153 sql_help.c:4162 sql_help.c:4203 +#: sql_help.c:4204 sql_help.c:4205 sql_help.c:4206 sql_help.c:4207 +#: sql_help.c:4208 sql_help.c:4255 sql_help.c:4257 sql_help.c:4290 +#: sql_help.c:4346 sql_help.c:4347 sql_help.c:4356 sql_help.c:4397 +#: sql_help.c:4398 sql_help.c:4399 sql_help.c:4400 sql_help.c:4401 +#: sql_help.c:4402 msgid "expression" msgstr "выражение" @@ -4039,18 +4040,18 @@ msgstr "ограничение_домена" #: sql_help.c:242 sql_help.c:244 sql_help.c:247 sql_help.c:466 sql_help.c:467 -#: sql_help.c:1090 sql_help.c:1134 sql_help.c:1135 sql_help.c:1136 -#: sql_help.c:1156 sql_help.c:1530 sql_help.c:1532 sql_help.c:1885 -#: sql_help.c:1989 sql_help.c:1993 sql_help.c:2494 sql_help.c:2505 -#: sql_help.c:3476 +#: sql_help.c:1091 sql_help.c:1135 sql_help.c:1136 sql_help.c:1137 +#: sql_help.c:1157 sql_help.c:1531 sql_help.c:1533 sql_help.c:1886 +#: sql_help.c:1991 sql_help.c:1995 sql_help.c:2497 sql_help.c:2508 +#: sql_help.c:3479 msgid "constraint_name" msgstr "имя_ограничения" -#: sql_help.c:245 sql_help.c:1091 +#: sql_help.c:245 sql_help.c:1092 msgid "new_constraint_name" msgstr "имя_нового_ограничения" -#: sql_help.c:316 sql_help.c:941 +#: sql_help.c:316 sql_help.c:942 msgid "new_version" msgstr "новая_версия" @@ -4066,74 +4067,74 @@ #: sql_help.c:333 sql_help.c:334 sql_help.c:339 sql_help.c:343 sql_help.c:345 #: sql_help.c:347 sql_help.c:348 sql_help.c:349 sql_help.c:350 sql_help.c:351 #: sql_help.c:352 sql_help.c:353 sql_help.c:354 sql_help.c:355 sql_help.c:358 -#: sql_help.c:359 sql_help.c:1522 sql_help.c:1527 sql_help.c:1534 -#: sql_help.c:1535 sql_help.c:1536 sql_help.c:1537 sql_help.c:1538 -#: sql_help.c:1539 sql_help.c:1540 sql_help.c:1545 sql_help.c:1547 -#: sql_help.c:1551 sql_help.c:1553 sql_help.c:1557 sql_help.c:1558 -#: sql_help.c:1559 sql_help.c:1562 sql_help.c:1563 sql_help.c:1564 -#: sql_help.c:1565 sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 -#: sql_help.c:1569 sql_help.c:1570 sql_help.c:1571 sql_help.c:1572 -#: sql_help.c:1577 sql_help.c:1578 sql_help.c:3825 sql_help.c:3830 -#: sql_help.c:3831 sql_help.c:3832 sql_help.c:3833 sql_help.c:3839 -#: sql_help.c:3840 sql_help.c:3841 sql_help.c:3842 sql_help.c:3843 -#: sql_help.c:3844 sql_help.c:3845 sql_help.c:3846 sql_help.c:3847 -#: sql_help.c:3848 +#: sql_help.c:359 sql_help.c:1523 sql_help.c:1528 sql_help.c:1535 +#: sql_help.c:1536 sql_help.c:1537 sql_help.c:1538 sql_help.c:1539 +#: sql_help.c:1540 sql_help.c:1541 sql_help.c:1546 sql_help.c:1548 +#: sql_help.c:1552 sql_help.c:1554 sql_help.c:1558 sql_help.c:1559 +#: sql_help.c:1560 sql_help.c:1563 sql_help.c:1564 sql_help.c:1565 +#: sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 sql_help.c:1569 +#: sql_help.c:1570 sql_help.c:1571 sql_help.c:1572 sql_help.c:1573 +#: sql_help.c:1578 sql_help.c:1579 sql_help.c:3828 sql_help.c:3833 +#: sql_help.c:3834 sql_help.c:3835 sql_help.c:3836 sql_help.c:3842 +#: sql_help.c:3843 sql_help.c:3844 sql_help.c:3845 sql_help.c:3846 +#: sql_help.c:3847 sql_help.c:3848 sql_help.c:3849 sql_help.c:3850 +#: sql_help.c:3851 msgid "object_name" msgstr "имя_объекта" # well-spelled: агр -#: sql_help.c:325 sql_help.c:1523 sql_help.c:3828 +#: sql_help.c:325 sql_help.c:1524 sql_help.c:3831 msgid "aggregate_name" msgstr "имя_агр_функции" -#: sql_help.c:327 sql_help.c:1525 sql_help.c:1796 sql_help.c:1800 -#: sql_help.c:1802 sql_help.c:2909 +#: sql_help.c:327 sql_help.c:1526 sql_help.c:1797 sql_help.c:1801 +#: sql_help.c:1803 sql_help.c:2912 msgid "source_type" msgstr "исходный_тип" -#: sql_help.c:328 sql_help.c:1526 sql_help.c:1797 sql_help.c:1801 -#: sql_help.c:1803 sql_help.c:2910 +#: sql_help.c:328 sql_help.c:1527 sql_help.c:1798 sql_help.c:1802 +#: sql_help.c:1804 sql_help.c:2913 msgid "target_type" msgstr "целевой_тип" -#: sql_help.c:335 sql_help.c:756 sql_help.c:1541 sql_help.c:1798 -#: sql_help.c:1837 sql_help.c:1900 sql_help.c:2144 sql_help.c:2175 -#: sql_help.c:2673 sql_help.c:3396 sql_help.c:3738 sql_help.c:3834 -#: sql_help.c:3939 sql_help.c:3943 sql_help.c:3947 sql_help.c:3950 -#: sql_help.c:4178 sql_help.c:4182 sql_help.c:4186 sql_help.c:4189 -#: sql_help.c:4372 sql_help.c:4376 sql_help.c:4380 sql_help.c:4383 +#: sql_help.c:335 sql_help.c:757 sql_help.c:1542 sql_help.c:1799 +#: sql_help.c:1838 sql_help.c:1902 sql_help.c:2147 sql_help.c:2178 +#: sql_help.c:2676 sql_help.c:3399 sql_help.c:3741 sql_help.c:3837 +#: sql_help.c:3942 sql_help.c:3946 sql_help.c:3950 sql_help.c:3953 +#: sql_help.c:4181 sql_help.c:4185 sql_help.c:4189 sql_help.c:4192 +#: sql_help.c:4375 sql_help.c:4379 sql_help.c:4383 sql_help.c:4386 msgid "function_name" msgstr "имя_функции" -#: sql_help.c:340 sql_help.c:749 sql_help.c:1548 sql_help.c:2168 +#: sql_help.c:340 sql_help.c:750 sql_help.c:1549 sql_help.c:2171 msgid "operator_name" msgstr "имя_оператора" -#: sql_help.c:341 sql_help.c:685 sql_help.c:689 sql_help.c:693 sql_help.c:1549 -#: sql_help.c:2145 sql_help.c:3027 +#: sql_help.c:341 sql_help.c:686 sql_help.c:690 sql_help.c:694 sql_help.c:1550 +#: sql_help.c:2148 sql_help.c:3030 msgid "left_type" msgstr "тип_слева" -#: sql_help.c:342 sql_help.c:686 sql_help.c:690 sql_help.c:694 sql_help.c:1550 -#: sql_help.c:2146 sql_help.c:3028 +#: sql_help.c:342 sql_help.c:687 sql_help.c:691 sql_help.c:695 sql_help.c:1551 +#: sql_help.c:2149 sql_help.c:3031 msgid "right_type" msgstr "тип_справа" -#: sql_help.c:344 sql_help.c:346 sql_help.c:712 sql_help.c:715 sql_help.c:718 -#: sql_help.c:747 sql_help.c:759 sql_help.c:767 sql_help.c:770 sql_help.c:773 -#: sql_help.c:1552 sql_help.c:1554 sql_help.c:2165 sql_help.c:2186 -#: sql_help.c:2511 sql_help.c:3037 sql_help.c:3046 +#: sql_help.c:344 sql_help.c:346 sql_help.c:713 sql_help.c:716 sql_help.c:719 +#: sql_help.c:748 sql_help.c:760 sql_help.c:768 sql_help.c:771 sql_help.c:774 +#: sql_help.c:1553 sql_help.c:1555 sql_help.c:2168 sql_help.c:2189 +#: sql_help.c:2514 sql_help.c:3040 sql_help.c:3049 msgid "index_method" msgstr "метод_индекса" -#: sql_help.c:356 sql_help.c:1152 sql_help.c:1573 sql_help.c:2028 -#: sql_help.c:2469 sql_help.c:2640 sql_help.c:3184 sql_help.c:3410 -#: sql_help.c:3752 +#: sql_help.c:356 sql_help.c:1153 sql_help.c:1574 sql_help.c:2031 +#: sql_help.c:2472 sql_help.c:2643 sql_help.c:3187 sql_help.c:3413 +#: sql_help.c:3755 msgid "type_name" msgstr "имя_типа" -#: sql_help.c:357 sql_help.c:1574 sql_help.c:2027 sql_help.c:2641 -#: sql_help.c:2867 sql_help.c:3185 sql_help.c:3402 sql_help.c:3744 +#: sql_help.c:357 sql_help.c:1575 sql_help.c:2030 sql_help.c:2644 +#: sql_help.c:2870 sql_help.c:3188 sql_help.c:3405 sql_help.c:3747 msgid "lang_name" msgstr "имя_языка" @@ -4141,1786 +4142,1790 @@ msgid "and aggregate_signature is:" msgstr "и сигнатура_агр_функции:" -#: sql_help.c:383 sql_help.c:1668 sql_help.c:1927 +#: sql_help.c:383 sql_help.c:1669 sql_help.c:1929 msgid "handler_function" msgstr "функция_обработчик" -#: sql_help.c:384 sql_help.c:1928 +#: sql_help.c:384 sql_help.c:1930 msgid "validator_function" msgstr "функция_проверки" -#: sql_help.c:433 sql_help.c:510 sql_help.c:641 sql_help.c:1085 sql_help.c:1296 -#: sql_help.c:2502 sql_help.c:2503 sql_help.c:2519 sql_help.c:2520 +#: sql_help.c:433 sql_help.c:511 sql_help.c:642 sql_help.c:1086 sql_help.c:1297 +#: sql_help.c:2505 sql_help.c:2506 sql_help.c:2522 sql_help.c:2523 msgid "action" msgstr "действие" #: sql_help.c:435 sql_help.c:442 sql_help.c:446 sql_help.c:447 sql_help.c:450 #: sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:456 sql_help.c:459 -#: sql_help.c:461 sql_help.c:462 sql_help.c:645 sql_help.c:655 sql_help.c:657 -#: sql_help.c:660 sql_help.c:662 sql_help.c:923 sql_help.c:1087 sql_help.c:1105 -#: sql_help.c:1109 sql_help.c:1110 sql_help.c:1114 sql_help.c:1116 -#: sql_help.c:1117 sql_help.c:1118 sql_help.c:1120 sql_help.c:1123 -#: sql_help.c:1124 sql_help.c:1126 sql_help.c:1129 sql_help.c:1131 -#: sql_help.c:1402 sql_help.c:1405 sql_help.c:1425 sql_help.c:1529 -#: sql_help.c:1634 sql_help.c:1639 sql_help.c:1653 sql_help.c:1654 -#: sql_help.c:1655 sql_help.c:1968 sql_help.c:1981 sql_help.c:2025 -#: sql_help.c:2090 sql_help.c:2125 sql_help.c:2323 sql_help.c:2351 -#: sql_help.c:2352 sql_help.c:2453 sql_help.c:2461 sql_help.c:2470 -#: sql_help.c:2473 sql_help.c:2482 sql_help.c:2486 sql_help.c:2507 -#: sql_help.c:2509 sql_help.c:2516 sql_help.c:2534 sql_help.c:2551 -#: sql_help.c:2676 sql_help.c:2812 sql_help.c:3381 sql_help.c:3382 -#: sql_help.c:3463 sql_help.c:3478 sql_help.c:3480 sql_help.c:3482 -#: sql_help.c:3723 sql_help.c:3724 sql_help.c:3827 sql_help.c:3970 -#: sql_help.c:4209 sql_help.c:4251 sql_help.c:4253 sql_help.c:4255 -#: sql_help.c:4272 sql_help.c:4275 sql_help.c:4403 +#: sql_help.c:461 sql_help.c:462 sql_help.c:646 sql_help.c:656 sql_help.c:658 +#: sql_help.c:661 sql_help.c:663 sql_help.c:924 sql_help.c:1088 sql_help.c:1106 +#: sql_help.c:1110 sql_help.c:1111 sql_help.c:1115 sql_help.c:1117 +#: sql_help.c:1118 sql_help.c:1119 sql_help.c:1121 sql_help.c:1124 +#: sql_help.c:1125 sql_help.c:1127 sql_help.c:1130 sql_help.c:1132 +#: sql_help.c:1403 sql_help.c:1406 sql_help.c:1426 sql_help.c:1530 +#: sql_help.c:1635 sql_help.c:1640 sql_help.c:1654 sql_help.c:1655 +#: sql_help.c:1656 sql_help.c:1970 sql_help.c:1983 sql_help.c:2028 +#: sql_help.c:2093 sql_help.c:2128 sql_help.c:2326 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2456 sql_help.c:2464 sql_help.c:2473 +#: sql_help.c:2476 sql_help.c:2485 sql_help.c:2489 sql_help.c:2510 +#: sql_help.c:2512 sql_help.c:2519 sql_help.c:2537 sql_help.c:2554 +#: sql_help.c:2679 sql_help.c:2815 sql_help.c:3384 sql_help.c:3385 +#: sql_help.c:3466 sql_help.c:3481 sql_help.c:3483 sql_help.c:3485 +#: sql_help.c:3726 sql_help.c:3727 sql_help.c:3830 sql_help.c:3973 +#: sql_help.c:4212 sql_help.c:4254 sql_help.c:4256 sql_help.c:4258 +#: sql_help.c:4275 sql_help.c:4278 sql_help.c:4406 msgid "column_name" msgstr "имя_столбца" -#: sql_help.c:436 sql_help.c:646 sql_help.c:1088 +#: sql_help.c:436 sql_help.c:647 sql_help.c:1089 msgid "new_column_name" msgstr "новое_имя_столбца" -#: sql_help.c:441 sql_help.c:531 sql_help.c:654 sql_help.c:1104 sql_help.c:1312 +#: sql_help.c:441 sql_help.c:532 sql_help.c:655 sql_help.c:1105 sql_help.c:1313 msgid "where action is one of:" msgstr "где допустимое действие:" -#: sql_help.c:443 sql_help.c:448 sql_help.c:915 sql_help.c:1106 sql_help.c:1111 -#: sql_help.c:1314 sql_help.c:1318 sql_help.c:1880 sql_help.c:1969 -#: sql_help.c:2164 sql_help.c:2316 sql_help.c:2454 sql_help.c:2721 -#: sql_help.c:3565 +#: sql_help.c:443 sql_help.c:448 sql_help.c:916 sql_help.c:1107 sql_help.c:1112 +#: sql_help.c:1315 sql_help.c:1319 sql_help.c:1881 sql_help.c:1971 +#: sql_help.c:2167 sql_help.c:2319 sql_help.c:2457 sql_help.c:2724 +#: sql_help.c:3568 msgid "data_type" msgstr "тип_данных" -#: sql_help.c:444 sql_help.c:449 sql_help.c:1107 sql_help.c:1112 -#: sql_help.c:1315 sql_help.c:1319 sql_help.c:1881 sql_help.c:1972 -#: sql_help.c:2092 sql_help.c:2455 sql_help.c:2463 sql_help.c:2475 -#: sql_help.c:2488 sql_help.c:2722 sql_help.c:2728 sql_help.c:3473 +#: sql_help.c:444 sql_help.c:449 sql_help.c:1108 sql_help.c:1113 +#: sql_help.c:1316 sql_help.c:1320 sql_help.c:1882 sql_help.c:1974 +#: sql_help.c:2095 sql_help.c:2458 sql_help.c:2466 sql_help.c:2478 +#: sql_help.c:2491 sql_help.c:2725 sql_help.c:2731 sql_help.c:3476 msgid "collation" msgstr "правило_сортировки" -#: sql_help.c:445 sql_help.c:1108 sql_help.c:1973 sql_help.c:1982 -#: sql_help.c:2456 sql_help.c:2471 sql_help.c:2483 +#: sql_help.c:445 sql_help.c:1109 sql_help.c:1975 sql_help.c:1984 +#: sql_help.c:2459 sql_help.c:2474 sql_help.c:2486 msgid "column_constraint" msgstr "ограничение_столбца" -#: sql_help.c:455 sql_help.c:656 sql_help.c:1125 +#: sql_help.c:455 sql_help.c:657 sql_help.c:1126 msgid "integer" msgstr "целое" -#: sql_help.c:457 sql_help.c:460 sql_help.c:658 sql_help.c:661 sql_help.c:1127 -#: sql_help.c:1130 +#: sql_help.c:457 sql_help.c:460 sql_help.c:659 sql_help.c:662 sql_help.c:1128 +#: sql_help.c:1131 msgid "attribute_option" msgstr "атрибут" -#: sql_help.c:465 sql_help.c:1132 sql_help.c:1974 sql_help.c:1983 -#: sql_help.c:2457 sql_help.c:2472 sql_help.c:2484 +#: sql_help.c:465 sql_help.c:1133 sql_help.c:1976 sql_help.c:1985 +#: sql_help.c:2460 sql_help.c:2475 sql_help.c:2487 msgid "table_constraint" msgstr "ограничение_таблицы" -#: sql_help.c:468 sql_help.c:469 sql_help.c:470 sql_help.c:471 sql_help.c:1137 -#: sql_help.c:1138 sql_help.c:1139 sql_help.c:1140 sql_help.c:1575 +#: sql_help.c:468 sql_help.c:469 sql_help.c:470 sql_help.c:471 sql_help.c:1138 +#: sql_help.c:1139 sql_help.c:1140 sql_help.c:1141 sql_help.c:1576 msgid "trigger_name" msgstr "имя_триггера" -#: sql_help.c:472 sql_help.c:473 sql_help.c:1150 sql_help.c:1151 -#: sql_help.c:1975 sql_help.c:1980 sql_help.c:2460 sql_help.c:2481 +#: sql_help.c:472 sql_help.c:473 sql_help.c:1151 sql_help.c:1152 +#: sql_help.c:1977 sql_help.c:1982 sql_help.c:2463 sql_help.c:2484 msgid "parent_table" msgstr "таблица_родитель" -#: sql_help.c:530 sql_help.c:580 sql_help.c:643 sql_help.c:1275 sql_help.c:1912 +#: sql_help.c:531 sql_help.c:581 sql_help.c:644 sql_help.c:1276 sql_help.c:1914 msgid "extension_name" msgstr "имя_расширения" -#: sql_help.c:532 sql_help.c:2029 +#: sql_help.c:533 sql_help.c:2032 msgid "execution_cost" msgstr "стоимость_выполнения" -#: sql_help.c:533 sql_help.c:2030 +#: sql_help.c:534 sql_help.c:2033 msgid "result_rows" msgstr "строк_в_результате" -#: sql_help.c:554 sql_help.c:556 sql_help.c:853 sql_help.c:861 sql_help.c:865 -#: sql_help.c:868 sql_help.c:871 sql_help.c:1353 sql_help.c:1361 -#: sql_help.c:1365 sql_help.c:1368 sql_help.c:1371 sql_help.c:2294 -#: sql_help.c:2296 sql_help.c:2299 sql_help.c:2300 sql_help.c:3380 -#: sql_help.c:3384 sql_help.c:3387 sql_help.c:3389 sql_help.c:3391 -#: sql_help.c:3393 sql_help.c:3395 sql_help.c:3401 sql_help.c:3403 -#: sql_help.c:3405 sql_help.c:3407 sql_help.c:3409 sql_help.c:3411 -#: sql_help.c:3413 sql_help.c:3414 sql_help.c:3722 sql_help.c:3726 -#: sql_help.c:3729 sql_help.c:3731 sql_help.c:3733 sql_help.c:3735 -#: sql_help.c:3737 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747 -#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3753 sql_help.c:3755 -#: sql_help.c:3756 +#: sql_help.c:555 sql_help.c:557 sql_help.c:854 sql_help.c:862 sql_help.c:866 +#: sql_help.c:869 sql_help.c:872 sql_help.c:1354 sql_help.c:1362 +#: sql_help.c:1366 sql_help.c:1369 sql_help.c:1372 sql_help.c:2297 +#: sql_help.c:2299 sql_help.c:2302 sql_help.c:2303 sql_help.c:3383 +#: sql_help.c:3387 sql_help.c:3390 sql_help.c:3392 sql_help.c:3394 +#: sql_help.c:3396 sql_help.c:3398 sql_help.c:3404 sql_help.c:3406 +#: sql_help.c:3408 sql_help.c:3410 sql_help.c:3412 sql_help.c:3414 +#: sql_help.c:3416 sql_help.c:3417 sql_help.c:3725 sql_help.c:3729 +#: sql_help.c:3732 sql_help.c:3734 sql_help.c:3736 sql_help.c:3738 +#: sql_help.c:3740 sql_help.c:3746 sql_help.c:3748 sql_help.c:3750 +#: sql_help.c:3752 sql_help.c:3754 sql_help.c:3756 sql_help.c:3758 +#: sql_help.c:3759 msgid "role_specification" msgstr "указание_роли" -#: sql_help.c:555 sql_help.c:557 sql_help.c:1384 sql_help.c:1855 -#: sql_help.c:2302 sql_help.c:2797 sql_help.c:3218 sql_help.c:4055 +#: sql_help.c:556 sql_help.c:558 sql_help.c:1385 sql_help.c:1856 +#: sql_help.c:2305 sql_help.c:2800 sql_help.c:3221 sql_help.c:4058 msgid "user_name" msgstr "имя_пользователя" -#: sql_help.c:558 sql_help.c:873 sql_help.c:1373 sql_help.c:2301 -#: sql_help.c:3415 sql_help.c:3757 +#: sql_help.c:559 sql_help.c:874 sql_help.c:1374 sql_help.c:2304 +#: sql_help.c:3418 sql_help.c:3760 msgid "where role_specification can be:" msgstr "где допустимое указание_роли:" -#: sql_help.c:560 +#: sql_help.c:561 msgid "group_name" msgstr "имя_группы" -#: sql_help.c:578 sql_help.c:1860 sql_help.c:2096 sql_help.c:2128 -#: sql_help.c:2467 sql_help.c:2479 sql_help.c:2492 sql_help.c:2532 -#: sql_help.c:2554 sql_help.c:2566 sql_help.c:3408 sql_help.c:3750 +#: sql_help.c:579 sql_help.c:1861 sql_help.c:2099 sql_help.c:2131 +#: sql_help.c:2470 sql_help.c:2482 sql_help.c:2495 sql_help.c:2535 +#: sql_help.c:2557 sql_help.c:2569 sql_help.c:3411 sql_help.c:3753 msgid "tablespace_name" msgstr "табл_пространство" -#: sql_help.c:582 sql_help.c:585 sql_help.c:664 sql_help.c:666 sql_help.c:1147 -#: sql_help.c:1149 sql_help.c:2094 sql_help.c:2126 sql_help.c:2465 -#: sql_help.c:2477 sql_help.c:2490 sql_help.c:2530 sql_help.c:2552 +#: sql_help.c:583 sql_help.c:586 sql_help.c:665 sql_help.c:667 sql_help.c:1148 +#: sql_help.c:1150 sql_help.c:2097 sql_help.c:2129 sql_help.c:2468 +#: sql_help.c:2480 sql_help.c:2493 sql_help.c:2533 sql_help.c:2555 msgid "storage_parameter" msgstr "параметр_хранения" -#: sql_help.c:608 sql_help.c:1546 sql_help.c:3838 +#: sql_help.c:609 sql_help.c:1547 sql_help.c:3841 msgid "large_object_oid" msgstr "oid_большого_объекта" -#: sql_help.c:663 sql_help.c:1145 sql_help.c:1154 sql_help.c:1157 -#: sql_help.c:1465 +#: sql_help.c:664 sql_help.c:1146 sql_help.c:1155 sql_help.c:1158 +#: sql_help.c:1466 msgid "index_name" msgstr "имя_индекса" -#: sql_help.c:695 sql_help.c:2149 +#: sql_help.c:696 sql_help.c:2152 msgid "res_proc" msgstr "процедура_ограничения" -#: sql_help.c:696 sql_help.c:2150 +#: sql_help.c:697 sql_help.c:2153 msgid "join_proc" msgstr "процедура_соединения" -#: sql_help.c:748 sql_help.c:760 sql_help.c:2167 +#: sql_help.c:749 sql_help.c:761 sql_help.c:2170 msgid "strategy_number" msgstr "номер_стратегии" -#: sql_help.c:750 sql_help.c:751 sql_help.c:754 sql_help.c:755 sql_help.c:761 -#: sql_help.c:762 sql_help.c:764 sql_help.c:765 sql_help.c:2169 sql_help.c:2170 -#: sql_help.c:2173 sql_help.c:2174 +#: sql_help.c:751 sql_help.c:752 sql_help.c:755 sql_help.c:756 sql_help.c:762 +#: sql_help.c:763 sql_help.c:765 sql_help.c:766 sql_help.c:2172 sql_help.c:2173 +#: sql_help.c:2176 sql_help.c:2177 msgid "op_type" msgstr "тип_операции" -#: sql_help.c:752 sql_help.c:2171 +#: sql_help.c:753 sql_help.c:2174 msgid "sort_family_name" msgstr "семейство_сортировки" -#: sql_help.c:753 sql_help.c:763 sql_help.c:2172 +#: sql_help.c:754 sql_help.c:764 sql_help.c:2175 msgid "support_number" msgstr "номер_опорной_процедуры" -#: sql_help.c:757 sql_help.c:1799 sql_help.c:2176 sql_help.c:2643 -#: sql_help.c:2645 +#: sql_help.c:758 sql_help.c:1800 sql_help.c:2179 sql_help.c:2646 +#: sql_help.c:2648 msgid "argument_type" msgstr "тип_аргумента" -#: sql_help.c:788 sql_help.c:791 sql_help.c:808 sql_help.c:810 sql_help.c:812 -#: sql_help.c:883 sql_help.c:922 sql_help.c:1271 sql_help.c:1274 -#: sql_help.c:1424 sql_help.c:1464 sql_help.c:1531 sql_help.c:1556 -#: sql_help.c:1561 sql_help.c:1576 sql_help.c:1633 sql_help.c:1638 -#: sql_help.c:1967 sql_help.c:1979 sql_help.c:2088 sql_help.c:2124 -#: sql_help.c:2200 sql_help.c:2215 sql_help.c:2271 sql_help.c:2322 -#: sql_help.c:2353 sql_help.c:2452 sql_help.c:2468 sql_help.c:2480 -#: sql_help.c:2550 sql_help.c:2669 sql_help.c:2846 sql_help.c:3063 -#: sql_help.c:3088 sql_help.c:3194 sql_help.c:3378 sql_help.c:3383 -#: sql_help.c:3429 sql_help.c:3461 sql_help.c:3720 sql_help.c:3725 -#: sql_help.c:3826 sql_help.c:3925 sql_help.c:3927 sql_help.c:3976 -#: sql_help.c:4015 sql_help.c:4164 sql_help.c:4166 sql_help.c:4215 -#: sql_help.c:4249 sql_help.c:4271 sql_help.c:4273 sql_help.c:4274 -#: sql_help.c:4358 sql_help.c:4360 sql_help.c:4409 +#: sql_help.c:789 sql_help.c:792 sql_help.c:809 sql_help.c:811 sql_help.c:813 +#: sql_help.c:884 sql_help.c:923 sql_help.c:1272 sql_help.c:1275 +#: sql_help.c:1425 sql_help.c:1465 sql_help.c:1532 sql_help.c:1557 +#: sql_help.c:1562 sql_help.c:1577 sql_help.c:1634 sql_help.c:1639 +#: sql_help.c:1969 sql_help.c:1981 sql_help.c:2091 sql_help.c:2127 +#: sql_help.c:2203 sql_help.c:2218 sql_help.c:2274 sql_help.c:2325 +#: sql_help.c:2356 sql_help.c:2455 sql_help.c:2471 sql_help.c:2483 +#: sql_help.c:2553 sql_help.c:2672 sql_help.c:2849 sql_help.c:3066 +#: sql_help.c:3091 sql_help.c:3197 sql_help.c:3381 sql_help.c:3386 +#: sql_help.c:3432 sql_help.c:3464 sql_help.c:3723 sql_help.c:3728 +#: sql_help.c:3829 sql_help.c:3928 sql_help.c:3930 sql_help.c:3979 +#: sql_help.c:4018 sql_help.c:4167 sql_help.c:4169 sql_help.c:4218 +#: sql_help.c:4252 sql_help.c:4274 sql_help.c:4276 sql_help.c:4277 +#: sql_help.c:4361 sql_help.c:4363 sql_help.c:4412 msgid "table_name" msgstr "имя_таблицы" -#: sql_help.c:793 sql_help.c:2202 +#: sql_help.c:794 sql_help.c:2205 msgid "using_expression" msgstr "выражение_использования" -#: sql_help.c:794 sql_help.c:2203 +#: sql_help.c:795 sql_help.c:2206 msgid "check_expression" msgstr "выражение_проверки" -#: sql_help.c:814 sql_help.c:2216 +#: sql_help.c:815 sql_help.c:2219 msgid "publication_parameter" msgstr "параметр_публикации" -#: sql_help.c:857 sql_help.c:1357 sql_help.c:2068 sql_help.c:2248 -#: sql_help.c:2780 +#: sql_help.c:858 sql_help.c:1358 sql_help.c:2071 sql_help.c:2251 +#: sql_help.c:2783 msgid "password" msgstr "пароль" -#: sql_help.c:858 sql_help.c:1358 sql_help.c:2069 sql_help.c:2249 -#: sql_help.c:2781 +#: sql_help.c:859 sql_help.c:1359 sql_help.c:2072 sql_help.c:2252 +#: sql_help.c:2784 msgid "timestamp" msgstr "timestamp" -#: sql_help.c:862 sql_help.c:866 sql_help.c:869 sql_help.c:872 sql_help.c:1362 -#: sql_help.c:1366 sql_help.c:1369 sql_help.c:1372 sql_help.c:3388 -#: sql_help.c:3730 +#: sql_help.c:863 sql_help.c:867 sql_help.c:870 sql_help.c:873 sql_help.c:1363 +#: sql_help.c:1367 sql_help.c:1370 sql_help.c:1373 sql_help.c:3391 +#: sql_help.c:3733 msgid "database_name" msgstr "имя_БД" -#: sql_help.c:916 sql_help.c:2317 +#: sql_help.c:917 sql_help.c:2320 msgid "increment" msgstr "шаг" -#: sql_help.c:917 sql_help.c:2318 +#: sql_help.c:918 sql_help.c:2321 msgid "minvalue" msgstr "мин_значение" -#: sql_help.c:918 sql_help.c:2319 +#: sql_help.c:919 sql_help.c:2322 msgid "maxvalue" msgstr "макс_значение" -#: sql_help.c:919 sql_help.c:2320 sql_help.c:3923 sql_help.c:4013 -#: sql_help.c:4162 sql_help.c:4291 sql_help.c:4356 +#: sql_help.c:920 sql_help.c:2323 sql_help.c:3926 sql_help.c:4016 +#: sql_help.c:4165 sql_help.c:4294 sql_help.c:4359 msgid "start" msgstr "начальное_значение" -#: sql_help.c:920 sql_help.c:1122 +#: sql_help.c:921 sql_help.c:1123 msgid "restart" msgstr "значение_перезапуска" -#: sql_help.c:921 sql_help.c:2321 +#: sql_help.c:922 sql_help.c:2324 msgid "cache" msgstr "кеш" -#: sql_help.c:978 sql_help.c:2365 +#: sql_help.c:979 sql_help.c:2368 msgid "conninfo" msgstr "строка_подключения" -#: sql_help.c:980 sql_help.c:2366 +#: sql_help.c:981 sql_help.c:2369 msgid "publication_name" msgstr "имя_публикации" -#: sql_help.c:981 +#: sql_help.c:982 msgid "set_publication_option" msgstr "параметр_set_publication" -#: sql_help.c:984 +#: sql_help.c:985 msgid "refresh_option" msgstr "параметр_обновления" -#: sql_help.c:989 sql_help.c:2367 +#: sql_help.c:990 sql_help.c:2370 msgid "subscription_parameter" msgstr "параметр_подписки" -#: sql_help.c:1100 sql_help.c:1103 +#: sql_help.c:1101 sql_help.c:1104 msgid "partition_name" msgstr "имя_секции" -#: sql_help.c:1101 sql_help.c:1984 sql_help.c:2485 +#: sql_help.c:1102 sql_help.c:1986 sql_help.c:2488 msgid "partition_bound_spec" msgstr "указание_границ_секции" -#: sql_help.c:1119 sql_help.c:2497 +#: sql_help.c:1120 sql_help.c:2500 msgid "sequence_options" msgstr "параметры_последовательности" -#: sql_help.c:1121 +#: sql_help.c:1122 msgid "sequence_option" msgstr "параметр_последовательности" -#: sql_help.c:1133 +#: sql_help.c:1134 msgid "table_constraint_using_index" msgstr "ограничение_таблицы_с_индексом" -#: sql_help.c:1141 sql_help.c:1142 sql_help.c:1143 sql_help.c:1144 +#: sql_help.c:1142 sql_help.c:1143 sql_help.c:1144 sql_help.c:1145 msgid "rewrite_rule_name" msgstr "имя_правила_перезаписи" -#: sql_help.c:1155 +#: sql_help.c:1156 msgid "and table_constraint_using_index is:" msgstr "и ограничение_таблицы_с_индексом:" -#: sql_help.c:1173 sql_help.c:1176 sql_help.c:2569 +#: sql_help.c:1174 sql_help.c:1177 sql_help.c:2572 msgid "tablespace_option" msgstr "параметр_табл_пространства" -#: sql_help.c:1197 sql_help.c:1200 sql_help.c:1206 sql_help.c:1210 +#: sql_help.c:1198 sql_help.c:1201 sql_help.c:1207 sql_help.c:1211 msgid "token_type" msgstr "тип_фрагмента" -#: sql_help.c:1198 sql_help.c:1201 +#: sql_help.c:1199 sql_help.c:1202 msgid "dictionary_name" msgstr "имя_словаря" -#: sql_help.c:1203 sql_help.c:1207 +#: sql_help.c:1204 sql_help.c:1208 msgid "old_dictionary" msgstr "старый_словарь" -#: sql_help.c:1204 sql_help.c:1208 +#: sql_help.c:1205 sql_help.c:1209 msgid "new_dictionary" msgstr "новый_словарь" -#: sql_help.c:1300 sql_help.c:1313 sql_help.c:1316 sql_help.c:1317 -#: sql_help.c:2720 +#: sql_help.c:1301 sql_help.c:1314 sql_help.c:1317 sql_help.c:1318 +#: sql_help.c:2723 msgid "attribute_name" msgstr "имя_атрибута" -#: sql_help.c:1301 +#: sql_help.c:1302 msgid "new_attribute_name" msgstr "новое_имя_атрибута" -#: sql_help.c:1307 sql_help.c:1311 +#: sql_help.c:1308 sql_help.c:1312 msgid "new_enum_value" msgstr "новое_значение_перечисления" -#: sql_help.c:1308 +#: sql_help.c:1309 msgid "neighbor_enum_value" msgstr "соседнее_значение_перечисления" -#: sql_help.c:1310 +#: sql_help.c:1311 msgid "existing_enum_value" msgstr "существующее_значение_перечисления" -#: sql_help.c:1385 sql_help.c:1976 sql_help.c:1985 sql_help.c:2333 -#: sql_help.c:2798 sql_help.c:3219 sql_help.c:3394 sql_help.c:3430 -#: sql_help.c:3736 +#: sql_help.c:1386 sql_help.c:1978 sql_help.c:1987 sql_help.c:2336 +#: sql_help.c:2801 sql_help.c:3222 sql_help.c:3397 sql_help.c:3433 +#: sql_help.c:3739 msgid "server_name" msgstr "имя_сервера" -#: sql_help.c:1413 sql_help.c:1416 sql_help.c:2813 +#: sql_help.c:1414 sql_help.c:1417 sql_help.c:2816 msgid "view_option_name" msgstr "имя_параметра_представления" -#: sql_help.c:1414 sql_help.c:2814 +#: sql_help.c:1415 sql_help.c:2817 msgid "view_option_value" msgstr "значение_параметра_представления" -#: sql_help.c:1439 sql_help.c:4071 sql_help.c:4073 sql_help.c:4097 +#: sql_help.c:1440 sql_help.c:4074 sql_help.c:4076 sql_help.c:4100 msgid "transaction_mode" msgstr "режим_транзакции" -#: sql_help.c:1440 sql_help.c:4074 sql_help.c:4098 +#: sql_help.c:1441 sql_help.c:4077 sql_help.c:4101 msgid "where transaction_mode is one of:" msgstr "где допустимый режим_транзакции:" -#: sql_help.c:1528 +#: sql_help.c:1529 msgid "relation_name" msgstr "имя_отношения" -#: sql_help.c:1533 sql_help.c:3390 sql_help.c:3732 +#: sql_help.c:1534 sql_help.c:3393 sql_help.c:3735 msgid "domain_name" msgstr "имя_домена" -#: sql_help.c:1555 +#: sql_help.c:1556 msgid "policy_name" msgstr "имя_политики" -#: sql_help.c:1560 +#: sql_help.c:1561 msgid "rule_name" msgstr "имя_правила" -#: sql_help.c:1579 +#: sql_help.c:1580 msgid "text" msgstr "текст" -#: sql_help.c:1604 sql_help.c:3574 sql_help.c:3773 +#: sql_help.c:1605 sql_help.c:3577 sql_help.c:3776 msgid "transaction_id" msgstr "код_транзакции" -#: sql_help.c:1635 sql_help.c:1641 sql_help.c:3500 +#: sql_help.c:1636 sql_help.c:1642 sql_help.c:3503 msgid "filename" msgstr "имя_файла" -#: sql_help.c:1636 sql_help.c:1642 sql_help.c:2273 sql_help.c:2274 -#: sql_help.c:2275 +#: sql_help.c:1637 sql_help.c:1643 sql_help.c:2276 sql_help.c:2277 +#: sql_help.c:2278 msgid "command" msgstr "команда" -#: sql_help.c:1640 sql_help.c:2129 sql_help.c:2555 sql_help.c:2815 -#: sql_help.c:2833 sql_help.c:3465 +#: sql_help.c:1641 sql_help.c:2132 sql_help.c:2558 sql_help.c:2818 +#: sql_help.c:2836 sql_help.c:3468 msgid "query" msgstr "запрос" -#: sql_help.c:1644 sql_help.c:3265 +#: sql_help.c:1645 sql_help.c:3268 msgid "where option can be one of:" msgstr "где допустимый параметр:" -#: sql_help.c:1645 +#: sql_help.c:1646 msgid "format_name" msgstr "имя_формата" -#: sql_help.c:1646 sql_help.c:1647 sql_help.c:1650 sql_help.c:3266 -#: sql_help.c:3267 sql_help.c:3268 sql_help.c:3269 sql_help.c:3270 -#: sql_help.c:3271 +#: sql_help.c:1647 sql_help.c:1648 sql_help.c:1651 sql_help.c:3269 +#: sql_help.c:3270 sql_help.c:3271 sql_help.c:3272 sql_help.c:3273 +#: sql_help.c:3274 msgid "boolean" msgstr "логическое_значение" -#: sql_help.c:1648 +#: sql_help.c:1649 msgid "delimiter_character" msgstr "символ_разделитель" -#: sql_help.c:1649 +#: sql_help.c:1650 msgid "null_string" msgstr "представление_NULL" -#: sql_help.c:1651 +#: sql_help.c:1652 msgid "quote_character" msgstr "символ_кавычек" -#: sql_help.c:1652 +#: sql_help.c:1653 msgid "escape_character" msgstr "спецсимвол" -#: sql_help.c:1656 +#: sql_help.c:1657 msgid "encoding_name" msgstr "имя_кодировки" -#: sql_help.c:1667 +#: sql_help.c:1668 msgid "access_method_type" msgstr "тип_метода_доступа" -#: sql_help.c:1733 sql_help.c:1752 sql_help.c:1755 +#: sql_help.c:1734 sql_help.c:1753 sql_help.c:1756 msgid "arg_data_type" msgstr "тип_данных_аргумента" -#: sql_help.c:1734 sql_help.c:1756 sql_help.c:1764 +#: sql_help.c:1735 sql_help.c:1757 sql_help.c:1765 msgid "sfunc" msgstr "функция_состояния" -#: sql_help.c:1735 sql_help.c:1757 sql_help.c:1765 +#: sql_help.c:1736 sql_help.c:1758 sql_help.c:1766 msgid "state_data_type" msgstr "тип_данных_состояния" -#: sql_help.c:1736 sql_help.c:1758 sql_help.c:1766 +#: sql_help.c:1737 sql_help.c:1759 sql_help.c:1767 msgid "state_data_size" msgstr "размер_данных_состояния" -#: sql_help.c:1737 sql_help.c:1759 sql_help.c:1767 +#: sql_help.c:1738 sql_help.c:1760 sql_help.c:1768 msgid "ffunc" msgstr "функция_завершения" -#: sql_help.c:1738 sql_help.c:1768 +#: sql_help.c:1739 sql_help.c:1769 msgid "combinefunc" msgstr "комбинирующая_функция" -#: sql_help.c:1739 sql_help.c:1769 +#: sql_help.c:1740 sql_help.c:1770 msgid "serialfunc" msgstr "функция_сериализации" -#: sql_help.c:1740 sql_help.c:1770 +#: sql_help.c:1741 sql_help.c:1771 msgid "deserialfunc" msgstr "функция_десериализации" -#: sql_help.c:1741 sql_help.c:1760 sql_help.c:1771 +#: sql_help.c:1742 sql_help.c:1761 sql_help.c:1772 msgid "initial_condition" msgstr "начальное_условие" -#: sql_help.c:1742 sql_help.c:1772 +#: sql_help.c:1743 sql_help.c:1773 msgid "msfunc" msgstr "функция_состояния_движ" -#: sql_help.c:1743 sql_help.c:1773 +#: sql_help.c:1744 sql_help.c:1774 msgid "minvfunc" msgstr "обратная_функция_движ" -#: sql_help.c:1744 sql_help.c:1774 +#: sql_help.c:1745 sql_help.c:1775 msgid "mstate_data_type" msgstr "тип_данных_состояния_движ" -#: sql_help.c:1745 sql_help.c:1775 +#: sql_help.c:1746 sql_help.c:1776 msgid "mstate_data_size" msgstr "размер_данных_состояния_движ" -#: sql_help.c:1746 sql_help.c:1776 +#: sql_help.c:1747 sql_help.c:1777 msgid "mffunc" msgstr "функция_завершения_движ" -#: sql_help.c:1747 sql_help.c:1777 +#: sql_help.c:1748 sql_help.c:1778 msgid "minitial_condition" msgstr "начальное_условие_движ" -#: sql_help.c:1748 sql_help.c:1778 +#: sql_help.c:1749 sql_help.c:1779 msgid "sort_operator" msgstr "оператор_сортировки" -#: sql_help.c:1761 +#: sql_help.c:1762 msgid "or the old syntax" msgstr "или старый синтаксис" -#: sql_help.c:1763 +#: sql_help.c:1764 msgid "base_type" msgstr "базовый_тип" -#: sql_help.c:1819 +#: sql_help.c:1820 msgid "locale" msgstr "код_локали" -#: sql_help.c:1820 sql_help.c:1858 +#: sql_help.c:1821 sql_help.c:1859 msgid "lc_collate" msgstr "код_правила_сортировки" -#: sql_help.c:1821 sql_help.c:1859 +#: sql_help.c:1822 sql_help.c:1860 msgid "lc_ctype" msgstr "код_классификации_символов" -#: sql_help.c:1822 sql_help.c:3824 +#: sql_help.c:1823 sql_help.c:3827 msgid "provider" -msgstr "поставщик" +msgstr "провайдер" -#: sql_help.c:1823 sql_help.c:1914 +#: sql_help.c:1824 sql_help.c:1916 msgid "version" msgstr "версия" -#: sql_help.c:1825 +#: sql_help.c:1826 msgid "existing_collation" msgstr "существующее_правило_сортировки" -#: sql_help.c:1835 +#: sql_help.c:1836 msgid "source_encoding" msgstr "исходная_кодировка" -#: sql_help.c:1836 +#: sql_help.c:1837 msgid "dest_encoding" msgstr "целевая_кодировка" -#: sql_help.c:1856 sql_help.c:2595 +#: sql_help.c:1857 sql_help.c:2598 msgid "template" msgstr "шаблон" -#: sql_help.c:1857 +#: sql_help.c:1858 msgid "encoding" msgstr "кодировка" -#: sql_help.c:1883 +#: sql_help.c:1884 msgid "constraint" msgstr "ограничение" -#: sql_help.c:1884 +#: sql_help.c:1885 msgid "where constraint is:" msgstr "где ограничение:" -#: sql_help.c:1898 sql_help.c:2270 sql_help.c:2668 +#: sql_help.c:1899 sql_help.c:2273 sql_help.c:2671 msgid "event" msgstr "событие" -#: sql_help.c:1899 +#: sql_help.c:1900 msgid "filter_variable" msgstr "переменная_фильтра" -#: sql_help.c:1915 +#: sql_help.c:1901 +msgid "filter_value" +msgstr "значение_фильтра" + +#: sql_help.c:1917 msgid "old_version" msgstr "старая_версия" -#: sql_help.c:1988 sql_help.c:2493 +#: sql_help.c:1990 sql_help.c:2496 msgid "where column_constraint is:" msgstr "где ограничение_столбца:" -#: sql_help.c:1991 sql_help.c:2023 sql_help.c:2496 +#: sql_help.c:1993 sql_help.c:2026 sql_help.c:2499 msgid "default_expr" msgstr "выражение_по_умолчанию" -#: sql_help.c:1992 sql_help.c:2504 +#: sql_help.c:1994 sql_help.c:2507 msgid "and table_constraint is:" msgstr "и ограничение_таблицы:" -#: sql_help.c:2024 +#: sql_help.c:2027 msgid "rettype" msgstr "тип_возврата" -#: sql_help.c:2026 +#: sql_help.c:2029 msgid "column_type" msgstr "тип_столбца" -#: sql_help.c:2034 +#: sql_help.c:2037 msgid "definition" msgstr "определение" -#: sql_help.c:2035 +#: sql_help.c:2038 msgid "obj_file" msgstr "объектный_файл" -#: sql_help.c:2036 +#: sql_help.c:2039 msgid "link_symbol" msgstr "символ_в_экспорте" -#: sql_help.c:2037 +#: sql_help.c:2040 msgid "attribute" msgstr "атрибут" -#: sql_help.c:2075 sql_help.c:2255 sql_help.c:2787 +#: sql_help.c:2078 sql_help.c:2258 sql_help.c:2790 msgid "uid" msgstr "uid" -#: sql_help.c:2089 +#: sql_help.c:2092 msgid "method" msgstr "метод" -#: sql_help.c:2093 sql_help.c:2464 sql_help.c:2476 sql_help.c:2489 -#: sql_help.c:2536 sql_help.c:3474 +#: sql_help.c:2096 sql_help.c:2467 sql_help.c:2479 sql_help.c:2492 +#: sql_help.c:2539 sql_help.c:3477 msgid "opclass" msgstr "класс_оператора" -#: sql_help.c:2097 sql_help.c:2515 +#: sql_help.c:2100 sql_help.c:2518 msgid "predicate" msgstr "предикат" -#: sql_help.c:2109 +#: sql_help.c:2112 msgid "call_handler" msgstr "обработчик_вызова" -#: sql_help.c:2110 +#: sql_help.c:2113 msgid "inline_handler" msgstr "обработчик_внедрённого_кода" -#: sql_help.c:2111 +#: sql_help.c:2114 msgid "valfunction" msgstr "функция_проверки" -#: sql_help.c:2147 +#: sql_help.c:2150 msgid "com_op" msgstr "коммут_оператор" -#: sql_help.c:2148 +#: sql_help.c:2151 msgid "neg_op" msgstr "обратный_оператор" -#: sql_help.c:2166 +#: sql_help.c:2169 msgid "family_name" msgstr "имя_семейства" -#: sql_help.c:2177 +#: sql_help.c:2180 msgid "storage_type" msgstr "тип_хранения" -#: sql_help.c:2272 sql_help.c:2672 sql_help.c:2849 sql_help.c:3484 -#: sql_help.c:3914 sql_help.c:3916 sql_help.c:4004 sql_help.c:4006 -#: sql_help.c:4153 sql_help.c:4155 sql_help.c:4258 sql_help.c:4347 -#: sql_help.c:4349 +#: sql_help.c:2275 sql_help.c:2675 sql_help.c:2852 sql_help.c:3487 +#: sql_help.c:3917 sql_help.c:3919 sql_help.c:4007 sql_help.c:4009 +#: sql_help.c:4156 sql_help.c:4158 sql_help.c:4261 sql_help.c:4350 +#: sql_help.c:4352 msgid "condition" msgstr "условие" -#: sql_help.c:2276 sql_help.c:2675 +#: sql_help.c:2279 sql_help.c:2678 msgid "where event can be one of:" msgstr "где допустимое событие:" -#: sql_help.c:2295 sql_help.c:2297 +#: sql_help.c:2298 sql_help.c:2300 msgid "schema_element" msgstr "элемент_схемы" -#: sql_help.c:2334 +#: sql_help.c:2337 msgid "server_type" msgstr "тип_сервера" -#: sql_help.c:2335 +#: sql_help.c:2338 msgid "server_version" msgstr "версия_сервера" -#: sql_help.c:2336 sql_help.c:3392 sql_help.c:3734 +#: sql_help.c:2339 sql_help.c:3395 sql_help.c:3737 msgid "fdw_name" msgstr "имя_обёртки_сторонних_данных" -#: sql_help.c:2349 +#: sql_help.c:2352 msgid "statistics_name" msgstr "имя_статистики" -#: sql_help.c:2350 +#: sql_help.c:2353 msgid "statistics_kind" msgstr "вид_статистики" -#: sql_help.c:2364 +#: sql_help.c:2367 msgid "subscription_name" msgstr "имя_подписки" -#: sql_help.c:2458 +#: sql_help.c:2461 msgid "source_table" msgstr "исходная_таблица" -#: sql_help.c:2459 +#: sql_help.c:2462 msgid "like_option" msgstr "параметр_порождения" -#: sql_help.c:2498 sql_help.c:2499 sql_help.c:2508 sql_help.c:2510 -#: sql_help.c:2514 +#: sql_help.c:2501 sql_help.c:2502 sql_help.c:2511 sql_help.c:2513 +#: sql_help.c:2517 msgid "index_parameters" msgstr "параметры_индекса" -#: sql_help.c:2500 sql_help.c:2517 +#: sql_help.c:2503 sql_help.c:2520 msgid "reftable" msgstr "целевая_таблица" -#: sql_help.c:2501 sql_help.c:2518 +#: sql_help.c:2504 sql_help.c:2521 msgid "refcolumn" msgstr "целевой_столбец" -#: sql_help.c:2512 +#: sql_help.c:2515 msgid "exclude_element" msgstr "объект_исключения" -#: sql_help.c:2513 sql_help.c:3921 sql_help.c:4011 sql_help.c:4160 -#: sql_help.c:4289 sql_help.c:4354 +#: sql_help.c:2516 sql_help.c:3924 sql_help.c:4014 sql_help.c:4163 +#: sql_help.c:4292 sql_help.c:4357 msgid "operator" msgstr "оператор" -#: sql_help.c:2521 +#: sql_help.c:2524 msgid "and like_option is:" msgstr "и параметр_порождения:" -#: sql_help.c:2522 +#: sql_help.c:2525 msgid "and partition_bound_spec is:" msgstr "и указание_границ_секции:" -#: sql_help.c:2523 sql_help.c:2525 sql_help.c:2527 +#: sql_help.c:2526 sql_help.c:2528 sql_help.c:2530 msgid "numeric_literal" msgstr "числовая_константа" -#: sql_help.c:2524 sql_help.c:2526 sql_help.c:2528 +#: sql_help.c:2527 sql_help.c:2529 sql_help.c:2531 msgid "string_literal" msgstr "строковая_константа" -#: sql_help.c:2529 +#: sql_help.c:2532 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "параметры_индекса в ограничениях UNIQUE, PRIMARY KEY и EXCLUDE:" -#: sql_help.c:2533 +#: sql_help.c:2536 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "объект_исключения в ограничении EXCLUDE:" -#: sql_help.c:2568 +#: sql_help.c:2571 msgid "directory" msgstr "каталог" -#: sql_help.c:2582 +#: sql_help.c:2585 msgid "parser_name" msgstr "имя_анализатора" -#: sql_help.c:2583 +#: sql_help.c:2586 msgid "source_config" msgstr "исходная_конфигурация" -#: sql_help.c:2612 +#: sql_help.c:2615 msgid "start_function" msgstr "функция_начала" -#: sql_help.c:2613 +#: sql_help.c:2616 msgid "gettoken_function" msgstr "функция_выдачи_фрагмента" -#: sql_help.c:2614 +#: sql_help.c:2617 msgid "end_function" msgstr "функция_окончания" -#: sql_help.c:2615 +#: sql_help.c:2618 msgid "lextypes_function" msgstr "функция_лекс_типов" -#: sql_help.c:2616 +#: sql_help.c:2619 msgid "headline_function" msgstr "функция_создания_выдержек" -#: sql_help.c:2628 +#: sql_help.c:2631 msgid "init_function" msgstr "функция_инициализации" -#: sql_help.c:2629 +#: sql_help.c:2632 msgid "lexize_function" msgstr "функция_выделения_лексем" -#: sql_help.c:2642 +#: sql_help.c:2645 msgid "from_sql_function_name" msgstr "имя_функции_из_sql" -#: sql_help.c:2644 +#: sql_help.c:2647 msgid "to_sql_function_name" msgstr "имя_функции_в_sql" -#: sql_help.c:2670 +#: sql_help.c:2673 msgid "referenced_table_name" msgstr "ссылающаяся_таблица" -#: sql_help.c:2671 +#: sql_help.c:2674 msgid "transition_relation_name" msgstr "имя_переходного_отношения" -#: sql_help.c:2674 +#: sql_help.c:2677 msgid "arguments" msgstr "аргументы" -#: sql_help.c:2724 sql_help.c:3849 +#: sql_help.c:2727 sql_help.c:3852 msgid "label" msgstr "метка" -#: sql_help.c:2726 +#: sql_help.c:2729 msgid "subtype" msgstr "подтип" -#: sql_help.c:2727 +#: sql_help.c:2730 msgid "subtype_operator_class" msgstr "класс_оператора_подтипа" -#: sql_help.c:2729 +#: sql_help.c:2732 msgid "canonical_function" msgstr "каноническая_функция" -#: sql_help.c:2730 +#: sql_help.c:2733 msgid "subtype_diff_function" msgstr "функция_различий_подтипа" -#: sql_help.c:2732 +#: sql_help.c:2735 msgid "input_function" msgstr "функция_ввода" -#: sql_help.c:2733 +#: sql_help.c:2736 msgid "output_function" msgstr "функция_вывода" -#: sql_help.c:2734 +#: sql_help.c:2737 msgid "receive_function" msgstr "функция_получения" -#: sql_help.c:2735 +#: sql_help.c:2738 msgid "send_function" msgstr "функция_отправки" -#: sql_help.c:2736 +#: sql_help.c:2739 msgid "type_modifier_input_function" msgstr "функция_ввода_модификатора_типа" -#: sql_help.c:2737 +#: sql_help.c:2740 msgid "type_modifier_output_function" msgstr "функция_вывода_модификатора_типа" -#: sql_help.c:2738 +#: sql_help.c:2741 msgid "analyze_function" msgstr "функция_анализа" -#: sql_help.c:2739 +#: sql_help.c:2742 msgid "internallength" msgstr "внутр_длина" -#: sql_help.c:2740 +#: sql_help.c:2743 msgid "alignment" msgstr "выравнивание" -#: sql_help.c:2741 +#: sql_help.c:2744 msgid "storage" msgstr "хранение" -#: sql_help.c:2742 +#: sql_help.c:2745 msgid "like_type" msgstr "тип_образец" -#: sql_help.c:2743 +#: sql_help.c:2746 msgid "category" msgstr "категория" -#: sql_help.c:2744 +#: sql_help.c:2747 msgid "preferred" msgstr "предпочитаемый" -#: sql_help.c:2745 +#: sql_help.c:2748 msgid "default" msgstr "по_умолчанию" -#: sql_help.c:2746 +#: sql_help.c:2749 msgid "element" msgstr "элемент" -#: sql_help.c:2747 +#: sql_help.c:2750 msgid "delimiter" msgstr "разделитель" -#: sql_help.c:2748 +#: sql_help.c:2751 msgid "collatable" msgstr "сортируемый" -#: sql_help.c:2845 sql_help.c:3460 sql_help.c:3909 sql_help.c:3998 -#: sql_help.c:4148 sql_help.c:4248 sql_help.c:4342 +#: sql_help.c:2848 sql_help.c:3463 sql_help.c:3912 sql_help.c:4001 +#: sql_help.c:4151 sql_help.c:4251 sql_help.c:4345 msgid "with_query" msgstr "запрос_WITH" -#: sql_help.c:2847 sql_help.c:3462 sql_help.c:3928 sql_help.c:3934 -#: sql_help.c:3937 sql_help.c:3941 sql_help.c:3945 sql_help.c:3953 -#: sql_help.c:4167 sql_help.c:4173 sql_help.c:4176 sql_help.c:4180 -#: sql_help.c:4184 sql_help.c:4192 sql_help.c:4250 sql_help.c:4361 -#: sql_help.c:4367 sql_help.c:4370 sql_help.c:4374 sql_help.c:4378 -#: sql_help.c:4386 +#: sql_help.c:2850 sql_help.c:3465 sql_help.c:3931 sql_help.c:3937 +#: sql_help.c:3940 sql_help.c:3944 sql_help.c:3948 sql_help.c:3956 +#: sql_help.c:4170 sql_help.c:4176 sql_help.c:4179 sql_help.c:4183 +#: sql_help.c:4187 sql_help.c:4195 sql_help.c:4253 sql_help.c:4364 +#: sql_help.c:4370 sql_help.c:4373 sql_help.c:4377 sql_help.c:4381 +#: sql_help.c:4389 msgid "alias" msgstr "псевдоним" -#: sql_help.c:2848 sql_help.c:3913 sql_help.c:3955 sql_help.c:3957 -#: sql_help.c:4003 sql_help.c:4152 sql_help.c:4194 sql_help.c:4196 -#: sql_help.c:4257 sql_help.c:4346 sql_help.c:4388 sql_help.c:4390 +#: sql_help.c:2851 sql_help.c:3916 sql_help.c:3958 sql_help.c:3960 +#: sql_help.c:4006 sql_help.c:4155 sql_help.c:4197 sql_help.c:4199 +#: sql_help.c:4260 sql_help.c:4349 sql_help.c:4391 sql_help.c:4393 msgid "from_item" msgstr "источник_данных" -#: sql_help.c:2850 sql_help.c:3297 sql_help.c:3541 sql_help.c:4259 +#: sql_help.c:2853 sql_help.c:3300 sql_help.c:3544 sql_help.c:4262 msgid "cursor_name" msgstr "имя_курсора" -#: sql_help.c:2851 sql_help.c:3468 sql_help.c:4260 +#: sql_help.c:2854 sql_help.c:3471 sql_help.c:4263 msgid "output_expression" msgstr "выражение_результата" -#: sql_help.c:2852 sql_help.c:3469 sql_help.c:3912 sql_help.c:4001 -#: sql_help.c:4151 sql_help.c:4261 sql_help.c:4345 +#: sql_help.c:2855 sql_help.c:3472 sql_help.c:3915 sql_help.c:4004 +#: sql_help.c:4154 sql_help.c:4264 sql_help.c:4348 msgid "output_name" msgstr "имя_результата" -#: sql_help.c:2868 +#: sql_help.c:2871 msgid "code" msgstr "внедрённый_код" -#: sql_help.c:3243 +#: sql_help.c:3246 msgid "parameter" msgstr "параметр" -#: sql_help.c:3263 sql_help.c:3264 sql_help.c:3566 +#: sql_help.c:3266 sql_help.c:3267 sql_help.c:3569 msgid "statement" msgstr "оператор" -#: sql_help.c:3296 sql_help.c:3540 +#: sql_help.c:3299 sql_help.c:3543 msgid "direction" msgstr "направление" -#: sql_help.c:3298 sql_help.c:3542 +#: sql_help.c:3301 sql_help.c:3545 msgid "where direction can be empty or one of:" msgstr "где допустимое направление пустое или:" -#: sql_help.c:3299 sql_help.c:3300 sql_help.c:3301 sql_help.c:3302 -#: sql_help.c:3303 sql_help.c:3543 sql_help.c:3544 sql_help.c:3545 -#: sql_help.c:3546 sql_help.c:3547 sql_help.c:3922 sql_help.c:3924 -#: sql_help.c:4012 sql_help.c:4014 sql_help.c:4161 sql_help.c:4163 -#: sql_help.c:4290 sql_help.c:4292 sql_help.c:4355 sql_help.c:4357 +#: sql_help.c:3302 sql_help.c:3303 sql_help.c:3304 sql_help.c:3305 +#: sql_help.c:3306 sql_help.c:3546 sql_help.c:3547 sql_help.c:3548 +#: sql_help.c:3549 sql_help.c:3550 sql_help.c:3925 sql_help.c:3927 +#: sql_help.c:4015 sql_help.c:4017 sql_help.c:4164 sql_help.c:4166 +#: sql_help.c:4293 sql_help.c:4295 sql_help.c:4358 sql_help.c:4360 msgid "count" msgstr "число" -#: sql_help.c:3385 sql_help.c:3727 +#: sql_help.c:3388 sql_help.c:3730 msgid "sequence_name" msgstr "имя_последовательности" -#: sql_help.c:3398 sql_help.c:3740 +#: sql_help.c:3401 sql_help.c:3743 msgid "arg_name" msgstr "имя_аргумента" -#: sql_help.c:3399 sql_help.c:3741 +#: sql_help.c:3402 sql_help.c:3744 msgid "arg_type" msgstr "тип_аргумента" -#: sql_help.c:3404 sql_help.c:3746 +#: sql_help.c:3407 sql_help.c:3749 msgid "loid" msgstr "код_БО" -#: sql_help.c:3428 +#: sql_help.c:3431 msgid "remote_schema" msgstr "удалённая_схема" -#: sql_help.c:3431 +#: sql_help.c:3434 msgid "local_schema" msgstr "локальная_схема" -#: sql_help.c:3466 +#: sql_help.c:3469 msgid "conflict_target" msgstr "объект_конфликта" -#: sql_help.c:3467 +#: sql_help.c:3470 msgid "conflict_action" msgstr "действие_при_конфликте" -#: sql_help.c:3470 +#: sql_help.c:3473 msgid "where conflict_target can be one of:" msgstr "где допустимый объект_конфликта:" -#: sql_help.c:3471 +#: sql_help.c:3474 msgid "index_column_name" msgstr "имя_столбца_индекса" -#: sql_help.c:3472 +#: sql_help.c:3475 msgid "index_expression" msgstr "выражение_индекса" -#: sql_help.c:3475 +#: sql_help.c:3478 msgid "index_predicate" msgstr "предикат_индекса" -#: sql_help.c:3477 +#: sql_help.c:3480 msgid "and conflict_action is one of:" msgstr "а допустимое действие_при_конфликте:" -#: sql_help.c:3483 sql_help.c:4256 +#: sql_help.c:3486 sql_help.c:4259 msgid "sub-SELECT" msgstr "вложенный_SELECT" -#: sql_help.c:3492 sql_help.c:3555 sql_help.c:4232 +#: sql_help.c:3495 sql_help.c:3558 sql_help.c:4235 msgid "channel" msgstr "канал" -#: sql_help.c:3514 +#: sql_help.c:3517 msgid "lockmode" msgstr "режим_блокировки" -#: sql_help.c:3515 +#: sql_help.c:3518 msgid "where lockmode is one of:" msgstr "где допустимый режим_блокировки:" -#: sql_help.c:3556 +#: sql_help.c:3559 msgid "payload" msgstr "сообщение_нагрузка" -#: sql_help.c:3583 +#: sql_help.c:3586 msgid "old_role" msgstr "старая_роль" -#: sql_help.c:3584 +#: sql_help.c:3587 msgid "new_role" msgstr "новая_роль" -#: sql_help.c:3609 sql_help.c:3781 sql_help.c:3789 +#: sql_help.c:3612 sql_help.c:3784 sql_help.c:3792 msgid "savepoint_name" msgstr "имя_точки_сохранения" -#: sql_help.c:3915 sql_help.c:3967 sql_help.c:4154 sql_help.c:4206 -#: sql_help.c:4348 sql_help.c:4400 +#: sql_help.c:3918 sql_help.c:3970 sql_help.c:4157 sql_help.c:4209 +#: sql_help.c:4351 sql_help.c:4403 msgid "grouping_element" msgstr "элемент_группирования" -#: sql_help.c:3917 sql_help.c:4007 sql_help.c:4156 sql_help.c:4350 +#: sql_help.c:3920 sql_help.c:4010 sql_help.c:4159 sql_help.c:4353 msgid "window_name" msgstr "имя_окна" -#: sql_help.c:3918 sql_help.c:4008 sql_help.c:4157 sql_help.c:4351 +#: sql_help.c:3921 sql_help.c:4011 sql_help.c:4160 sql_help.c:4354 msgid "window_definition" msgstr "определение_окна" -#: sql_help.c:3919 sql_help.c:3933 sql_help.c:3971 sql_help.c:4009 -#: sql_help.c:4158 sql_help.c:4172 sql_help.c:4210 sql_help.c:4352 -#: sql_help.c:4366 sql_help.c:4404 +#: sql_help.c:3922 sql_help.c:3936 sql_help.c:3974 sql_help.c:4012 +#: sql_help.c:4161 sql_help.c:4175 sql_help.c:4213 sql_help.c:4355 +#: sql_help.c:4369 sql_help.c:4407 msgid "select" msgstr "select" -#: sql_help.c:3926 sql_help.c:4165 sql_help.c:4359 +#: sql_help.c:3929 sql_help.c:4168 sql_help.c:4362 msgid "where from_item can be one of:" msgstr "где допустимый источник_данных:" -#: sql_help.c:3929 sql_help.c:3935 sql_help.c:3938 sql_help.c:3942 -#: sql_help.c:3954 sql_help.c:4168 sql_help.c:4174 sql_help.c:4177 -#: sql_help.c:4181 sql_help.c:4193 sql_help.c:4362 sql_help.c:4368 -#: sql_help.c:4371 sql_help.c:4375 sql_help.c:4387 +#: sql_help.c:3932 sql_help.c:3938 sql_help.c:3941 sql_help.c:3945 +#: sql_help.c:3957 sql_help.c:4171 sql_help.c:4177 sql_help.c:4180 +#: sql_help.c:4184 sql_help.c:4196 sql_help.c:4365 sql_help.c:4371 +#: sql_help.c:4374 sql_help.c:4378 sql_help.c:4390 msgid "column_alias" msgstr "псевдоним_столбца" -#: sql_help.c:3930 sql_help.c:4169 sql_help.c:4363 +#: sql_help.c:3933 sql_help.c:4172 sql_help.c:4366 msgid "sampling_method" msgstr "метод_выборки" -#: sql_help.c:3931 sql_help.c:3940 sql_help.c:3944 sql_help.c:3948 -#: sql_help.c:3951 sql_help.c:4170 sql_help.c:4179 sql_help.c:4183 -#: sql_help.c:4187 sql_help.c:4190 sql_help.c:4364 sql_help.c:4373 -#: sql_help.c:4377 sql_help.c:4381 sql_help.c:4384 +#: sql_help.c:3934 sql_help.c:3943 sql_help.c:3947 sql_help.c:3951 +#: sql_help.c:3954 sql_help.c:4173 sql_help.c:4182 sql_help.c:4186 +#: sql_help.c:4190 sql_help.c:4193 sql_help.c:4367 sql_help.c:4376 +#: sql_help.c:4380 sql_help.c:4384 sql_help.c:4387 msgid "argument" msgstr "аргумент" -#: sql_help.c:3932 sql_help.c:4171 sql_help.c:4365 +#: sql_help.c:3935 sql_help.c:4174 sql_help.c:4368 msgid "seed" msgstr "начальное_число" -#: sql_help.c:3936 sql_help.c:3969 sql_help.c:4175 sql_help.c:4208 -#: sql_help.c:4369 sql_help.c:4402 +#: sql_help.c:3939 sql_help.c:3972 sql_help.c:4178 sql_help.c:4211 +#: sql_help.c:4372 sql_help.c:4405 msgid "with_query_name" msgstr "имя_запроса_WITH" -#: sql_help.c:3946 sql_help.c:3949 sql_help.c:3952 sql_help.c:4185 -#: sql_help.c:4188 sql_help.c:4191 sql_help.c:4379 sql_help.c:4382 -#: sql_help.c:4385 +#: sql_help.c:3949 sql_help.c:3952 sql_help.c:3955 sql_help.c:4188 +#: sql_help.c:4191 sql_help.c:4194 sql_help.c:4382 sql_help.c:4385 +#: sql_help.c:4388 msgid "column_definition" msgstr "определение_столбца" -#: sql_help.c:3956 sql_help.c:4195 sql_help.c:4389 +#: sql_help.c:3959 sql_help.c:4198 sql_help.c:4392 msgid "join_type" msgstr "тип_соединения" -#: sql_help.c:3958 sql_help.c:4197 sql_help.c:4391 +#: sql_help.c:3961 sql_help.c:4200 sql_help.c:4394 msgid "join_condition" msgstr "условие_соединения" -#: sql_help.c:3959 sql_help.c:4198 sql_help.c:4392 +#: sql_help.c:3962 sql_help.c:4201 sql_help.c:4395 msgid "join_column" msgstr "столбец_соединения" -#: sql_help.c:3960 sql_help.c:4199 sql_help.c:4393 +#: sql_help.c:3963 sql_help.c:4202 sql_help.c:4396 msgid "and grouping_element can be one of:" msgstr "где допустимый элемент_группирования:" -#: sql_help.c:3968 sql_help.c:4207 sql_help.c:4401 +#: sql_help.c:3971 sql_help.c:4210 sql_help.c:4404 msgid "and with_query is:" msgstr "и запрос_WITH:" -#: sql_help.c:3972 sql_help.c:4211 sql_help.c:4405 +#: sql_help.c:3975 sql_help.c:4214 sql_help.c:4408 msgid "values" msgstr "значения" -#: sql_help.c:3973 sql_help.c:4212 sql_help.c:4406 +#: sql_help.c:3976 sql_help.c:4215 sql_help.c:4409 msgid "insert" msgstr "insert" -#: sql_help.c:3974 sql_help.c:4213 sql_help.c:4407 +#: sql_help.c:3977 sql_help.c:4216 sql_help.c:4410 msgid "update" msgstr "update" -#: sql_help.c:3975 sql_help.c:4214 sql_help.c:4408 +#: sql_help.c:3978 sql_help.c:4217 sql_help.c:4411 msgid "delete" msgstr "delete" -#: sql_help.c:4002 +#: sql_help.c:4005 msgid "new_table" msgstr "новая_таблица" -#: sql_help.c:4027 +#: sql_help.c:4030 msgid "timezone" msgstr "часовой_пояс" -#: sql_help.c:4072 +#: sql_help.c:4075 msgid "snapshot_id" msgstr "код_снимка" -#: sql_help.c:4288 +#: sql_help.c:4291 msgid "sort_expression" msgstr "выражение_сортировки" -#: sql_help.c:4415 sql_help.c:5200 +#: sql_help.c:4418 sql_help.c:5203 msgid "abort the current transaction" msgstr "прервать текущую транзакцию" -#: sql_help.c:4420 +#: sql_help.c:4423 msgid "change the definition of an aggregate function" msgstr "изменить определение агрегатной функции" -#: sql_help.c:4425 +#: sql_help.c:4428 msgid "change the definition of a collation" msgstr "изменить определение правила сортировки" -#: sql_help.c:4430 +#: sql_help.c:4433 msgid "change the definition of a conversion" msgstr "изменить определение преобразования" -#: sql_help.c:4435 +#: sql_help.c:4438 msgid "change a database" msgstr "изменить атрибуты базы данных" -#: sql_help.c:4440 +#: sql_help.c:4443 msgid "define default access privileges" msgstr "определить права доступа по умолчанию" -#: sql_help.c:4445 +#: sql_help.c:4448 msgid "change the definition of a domain" msgstr "изменить определение домена" -#: sql_help.c:4450 +#: sql_help.c:4453 msgid "change the definition of an event trigger" msgstr "изменить определение событийного триггера" -#: sql_help.c:4455 +#: sql_help.c:4458 msgid "change the definition of an extension" msgstr "изменить определение расширения" -#: sql_help.c:4460 +#: sql_help.c:4463 msgid "change the definition of a foreign-data wrapper" msgstr "изменить определение обёртки сторонних данных" -#: sql_help.c:4465 +#: sql_help.c:4468 msgid "change the definition of a foreign table" msgstr "изменить определение сторонней таблицы" -#: sql_help.c:4470 +#: sql_help.c:4473 msgid "change the definition of a function" msgstr "изменить определение функции" -#: sql_help.c:4475 +#: sql_help.c:4478 msgid "change role name or membership" msgstr "изменить имя роли или членство" -#: sql_help.c:4480 +#: sql_help.c:4483 msgid "change the definition of an index" msgstr "изменить определение индекса" -#: sql_help.c:4485 +#: sql_help.c:4488 msgid "change the definition of a procedural language" msgstr "изменить определение процедурного языка" -#: sql_help.c:4490 +#: sql_help.c:4493 msgid "change the definition of a large object" msgstr "изменить определение большого объекта" -#: sql_help.c:4495 +#: sql_help.c:4498 msgid "change the definition of a materialized view" msgstr "изменить определение материализованного представления" -#: sql_help.c:4500 +#: sql_help.c:4503 msgid "change the definition of an operator" msgstr "изменить определение оператора" -#: sql_help.c:4505 +#: sql_help.c:4508 msgid "change the definition of an operator class" msgstr "изменить определение класса операторов" -#: sql_help.c:4510 +#: sql_help.c:4513 msgid "change the definition of an operator family" msgstr "изменить определение семейства операторов" -#: sql_help.c:4515 +#: sql_help.c:4518 msgid "change the definition of a row level security policy" -msgstr "изменить определение политики безопасности на уровне строк" +msgstr "изменить определение политики защиты на уровне строк" -#: sql_help.c:4520 +#: sql_help.c:4523 msgid "change the definition of a publication" msgstr "изменить определение публикации" -#: sql_help.c:4525 sql_help.c:4605 +#: sql_help.c:4528 sql_help.c:4608 msgid "change a database role" msgstr "изменить роль пользователя БД" -#: sql_help.c:4530 +#: sql_help.c:4533 msgid "change the definition of a rule" msgstr "изменить определение правила" -#: sql_help.c:4535 +#: sql_help.c:4538 msgid "change the definition of a schema" msgstr "изменить определение схемы" -#: sql_help.c:4540 +#: sql_help.c:4543 msgid "change the definition of a sequence generator" msgstr "изменить определение генератора последовательности" -#: sql_help.c:4545 +#: sql_help.c:4548 msgid "change the definition of a foreign server" msgstr "изменить определение стороннего сервера" -#: sql_help.c:4550 +#: sql_help.c:4553 msgid "change the definition of an extended statistics object" msgstr "изменить определение объекта расширенной статистики" -#: sql_help.c:4555 +#: sql_help.c:4558 msgid "change the definition of a subscription" msgstr "изменить определение подписки" -#: sql_help.c:4560 +#: sql_help.c:4563 msgid "change a server configuration parameter" msgstr "изменить параметр конфигурации сервера" -#: sql_help.c:4565 +#: sql_help.c:4568 msgid "change the definition of a table" msgstr "изменить определение таблицы" -#: sql_help.c:4570 +#: sql_help.c:4573 msgid "change the definition of a tablespace" msgstr "изменить определение табличного пространства" -#: sql_help.c:4575 +#: sql_help.c:4578 msgid "change the definition of a text search configuration" msgstr "изменить определение конфигурации текстового поиска" -#: sql_help.c:4580 +#: sql_help.c:4583 msgid "change the definition of a text search dictionary" msgstr "изменить определение словаря текстового поиска" -#: sql_help.c:4585 +#: sql_help.c:4588 msgid "change the definition of a text search parser" msgstr "изменить определение анализатора текстового поиска" -#: sql_help.c:4590 +#: sql_help.c:4593 msgid "change the definition of a text search template" msgstr "изменить определение шаблона текстового поиска" -#: sql_help.c:4595 +#: sql_help.c:4598 msgid "change the definition of a trigger" msgstr "изменить определение триггера" -#: sql_help.c:4600 +#: sql_help.c:4603 msgid "change the definition of a type" msgstr "изменить определение типа" -#: sql_help.c:4610 +#: sql_help.c:4613 msgid "change the definition of a user mapping" msgstr "изменить сопоставление пользователей" -#: sql_help.c:4615 +#: sql_help.c:4618 msgid "change the definition of a view" msgstr "изменить определение представления" -#: sql_help.c:4620 +#: sql_help.c:4623 msgid "collect statistics about a database" msgstr "собрать статистику о базе данных" -#: sql_help.c:4625 sql_help.c:5265 +#: sql_help.c:4628 sql_help.c:5268 msgid "start a transaction block" msgstr "начать транзакцию" -#: sql_help.c:4630 +#: sql_help.c:4633 msgid "force a write-ahead log checkpoint" msgstr "произвести контрольную точку в журнале предзаписи" -#: sql_help.c:4635 +#: sql_help.c:4638 msgid "close a cursor" msgstr "закрыть курсор" -#: sql_help.c:4640 +#: sql_help.c:4643 msgid "cluster a table according to an index" msgstr "перегруппировать таблицу по индексу" -#: sql_help.c:4645 +#: sql_help.c:4648 msgid "define or change the comment of an object" msgstr "задать или изменить комментарий объекта" -#: sql_help.c:4650 sql_help.c:5100 +#: sql_help.c:4653 sql_help.c:5103 msgid "commit the current transaction" msgstr "зафиксировать текущую транзакцию" -#: sql_help.c:4655 +#: sql_help.c:4658 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "зафиксировать транзакцию, ранее подготовленную для двухфазной фиксации" -#: sql_help.c:4660 +#: sql_help.c:4663 msgid "copy data between a file and a table" msgstr "импорт/экспорт данных в файл" -#: sql_help.c:4665 +#: sql_help.c:4668 msgid "define a new access method" msgstr "создать новый метод доступа" -#: sql_help.c:4670 +#: sql_help.c:4673 msgid "define a new aggregate function" msgstr "создать агрегатную функцию" -#: sql_help.c:4675 +#: sql_help.c:4678 msgid "define a new cast" msgstr "создать приведение типов" -#: sql_help.c:4680 +#: sql_help.c:4683 msgid "define a new collation" msgstr "создать правило сортировки" -#: sql_help.c:4685 +#: sql_help.c:4688 msgid "define a new encoding conversion" msgstr "создать преобразование кодировки" -#: sql_help.c:4690 +#: sql_help.c:4693 msgid "create a new database" msgstr "создать базу данных" -#: sql_help.c:4695 +#: sql_help.c:4698 msgid "define a new domain" msgstr "создать домен" -#: sql_help.c:4700 +#: sql_help.c:4703 msgid "define a new event trigger" msgstr "создать событийный триггер" -#: sql_help.c:4705 +#: sql_help.c:4708 msgid "install an extension" msgstr "установить расширение" -#: sql_help.c:4710 +#: sql_help.c:4713 msgid "define a new foreign-data wrapper" msgstr "создать обёртку сторонних данных" -#: sql_help.c:4715 +#: sql_help.c:4718 msgid "define a new foreign table" msgstr "создать стороннюю таблицу" -#: sql_help.c:4720 +#: sql_help.c:4723 msgid "define a new function" msgstr "создать функцию" -#: sql_help.c:4725 sql_help.c:4770 sql_help.c:4855 +#: sql_help.c:4728 sql_help.c:4773 sql_help.c:4858 msgid "define a new database role" msgstr "создать роль пользователя БД" -#: sql_help.c:4730 +#: sql_help.c:4733 msgid "define a new index" msgstr "создать индекс" -#: sql_help.c:4735 +#: sql_help.c:4738 msgid "define a new procedural language" msgstr "создать процедурный язык" -#: sql_help.c:4740 +#: sql_help.c:4743 msgid "define a new materialized view" msgstr "создать материализованное представление" -#: sql_help.c:4745 +#: sql_help.c:4748 msgid "define a new operator" msgstr "создать оператор" -#: sql_help.c:4750 +#: sql_help.c:4753 msgid "define a new operator class" msgstr "создать класс операторов" -#: sql_help.c:4755 +#: sql_help.c:4758 msgid "define a new operator family" msgstr "создать семейство операторов" -#: sql_help.c:4760 +#: sql_help.c:4763 msgid "define a new row level security policy for a table" -msgstr "создать новую политику безопасности на уровне строк для таблицы" +msgstr "создать новую политику защиты на уровне строк для таблицы" -#: sql_help.c:4765 +#: sql_help.c:4768 msgid "define a new publication" msgstr "создать публикацию" -#: sql_help.c:4775 +#: sql_help.c:4778 msgid "define a new rewrite rule" msgstr "создать правило перезаписи" -#: sql_help.c:4780 +#: sql_help.c:4783 msgid "define a new schema" msgstr "создать схему" -#: sql_help.c:4785 +#: sql_help.c:4788 msgid "define a new sequence generator" msgstr "создать генератор последовательностей" -#: sql_help.c:4790 +#: sql_help.c:4793 msgid "define a new foreign server" msgstr "создать сторонний сервер" -#: sql_help.c:4795 +#: sql_help.c:4798 msgid "define extended statistics" msgstr "создать расширенную статистику" -#: sql_help.c:4800 +#: sql_help.c:4803 msgid "define a new subscription" msgstr "создать подписку" -#: sql_help.c:4805 +#: sql_help.c:4808 msgid "define a new table" msgstr "создать таблицу" -#: sql_help.c:4810 sql_help.c:5230 +#: sql_help.c:4813 sql_help.c:5233 msgid "define a new table from the results of a query" msgstr "создать таблицу из результатов запроса" -#: sql_help.c:4815 +#: sql_help.c:4818 msgid "define a new tablespace" msgstr "создать табличное пространство" -#: sql_help.c:4820 +#: sql_help.c:4823 msgid "define a new text search configuration" msgstr "создать конфигурацию текстового поиска" -#: sql_help.c:4825 +#: sql_help.c:4828 msgid "define a new text search dictionary" msgstr "создать словарь текстового поиска" -#: sql_help.c:4830 +#: sql_help.c:4833 msgid "define a new text search parser" msgstr "создать анализатор текстового поиска" -#: sql_help.c:4835 +#: sql_help.c:4838 msgid "define a new text search template" msgstr "создать шаблон текстового поиска" -#: sql_help.c:4840 +#: sql_help.c:4843 msgid "define a new transform" msgstr "создать преобразование" -#: sql_help.c:4845 +#: sql_help.c:4848 msgid "define a new trigger" msgstr "создать триггер" -#: sql_help.c:4850 +#: sql_help.c:4853 msgid "define a new data type" msgstr "создать тип данных" -#: sql_help.c:4860 +#: sql_help.c:4863 msgid "define a new mapping of a user to a foreign server" msgstr "создать сопоставление пользователя для стороннего сервера" -#: sql_help.c:4865 +#: sql_help.c:4868 msgid "define a new view" msgstr "создать представление" -#: sql_help.c:4870 +#: sql_help.c:4873 msgid "deallocate a prepared statement" msgstr "освободить подготовленный оператор" -#: sql_help.c:4875 +#: sql_help.c:4878 msgid "define a cursor" msgstr "создать курсор" -#: sql_help.c:4880 +#: sql_help.c:4883 msgid "delete rows of a table" msgstr "удалить записи таблицы" -#: sql_help.c:4885 +#: sql_help.c:4888 msgid "discard session state" msgstr "очистить состояние сеанса" -#: sql_help.c:4890 +#: sql_help.c:4893 msgid "execute an anonymous code block" msgstr "выполнить анонимный блок кода" -#: sql_help.c:4895 +#: sql_help.c:4898 msgid "remove an access method" msgstr "удалить метод доступа" -#: sql_help.c:4900 +#: sql_help.c:4903 msgid "remove an aggregate function" msgstr "удалить агрегатную функцию" -#: sql_help.c:4905 +#: sql_help.c:4908 msgid "remove a cast" msgstr "удалить приведение типа" -#: sql_help.c:4910 +#: sql_help.c:4913 msgid "remove a collation" msgstr "удалить правило сортировки" -#: sql_help.c:4915 +#: sql_help.c:4918 msgid "remove a conversion" msgstr "удалить преобразование" -#: sql_help.c:4920 +#: sql_help.c:4923 msgid "remove a database" msgstr "удалить базу данных" -#: sql_help.c:4925 +#: sql_help.c:4928 msgid "remove a domain" msgstr "удалить домен" -#: sql_help.c:4930 +#: sql_help.c:4933 msgid "remove an event trigger" msgstr "удалить событийный триггер" -#: sql_help.c:4935 +#: sql_help.c:4938 msgid "remove an extension" msgstr "удалить расширение" -#: sql_help.c:4940 +#: sql_help.c:4943 msgid "remove a foreign-data wrapper" msgstr "удалить обёртку сторонних данных" -#: sql_help.c:4945 +#: sql_help.c:4948 msgid "remove a foreign table" msgstr "удалить стороннюю таблицу" -#: sql_help.c:4950 +#: sql_help.c:4953 msgid "remove a function" msgstr "удалить функцию" -#: sql_help.c:4955 sql_help.c:5005 sql_help.c:5085 +#: sql_help.c:4958 sql_help.c:5008 sql_help.c:5088 msgid "remove a database role" msgstr "удалить роль пользователя БД" -#: sql_help.c:4960 +#: sql_help.c:4963 msgid "remove an index" msgstr "удалить индекс" -#: sql_help.c:4965 +#: sql_help.c:4968 msgid "remove a procedural language" msgstr "удалить процедурный язык" -#: sql_help.c:4970 +#: sql_help.c:4973 msgid "remove a materialized view" msgstr "удалить материализованное представление" -#: sql_help.c:4975 +#: sql_help.c:4978 msgid "remove an operator" msgstr "удалить оператор" -#: sql_help.c:4980 +#: sql_help.c:4983 msgid "remove an operator class" msgstr "удалить класс операторов" -#: sql_help.c:4985 +#: sql_help.c:4988 msgid "remove an operator family" msgstr "удалить семейство операторов" -#: sql_help.c:4990 +#: sql_help.c:4993 msgid "remove database objects owned by a database role" msgstr "удалить объекты базы данных, принадлежащие роли" -#: sql_help.c:4995 +#: sql_help.c:4998 msgid "remove a row level security policy from a table" -msgstr "удалить политику безопасности на уровне строк из таблицы" +msgstr "удалить из таблицы политику защиты на уровне строк" -#: sql_help.c:5000 +#: sql_help.c:5003 msgid "remove a publication" msgstr "удалить публикацию" -#: sql_help.c:5010 +#: sql_help.c:5013 msgid "remove a rewrite rule" msgstr "удалить правило перезаписи" -#: sql_help.c:5015 +#: sql_help.c:5018 msgid "remove a schema" msgstr "удалить схему" -#: sql_help.c:5020 +#: sql_help.c:5023 msgid "remove a sequence" msgstr "удалить последовательность" -#: sql_help.c:5025 +#: sql_help.c:5028 msgid "remove a foreign server descriptor" msgstr "удалить описание стороннего сервера" -#: sql_help.c:5030 +#: sql_help.c:5033 msgid "remove extended statistics" msgstr "удалить расширенную статистику" -#: sql_help.c:5035 +#: sql_help.c:5038 msgid "remove a subscription" msgstr "удалить подписку" -#: sql_help.c:5040 +#: sql_help.c:5043 msgid "remove a table" msgstr "удалить таблицу" -#: sql_help.c:5045 +#: sql_help.c:5048 msgid "remove a tablespace" msgstr "удалить табличное пространство" -#: sql_help.c:5050 +#: sql_help.c:5053 msgid "remove a text search configuration" msgstr "удалить конфигурацию текстового поиска" -#: sql_help.c:5055 +#: sql_help.c:5058 msgid "remove a text search dictionary" msgstr "удалить словарь текстового поиска" -#: sql_help.c:5060 +#: sql_help.c:5063 msgid "remove a text search parser" msgstr "удалить анализатор текстового поиска" -#: sql_help.c:5065 +#: sql_help.c:5068 msgid "remove a text search template" msgstr "удалить шаблон текстового поиска" -#: sql_help.c:5070 +#: sql_help.c:5073 msgid "remove a transform" msgstr "удалить преобразование" -#: sql_help.c:5075 +#: sql_help.c:5078 msgid "remove a trigger" msgstr "удалить триггер" -#: sql_help.c:5080 +#: sql_help.c:5083 msgid "remove a data type" msgstr "удалить тип данных" -#: sql_help.c:5090 +#: sql_help.c:5093 msgid "remove a user mapping for a foreign server" msgstr "удалить сопоставление пользователя для стороннего сервера" -#: sql_help.c:5095 +#: sql_help.c:5098 msgid "remove a view" msgstr "удалить представление" -#: sql_help.c:5105 +#: sql_help.c:5108 msgid "execute a prepared statement" msgstr "выполнить подготовленный оператор" -#: sql_help.c:5110 +#: sql_help.c:5113 msgid "show the execution plan of a statement" msgstr "показать план выполнения оператора" -#: sql_help.c:5115 +#: sql_help.c:5118 msgid "retrieve rows from a query using a cursor" msgstr "получить результат запроса через курсор" -#: sql_help.c:5120 +#: sql_help.c:5123 msgid "define access privileges" msgstr "определить права доступа" -#: sql_help.c:5125 +#: sql_help.c:5128 msgid "import table definitions from a foreign server" msgstr "импортировать определения таблиц со стороннего сервера" -#: sql_help.c:5130 +#: sql_help.c:5133 msgid "create new rows in a table" msgstr "добавить строки в таблицу" -#: sql_help.c:5135 +#: sql_help.c:5138 msgid "listen for a notification" msgstr "ожидать уведомления" -#: sql_help.c:5140 +#: sql_help.c:5143 msgid "load a shared library file" msgstr "загрузить файл разделяемой библиотеки" -#: sql_help.c:5145 +#: sql_help.c:5148 msgid "lock a table" msgstr "заблокировать таблицу" -#: sql_help.c:5150 +#: sql_help.c:5153 msgid "position a cursor" msgstr "установить курсор" -#: sql_help.c:5155 +#: sql_help.c:5158 msgid "generate a notification" msgstr "сгенерировать уведомление" -#: sql_help.c:5160 +#: sql_help.c:5163 msgid "prepare a statement for execution" msgstr "подготовить оператор для выполнения" -#: sql_help.c:5165 +#: sql_help.c:5168 msgid "prepare the current transaction for two-phase commit" msgstr "подготовить текущую транзакцию для двухфазной фиксации" -#: sql_help.c:5170 +#: sql_help.c:5173 msgid "change the ownership of database objects owned by a database role" msgstr "изменить владельца объектов БД, принадлежащих заданной роли" -#: sql_help.c:5175 +#: sql_help.c:5178 msgid "replace the contents of a materialized view" msgstr "заменить содержимое материализованного представления" -#: sql_help.c:5180 +#: sql_help.c:5183 msgid "rebuild indexes" msgstr "перестроить индексы" -#: sql_help.c:5185 +#: sql_help.c:5188 msgid "destroy a previously defined savepoint" msgstr "удалить ранее определённую точку сохранения" -#: sql_help.c:5190 +#: sql_help.c:5193 msgid "restore the value of a run-time parameter to the default value" msgstr "восстановить исходное значение параметра выполнения" -#: sql_help.c:5195 +#: sql_help.c:5198 msgid "remove access privileges" msgstr "удалить права доступа" -#: sql_help.c:5205 +#: sql_help.c:5208 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "отменить транзакцию, подготовленную ранее для двухфазной фиксации" -#: sql_help.c:5210 +#: sql_help.c:5213 msgid "roll back to a savepoint" msgstr "откатиться к точке сохранения" -#: sql_help.c:5215 +#: sql_help.c:5218 msgid "define a new savepoint within the current transaction" msgstr "определить новую точку сохранения в текущей транзакции" -#: sql_help.c:5220 +#: sql_help.c:5223 msgid "define or change a security label applied to an object" msgstr "задать или изменить метку безопасности, применённую к объекту" -#: sql_help.c:5225 sql_help.c:5270 sql_help.c:5300 +#: sql_help.c:5228 sql_help.c:5273 sql_help.c:5303 msgid "retrieve rows from a table or view" msgstr "выбрать строки из таблицы или представления" -#: sql_help.c:5235 +#: sql_help.c:5238 msgid "change a run-time parameter" msgstr "изменить параметр выполнения" -#: sql_help.c:5240 +#: sql_help.c:5243 msgid "set constraint check timing for the current transaction" msgstr "установить время проверки ограничений для текущей транзакции" -#: sql_help.c:5245 +#: sql_help.c:5248 msgid "set the current user identifier of the current session" msgstr "задать идентификатор текущего пользователя в текущем сеансе" -#: sql_help.c:5250 +#: sql_help.c:5253 msgid "" "set the session user identifier and the current user identifier of the " "current session" @@ -5928,31 +5933,31 @@ "задать идентификатор пользователя сеанса и идентификатор текущего " "пользователя в текущем сеансе" -#: sql_help.c:5255 +#: sql_help.c:5258 msgid "set the characteristics of the current transaction" msgstr "задать свойства текущей транзакции" -#: sql_help.c:5260 +#: sql_help.c:5263 msgid "show the value of a run-time parameter" msgstr "показать значение параметра выполнения" -#: sql_help.c:5275 +#: sql_help.c:5278 msgid "empty a table or set of tables" msgstr "опустошить таблицу или набор таблиц" -#: sql_help.c:5280 +#: sql_help.c:5283 msgid "stop listening for a notification" msgstr "прекратить ожидание уведомлений" -#: sql_help.c:5285 +#: sql_help.c:5288 msgid "update rows of a table" msgstr "изменить строки таблицы" -#: sql_help.c:5290 +#: sql_help.c:5293 msgid "garbage-collect and optionally analyze a database" msgstr "произвести сборку мусора и проанализировать базу данных" -#: sql_help.c:5295 +#: sql_help.c:5298 msgid "compute a set of rows" msgstr "получить набор строк" @@ -5993,9 +5998,9 @@ #: startup.c:717 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s: не удалось найти собственный исполняемый файл\n" +msgstr "%s: не удалось найти свой исполняемый файл\n" -#: tab-complete.c:4214 +#: tab-complete.c:4216 #, c-format msgid "" "tab completion query failed: %s\n" diff -Nru postgresql-10-10.17/src/bin/psql/po/sv.po postgresql-10-10.19/src/bin/psql/po/sv.po --- postgresql-10-10.17/src/bin/psql/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -8,10 +8,10 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-08-27 22:14+0000\n" -"PO-Revision-Date: 2020-08-30 11:17+0200\n" +"POT-Creation-Date: 2021-11-07 09:43+0000\n" +"PO-Revision-Date: 2021-11-07 21:00+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,7 +54,8 @@ msgstr "pclose misslyckades: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 input.c:227 mainloop.c:82 mainloop.c:276 +#: ../../common/fe_memutils.c:98 command.c:3146 command.c:3195 command.c:3305 +#: input.c:227 mainloop.c:82 mainloop.c:276 #, c-format msgid "out of memory\n" msgstr "slut på minne\n" @@ -69,7 +70,7 @@ msgid "could not look up effective user ID %ld: %s" msgstr "kunde inte slå upp effektivt användar-id %ld: %s" -#: ../../common/username.c:45 command.c:555 +#: ../../common/username.c:45 command.c:556 msgid "user does not exist" msgstr "användaren finns inte" @@ -140,244 +141,245 @@ msgid "skipping recursive expansion of variable \"%s\"\n" msgstr "hoppar över rekursiv expandering av variabeln \"%s\"\n" -#: command.c:223 +#: command.c:224 #, 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:225 +#: command.c:226 #, c-format msgid "invalid command \\%s\n" msgstr "ogiltigt kommando \\%s\n" -#: command.c:243 +#: command.c:244 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: extra argument \"%s\" ignorerat\n" -#: command.c:295 +#: command.c:296 #, c-format msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block\n" msgstr "kommandot \\%s ignorerat; använd \\endif eller Ctrl-C för att avsluta nuvarande \\if-block\n" -#: command.c:553 +#: command.c:554 #, c-format msgid "could not get home directory for user ID %ld: %s\n" msgstr "kunde inte hämta hemkatalog för användar-ID %ld: %s\n" -#: command.c:571 +#: command.c:572 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: kunde inte byta katalog till \"%s\": %s\n" -#: command.c:596 common.c:662 common.c:720 common.c:1301 +#: command.c:597 common.c:664 common.c:722 common.c:1310 #, c-format msgid "You are currently not connected to a database.\n" msgstr "Du är för närvarande inte uppkopplad mot en databas.\n" -#: command.c:603 +#: command.c:604 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" -msgstr "Du är uppkopplad mot databas \"%s\" som användare \"%s\" via uttag i \"%s\" vid port \"%s\".\n" +msgstr "Du är uppkopplad mot databas \"%s\" som användare \"%s\" via uttag i \"%s\" på port \"%s\".\n" -#: command.c:606 +#: command.c:607 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" -msgstr "Du är uppkopplad upp mot databas \"%s\" som användare \"%s\" på värd \"%s\" via port \"%s\".\n" +msgstr "Du är uppkopplad upp mot databas \"%s\" som användare \"%s\" på värd \"%s\" på port \"%s\".\n" -#: command.c:895 command.c:985 command.c:1094 command.c:2503 +#: command.c:896 command.c:986 command.c:1095 command.c:2504 #, c-format msgid "no query buffer\n" msgstr "ingen frågebuffert\n" -#: command.c:928 command.c:4772 +#: command.c:929 command.c:4972 #, c-format msgid "invalid line number: %s\n" msgstr "ogiltigt radnummer: %s\n" -#: command.c:978 +#: command.c:979 #, c-format msgid "The server (version %s) does not support editing function source.\n" msgstr "Servern (version %s) stöder inte redigering av funktionskällkod.\n" -#: command.c:1053 command.c:1134 +#: command.c:1054 command.c:1135 msgid "No changes" msgstr "Inga ändringar" -#: command.c:1087 +#: command.c:1088 #, c-format msgid "The server (version %s) does not support editing view definitions.\n" msgstr "Servern (version %s) stöder inte redigering av vydefinitioner.\n" -#: command.c:1211 +#: command.c:1212 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "%s: ogiltigt kodningsnamn eller konverteringsprocedur hittades inte\n" -#: command.c:1246 command.c:1868 command.c:3149 command.c:4874 common.c:173 -#: common.c:244 common.c:555 common.c:1347 common.c:1375 common.c:1476 -#: copy.c:492 copy.c:711 large_obj.c:156 large_obj.c:191 large_obj.c:253 +#: command.c:1247 command.c:1869 command.c:3142 command.c:3327 command.c:5074 +#: common.c:175 common.c:246 common.c:557 common.c:1356 common.c:1384 +#: common.c:1485 copy.c:492 copy.c:711 large_obj.c:156 large_obj.c:191 +#: large_obj.c:253 #, c-format msgid "%s" msgstr "%s" -#: command.c:1250 +#: command.c:1251 msgid "out of memory" msgstr "slut på minne" -#: command.c:1253 +#: command.c:1254 msgid "There is no previous error." msgstr "Det finns inget tidigare fel." -#: command.c:1424 command.c:1729 command.c:1743 command.c:1760 command.c:1920 -#: command.c:2157 command.c:2470 command.c:2510 +#: command.c:1425 command.c:1730 command.c:1744 command.c:1761 command.c:1921 +#: command.c:2158 command.c:2471 command.c:2511 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: obligatoriskt argument saknas\n" -#: command.c:1555 +#: command.c:1556 #, c-format msgid "\\elif: cannot occur after \\else\n" msgstr "\\elif: kan inte komma efter \\else\n" -#: command.c:1560 +#: command.c:1561 #, c-format msgid "\\elif: no matching \\if\n" msgstr "\\elif: ingen matchande \\if\n" -#: command.c:1624 +#: command.c:1625 #, c-format msgid "\\else: cannot occur after \\else\n" msgstr "\\else: kan inte komma efter \\else\n" -#: command.c:1629 +#: command.c:1630 #, c-format msgid "\\else: no matching \\if\n" msgstr "\\else: ingen matchande \\if\n" -#: command.c:1669 +#: command.c:1670 #, c-format msgid "\\endif: no matching \\if\n" msgstr "\\endif: ingen matchande \\if\n" -#: command.c:1824 +#: command.c:1825 msgid "Query buffer is empty." msgstr "Frågebufferten är tom." -#: command.c:1846 +#: command.c:1847 msgid "Enter new password: " msgstr "Mata in nytt lösenord: " -#: command.c:1847 +#: command.c:1848 msgid "Enter it again: " msgstr "Mata in det igen: " -#: command.c:1851 +#: command.c:1852 #, c-format msgid "Passwords didn't match.\n" msgstr "Lösenorden stämde inte överens.\n" -#: command.c:1950 +#: command.c:1951 #, c-format msgid "\\%s: could not read value for variable\n" msgstr "\\%s: kunde inte läsa värde på varibeln\n" -#: command.c:2053 +#: command.c:2054 msgid "Query buffer reset (cleared)." msgstr "Frågebufferten har blivit borttagen." -#: command.c:2075 +#: command.c:2076 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "Skrev historiken till fil \"%s\".\n" -#: command.c:2162 +#: command.c:2163 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" msgstr "\\%s: omgivningsvariabelnamn får ej innehålla \"=\"\n" -#: command.c:2218 +#: command.c:2219 #, c-format msgid "The server (version %s) does not support showing function source.\n" msgstr "Servern (version %s) stöder inte visning av funktionskällkod.\n" -#: command.c:2225 +#: command.c:2226 #, c-format msgid "function name is required\n" msgstr "funktionsnamn krävs\n" -#: command.c:2312 +#: command.c:2313 #, c-format msgid "The server (version %s) does not support showing view definitions.\n" msgstr "Servern (version %s) stöder inte visning av vydefinitioner.\n" -#: command.c:2319 +#: command.c:2320 #, c-format msgid "view name is required\n" msgstr "vynamn krävs\n" -#: command.c:2442 +#: command.c:2443 msgid "Timing is on." msgstr "Tidtagning är på." -#: command.c:2444 +#: command.c:2445 msgid "Timing is off." msgstr "Tidtagning är av." -#: command.c:2529 command.c:2557 command.c:3525 command.c:3528 command.c:3531 -#: command.c:3537 command.c:3539 command.c:3547 command.c:3557 command.c:3566 -#: command.c:3580 command.c:3597 command.c:3655 common.c:69 copy.c:332 -#: copy.c:392 copy.c:405 psqlscanslash.l:761 psqlscanslash.l:772 -#: psqlscanslash.l:782 +#: command.c:2530 command.c:2558 command.c:3704 command.c:3707 command.c:3710 +#: command.c:3716 command.c:3718 command.c:3744 command.c:3754 command.c:3766 +#: command.c:3780 command.c:3797 command.c:3855 common.c:71 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:763 psqlscanslash.l:774 +#: psqlscanslash.l:784 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:2941 startup.c:205 +#: command.c:2942 startup.c:205 msgid "Password: " msgstr "Lösenord: " -#: command.c:2946 startup.c:207 +#: command.c:2947 startup.c:207 #, c-format msgid "Password for user %s: " msgstr "Lösenord för användare %s: " -#: command.c:2996 +#: command.c:3001 #, c-format msgid "All connection parameters must be supplied because no database connection exists\n" msgstr "Alla anslutningsparametrar måste anges då ingen databasuppkoppling är gjord\n" -#: command.c:3153 +#: command.c:3333 #, c-format msgid "Previous connection kept\n" msgstr "Föregående förbindelse bevarad\n" -#: command.c:3157 +#: command.c:3339 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:3200 +#: command.c:3380 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" -msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\" via uttag i \"%s\" vid port \"%s\".\n" +msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\" via uttag i \"%s\" på port \"%s\".\n" -#: command.c:3203 +#: command.c:3383 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" -msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\" på värd \"%s\" vid port \"%s\".\n" +msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\" på värd \"%s\" på port \"%s\".\n" -#: command.c:3207 +#: command.c:3387 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\".\n" msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\".\n" -#: command.c:3240 +#: command.c:3420 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, server %s)\n" -#: command.c:3248 +#: command.c:3428 #, c-format msgid "" "WARNING: %s major version %s, server major version %s.\n" @@ -386,24 +388,24 @@ "VARNING: %s huvudversion %s, server huvudversion %s.\n" " En del psql-finesser kommer kanske inte fungera.\n" -#: command.c:3286 +#: command.c:3466 #, c-format msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" -msgstr "SSL-förbindelse (protokoll: %s, krypto: %s, bitar: %s, komprimering: %s)\n" +msgstr "SSL-anslutning (protokoll: %s, krypto: %s, bitar: %s, komprimering: %s)\n" -#: command.c:3287 command.c:3288 command.c:3289 +#: command.c:3467 command.c:3468 command.c:3469 msgid "unknown" msgstr "okänd" -#: command.c:3290 help.c:45 +#: command.c:3470 help.c:45 msgid "off" msgstr "av" -#: command.c:3290 help.c:45 +#: command.c:3470 help.c:45 msgid "on" msgstr "på" -#: command.c:3310 +#: command.c:3490 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -414,239 +416,239 @@ " 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:3414 +#: command.c:3594 #, c-format msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" msgstr "omgivningsvariabeln PSQL_EDITOR_LINENUMBER_ARG måste ange ett radnummer\n" -#: command.c:3443 +#: command.c:3623 #, c-format msgid "could not start editor \"%s\"\n" msgstr "kunde inte starta editorn \"%s\"\n" -#: command.c:3445 +#: command.c:3625 #, c-format msgid "could not start /bin/sh\n" msgstr "kunde inte starta /bin/sh\n" -#: command.c:3483 +#: command.c:3662 #, c-format msgid "could not locate temporary directory: %s\n" msgstr "kunde inte hitta temp-katalog: %s\n" -#: command.c:3510 +#: command.c:3689 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "kunde inte öppna temporär fil \"%s\": %s\n" -#: command.c:3784 +#: command.c:3984 #, c-format msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" msgstr "\\pset: tillåtna format är unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" -#: command.c:3802 +#: command.c:4002 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: tillåtna linjestilar är ascii, old-ascii, unicode\n" -#: command.c:3817 +#: command.c:4017 #, c-format msgid "\\pset: allowed Unicode border line styles are single, double\n" msgstr "\\pset: tillåtna Unicode-ramstilar är single, double\n" -#: command.c:3832 +#: command.c:4032 #, c-format msgid "\\pset: allowed Unicode column line styles are single, double\n" msgstr "\\pset: tillåtna Unicode-kolumnlinjestilar ärsingle, double\n" -#: command.c:3847 +#: command.c:4047 #, c-format msgid "\\pset: allowed Unicode header line styles are single, double\n" msgstr "\\pset: tillåtna Unicode-rubriklinjestilar är single, double\n" -#: command.c:4012 command.c:4191 +#: command.c:4212 command.c:4391 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: okänd parameter: %s\n" -#: command.c:4030 +#: command.c:4230 #, c-format msgid "Border style is %d.\n" msgstr "Ramstil är %d.\n" -#: command.c:4036 +#: command.c:4236 #, c-format msgid "Target width is unset.\n" msgstr "Målvidd är inte satt.\n" -#: command.c:4038 +#: command.c:4238 #, c-format msgid "Target width is %d.\n" msgstr "Målvidd är %d.\n" -#: command.c:4045 +#: command.c:4245 #, c-format msgid "Expanded display is on.\n" msgstr "Utökad visning är på.\n" -#: command.c:4047 +#: command.c:4247 #, c-format msgid "Expanded display is used automatically.\n" msgstr "Utökad visning används automatiskt.\n" -#: command.c:4049 +#: command.c:4249 #, c-format msgid "Expanded display is off.\n" msgstr "Utökad visning är av.\n" -#: command.c:4056 command.c:4064 +#: command.c:4256 command.c:4264 #, c-format msgid "Field separator is zero byte.\n" msgstr "Fältseparatorn är noll-byte.\n" -#: command.c:4058 +#: command.c:4258 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Fältseparatorn är \"%s\".\n" -#: command.c:4071 +#: command.c:4271 #, c-format msgid "Default footer is on.\n" msgstr "Standard sidfot är på.\n" -#: command.c:4073 +#: command.c:4273 #, c-format msgid "Default footer is off.\n" msgstr "Standard sidfot är av.\n" -#: command.c:4079 +#: command.c:4279 #, c-format msgid "Output format is %s.\n" msgstr "Utdataformatet är \"%s\".\n" -#: command.c:4085 +#: command.c:4285 #, c-format msgid "Line style is %s.\n" msgstr "Linjestil är %s.\n" -#: command.c:4092 +#: command.c:4292 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null-visare är \"%s\".\n" -#: command.c:4100 +#: command.c:4300 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "Lokal-anpassad numerisk utdata är på.\n" -#: command.c:4102 +#: command.c:4302 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "Lokal-anpassad numerisk utdata är av.\n" -#: command.c:4109 +#: command.c:4309 #, c-format msgid "Pager is used for long output.\n" msgstr "Siduppdelare är på för lång utdata.\n" -#: command.c:4111 +#: command.c:4311 #, c-format msgid "Pager is always used.\n" msgstr "Siduppdelare används alltid.\n" -#: command.c:4113 +#: command.c:4313 #, c-format msgid "Pager usage is off.\n" msgstr "Siduppdelare är av.\n" -#: command.c:4119 +#: command.c:4319 #, c-format msgid "Pager won't be used for less than %d line.\n" msgid_plural "Pager won't be used for less than %d lines.\n" msgstr[0] "Siduppdelare kommer inte användas för färre än %d linje.\n" msgstr[1] "Siduppdelare kommer inte användas för färre än %d linjer.\n" -#: command.c:4129 command.c:4139 +#: command.c:4329 command.c:4339 #, c-format msgid "Record separator is zero byte.\n" msgstr "Postseparatorn är noll-byte.\n" -#: command.c:4131 +#: command.c:4331 #, c-format msgid "Record separator is .\n" msgstr "Postseparatorn är .\n" -#: command.c:4133 +#: command.c:4333 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Postseparatorn är \"%s\".\n" -#: command.c:4146 +#: command.c:4346 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "Tabellattributen är \"%s\".\n" -#: command.c:4149 +#: command.c:4349 #, c-format msgid "Table attributes unset.\n" msgstr "Tabellattributen är ej satta.\n" -#: command.c:4156 +#: command.c:4356 #, c-format msgid "Title is \"%s\".\n" msgstr "Titeln är \"%s\".\n" -#: command.c:4158 +#: command.c:4358 #, c-format msgid "Title is unset.\n" msgstr "Titeln är inte satt.\n" -#: command.c:4165 +#: command.c:4365 #, c-format msgid "Tuples only is on.\n" msgstr "Visa bara tupler är på.\n" -#: command.c:4167 +#: command.c:4367 #, c-format msgid "Tuples only is off.\n" msgstr "Visa bara tupler är av.\n" -#: command.c:4173 +#: command.c:4373 #, c-format msgid "Unicode border line style is \"%s\".\n" msgstr "Unicode-ramstil är \"%s\".\n" -#: command.c:4179 +#: command.c:4379 #, c-format msgid "Unicode column line style is \"%s\".\n" msgstr "Unicode-kolumnLinjestil är \"%s\".\n" -#: command.c:4185 +#: command.c:4385 #, c-format msgid "Unicode header line style is \"%s\".\n" msgstr "Unicode-rubriklinjestil är \"%s\".\n" -#: command.c:4345 +#: command.c:4545 #, c-format msgid "\\!: failed\n" msgstr "\\!: misslyckades\n" -#: command.c:4370 common.c:768 +#: command.c:4570 common.c:770 #, c-format msgid "\\watch cannot be used with an empty query\n" msgstr "\\watch kan inte användas på en tom fråga\n" -#: command.c:4411 +#: command.c:4611 #, c-format msgid "%s\t%s (every %gs)\n" msgstr "%s\t%s (varje %gs)\n" -#: command.c:4414 +#: command.c:4614 #, c-format msgid "%s (every %gs)\n" msgstr "%s (varje %gs)\n" -#: command.c:4468 command.c:4475 common.c:668 common.c:675 common.c:1330 +#: command.c:4668 command.c:4675 common.c:670 common.c:677 common.c:1339 #, c-format msgid "" "********* QUERY **********\n" @@ -659,102 +661,107 @@ "**************************\n" "\n" -#: command.c:4667 +#: command.c:4867 #, c-format msgid "\"%s.%s\" is not a view\n" msgstr "\"%s.%s\" är inte en vy\n" -#: command.c:4683 +#: command.c:4883 #, c-format msgid "could not parse reloptions array\n" msgstr "kunde inte parsa arrayen reloptions\n" -#: common.c:158 +#: common.c:160 #, c-format msgid "cannot escape without active connection\n" msgstr "kan inte escape:a utan en aktiv uppkoppling\n" -#: common.c:199 +#: common.c:201 #, c-format msgid "shell command argument contains a newline or carriage return: \"%s\"\n" msgstr "shell-kommandots argument innehåller nyrad eller vagnretur: \"%s\"\n" -#: common.c:415 +#: common.c:417 #, c-format msgid "connection to server was lost\n" msgstr "förbindelsen till servern har brutits\n" -#: common.c:419 +#: common.c:421 #, c-format msgid "The connection to the server was lost. Attempting reset: " -msgstr "Förbindelsen till servern har brutits. Försöker starta om: " +msgstr "Anslutningen till servern har brutits. Försöker starta om: " -#: common.c:424 +#: common.c:426 #, c-format msgid "Failed.\n" msgstr "Misslyckades.\n" -#: common.c:437 +#: common.c:439 #, c-format msgid "Succeeded.\n" msgstr "Lyckades.\n" -#: common.c:545 common.c:1050 common.c:1265 +#: common.c:547 common.c:1059 common.c:1274 #, c-format msgid "unexpected PQresultStatus: %d\n" msgstr "oväntad PQresultStatus: %d\n" -#: common.c:607 +#: common.c:609 #, c-format msgid "Time: %.3f ms\n" msgstr "Tid: %.3f ms\n" -#: common.c:622 +#: common.c:624 #, c-format msgid "Time: %.3f ms (%02d:%06.3f)\n" msgstr "Tid: %.3f ms (%02d:%06.3f)\n" -#: common.c:631 +#: common.c:633 #, c-format msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" msgstr "Tid: %.3f ms (%02d:%02d:%06.3f)\n" -#: common.c:638 +#: common.c:640 #, c-format msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" msgstr "Tid: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" -#: common.c:775 +#: common.c:777 #, c-format msgid "\\watch cannot be used with COPY\n" msgstr "\\watch kan inte användas med COPY\n" -#: common.c:780 +#: common.c:782 #, c-format msgid "unexpected result status for \\watch\n" msgstr "oväntat resultatstatus för \\watch\n" -#: common.c:810 +#: common.c:812 #, c-format msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n" msgstr "Asynkron notificering \"%s\" mottagen med innehåll \"%s\" från serverprocess med PID %d.\n" -#: common.c:813 +#: common.c:815 #, 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:876 +#: common.c:878 #, c-format msgid "no rows returned for \\gset\n" msgstr "inga rader returnerades för \\gset\n" -#: common.c:881 +#: common.c:883 #, c-format msgid "more than one row returned for \\gset\n" msgstr "mer än en rad returnerades för \\gset\n" -#: common.c:1310 +#: common.c:901 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored\n" +msgstr "hoppar över försök att anropa \\gset in i speciellt hanterad varibel \"%s\"\n" + +#: common.c:1319 #, c-format msgid "" "***(Single step mode: verify command)*******************************************\n" @@ -765,17 +772,17 @@ "%s\n" "***(tryck return för att fortsätta eller skriv x och return för att avbryta)*****\n" -#: common.c:1365 +#: common.c:1374 #, c-format msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" msgstr "Servern (version %s) stöder inte sparpunkter för ON_ERROR_ROLLBACK.\n" -#: common.c:1421 +#: common.c:1430 #, c-format msgid "STATEMENT: %s\n" msgstr "SATS: %s\n" -#: common.c:1464 +#: common.c:1473 #, c-format msgid "unexpected transaction status (%d)\n" msgstr "oväntad transaktionsstatus (%d)\n" @@ -1020,11 +1027,11 @@ #: describe.c:440 msgid "volatile" -msgstr "flyktig" +msgstr "instabil" #: describe.c:441 msgid "Volatility" -msgstr "Flyktighet" +msgstr "Instabilitet" #: describe.c:449 msgid "restricted" @@ -1363,7 +1370,7 @@ #: describe.c:2012 #, c-format msgid "Partition key: %s" -msgstr "Partioneringsnyckel: %s" +msgstr "Partitioneringsnyckel: %s" #: describe.c:2081 msgid "primary key, " @@ -2060,7 +2067,7 @@ #: describe.c:5354 msgid "Conninfo" -msgstr "Förbindelseinfo" +msgstr "Anslutningsinfo" #: describe.c:5376 msgid "List of subscriptions" @@ -2675,8 +2682,8 @@ #: help.c:248 #, c-format -msgid " \\do[S] [PATTERN] list operators\n" -msgstr " \\do[S] [MALL] lista operatorer\n" +msgid " \\do[S+] [PATTERN] list operators\n" +msgstr " \\do[S+] [MALL] lista operatorer\n" #: help.c:249 #, c-format @@ -2735,8 +2742,8 @@ #: help.c:260 #, c-format -msgid " \\dy [PATTERN] list event triggers\n" -msgstr " \\dy [MALL] lista händelseutlösare\n" +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [MALL] lista händelseutlösare\n" #: help.c:261 #, c-format @@ -2818,7 +2825,7 @@ #: help.c:286 #, c-format msgid "Connection\n" -msgstr "Förbindelse\n" +msgstr "Anslutning\n" #: help.c:288 #, c-format @@ -3342,11 +3349,11 @@ msgid " TMPDIR directory for temporary files\n" msgstr " TMPDIR katalog för temporärfiler\n" -#: help.c:477 +#: help.c:478 msgid "Available help:\n" msgstr "Tillgänglig hjälp:\n" -#: help.c:561 +#: help.c:569 #, c-format msgid "" "Command: %s\n" @@ -3361,7 +3368,7 @@ "%s\n" "\n" -#: help.c:577 +#: help.c:589 #, c-format msgid "" "No help available for \"%s\".\n" @@ -3455,12 +3462,12 @@ msgid "reached EOF without finding closing \\endif(s)\n" msgstr "kom till EOF utan att hitta avslutande \\endif\n" -#: psqlscanslash.l:615 +#: psqlscanslash.l:617 #, c-format msgid "unterminated quoted string\n" msgstr "icketerminerad citerat sträng\n" -#: psqlscanslash.l:788 +#: psqlscanslash.l:790 #, c-format msgid "%s: out of memory\n" msgstr "%s: slut på minne\n" @@ -3473,169 +3480,169 @@ #: sql_help.c:250 sql_help.c:252 sql_help.c:264 sql_help.c:265 sql_help.c:266 #: sql_help.c:268 sql_help.c:315 sql_help.c:317 sql_help.c:319 sql_help.c:321 #: sql_help.c:382 sql_help.c:387 sql_help.c:389 sql_help.c:432 sql_help.c:434 -#: sql_help.c:437 sql_help.c:439 sql_help.c:506 sql_help.c:511 sql_help.c:516 -#: sql_help.c:521 sql_help.c:526 sql_help.c:575 sql_help.c:577 sql_help.c:579 -#: sql_help.c:581 sql_help.c:584 sql_help.c:586 sql_help.c:597 sql_help.c:599 -#: sql_help.c:640 sql_help.c:642 sql_help.c:644 sql_help.c:647 sql_help.c:649 -#: sql_help.c:651 sql_help.c:684 sql_help.c:688 sql_help.c:692 sql_help.c:711 -#: sql_help.c:714 sql_help.c:717 sql_help.c:746 sql_help.c:758 sql_help.c:766 -#: sql_help.c:769 sql_help.c:772 sql_help.c:787 sql_help.c:790 sql_help.c:807 -#: sql_help.c:809 sql_help.c:811 sql_help.c:813 sql_help.c:816 sql_help.c:818 -#: sql_help.c:859 sql_help.c:882 sql_help.c:893 sql_help.c:895 sql_help.c:914 -#: sql_help.c:924 sql_help.c:926 sql_help.c:928 sql_help.c:940 sql_help.c:944 -#: sql_help.c:946 sql_help.c:957 sql_help.c:959 sql_help.c:961 sql_help.c:977 -#: sql_help.c:979 sql_help.c:983 sql_help.c:986 sql_help.c:987 sql_help.c:988 -#: sql_help.c:991 sql_help.c:993 sql_help.c:1084 sql_help.c:1086 -#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096 -#: sql_help.c:1099 sql_help.c:1102 sql_help.c:1168 sql_help.c:1170 -#: sql_help.c:1172 sql_help.c:1175 sql_help.c:1196 sql_help.c:1199 -#: sql_help.c:1202 sql_help.c:1205 sql_help.c:1209 sql_help.c:1211 -#: sql_help.c:1213 sql_help.c:1215 sql_help.c:1229 sql_help.c:1232 -#: sql_help.c:1234 sql_help.c:1236 sql_help.c:1246 sql_help.c:1248 -#: sql_help.c:1258 sql_help.c:1260 sql_help.c:1270 sql_help.c:1273 -#: sql_help.c:1295 sql_help.c:1297 sql_help.c:1299 sql_help.c:1302 -#: sql_help.c:1304 sql_help.c:1306 sql_help.c:1309 sql_help.c:1359 -#: sql_help.c:1401 sql_help.c:1404 sql_help.c:1406 sql_help.c:1408 -#: sql_help.c:1410 sql_help.c:1412 sql_help.c:1415 sql_help.c:1455 -#: sql_help.c:1666 sql_help.c:1730 sql_help.c:1749 sql_help.c:1762 -#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1834 sql_help.c:1854 -#: sql_help.c:1879 sql_help.c:1897 sql_help.c:1926 sql_help.c:2019 -#: sql_help.c:2064 sql_help.c:2087 sql_help.c:2107 sql_help.c:2108 -#: sql_help.c:2143 sql_help.c:2163 sql_help.c:2185 sql_help.c:2199 -#: sql_help.c:2214 sql_help.c:2244 sql_help.c:2269 sql_help.c:2315 -#: sql_help.c:2581 sql_help.c:2594 sql_help.c:2611 sql_help.c:2627 -#: sql_help.c:2667 sql_help.c:2719 sql_help.c:2723 sql_help.c:2725 -#: sql_help.c:2731 sql_help.c:2749 sql_help.c:2776 sql_help.c:2811 -#: sql_help.c:2823 sql_help.c:2832 sql_help.c:2876 sql_help.c:2890 -#: sql_help.c:2918 sql_help.c:2926 sql_help.c:2934 sql_help.c:2942 -#: sql_help.c:2950 sql_help.c:2958 sql_help.c:2966 sql_help.c:2974 -#: sql_help.c:2983 sql_help.c:2994 sql_help.c:3002 sql_help.c:3010 -#: sql_help.c:3018 sql_help.c:3026 sql_help.c:3036 sql_help.c:3045 -#: sql_help.c:3054 sql_help.c:3062 sql_help.c:3071 sql_help.c:3079 -#: sql_help.c:3087 sql_help.c:3096 sql_help.c:3104 sql_help.c:3112 -#: sql_help.c:3120 sql_help.c:3128 sql_help.c:3136 sql_help.c:3144 -#: sql_help.c:3152 sql_help.c:3160 sql_help.c:3168 sql_help.c:3176 -#: sql_help.c:3193 sql_help.c:3202 sql_help.c:3210 sql_help.c:3227 -#: sql_help.c:3242 sql_help.c:3513 sql_help.c:3564 sql_help.c:3593 -#: sql_help.c:3601 sql_help.c:4035 sql_help.c:4083 sql_help.c:4224 +#: sql_help.c:437 sql_help.c:439 sql_help.c:507 sql_help.c:512 sql_help.c:517 +#: sql_help.c:522 sql_help.c:527 sql_help.c:576 sql_help.c:578 sql_help.c:580 +#: sql_help.c:582 sql_help.c:585 sql_help.c:587 sql_help.c:598 sql_help.c:600 +#: sql_help.c:641 sql_help.c:643 sql_help.c:645 sql_help.c:648 sql_help.c:650 +#: sql_help.c:652 sql_help.c:685 sql_help.c:689 sql_help.c:693 sql_help.c:712 +#: sql_help.c:715 sql_help.c:718 sql_help.c:747 sql_help.c:759 sql_help.c:767 +#: sql_help.c:770 sql_help.c:773 sql_help.c:788 sql_help.c:791 sql_help.c:808 +#: sql_help.c:810 sql_help.c:812 sql_help.c:814 sql_help.c:817 sql_help.c:819 +#: sql_help.c:860 sql_help.c:883 sql_help.c:894 sql_help.c:896 sql_help.c:915 +#: sql_help.c:925 sql_help.c:927 sql_help.c:929 sql_help.c:941 sql_help.c:945 +#: sql_help.c:947 sql_help.c:958 sql_help.c:960 sql_help.c:962 sql_help.c:978 +#: sql_help.c:980 sql_help.c:984 sql_help.c:987 sql_help.c:988 sql_help.c:989 +#: sql_help.c:992 sql_help.c:994 sql_help.c:1085 sql_help.c:1087 +#: sql_help.c:1090 sql_help.c:1093 sql_help.c:1095 sql_help.c:1097 +#: sql_help.c:1100 sql_help.c:1103 sql_help.c:1169 sql_help.c:1171 +#: sql_help.c:1173 sql_help.c:1176 sql_help.c:1197 sql_help.c:1200 +#: sql_help.c:1203 sql_help.c:1206 sql_help.c:1210 sql_help.c:1212 +#: sql_help.c:1214 sql_help.c:1216 sql_help.c:1230 sql_help.c:1233 +#: sql_help.c:1235 sql_help.c:1237 sql_help.c:1247 sql_help.c:1249 +#: sql_help.c:1259 sql_help.c:1261 sql_help.c:1271 sql_help.c:1274 +#: sql_help.c:1296 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303 +#: sql_help.c:1305 sql_help.c:1307 sql_help.c:1310 sql_help.c:1360 +#: sql_help.c:1402 sql_help.c:1405 sql_help.c:1407 sql_help.c:1409 +#: sql_help.c:1411 sql_help.c:1413 sql_help.c:1416 sql_help.c:1456 +#: sql_help.c:1667 sql_help.c:1731 sql_help.c:1750 sql_help.c:1763 +#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1835 sql_help.c:1855 +#: sql_help.c:1880 sql_help.c:1898 sql_help.c:1928 sql_help.c:2022 +#: sql_help.c:2067 sql_help.c:2090 sql_help.c:2110 sql_help.c:2111 +#: sql_help.c:2146 sql_help.c:2166 sql_help.c:2188 sql_help.c:2202 +#: sql_help.c:2217 sql_help.c:2247 sql_help.c:2272 sql_help.c:2318 +#: sql_help.c:2584 sql_help.c:2597 sql_help.c:2614 sql_help.c:2630 +#: sql_help.c:2670 sql_help.c:2722 sql_help.c:2726 sql_help.c:2728 +#: sql_help.c:2734 sql_help.c:2752 sql_help.c:2779 sql_help.c:2814 +#: sql_help.c:2826 sql_help.c:2835 sql_help.c:2879 sql_help.c:2893 +#: sql_help.c:2921 sql_help.c:2929 sql_help.c:2937 sql_help.c:2945 +#: sql_help.c:2953 sql_help.c:2961 sql_help.c:2969 sql_help.c:2977 +#: sql_help.c:2986 sql_help.c:2997 sql_help.c:3005 sql_help.c:3013 +#: sql_help.c:3021 sql_help.c:3029 sql_help.c:3039 sql_help.c:3048 +#: sql_help.c:3057 sql_help.c:3065 sql_help.c:3074 sql_help.c:3082 +#: sql_help.c:3090 sql_help.c:3099 sql_help.c:3107 sql_help.c:3115 +#: sql_help.c:3123 sql_help.c:3131 sql_help.c:3139 sql_help.c:3147 +#: sql_help.c:3155 sql_help.c:3163 sql_help.c:3171 sql_help.c:3179 +#: sql_help.c:3196 sql_help.c:3205 sql_help.c:3213 sql_help.c:3230 +#: sql_help.c:3245 sql_help.c:3516 sql_help.c:3567 sql_help.c:3596 +#: sql_help.c:3604 sql_help.c:4038 sql_help.c:4086 sql_help.c:4227 msgid "name" msgstr "namn" -#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:326 sql_help.c:1524 -#: sql_help.c:2891 sql_help.c:3829 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:326 sql_help.c:1525 +#: sql_help.c:2894 sql_help.c:3832 msgid "aggregate_signature" msgstr "aggregatsignatur" #: sql_help.c:38 sql_help.c:68 sql_help.c:83 sql_help.c:119 sql_help.c:251 -#: sql_help.c:269 sql_help.c:390 sql_help.c:438 sql_help.c:515 sql_help.c:561 -#: sql_help.c:576 sql_help.c:598 sql_help.c:648 sql_help.c:713 sql_help.c:768 -#: sql_help.c:789 sql_help.c:819 sql_help.c:860 sql_help.c:884 sql_help.c:894 -#: sql_help.c:927 sql_help.c:947 sql_help.c:960 sql_help.c:994 sql_help.c:1093 -#: sql_help.c:1169 sql_help.c:1212 sql_help.c:1233 sql_help.c:1247 -#: sql_help.c:1259 sql_help.c:1272 sql_help.c:1303 sql_help.c:1360 -#: sql_help.c:1409 +#: sql_help.c:269 sql_help.c:390 sql_help.c:438 sql_help.c:516 sql_help.c:562 +#: sql_help.c:577 sql_help.c:599 sql_help.c:649 sql_help.c:714 sql_help.c:769 +#: sql_help.c:790 sql_help.c:820 sql_help.c:861 sql_help.c:885 sql_help.c:895 +#: sql_help.c:928 sql_help.c:948 sql_help.c:961 sql_help.c:995 sql_help.c:1094 +#: sql_help.c:1170 sql_help.c:1213 sql_help.c:1234 sql_help.c:1248 +#: sql_help.c:1260 sql_help.c:1273 sql_help.c:1304 sql_help.c:1361 +#: sql_help.c:1410 msgid "new_name" msgstr "nytt_namn" #: sql_help.c:41 sql_help.c:70 sql_help.c:85 sql_help.c:121 sql_help.c:249 -#: sql_help.c:267 sql_help.c:388 sql_help.c:474 sql_help.c:520 sql_help.c:600 -#: sql_help.c:609 sql_help.c:667 sql_help.c:687 sql_help.c:716 sql_help.c:771 -#: sql_help.c:817 sql_help.c:896 sql_help.c:925 sql_help.c:945 sql_help.c:958 -#: sql_help.c:992 sql_help.c:1153 sql_help.c:1171 sql_help.c:1214 -#: sql_help.c:1235 sql_help.c:1298 sql_help.c:1407 sql_help.c:2567 +#: sql_help.c:267 sql_help.c:388 sql_help.c:474 sql_help.c:521 sql_help.c:601 +#: sql_help.c:610 sql_help.c:668 sql_help.c:688 sql_help.c:717 sql_help.c:772 +#: sql_help.c:818 sql_help.c:897 sql_help.c:926 sql_help.c:946 sql_help.c:959 +#: sql_help.c:993 sql_help.c:1154 sql_help.c:1172 sql_help.c:1215 +#: sql_help.c:1236 sql_help.c:1299 sql_help.c:1408 sql_help.c:2570 msgid "new_owner" msgstr "ny_ägare" #: sql_help.c:44 sql_help.c:72 sql_help.c:87 sql_help.c:253 sql_help.c:318 -#: sql_help.c:440 sql_help.c:525 sql_help.c:650 sql_help.c:691 sql_help.c:719 -#: sql_help.c:774 sql_help.c:929 sql_help.c:962 sql_help.c:1095 sql_help.c:1216 -#: sql_help.c:1237 sql_help.c:1249 sql_help.c:1261 sql_help.c:1305 -#: sql_help.c:1411 +#: sql_help.c:440 sql_help.c:526 sql_help.c:651 sql_help.c:692 sql_help.c:720 +#: sql_help.c:775 sql_help.c:930 sql_help.c:963 sql_help.c:1096 sql_help.c:1217 +#: sql_help.c:1238 sql_help.c:1250 sql_help.c:1262 sql_help.c:1306 +#: sql_help.c:1412 msgid "new_schema" msgstr "nytt_schema" -#: sql_help.c:45 sql_help.c:1580 sql_help.c:2892 sql_help.c:3850 +#: sql_help.c:45 sql_help.c:1581 sql_help.c:2895 sql_help.c:3853 msgid "where aggregate_signature is:" msgstr "där aggregatsignatur är:" #: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:336 sql_help.c:361 -#: sql_help.c:364 sql_help.c:367 sql_help.c:507 sql_help.c:512 sql_help.c:517 -#: sql_help.c:522 sql_help.c:527 sql_help.c:1542 sql_help.c:1581 -#: sql_help.c:1584 sql_help.c:1587 sql_help.c:1731 sql_help.c:1750 -#: sql_help.c:1753 sql_help.c:2020 sql_help.c:2893 sql_help.c:2896 -#: sql_help.c:2899 sql_help.c:2984 sql_help.c:3397 sql_help.c:3739 -#: sql_help.c:3835 sql_help.c:3851 sql_help.c:3854 sql_help.c:3857 +#: sql_help.c:364 sql_help.c:367 sql_help.c:508 sql_help.c:513 sql_help.c:518 +#: sql_help.c:523 sql_help.c:528 sql_help.c:1543 sql_help.c:1582 +#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1732 sql_help.c:1751 +#: sql_help.c:1754 sql_help.c:2023 sql_help.c:2896 sql_help.c:2899 +#: sql_help.c:2902 sql_help.c:2987 sql_help.c:3400 sql_help.c:3742 +#: sql_help.c:3838 sql_help.c:3854 sql_help.c:3857 sql_help.c:3860 msgid "argmode" msgstr "arg_läge" #: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:337 sql_help.c:362 -#: sql_help.c:365 sql_help.c:368 sql_help.c:508 sql_help.c:513 sql_help.c:518 -#: sql_help.c:523 sql_help.c:528 sql_help.c:1543 sql_help.c:1582 -#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1732 sql_help.c:1751 -#: sql_help.c:1754 sql_help.c:2021 sql_help.c:2894 sql_help.c:2897 -#: sql_help.c:2900 sql_help.c:2985 sql_help.c:3836 sql_help.c:3852 -#: sql_help.c:3855 sql_help.c:3858 +#: sql_help.c:365 sql_help.c:368 sql_help.c:509 sql_help.c:514 sql_help.c:519 +#: sql_help.c:524 sql_help.c:529 sql_help.c:1544 sql_help.c:1583 +#: sql_help.c:1586 sql_help.c:1589 sql_help.c:1733 sql_help.c:1752 +#: sql_help.c:1755 sql_help.c:2024 sql_help.c:2897 sql_help.c:2900 +#: sql_help.c:2903 sql_help.c:2988 sql_help.c:3839 sql_help.c:3855 +#: sql_help.c:3858 sql_help.c:3861 msgid "argname" msgstr "arg_namn" #: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:338 sql_help.c:363 -#: sql_help.c:366 sql_help.c:369 sql_help.c:509 sql_help.c:514 sql_help.c:519 -#: sql_help.c:524 sql_help.c:529 sql_help.c:1544 sql_help.c:1583 -#: sql_help.c:1586 sql_help.c:1589 sql_help.c:2022 sql_help.c:2895 -#: sql_help.c:2898 sql_help.c:2901 sql_help.c:2986 sql_help.c:3837 -#: sql_help.c:3853 sql_help.c:3856 sql_help.c:3859 +#: sql_help.c:366 sql_help.c:369 sql_help.c:510 sql_help.c:515 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:1545 sql_help.c:1584 +#: sql_help.c:1587 sql_help.c:1590 sql_help.c:2025 sql_help.c:2898 +#: sql_help.c:2901 sql_help.c:2904 sql_help.c:2989 sql_help.c:3840 +#: sql_help.c:3856 sql_help.c:3859 sql_help.c:3862 msgid "argtype" msgstr "arg_typ" -#: sql_help.c:113 sql_help.c:385 sql_help.c:463 sql_help.c:475 sql_help.c:854 -#: sql_help.c:942 sql_help.c:1230 sql_help.c:1354 sql_help.c:1386 -#: sql_help.c:1637 sql_help.c:1643 sql_help.c:1929 sql_help.c:1970 -#: sql_help.c:1977 sql_help.c:1986 sql_help.c:2065 sql_help.c:2245 -#: sql_help.c:2337 sql_help.c:2596 sql_help.c:2777 sql_help.c:2799 -#: sql_help.c:3262 sql_help.c:3432 +#: sql_help.c:113 sql_help.c:385 sql_help.c:463 sql_help.c:475 sql_help.c:855 +#: sql_help.c:943 sql_help.c:1231 sql_help.c:1355 sql_help.c:1387 +#: sql_help.c:1638 sql_help.c:1644 sql_help.c:1931 sql_help.c:1972 +#: sql_help.c:1979 sql_help.c:1988 sql_help.c:2068 sql_help.c:2248 +#: sql_help.c:2340 sql_help.c:2599 sql_help.c:2780 sql_help.c:2802 +#: sql_help.c:3265 sql_help.c:3435 msgid "option" msgstr "flaggor" -#: sql_help.c:114 sql_help.c:855 sql_help.c:1355 sql_help.c:2066 -#: sql_help.c:2246 sql_help.c:2778 +#: sql_help.c:114 sql_help.c:856 sql_help.c:1356 sql_help.c:2069 +#: sql_help.c:2249 sql_help.c:2781 msgid "where option can be:" msgstr "där flaggor kan vara:" -#: sql_help.c:115 sql_help.c:1861 +#: sql_help.c:115 sql_help.c:1862 msgid "allowconn" msgstr "tillåtansl" -#: sql_help.c:116 sql_help.c:856 sql_help.c:1356 sql_help.c:1862 -#: sql_help.c:2067 sql_help.c:2247 sql_help.c:2779 +#: sql_help.c:116 sql_help.c:857 sql_help.c:1357 sql_help.c:1863 +#: sql_help.c:2070 sql_help.c:2250 sql_help.c:2782 msgid "connlimit" msgstr "anslutningstak" -#: sql_help.c:117 sql_help.c:1863 +#: sql_help.c:117 sql_help.c:1864 msgid "istemplate" msgstr "ärmall" -#: sql_help.c:123 sql_help.c:588 sql_help.c:653 sql_help.c:1098 sql_help.c:1146 +#: sql_help.c:123 sql_help.c:589 sql_help.c:654 sql_help.c:1099 sql_help.c:1147 msgid "new_tablespace" msgstr "nytt_tabellutrymme" -#: sql_help.c:125 sql_help.c:128 sql_help.c:130 sql_help.c:534 sql_help.c:536 -#: sql_help.c:537 sql_help.c:863 sql_help.c:867 sql_help.c:870 sql_help.c:1005 -#: sql_help.c:1008 sql_help.c:1363 sql_help.c:1367 sql_help.c:1370 -#: sql_help.c:2031 sql_help.c:3618 sql_help.c:4024 +#: sql_help.c:125 sql_help.c:128 sql_help.c:130 sql_help.c:535 sql_help.c:537 +#: sql_help.c:538 sql_help.c:864 sql_help.c:868 sql_help.c:871 sql_help.c:1006 +#: sql_help.c:1009 sql_help.c:1364 sql_help.c:1368 sql_help.c:1371 +#: sql_help.c:2034 sql_help.c:3621 sql_help.c:4027 msgid "configuration_parameter" msgstr "konfigurationsparameter" #: sql_help.c:126 sql_help.c:386 sql_help.c:458 sql_help.c:464 sql_help.c:476 -#: sql_help.c:535 sql_help.c:583 sql_help.c:659 sql_help.c:665 sql_help.c:815 -#: sql_help.c:864 sql_help.c:943 sql_help.c:982 sql_help.c:985 sql_help.c:990 -#: sql_help.c:1006 sql_help.c:1007 sql_help.c:1128 sql_help.c:1148 -#: sql_help.c:1174 sql_help.c:1231 sql_help.c:1364 sql_help.c:1387 -#: sql_help.c:1930 sql_help.c:1971 sql_help.c:1978 sql_help.c:1987 -#: sql_help.c:2032 sql_help.c:2033 sql_help.c:2095 sql_help.c:2127 -#: sql_help.c:2217 sql_help.c:2338 sql_help.c:2368 sql_help.c:2466 -#: sql_help.c:2478 sql_help.c:2491 sql_help.c:2531 sql_help.c:2553 -#: sql_help.c:2570 sql_help.c:2597 sql_help.c:2800 sql_help.c:3433 -#: sql_help.c:4025 sql_help.c:4026 +#: sql_help.c:536 sql_help.c:584 sql_help.c:660 sql_help.c:666 sql_help.c:816 +#: sql_help.c:865 sql_help.c:944 sql_help.c:983 sql_help.c:986 sql_help.c:991 +#: sql_help.c:1007 sql_help.c:1008 sql_help.c:1129 sql_help.c:1149 +#: sql_help.c:1175 sql_help.c:1232 sql_help.c:1365 sql_help.c:1388 +#: sql_help.c:1932 sql_help.c:1973 sql_help.c:1980 sql_help.c:1989 +#: sql_help.c:2035 sql_help.c:2036 sql_help.c:2098 sql_help.c:2130 +#: sql_help.c:2220 sql_help.c:2341 sql_help.c:2371 sql_help.c:2469 +#: sql_help.c:2481 sql_help.c:2494 sql_help.c:2534 sql_help.c:2556 +#: sql_help.c:2573 sql_help.c:2600 sql_help.c:2803 sql_help.c:3436 +#: sql_help.c:4028 sql_help.c:4029 msgid "value" msgstr "värde" @@ -3643,9 +3650,9 @@ msgid "target_role" msgstr "målroll" -#: sql_help.c:199 sql_help.c:1913 sql_help.c:2293 sql_help.c:2298 -#: sql_help.c:3379 sql_help.c:3386 sql_help.c:3400 sql_help.c:3406 -#: sql_help.c:3721 sql_help.c:3728 sql_help.c:3742 sql_help.c:3748 +#: sql_help.c:199 sql_help.c:1915 sql_help.c:2296 sql_help.c:2301 +#: sql_help.c:3382 sql_help.c:3389 sql_help.c:3403 sql_help.c:3409 +#: sql_help.c:3724 sql_help.c:3731 sql_help.c:3745 sql_help.c:3751 msgid "schema_name" msgstr "schemanamn" @@ -3659,30 +3666,30 @@ #: sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205 sql_help.c:206 #: sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210 sql_help.c:211 -#: sql_help.c:559 sql_help.c:587 sql_help.c:652 sql_help.c:792 sql_help.c:874 -#: sql_help.c:1097 sql_help.c:1374 sql_help.c:2070 sql_help.c:2071 -#: sql_help.c:2072 sql_help.c:2073 sql_help.c:2074 sql_help.c:2201 -#: sql_help.c:2250 sql_help.c:2251 sql_help.c:2252 sql_help.c:2253 -#: sql_help.c:2254 sql_help.c:2782 sql_help.c:2783 sql_help.c:2784 -#: sql_help.c:2785 sql_help.c:2786 sql_help.c:3412 sql_help.c:3416 -#: sql_help.c:3754 sql_help.c:3758 sql_help.c:4045 +#: sql_help.c:560 sql_help.c:588 sql_help.c:653 sql_help.c:793 sql_help.c:875 +#: sql_help.c:1098 sql_help.c:1375 sql_help.c:2073 sql_help.c:2074 +#: sql_help.c:2075 sql_help.c:2076 sql_help.c:2077 sql_help.c:2204 +#: sql_help.c:2253 sql_help.c:2254 sql_help.c:2255 sql_help.c:2256 +#: sql_help.c:2257 sql_help.c:2785 sql_help.c:2786 sql_help.c:2787 +#: sql_help.c:2788 sql_help.c:2789 sql_help.c:3415 sql_help.c:3419 +#: sql_help.c:3757 sql_help.c:3761 sql_help.c:4048 msgid "role_name" msgstr "rollnamn" -#: sql_help.c:237 sql_help.c:451 sql_help.c:1113 sql_help.c:1115 -#: sql_help.c:1403 sql_help.c:1882 sql_help.c:1886 sql_help.c:1990 -#: sql_help.c:1994 sql_help.c:2091 sql_help.c:2462 sql_help.c:2474 -#: sql_help.c:2487 sql_help.c:2495 sql_help.c:2506 sql_help.c:2535 -#: sql_help.c:3464 sql_help.c:3479 sql_help.c:3481 sql_help.c:3910 -#: sql_help.c:3911 sql_help.c:3920 sql_help.c:3961 sql_help.c:3962 -#: sql_help.c:3963 sql_help.c:3964 sql_help.c:3965 sql_help.c:3966 -#: sql_help.c:3999 sql_help.c:4000 sql_help.c:4005 sql_help.c:4010 -#: sql_help.c:4149 sql_help.c:4150 sql_help.c:4159 sql_help.c:4200 -#: sql_help.c:4201 sql_help.c:4202 sql_help.c:4203 sql_help.c:4204 -#: sql_help.c:4205 sql_help.c:4252 sql_help.c:4254 sql_help.c:4287 -#: sql_help.c:4343 sql_help.c:4344 sql_help.c:4353 sql_help.c:4394 -#: sql_help.c:4395 sql_help.c:4396 sql_help.c:4397 sql_help.c:4398 -#: sql_help.c:4399 +#: sql_help.c:237 sql_help.c:451 sql_help.c:1114 sql_help.c:1116 +#: sql_help.c:1404 sql_help.c:1883 sql_help.c:1887 sql_help.c:1992 +#: sql_help.c:1996 sql_help.c:2094 sql_help.c:2465 sql_help.c:2477 +#: sql_help.c:2490 sql_help.c:2498 sql_help.c:2509 sql_help.c:2538 +#: sql_help.c:3467 sql_help.c:3482 sql_help.c:3484 sql_help.c:3913 +#: sql_help.c:3914 sql_help.c:3923 sql_help.c:3964 sql_help.c:3965 +#: sql_help.c:3966 sql_help.c:3967 sql_help.c:3968 sql_help.c:3969 +#: sql_help.c:4002 sql_help.c:4003 sql_help.c:4008 sql_help.c:4013 +#: sql_help.c:4152 sql_help.c:4153 sql_help.c:4162 sql_help.c:4203 +#: sql_help.c:4204 sql_help.c:4205 sql_help.c:4206 sql_help.c:4207 +#: sql_help.c:4208 sql_help.c:4255 sql_help.c:4257 sql_help.c:4290 +#: sql_help.c:4346 sql_help.c:4347 sql_help.c:4356 sql_help.c:4397 +#: sql_help.c:4398 sql_help.c:4399 sql_help.c:4400 sql_help.c:4401 +#: sql_help.c:4402 msgid "expression" msgstr "uttryck" @@ -3691,18 +3698,18 @@ msgstr "domain_villkor" #: sql_help.c:242 sql_help.c:244 sql_help.c:247 sql_help.c:466 sql_help.c:467 -#: sql_help.c:1090 sql_help.c:1134 sql_help.c:1135 sql_help.c:1136 -#: sql_help.c:1156 sql_help.c:1530 sql_help.c:1532 sql_help.c:1885 -#: sql_help.c:1989 sql_help.c:1993 sql_help.c:2494 sql_help.c:2505 -#: sql_help.c:3476 +#: sql_help.c:1091 sql_help.c:1135 sql_help.c:1136 sql_help.c:1137 +#: sql_help.c:1157 sql_help.c:1531 sql_help.c:1533 sql_help.c:1886 +#: sql_help.c:1991 sql_help.c:1995 sql_help.c:2497 sql_help.c:2508 +#: sql_help.c:3479 msgid "constraint_name" msgstr "villkorsnamn" -#: sql_help.c:245 sql_help.c:1091 +#: sql_help.c:245 sql_help.c:1092 msgid "new_constraint_name" msgstr "nyy_villkorsnamn" -#: sql_help.c:316 sql_help.c:941 +#: sql_help.c:316 sql_help.c:942 msgid "new_version" msgstr "ny_version" @@ -3718,73 +3725,73 @@ #: sql_help.c:333 sql_help.c:334 sql_help.c:339 sql_help.c:343 sql_help.c:345 #: sql_help.c:347 sql_help.c:348 sql_help.c:349 sql_help.c:350 sql_help.c:351 #: sql_help.c:352 sql_help.c:353 sql_help.c:354 sql_help.c:355 sql_help.c:358 -#: sql_help.c:359 sql_help.c:1522 sql_help.c:1527 sql_help.c:1534 -#: sql_help.c:1535 sql_help.c:1536 sql_help.c:1537 sql_help.c:1538 -#: sql_help.c:1539 sql_help.c:1540 sql_help.c:1545 sql_help.c:1547 -#: sql_help.c:1551 sql_help.c:1553 sql_help.c:1557 sql_help.c:1558 -#: sql_help.c:1559 sql_help.c:1562 sql_help.c:1563 sql_help.c:1564 -#: sql_help.c:1565 sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 -#: sql_help.c:1569 sql_help.c:1570 sql_help.c:1571 sql_help.c:1572 -#: sql_help.c:1577 sql_help.c:1578 sql_help.c:3825 sql_help.c:3830 -#: sql_help.c:3831 sql_help.c:3832 sql_help.c:3833 sql_help.c:3839 -#: sql_help.c:3840 sql_help.c:3841 sql_help.c:3842 sql_help.c:3843 -#: sql_help.c:3844 sql_help.c:3845 sql_help.c:3846 sql_help.c:3847 -#: sql_help.c:3848 +#: sql_help.c:359 sql_help.c:1523 sql_help.c:1528 sql_help.c:1535 +#: sql_help.c:1536 sql_help.c:1537 sql_help.c:1538 sql_help.c:1539 +#: sql_help.c:1540 sql_help.c:1541 sql_help.c:1546 sql_help.c:1548 +#: sql_help.c:1552 sql_help.c:1554 sql_help.c:1558 sql_help.c:1559 +#: sql_help.c:1560 sql_help.c:1563 sql_help.c:1564 sql_help.c:1565 +#: sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 sql_help.c:1569 +#: sql_help.c:1570 sql_help.c:1571 sql_help.c:1572 sql_help.c:1573 +#: sql_help.c:1578 sql_help.c:1579 sql_help.c:3828 sql_help.c:3833 +#: sql_help.c:3834 sql_help.c:3835 sql_help.c:3836 sql_help.c:3842 +#: sql_help.c:3843 sql_help.c:3844 sql_help.c:3845 sql_help.c:3846 +#: sql_help.c:3847 sql_help.c:3848 sql_help.c:3849 sql_help.c:3850 +#: sql_help.c:3851 msgid "object_name" msgstr "objektnamn" -#: sql_help.c:325 sql_help.c:1523 sql_help.c:3828 +#: sql_help.c:325 sql_help.c:1524 sql_help.c:3831 msgid "aggregate_name" msgstr "aggregatnamn" -#: sql_help.c:327 sql_help.c:1525 sql_help.c:1796 sql_help.c:1800 -#: sql_help.c:1802 sql_help.c:2909 +#: sql_help.c:327 sql_help.c:1526 sql_help.c:1797 sql_help.c:1801 +#: sql_help.c:1803 sql_help.c:2912 msgid "source_type" msgstr "källtyp" -#: sql_help.c:328 sql_help.c:1526 sql_help.c:1797 sql_help.c:1801 -#: sql_help.c:1803 sql_help.c:2910 +#: sql_help.c:328 sql_help.c:1527 sql_help.c:1798 sql_help.c:1802 +#: sql_help.c:1804 sql_help.c:2913 msgid "target_type" msgstr "måltyp" -#: sql_help.c:335 sql_help.c:756 sql_help.c:1541 sql_help.c:1798 -#: sql_help.c:1837 sql_help.c:1900 sql_help.c:2144 sql_help.c:2175 -#: sql_help.c:2673 sql_help.c:3396 sql_help.c:3738 sql_help.c:3834 -#: sql_help.c:3939 sql_help.c:3943 sql_help.c:3947 sql_help.c:3950 -#: sql_help.c:4178 sql_help.c:4182 sql_help.c:4186 sql_help.c:4189 -#: sql_help.c:4372 sql_help.c:4376 sql_help.c:4380 sql_help.c:4383 +#: sql_help.c:335 sql_help.c:757 sql_help.c:1542 sql_help.c:1799 +#: sql_help.c:1838 sql_help.c:1902 sql_help.c:2147 sql_help.c:2178 +#: sql_help.c:2676 sql_help.c:3399 sql_help.c:3741 sql_help.c:3837 +#: sql_help.c:3942 sql_help.c:3946 sql_help.c:3950 sql_help.c:3953 +#: sql_help.c:4181 sql_help.c:4185 sql_help.c:4189 sql_help.c:4192 +#: sql_help.c:4375 sql_help.c:4379 sql_help.c:4383 sql_help.c:4386 msgid "function_name" msgstr "funktionsnamn" -#: sql_help.c:340 sql_help.c:749 sql_help.c:1548 sql_help.c:2168 +#: sql_help.c:340 sql_help.c:750 sql_help.c:1549 sql_help.c:2171 msgid "operator_name" msgstr "operatornamn" -#: sql_help.c:341 sql_help.c:685 sql_help.c:689 sql_help.c:693 sql_help.c:1549 -#: sql_help.c:2145 sql_help.c:3027 +#: sql_help.c:341 sql_help.c:686 sql_help.c:690 sql_help.c:694 sql_help.c:1550 +#: sql_help.c:2148 sql_help.c:3030 msgid "left_type" msgstr "vänster_typ" -#: sql_help.c:342 sql_help.c:686 sql_help.c:690 sql_help.c:694 sql_help.c:1550 -#: sql_help.c:2146 sql_help.c:3028 +#: sql_help.c:342 sql_help.c:687 sql_help.c:691 sql_help.c:695 sql_help.c:1551 +#: sql_help.c:2149 sql_help.c:3031 msgid "right_type" msgstr "höger_typ" -#: sql_help.c:344 sql_help.c:346 sql_help.c:712 sql_help.c:715 sql_help.c:718 -#: sql_help.c:747 sql_help.c:759 sql_help.c:767 sql_help.c:770 sql_help.c:773 -#: sql_help.c:1552 sql_help.c:1554 sql_help.c:2165 sql_help.c:2186 -#: sql_help.c:2511 sql_help.c:3037 sql_help.c:3046 +#: sql_help.c:344 sql_help.c:346 sql_help.c:713 sql_help.c:716 sql_help.c:719 +#: sql_help.c:748 sql_help.c:760 sql_help.c:768 sql_help.c:771 sql_help.c:774 +#: sql_help.c:1553 sql_help.c:1555 sql_help.c:2168 sql_help.c:2189 +#: sql_help.c:2514 sql_help.c:3040 sql_help.c:3049 msgid "index_method" msgstr "indexmetod" -#: sql_help.c:356 sql_help.c:1152 sql_help.c:1573 sql_help.c:2028 -#: sql_help.c:2469 sql_help.c:2640 sql_help.c:3184 sql_help.c:3410 -#: sql_help.c:3752 +#: sql_help.c:356 sql_help.c:1153 sql_help.c:1574 sql_help.c:2031 +#: sql_help.c:2472 sql_help.c:2643 sql_help.c:3187 sql_help.c:3413 +#: sql_help.c:3755 msgid "type_name" msgstr "typnamn" -#: sql_help.c:357 sql_help.c:1574 sql_help.c:2027 sql_help.c:2641 -#: sql_help.c:2867 sql_help.c:3185 sql_help.c:3402 sql_help.c:3744 +#: sql_help.c:357 sql_help.c:1575 sql_help.c:2030 sql_help.c:2644 +#: sql_help.c:2870 sql_help.c:3188 sql_help.c:3405 sql_help.c:3747 msgid "lang_name" msgstr "språknamn" @@ -3792,1814 +3799,1818 @@ msgid "and aggregate_signature is:" msgstr "och aggregatsignatur är:" -#: sql_help.c:383 sql_help.c:1668 sql_help.c:1927 +#: sql_help.c:383 sql_help.c:1669 sql_help.c:1929 msgid "handler_function" msgstr "hanterarfunktion" -#: sql_help.c:384 sql_help.c:1928 +#: sql_help.c:384 sql_help.c:1930 msgid "validator_function" msgstr "valideringsfunktion" -#: sql_help.c:433 sql_help.c:510 sql_help.c:641 sql_help.c:1085 sql_help.c:1296 -#: sql_help.c:2502 sql_help.c:2503 sql_help.c:2519 sql_help.c:2520 +#: sql_help.c:433 sql_help.c:511 sql_help.c:642 sql_help.c:1086 sql_help.c:1297 +#: sql_help.c:2505 sql_help.c:2506 sql_help.c:2522 sql_help.c:2523 msgid "action" msgstr "aktion" #: sql_help.c:435 sql_help.c:442 sql_help.c:446 sql_help.c:447 sql_help.c:450 #: sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:456 sql_help.c:459 -#: sql_help.c:461 sql_help.c:462 sql_help.c:645 sql_help.c:655 sql_help.c:657 -#: sql_help.c:660 sql_help.c:662 sql_help.c:923 sql_help.c:1087 sql_help.c:1105 -#: sql_help.c:1109 sql_help.c:1110 sql_help.c:1114 sql_help.c:1116 -#: sql_help.c:1117 sql_help.c:1118 sql_help.c:1120 sql_help.c:1123 -#: sql_help.c:1124 sql_help.c:1126 sql_help.c:1129 sql_help.c:1131 -#: sql_help.c:1402 sql_help.c:1405 sql_help.c:1425 sql_help.c:1529 -#: sql_help.c:1634 sql_help.c:1639 sql_help.c:1653 sql_help.c:1654 -#: sql_help.c:1655 sql_help.c:1968 sql_help.c:1981 sql_help.c:2025 -#: sql_help.c:2090 sql_help.c:2125 sql_help.c:2323 sql_help.c:2351 -#: sql_help.c:2352 sql_help.c:2453 sql_help.c:2461 sql_help.c:2470 -#: sql_help.c:2473 sql_help.c:2482 sql_help.c:2486 sql_help.c:2507 -#: sql_help.c:2509 sql_help.c:2516 sql_help.c:2534 sql_help.c:2551 -#: sql_help.c:2676 sql_help.c:2812 sql_help.c:3381 sql_help.c:3382 -#: sql_help.c:3463 sql_help.c:3478 sql_help.c:3480 sql_help.c:3482 -#: sql_help.c:3723 sql_help.c:3724 sql_help.c:3827 sql_help.c:3970 -#: sql_help.c:4209 sql_help.c:4251 sql_help.c:4253 sql_help.c:4255 -#: sql_help.c:4272 sql_help.c:4275 sql_help.c:4403 +#: sql_help.c:461 sql_help.c:462 sql_help.c:646 sql_help.c:656 sql_help.c:658 +#: sql_help.c:661 sql_help.c:663 sql_help.c:924 sql_help.c:1088 sql_help.c:1106 +#: sql_help.c:1110 sql_help.c:1111 sql_help.c:1115 sql_help.c:1117 +#: sql_help.c:1118 sql_help.c:1119 sql_help.c:1121 sql_help.c:1124 +#: sql_help.c:1125 sql_help.c:1127 sql_help.c:1130 sql_help.c:1132 +#: sql_help.c:1403 sql_help.c:1406 sql_help.c:1426 sql_help.c:1530 +#: sql_help.c:1635 sql_help.c:1640 sql_help.c:1654 sql_help.c:1655 +#: sql_help.c:1656 sql_help.c:1970 sql_help.c:1983 sql_help.c:2028 +#: sql_help.c:2093 sql_help.c:2128 sql_help.c:2326 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2456 sql_help.c:2464 sql_help.c:2473 +#: sql_help.c:2476 sql_help.c:2485 sql_help.c:2489 sql_help.c:2510 +#: sql_help.c:2512 sql_help.c:2519 sql_help.c:2537 sql_help.c:2554 +#: sql_help.c:2679 sql_help.c:2815 sql_help.c:3384 sql_help.c:3385 +#: sql_help.c:3466 sql_help.c:3481 sql_help.c:3483 sql_help.c:3485 +#: sql_help.c:3726 sql_help.c:3727 sql_help.c:3830 sql_help.c:3973 +#: sql_help.c:4212 sql_help.c:4254 sql_help.c:4256 sql_help.c:4258 +#: sql_help.c:4275 sql_help.c:4278 sql_help.c:4406 msgid "column_name" msgstr "kolumnnamn" -#: sql_help.c:436 sql_help.c:646 sql_help.c:1088 +#: sql_help.c:436 sql_help.c:647 sql_help.c:1089 msgid "new_column_name" msgstr "nytt_kolumnnamn" -#: sql_help.c:441 sql_help.c:531 sql_help.c:654 sql_help.c:1104 sql_help.c:1312 +#: sql_help.c:441 sql_help.c:532 sql_help.c:655 sql_help.c:1105 sql_help.c:1313 msgid "where action is one of:" msgstr "där aktion är en av:" -#: sql_help.c:443 sql_help.c:448 sql_help.c:915 sql_help.c:1106 sql_help.c:1111 -#: sql_help.c:1314 sql_help.c:1318 sql_help.c:1880 sql_help.c:1969 -#: sql_help.c:2164 sql_help.c:2316 sql_help.c:2454 sql_help.c:2721 -#: sql_help.c:3565 +#: sql_help.c:443 sql_help.c:448 sql_help.c:916 sql_help.c:1107 sql_help.c:1112 +#: sql_help.c:1315 sql_help.c:1319 sql_help.c:1881 sql_help.c:1971 +#: sql_help.c:2167 sql_help.c:2319 sql_help.c:2457 sql_help.c:2724 +#: sql_help.c:3568 msgid "data_type" msgstr "datatyp" -#: sql_help.c:444 sql_help.c:449 sql_help.c:1107 sql_help.c:1112 -#: sql_help.c:1315 sql_help.c:1319 sql_help.c:1881 sql_help.c:1972 -#: sql_help.c:2092 sql_help.c:2455 sql_help.c:2463 sql_help.c:2475 -#: sql_help.c:2488 sql_help.c:2722 sql_help.c:2728 sql_help.c:3473 +#: sql_help.c:444 sql_help.c:449 sql_help.c:1108 sql_help.c:1113 +#: sql_help.c:1316 sql_help.c:1320 sql_help.c:1882 sql_help.c:1974 +#: sql_help.c:2095 sql_help.c:2458 sql_help.c:2466 sql_help.c:2478 +#: sql_help.c:2491 sql_help.c:2725 sql_help.c:2731 sql_help.c:3476 msgid "collation" msgstr "jämförelse" -#: sql_help.c:445 sql_help.c:1108 sql_help.c:1973 sql_help.c:1982 -#: sql_help.c:2456 sql_help.c:2471 sql_help.c:2483 +#: sql_help.c:445 sql_help.c:1109 sql_help.c:1975 sql_help.c:1984 +#: sql_help.c:2459 sql_help.c:2474 sql_help.c:2486 msgid "column_constraint" msgstr "kolumnvillkor" -#: sql_help.c:455 sql_help.c:656 sql_help.c:1125 +#: sql_help.c:455 sql_help.c:657 sql_help.c:1126 msgid "integer" msgstr "heltal" -#: sql_help.c:457 sql_help.c:460 sql_help.c:658 sql_help.c:661 sql_help.c:1127 -#: sql_help.c:1130 +#: sql_help.c:457 sql_help.c:460 sql_help.c:659 sql_help.c:662 sql_help.c:1128 +#: sql_help.c:1131 msgid "attribute_option" msgstr "attributalternativ" -#: sql_help.c:465 sql_help.c:1132 sql_help.c:1974 sql_help.c:1983 -#: sql_help.c:2457 sql_help.c:2472 sql_help.c:2484 +#: sql_help.c:465 sql_help.c:1133 sql_help.c:1976 sql_help.c:1985 +#: sql_help.c:2460 sql_help.c:2475 sql_help.c:2487 msgid "table_constraint" msgstr "tabellvillkor" -#: sql_help.c:468 sql_help.c:469 sql_help.c:470 sql_help.c:471 sql_help.c:1137 -#: sql_help.c:1138 sql_help.c:1139 sql_help.c:1140 sql_help.c:1575 +#: sql_help.c:468 sql_help.c:469 sql_help.c:470 sql_help.c:471 sql_help.c:1138 +#: sql_help.c:1139 sql_help.c:1140 sql_help.c:1141 sql_help.c:1576 msgid "trigger_name" msgstr "utlösarnamn" -#: sql_help.c:472 sql_help.c:473 sql_help.c:1150 sql_help.c:1151 -#: sql_help.c:1975 sql_help.c:1980 sql_help.c:2460 sql_help.c:2481 +#: sql_help.c:472 sql_help.c:473 sql_help.c:1151 sql_help.c:1152 +#: sql_help.c:1977 sql_help.c:1982 sql_help.c:2463 sql_help.c:2484 msgid "parent_table" msgstr "föräldertabell" -#: sql_help.c:530 sql_help.c:580 sql_help.c:643 sql_help.c:1275 sql_help.c:1912 +#: sql_help.c:531 sql_help.c:581 sql_help.c:644 sql_help.c:1276 sql_help.c:1914 msgid "extension_name" msgstr "utökningsnamn" -#: sql_help.c:532 sql_help.c:2029 +#: sql_help.c:533 sql_help.c:2032 msgid "execution_cost" msgstr "körkostnad" -#: sql_help.c:533 sql_help.c:2030 +#: sql_help.c:534 sql_help.c:2033 msgid "result_rows" msgstr "resultatrader" -#: sql_help.c:554 sql_help.c:556 sql_help.c:853 sql_help.c:861 sql_help.c:865 -#: sql_help.c:868 sql_help.c:871 sql_help.c:1353 sql_help.c:1361 -#: sql_help.c:1365 sql_help.c:1368 sql_help.c:1371 sql_help.c:2294 -#: sql_help.c:2296 sql_help.c:2299 sql_help.c:2300 sql_help.c:3380 -#: sql_help.c:3384 sql_help.c:3387 sql_help.c:3389 sql_help.c:3391 -#: sql_help.c:3393 sql_help.c:3395 sql_help.c:3401 sql_help.c:3403 -#: sql_help.c:3405 sql_help.c:3407 sql_help.c:3409 sql_help.c:3411 -#: sql_help.c:3413 sql_help.c:3414 sql_help.c:3722 sql_help.c:3726 -#: sql_help.c:3729 sql_help.c:3731 sql_help.c:3733 sql_help.c:3735 -#: sql_help.c:3737 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747 -#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3753 sql_help.c:3755 -#: sql_help.c:3756 +#: sql_help.c:555 sql_help.c:557 sql_help.c:854 sql_help.c:862 sql_help.c:866 +#: sql_help.c:869 sql_help.c:872 sql_help.c:1354 sql_help.c:1362 +#: sql_help.c:1366 sql_help.c:1369 sql_help.c:1372 sql_help.c:2297 +#: sql_help.c:2299 sql_help.c:2302 sql_help.c:2303 sql_help.c:3383 +#: sql_help.c:3387 sql_help.c:3390 sql_help.c:3392 sql_help.c:3394 +#: sql_help.c:3396 sql_help.c:3398 sql_help.c:3404 sql_help.c:3406 +#: sql_help.c:3408 sql_help.c:3410 sql_help.c:3412 sql_help.c:3414 +#: sql_help.c:3416 sql_help.c:3417 sql_help.c:3725 sql_help.c:3729 +#: sql_help.c:3732 sql_help.c:3734 sql_help.c:3736 sql_help.c:3738 +#: sql_help.c:3740 sql_help.c:3746 sql_help.c:3748 sql_help.c:3750 +#: sql_help.c:3752 sql_help.c:3754 sql_help.c:3756 sql_help.c:3758 +#: sql_help.c:3759 msgid "role_specification" msgstr "rollspecifikation" -#: sql_help.c:555 sql_help.c:557 sql_help.c:1384 sql_help.c:1855 -#: sql_help.c:2302 sql_help.c:2797 sql_help.c:3218 sql_help.c:4055 +#: sql_help.c:556 sql_help.c:558 sql_help.c:1385 sql_help.c:1856 +#: sql_help.c:2305 sql_help.c:2800 sql_help.c:3221 sql_help.c:4058 msgid "user_name" msgstr "användarnamn" -#: sql_help.c:558 sql_help.c:873 sql_help.c:1373 sql_help.c:2301 -#: sql_help.c:3415 sql_help.c:3757 +#: sql_help.c:559 sql_help.c:874 sql_help.c:1374 sql_help.c:2304 +#: sql_help.c:3418 sql_help.c:3760 msgid "where role_specification can be:" msgstr "där rollspecifikation kan vara:" -#: sql_help.c:560 +#: sql_help.c:561 msgid "group_name" msgstr "gruppnamn" -#: sql_help.c:578 sql_help.c:1860 sql_help.c:2096 sql_help.c:2128 -#: sql_help.c:2467 sql_help.c:2479 sql_help.c:2492 sql_help.c:2532 -#: sql_help.c:2554 sql_help.c:2566 sql_help.c:3408 sql_help.c:3750 +#: sql_help.c:579 sql_help.c:1861 sql_help.c:2099 sql_help.c:2131 +#: sql_help.c:2470 sql_help.c:2482 sql_help.c:2495 sql_help.c:2535 +#: sql_help.c:2557 sql_help.c:2569 sql_help.c:3411 sql_help.c:3753 msgid "tablespace_name" msgstr "tabellutrymmesnamn" -#: sql_help.c:582 sql_help.c:585 sql_help.c:664 sql_help.c:666 sql_help.c:1147 -#: sql_help.c:1149 sql_help.c:2094 sql_help.c:2126 sql_help.c:2465 -#: sql_help.c:2477 sql_help.c:2490 sql_help.c:2530 sql_help.c:2552 +#: sql_help.c:583 sql_help.c:586 sql_help.c:665 sql_help.c:667 sql_help.c:1148 +#: sql_help.c:1150 sql_help.c:2097 sql_help.c:2129 sql_help.c:2468 +#: sql_help.c:2480 sql_help.c:2493 sql_help.c:2533 sql_help.c:2555 msgid "storage_parameter" msgstr "lagringsparameter" -#: sql_help.c:608 sql_help.c:1546 sql_help.c:3838 +#: sql_help.c:609 sql_help.c:1547 sql_help.c:3841 msgid "large_object_oid" msgstr "stort_objekt_oid" -#: sql_help.c:663 sql_help.c:1145 sql_help.c:1154 sql_help.c:1157 -#: sql_help.c:1465 +#: sql_help.c:664 sql_help.c:1146 sql_help.c:1155 sql_help.c:1158 +#: sql_help.c:1466 msgid "index_name" msgstr "indexnamn" -#: sql_help.c:695 sql_help.c:2149 +#: sql_help.c:696 sql_help.c:2152 msgid "res_proc" msgstr "res_proc" -#: sql_help.c:696 sql_help.c:2150 +#: sql_help.c:697 sql_help.c:2153 msgid "join_proc" msgstr "join_proc" -#: sql_help.c:748 sql_help.c:760 sql_help.c:2167 +#: sql_help.c:749 sql_help.c:761 sql_help.c:2170 msgid "strategy_number" msgstr "strateginummer" -#: sql_help.c:750 sql_help.c:751 sql_help.c:754 sql_help.c:755 sql_help.c:761 -#: sql_help.c:762 sql_help.c:764 sql_help.c:765 sql_help.c:2169 sql_help.c:2170 -#: sql_help.c:2173 sql_help.c:2174 +#: sql_help.c:751 sql_help.c:752 sql_help.c:755 sql_help.c:756 sql_help.c:762 +#: sql_help.c:763 sql_help.c:765 sql_help.c:766 sql_help.c:2172 sql_help.c:2173 +#: sql_help.c:2176 sql_help.c:2177 msgid "op_type" msgstr "op_typ" -#: sql_help.c:752 sql_help.c:2171 +#: sql_help.c:753 sql_help.c:2174 msgid "sort_family_name" msgstr "sorteringsfamiljnamn" -#: sql_help.c:753 sql_help.c:763 sql_help.c:2172 +#: sql_help.c:754 sql_help.c:764 sql_help.c:2175 msgid "support_number" msgstr "supportnummer" -#: sql_help.c:757 sql_help.c:1799 sql_help.c:2176 sql_help.c:2643 -#: sql_help.c:2645 +#: sql_help.c:758 sql_help.c:1800 sql_help.c:2179 sql_help.c:2646 +#: sql_help.c:2648 msgid "argument_type" msgstr "argumenttyp" -#: sql_help.c:788 sql_help.c:791 sql_help.c:808 sql_help.c:810 sql_help.c:812 -#: sql_help.c:883 sql_help.c:922 sql_help.c:1271 sql_help.c:1274 -#: sql_help.c:1424 sql_help.c:1464 sql_help.c:1531 sql_help.c:1556 -#: sql_help.c:1561 sql_help.c:1576 sql_help.c:1633 sql_help.c:1638 -#: sql_help.c:1967 sql_help.c:1979 sql_help.c:2088 sql_help.c:2124 -#: sql_help.c:2200 sql_help.c:2215 sql_help.c:2271 sql_help.c:2322 -#: sql_help.c:2353 sql_help.c:2452 sql_help.c:2468 sql_help.c:2480 -#: sql_help.c:2550 sql_help.c:2669 sql_help.c:2846 sql_help.c:3063 -#: sql_help.c:3088 sql_help.c:3194 sql_help.c:3378 sql_help.c:3383 -#: sql_help.c:3429 sql_help.c:3461 sql_help.c:3720 sql_help.c:3725 -#: sql_help.c:3826 sql_help.c:3925 sql_help.c:3927 sql_help.c:3976 -#: sql_help.c:4015 sql_help.c:4164 sql_help.c:4166 sql_help.c:4215 -#: sql_help.c:4249 sql_help.c:4271 sql_help.c:4273 sql_help.c:4274 -#: sql_help.c:4358 sql_help.c:4360 sql_help.c:4409 +#: sql_help.c:789 sql_help.c:792 sql_help.c:809 sql_help.c:811 sql_help.c:813 +#: sql_help.c:884 sql_help.c:923 sql_help.c:1272 sql_help.c:1275 +#: sql_help.c:1425 sql_help.c:1465 sql_help.c:1532 sql_help.c:1557 +#: sql_help.c:1562 sql_help.c:1577 sql_help.c:1634 sql_help.c:1639 +#: sql_help.c:1969 sql_help.c:1981 sql_help.c:2091 sql_help.c:2127 +#: sql_help.c:2203 sql_help.c:2218 sql_help.c:2274 sql_help.c:2325 +#: sql_help.c:2356 sql_help.c:2455 sql_help.c:2471 sql_help.c:2483 +#: sql_help.c:2553 sql_help.c:2672 sql_help.c:2849 sql_help.c:3066 +#: sql_help.c:3091 sql_help.c:3197 sql_help.c:3381 sql_help.c:3386 +#: sql_help.c:3432 sql_help.c:3464 sql_help.c:3723 sql_help.c:3728 +#: sql_help.c:3829 sql_help.c:3928 sql_help.c:3930 sql_help.c:3979 +#: sql_help.c:4018 sql_help.c:4167 sql_help.c:4169 sql_help.c:4218 +#: sql_help.c:4252 sql_help.c:4274 sql_help.c:4276 sql_help.c:4277 +#: sql_help.c:4361 sql_help.c:4363 sql_help.c:4412 msgid "table_name" msgstr "tabellnamn" -#: sql_help.c:793 sql_help.c:2202 +#: sql_help.c:794 sql_help.c:2205 msgid "using_expression" msgstr "using-uttryck" -#: sql_help.c:794 sql_help.c:2203 +#: sql_help.c:795 sql_help.c:2206 msgid "check_expression" msgstr "check-uttryck" -#: sql_help.c:814 sql_help.c:2216 +#: sql_help.c:815 sql_help.c:2219 msgid "publication_parameter" msgstr "publiceringsparameter" -#: sql_help.c:857 sql_help.c:1357 sql_help.c:2068 sql_help.c:2248 -#: sql_help.c:2780 +#: sql_help.c:858 sql_help.c:1358 sql_help.c:2071 sql_help.c:2251 +#: sql_help.c:2783 msgid "password" msgstr "lösenord" -#: sql_help.c:858 sql_help.c:1358 sql_help.c:2069 sql_help.c:2249 -#: sql_help.c:2781 +#: sql_help.c:859 sql_help.c:1359 sql_help.c:2072 sql_help.c:2252 +#: sql_help.c:2784 msgid "timestamp" msgstr "tidsstämpel" -#: sql_help.c:862 sql_help.c:866 sql_help.c:869 sql_help.c:872 sql_help.c:1362 -#: sql_help.c:1366 sql_help.c:1369 sql_help.c:1372 sql_help.c:3388 -#: sql_help.c:3730 +#: sql_help.c:863 sql_help.c:867 sql_help.c:870 sql_help.c:873 sql_help.c:1363 +#: sql_help.c:1367 sql_help.c:1370 sql_help.c:1373 sql_help.c:3391 +#: sql_help.c:3733 msgid "database_name" msgstr "databasnamn" -#: sql_help.c:916 sql_help.c:2317 +#: sql_help.c:917 sql_help.c:2320 msgid "increment" msgstr "ökningsvärde" -#: sql_help.c:917 sql_help.c:2318 +#: sql_help.c:918 sql_help.c:2321 msgid "minvalue" msgstr "minvärde" -#: sql_help.c:918 sql_help.c:2319 +#: sql_help.c:919 sql_help.c:2322 msgid "maxvalue" msgstr "maxvärde" -#: sql_help.c:919 sql_help.c:2320 sql_help.c:3923 sql_help.c:4013 -#: sql_help.c:4162 sql_help.c:4291 sql_help.c:4356 +#: sql_help.c:920 sql_help.c:2323 sql_help.c:3926 sql_help.c:4016 +#: sql_help.c:4165 sql_help.c:4294 sql_help.c:4359 msgid "start" msgstr "start" -#: sql_help.c:920 sql_help.c:1122 +#: sql_help.c:921 sql_help.c:1123 msgid "restart" msgstr "starta om" -#: sql_help.c:921 sql_help.c:2321 +#: sql_help.c:922 sql_help.c:2324 msgid "cache" msgstr "cache" -#: sql_help.c:978 sql_help.c:2365 +#: sql_help.c:979 sql_help.c:2368 msgid "conninfo" msgstr "anslinfo" -#: sql_help.c:980 sql_help.c:2366 +#: sql_help.c:981 sql_help.c:2369 msgid "publication_name" msgstr "publiceringsnamn" -#: sql_help.c:981 +#: sql_help.c:982 msgid "set_publication_option" msgstr "sätt_publicerings_alternativ" -#: sql_help.c:984 +#: sql_help.c:985 msgid "refresh_option" msgstr "refresh_alternativ" -#: sql_help.c:989 sql_help.c:2367 +#: sql_help.c:990 sql_help.c:2370 msgid "subscription_parameter" msgstr "prenumerationsparameter" -#: sql_help.c:1100 sql_help.c:1103 +#: sql_help.c:1101 sql_help.c:1104 msgid "partition_name" msgstr "partitionsnamn" -#: sql_help.c:1101 sql_help.c:1984 sql_help.c:2485 +#: sql_help.c:1102 sql_help.c:1986 sql_help.c:2488 msgid "partition_bound_spec" -msgstr "partionerings_spec" +msgstr "partitionsgränsspec" -#: sql_help.c:1119 sql_help.c:2497 +#: sql_help.c:1120 sql_help.c:2500 msgid "sequence_options" msgstr "sekvensalternativ" -#: sql_help.c:1121 +#: sql_help.c:1122 msgid "sequence_option" msgstr "sekvensalternativ" -#: sql_help.c:1133 +#: sql_help.c:1134 msgid "table_constraint_using_index" msgstr "tabellvillkor_för_index" -#: sql_help.c:1141 sql_help.c:1142 sql_help.c:1143 sql_help.c:1144 +#: sql_help.c:1142 sql_help.c:1143 sql_help.c:1144 sql_help.c:1145 msgid "rewrite_rule_name" msgstr "omskrivningsregelnamn" -#: sql_help.c:1155 +#: sql_help.c:1156 msgid "and table_constraint_using_index is:" msgstr "och tabellvillkor_för_index är:" -#: sql_help.c:1173 sql_help.c:1176 sql_help.c:2569 +#: sql_help.c:1174 sql_help.c:1177 sql_help.c:2572 msgid "tablespace_option" msgstr "tabellutrymmesalternativ" -#: sql_help.c:1197 sql_help.c:1200 sql_help.c:1206 sql_help.c:1210 +#: sql_help.c:1198 sql_help.c:1201 sql_help.c:1207 sql_help.c:1211 msgid "token_type" msgstr "symboltyp" -#: sql_help.c:1198 sql_help.c:1201 +#: sql_help.c:1199 sql_help.c:1202 msgid "dictionary_name" msgstr "ordlistnamn" -#: sql_help.c:1203 sql_help.c:1207 +#: sql_help.c:1204 sql_help.c:1208 msgid "old_dictionary" msgstr "gammal_ordlista" -#: sql_help.c:1204 sql_help.c:1208 +#: sql_help.c:1205 sql_help.c:1209 msgid "new_dictionary" msgstr "ny_ordlista" -#: sql_help.c:1300 sql_help.c:1313 sql_help.c:1316 sql_help.c:1317 -#: sql_help.c:2720 +#: sql_help.c:1301 sql_help.c:1314 sql_help.c:1317 sql_help.c:1318 +#: sql_help.c:2723 msgid "attribute_name" msgstr "attributnamn" -#: sql_help.c:1301 +#: sql_help.c:1302 msgid "new_attribute_name" msgstr "nytt_attributnamn" -#: sql_help.c:1307 sql_help.c:1311 +#: sql_help.c:1308 sql_help.c:1312 msgid "new_enum_value" msgstr "nytt_enumvärde" -#: sql_help.c:1308 +#: sql_help.c:1309 msgid "neighbor_enum_value" msgstr "närliggande_enumvärde" -#: sql_help.c:1310 +#: sql_help.c:1311 msgid "existing_enum_value" msgstr "existerande_enumvärde" -#: sql_help.c:1385 sql_help.c:1976 sql_help.c:1985 sql_help.c:2333 -#: sql_help.c:2798 sql_help.c:3219 sql_help.c:3394 sql_help.c:3430 -#: sql_help.c:3736 +#: sql_help.c:1386 sql_help.c:1978 sql_help.c:1987 sql_help.c:2336 +#: sql_help.c:2801 sql_help.c:3222 sql_help.c:3397 sql_help.c:3433 +#: sql_help.c:3739 msgid "server_name" msgstr "servernamn" -#: sql_help.c:1413 sql_help.c:1416 sql_help.c:2813 +#: sql_help.c:1414 sql_help.c:1417 sql_help.c:2816 msgid "view_option_name" msgstr "visningsalternativnamn" -#: sql_help.c:1414 sql_help.c:2814 +#: sql_help.c:1415 sql_help.c:2817 msgid "view_option_value" msgstr "visningsalternativvärde" -#: sql_help.c:1439 sql_help.c:4071 sql_help.c:4073 sql_help.c:4097 +#: sql_help.c:1440 sql_help.c:4074 sql_help.c:4076 sql_help.c:4100 msgid "transaction_mode" msgstr "transaktionsläge" -#: sql_help.c:1440 sql_help.c:4074 sql_help.c:4098 +#: sql_help.c:1441 sql_help.c:4077 sql_help.c:4101 msgid "where transaction_mode is one of:" msgstr "där transaktionsläge är en av:" -#: sql_help.c:1528 +#: sql_help.c:1529 msgid "relation_name" msgstr "relationsnamn" -#: sql_help.c:1533 sql_help.c:3390 sql_help.c:3732 +#: sql_help.c:1534 sql_help.c:3393 sql_help.c:3735 msgid "domain_name" msgstr "domännamn" -#: sql_help.c:1555 +#: sql_help.c:1556 msgid "policy_name" msgstr "policynamn" -#: sql_help.c:1560 +#: sql_help.c:1561 msgid "rule_name" msgstr "regelnamn" -#: sql_help.c:1579 +#: sql_help.c:1580 msgid "text" msgstr "text" -#: sql_help.c:1604 sql_help.c:3574 sql_help.c:3773 +#: sql_help.c:1605 sql_help.c:3577 sql_help.c:3776 msgid "transaction_id" msgstr "transaktions-id" -#: sql_help.c:1635 sql_help.c:1641 sql_help.c:3500 +#: sql_help.c:1636 sql_help.c:1642 sql_help.c:3503 msgid "filename" msgstr "filnamn" -#: sql_help.c:1636 sql_help.c:1642 sql_help.c:2273 sql_help.c:2274 -#: sql_help.c:2275 +#: sql_help.c:1637 sql_help.c:1643 sql_help.c:2276 sql_help.c:2277 +#: sql_help.c:2278 msgid "command" msgstr "kommando" -#: sql_help.c:1640 sql_help.c:2129 sql_help.c:2555 sql_help.c:2815 -#: sql_help.c:2833 sql_help.c:3465 +#: sql_help.c:1641 sql_help.c:2132 sql_help.c:2558 sql_help.c:2818 +#: sql_help.c:2836 sql_help.c:3468 msgid "query" msgstr "fråga" -#: sql_help.c:1644 sql_help.c:3265 +#: sql_help.c:1645 sql_help.c:3268 msgid "where option can be one of:" msgstr "där flaggor kan vara en av:" -#: sql_help.c:1645 +#: sql_help.c:1646 msgid "format_name" msgstr "formatnamn" -#: sql_help.c:1646 sql_help.c:1647 sql_help.c:1650 sql_help.c:3266 -#: sql_help.c:3267 sql_help.c:3268 sql_help.c:3269 sql_help.c:3270 -#: sql_help.c:3271 +#: sql_help.c:1647 sql_help.c:1648 sql_help.c:1651 sql_help.c:3269 +#: sql_help.c:3270 sql_help.c:3271 sql_help.c:3272 sql_help.c:3273 +#: sql_help.c:3274 msgid "boolean" msgstr "boolean" -#: sql_help.c:1648 +#: sql_help.c:1649 msgid "delimiter_character" msgstr "avdelartecken" -#: sql_help.c:1649 +#: sql_help.c:1650 msgid "null_string" msgstr "null-sträng" -#: sql_help.c:1651 +#: sql_help.c:1652 msgid "quote_character" msgstr "citattecken" -#: sql_help.c:1652 +#: sql_help.c:1653 msgid "escape_character" msgstr "escape-tecken" -#: sql_help.c:1656 +#: sql_help.c:1657 msgid "encoding_name" msgstr "kodningsnamn" -#: sql_help.c:1667 +#: sql_help.c:1668 msgid "access_method_type" msgstr "accessmetodtyp" -#: sql_help.c:1733 sql_help.c:1752 sql_help.c:1755 +#: sql_help.c:1734 sql_help.c:1753 sql_help.c:1756 msgid "arg_data_type" msgstr "arg_datatyp" -#: sql_help.c:1734 sql_help.c:1756 sql_help.c:1764 +#: sql_help.c:1735 sql_help.c:1757 sql_help.c:1765 msgid "sfunc" msgstr "sfunc" -#: sql_help.c:1735 sql_help.c:1757 sql_help.c:1765 +#: sql_help.c:1736 sql_help.c:1758 sql_help.c:1766 msgid "state_data_type" msgstr "tillståndsdatatyp" -#: sql_help.c:1736 sql_help.c:1758 sql_help.c:1766 +#: sql_help.c:1737 sql_help.c:1759 sql_help.c:1767 msgid "state_data_size" msgstr "tillståndsdatastorlek" -#: sql_help.c:1737 sql_help.c:1759 sql_help.c:1767 +#: sql_help.c:1738 sql_help.c:1760 sql_help.c:1768 msgid "ffunc" msgstr "ffunc" -#: sql_help.c:1738 sql_help.c:1768 +#: sql_help.c:1739 sql_help.c:1769 msgid "combinefunc" msgstr "kombinerafunk" -#: sql_help.c:1739 sql_help.c:1769 +#: sql_help.c:1740 sql_help.c:1770 msgid "serialfunc" msgstr "serialiseringsfunk" -#: sql_help.c:1740 sql_help.c:1770 +#: sql_help.c:1741 sql_help.c:1771 msgid "deserialfunc" msgstr "deserialiseringsfunk" -#: sql_help.c:1741 sql_help.c:1760 sql_help.c:1771 +#: sql_help.c:1742 sql_help.c:1761 sql_help.c:1772 msgid "initial_condition" msgstr "startvärde" -#: sql_help.c:1742 sql_help.c:1772 +#: sql_help.c:1743 sql_help.c:1773 msgid "msfunc" msgstr "msfunk" -#: sql_help.c:1743 sql_help.c:1773 +#: sql_help.c:1744 sql_help.c:1774 msgid "minvfunc" msgstr "minvfunk" -#: sql_help.c:1744 sql_help.c:1774 +#: sql_help.c:1745 sql_help.c:1775 msgid "mstate_data_type" msgstr "mtillståndsdatatyp" -#: sql_help.c:1745 sql_help.c:1775 +#: sql_help.c:1746 sql_help.c:1776 msgid "mstate_data_size" msgstr "ntillståndsstorlek" -#: sql_help.c:1746 sql_help.c:1776 +#: sql_help.c:1747 sql_help.c:1777 msgid "mffunc" msgstr "mffunk" -#: sql_help.c:1747 sql_help.c:1777 +#: sql_help.c:1748 sql_help.c:1778 msgid "minitial_condition" msgstr "mstartvärde" -#: sql_help.c:1748 sql_help.c:1778 +#: sql_help.c:1749 sql_help.c:1779 msgid "sort_operator" msgstr "sorteringsoperator" -#: sql_help.c:1761 +#: sql_help.c:1762 msgid "or the old syntax" msgstr "eller gamla syntaxen" -#: sql_help.c:1763 +#: sql_help.c:1764 msgid "base_type" msgstr "bastyp" -#: sql_help.c:1819 +#: sql_help.c:1820 msgid "locale" msgstr "lokal" -#: sql_help.c:1820 sql_help.c:1858 +#: sql_help.c:1821 sql_help.c:1859 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1821 sql_help.c:1859 +#: sql_help.c:1822 sql_help.c:1860 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1822 sql_help.c:3824 +#: sql_help.c:1823 sql_help.c:3827 msgid "provider" msgstr "leverantör" -#: sql_help.c:1823 sql_help.c:1914 +#: sql_help.c:1824 sql_help.c:1916 msgid "version" msgstr "version" -#: sql_help.c:1825 +#: sql_help.c:1826 msgid "existing_collation" msgstr "existerande_jämförelse" -#: sql_help.c:1835 +#: sql_help.c:1836 msgid "source_encoding" msgstr "källkodning" -#: sql_help.c:1836 +#: sql_help.c:1837 msgid "dest_encoding" msgstr "målkodning" -#: sql_help.c:1856 sql_help.c:2595 +#: sql_help.c:1857 sql_help.c:2598 msgid "template" msgstr "mall" -#: sql_help.c:1857 +#: sql_help.c:1858 msgid "encoding" msgstr "kodning" -#: sql_help.c:1883 +#: sql_help.c:1884 msgid "constraint" msgstr "villkor" -#: sql_help.c:1884 +#: sql_help.c:1885 msgid "where constraint is:" msgstr "där villkor är:" -#: sql_help.c:1898 sql_help.c:2270 sql_help.c:2668 +#: sql_help.c:1899 sql_help.c:2273 sql_help.c:2671 msgid "event" msgstr "händelse" -#: sql_help.c:1899 +#: sql_help.c:1900 msgid "filter_variable" msgstr "filtervariabel" -#: sql_help.c:1915 +#: sql_help.c:1901 +msgid "filter_value" +msgstr "filtervärde" + +#: sql_help.c:1917 msgid "old_version" msgstr "gammal_version" -#: sql_help.c:1988 sql_help.c:2493 +#: sql_help.c:1990 sql_help.c:2496 msgid "where column_constraint is:" msgstr "där kolumnvillkor är:" -#: sql_help.c:1991 sql_help.c:2023 sql_help.c:2496 +#: sql_help.c:1993 sql_help.c:2026 sql_help.c:2499 msgid "default_expr" msgstr "default_uttryck" -#: sql_help.c:1992 sql_help.c:2504 +#: sql_help.c:1994 sql_help.c:2507 msgid "and table_constraint is:" msgstr "och tabellvillkor är:" -#: sql_help.c:2024 +#: sql_help.c:2027 msgid "rettype" msgstr "rettyp" -#: sql_help.c:2026 +#: sql_help.c:2029 msgid "column_type" msgstr "kolumntyp" -#: sql_help.c:2034 +#: sql_help.c:2037 msgid "definition" msgstr "definition" -#: sql_help.c:2035 +#: sql_help.c:2038 msgid "obj_file" msgstr "obj-fil" -#: sql_help.c:2036 +#: sql_help.c:2039 msgid "link_symbol" msgstr "linksymbol" -#: sql_help.c:2037 +#: sql_help.c:2040 msgid "attribute" msgstr "attribut" -#: sql_help.c:2075 sql_help.c:2255 sql_help.c:2787 +#: sql_help.c:2078 sql_help.c:2258 sql_help.c:2790 msgid "uid" msgstr "uid" -#: sql_help.c:2089 +#: sql_help.c:2092 msgid "method" msgstr "metod" -#: sql_help.c:2093 sql_help.c:2464 sql_help.c:2476 sql_help.c:2489 -#: sql_help.c:2536 sql_help.c:3474 +#: sql_help.c:2096 sql_help.c:2467 sql_help.c:2479 sql_help.c:2492 +#: sql_help.c:2539 sql_help.c:3477 msgid "opclass" msgstr "op-klass" -#: sql_help.c:2097 sql_help.c:2515 +#: sql_help.c:2100 sql_help.c:2518 msgid "predicate" msgstr "predikat" -#: sql_help.c:2109 +#: sql_help.c:2112 msgid "call_handler" msgstr "anropshanterare" -#: sql_help.c:2110 +#: sql_help.c:2113 msgid "inline_handler" msgstr "inline-hanterare" -#: sql_help.c:2111 +#: sql_help.c:2114 msgid "valfunction" msgstr "val-funktion" -#: sql_help.c:2147 +#: sql_help.c:2150 msgid "com_op" msgstr "com_op" -#: sql_help.c:2148 +#: sql_help.c:2151 msgid "neg_op" msgstr "neg_op" -#: sql_help.c:2166 +#: sql_help.c:2169 msgid "family_name" msgstr "familjenamn" -#: sql_help.c:2177 +#: sql_help.c:2180 msgid "storage_type" msgstr "lagringstyp" -#: sql_help.c:2272 sql_help.c:2672 sql_help.c:2849 sql_help.c:3484 -#: sql_help.c:3914 sql_help.c:3916 sql_help.c:4004 sql_help.c:4006 -#: sql_help.c:4153 sql_help.c:4155 sql_help.c:4258 sql_help.c:4347 -#: sql_help.c:4349 +#: sql_help.c:2275 sql_help.c:2675 sql_help.c:2852 sql_help.c:3487 +#: sql_help.c:3917 sql_help.c:3919 sql_help.c:4007 sql_help.c:4009 +#: sql_help.c:4156 sql_help.c:4158 sql_help.c:4261 sql_help.c:4350 +#: sql_help.c:4352 msgid "condition" msgstr "villkor" -#: sql_help.c:2276 sql_help.c:2675 +#: sql_help.c:2279 sql_help.c:2678 msgid "where event can be one of:" msgstr "där händelse kan vara en av:" -#: sql_help.c:2295 sql_help.c:2297 +#: sql_help.c:2298 sql_help.c:2300 msgid "schema_element" msgstr "schema-element" -#: sql_help.c:2334 +#: sql_help.c:2337 msgid "server_type" msgstr "servertyp" -#: sql_help.c:2335 +#: sql_help.c:2338 msgid "server_version" msgstr "serverversion" -#: sql_help.c:2336 sql_help.c:3392 sql_help.c:3734 +#: sql_help.c:2339 sql_help.c:3395 sql_help.c:3737 msgid "fdw_name" msgstr "fdw-namn" -#: sql_help.c:2349 +#: sql_help.c:2352 msgid "statistics_name" msgstr "statistiknamn" -#: sql_help.c:2350 +#: sql_help.c:2353 msgid "statistics_kind" msgstr "statistiksort" -#: sql_help.c:2364 +#: sql_help.c:2367 msgid "subscription_name" msgstr "prenumerationsnamn" -#: sql_help.c:2458 +#: sql_help.c:2461 msgid "source_table" msgstr "källtabell" -#: sql_help.c:2459 +#: sql_help.c:2462 msgid "like_option" msgstr "like_alternativ" -#: sql_help.c:2498 sql_help.c:2499 sql_help.c:2508 sql_help.c:2510 -#: sql_help.c:2514 +#: sql_help.c:2501 sql_help.c:2502 sql_help.c:2511 sql_help.c:2513 +#: sql_help.c:2517 msgid "index_parameters" msgstr "indexparametrar" -#: sql_help.c:2500 sql_help.c:2517 +#: sql_help.c:2503 sql_help.c:2520 msgid "reftable" msgstr "reftabell" -#: sql_help.c:2501 sql_help.c:2518 +#: sql_help.c:2504 sql_help.c:2521 msgid "refcolumn" msgstr "refkolumn" -#: sql_help.c:2512 +#: sql_help.c:2515 msgid "exclude_element" msgstr "uteslutelement" -#: sql_help.c:2513 sql_help.c:3921 sql_help.c:4011 sql_help.c:4160 -#: sql_help.c:4289 sql_help.c:4354 +#: sql_help.c:2516 sql_help.c:3924 sql_help.c:4014 sql_help.c:4163 +#: sql_help.c:4292 sql_help.c:4357 msgid "operator" msgstr "operator" -#: sql_help.c:2521 +#: sql_help.c:2524 msgid "and like_option is:" msgstr "och likealternativ är:" -#: sql_help.c:2522 +#: sql_help.c:2525 msgid "and partition_bound_spec is:" -msgstr "och partionerings_spec är:" +msgstr "och partitionsgränsspec är:" -#: sql_help.c:2523 sql_help.c:2525 sql_help.c:2527 +#: sql_help.c:2526 sql_help.c:2528 sql_help.c:2530 msgid "numeric_literal" msgstr "numerisk_literal" -#: sql_help.c:2524 sql_help.c:2526 sql_help.c:2528 +#: sql_help.c:2527 sql_help.c:2529 sql_help.c:2531 msgid "string_literal" msgstr "strängliteral" -#: sql_help.c:2529 +#: sql_help.c:2532 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "indexparametrar i UNIQUE-, PRIMARY KEY- och EXCLUDE-villkor är:" -#: sql_help.c:2533 +#: sql_help.c:2536 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "uteslutelement i ett EXCLUDE-villkort är:" -#: sql_help.c:2568 +#: sql_help.c:2571 msgid "directory" msgstr "katalog" -#: sql_help.c:2582 +#: sql_help.c:2585 msgid "parser_name" msgstr "parsernamn" -#: sql_help.c:2583 +#: sql_help.c:2586 msgid "source_config" msgstr "källkonfig" -#: sql_help.c:2612 +#: sql_help.c:2615 msgid "start_function" msgstr "startfunktion" -#: sql_help.c:2613 +#: sql_help.c:2616 msgid "gettoken_function" msgstr "gettoken_funktion" -#: sql_help.c:2614 +#: sql_help.c:2617 msgid "end_function" msgstr "slutfunktion" -#: sql_help.c:2615 +#: sql_help.c:2618 msgid "lextypes_function" msgstr "symboltypfunktion" -#: sql_help.c:2616 +#: sql_help.c:2619 msgid "headline_function" msgstr "rubrikfunktion" -#: sql_help.c:2628 +#: sql_help.c:2631 msgid "init_function" msgstr "init_funktion" -#: sql_help.c:2629 +#: sql_help.c:2632 msgid "lexize_function" msgstr "symboluppdelningsfunktion" -#: sql_help.c:2642 +#: sql_help.c:2645 msgid "from_sql_function_name" msgstr "från_sql_funktionsnamn" -#: sql_help.c:2644 +#: sql_help.c:2647 msgid "to_sql_function_name" msgstr "till_sql_funktionsnamn" -#: sql_help.c:2670 +#: sql_help.c:2673 msgid "referenced_table_name" msgstr "refererat_tabellnamn" -#: sql_help.c:2671 +#: sql_help.c:2674 msgid "transition_relation_name" msgstr "övergångsrelationsnamn" -#: sql_help.c:2674 +#: sql_help.c:2677 msgid "arguments" msgstr "argument" -#: sql_help.c:2724 sql_help.c:3849 +#: sql_help.c:2727 sql_help.c:3852 msgid "label" msgstr "etikett" -#: sql_help.c:2726 +#: sql_help.c:2729 msgid "subtype" msgstr "subtyp" -#: sql_help.c:2727 +#: sql_help.c:2730 msgid "subtype_operator_class" msgstr "subtypoperatorklass" -#: sql_help.c:2729 +#: sql_help.c:2732 msgid "canonical_function" msgstr "kanonisk_funktion" -#: sql_help.c:2730 +#: sql_help.c:2733 msgid "subtype_diff_function" msgstr "subtyp_diff_funktion" -#: sql_help.c:2732 +#: sql_help.c:2735 msgid "input_function" msgstr "inmatningsfunktion" -#: sql_help.c:2733 +#: sql_help.c:2736 msgid "output_function" msgstr "utmatningsfunktion" -#: sql_help.c:2734 +#: sql_help.c:2737 msgid "receive_function" msgstr "mottagarfunktion" -#: sql_help.c:2735 +#: sql_help.c:2738 msgid "send_function" msgstr "sändfunktion" -#: sql_help.c:2736 +#: sql_help.c:2739 msgid "type_modifier_input_function" msgstr "typmodifiering_indatafunktion" -#: sql_help.c:2737 +#: sql_help.c:2740 msgid "type_modifier_output_function" msgstr "typmodifiering_utdatafunktion" -#: sql_help.c:2738 +#: sql_help.c:2741 msgid "analyze_function" msgstr "analysfunktion" -#: sql_help.c:2739 +#: sql_help.c:2742 msgid "internallength" msgstr "internlängd" -#: sql_help.c:2740 +#: sql_help.c:2743 msgid "alignment" msgstr "justering" -#: sql_help.c:2741 +#: sql_help.c:2744 msgid "storage" msgstr "lagring" -#: sql_help.c:2742 +#: sql_help.c:2745 msgid "like_type" msgstr "liketyp" -#: sql_help.c:2743 +#: sql_help.c:2746 msgid "category" msgstr "kategori" -#: sql_help.c:2744 +#: sql_help.c:2747 msgid "preferred" msgstr "föredragen" -#: sql_help.c:2745 +#: sql_help.c:2748 msgid "default" msgstr "standard" -#: sql_help.c:2746 +#: sql_help.c:2749 msgid "element" msgstr "element" -#: sql_help.c:2747 +#: sql_help.c:2750 msgid "delimiter" msgstr "avskiljare" -#: sql_help.c:2748 +#: sql_help.c:2751 msgid "collatable" msgstr "sorterbar" -#: sql_help.c:2845 sql_help.c:3460 sql_help.c:3909 sql_help.c:3998 -#: sql_help.c:4148 sql_help.c:4248 sql_help.c:4342 +#: sql_help.c:2848 sql_help.c:3463 sql_help.c:3912 sql_help.c:4001 +#: sql_help.c:4151 sql_help.c:4251 sql_help.c:4345 msgid "with_query" msgstr "with_fråga" -#: sql_help.c:2847 sql_help.c:3462 sql_help.c:3928 sql_help.c:3934 -#: sql_help.c:3937 sql_help.c:3941 sql_help.c:3945 sql_help.c:3953 -#: sql_help.c:4167 sql_help.c:4173 sql_help.c:4176 sql_help.c:4180 -#: sql_help.c:4184 sql_help.c:4192 sql_help.c:4250 sql_help.c:4361 -#: sql_help.c:4367 sql_help.c:4370 sql_help.c:4374 sql_help.c:4378 -#: sql_help.c:4386 +#: sql_help.c:2850 sql_help.c:3465 sql_help.c:3931 sql_help.c:3937 +#: sql_help.c:3940 sql_help.c:3944 sql_help.c:3948 sql_help.c:3956 +#: sql_help.c:4170 sql_help.c:4176 sql_help.c:4179 sql_help.c:4183 +#: sql_help.c:4187 sql_help.c:4195 sql_help.c:4253 sql_help.c:4364 +#: sql_help.c:4370 sql_help.c:4373 sql_help.c:4377 sql_help.c:4381 +#: sql_help.c:4389 msgid "alias" msgstr "alias" -#: sql_help.c:2848 sql_help.c:3913 sql_help.c:3955 sql_help.c:3957 -#: sql_help.c:4003 sql_help.c:4152 sql_help.c:4194 sql_help.c:4196 -#: sql_help.c:4257 sql_help.c:4346 sql_help.c:4388 sql_help.c:4390 +#: sql_help.c:2851 sql_help.c:3916 sql_help.c:3958 sql_help.c:3960 +#: sql_help.c:4006 sql_help.c:4155 sql_help.c:4197 sql_help.c:4199 +#: sql_help.c:4260 sql_help.c:4349 sql_help.c:4391 sql_help.c:4393 msgid "from_item" msgstr "frånval" -#: sql_help.c:2850 sql_help.c:3297 sql_help.c:3541 sql_help.c:4259 +#: sql_help.c:2853 sql_help.c:3300 sql_help.c:3544 sql_help.c:4262 msgid "cursor_name" msgstr "markörnamn" -#: sql_help.c:2851 sql_help.c:3468 sql_help.c:4260 +#: sql_help.c:2854 sql_help.c:3471 sql_help.c:4263 msgid "output_expression" msgstr "utdatauttryck" -#: sql_help.c:2852 sql_help.c:3469 sql_help.c:3912 sql_help.c:4001 -#: sql_help.c:4151 sql_help.c:4261 sql_help.c:4345 +#: sql_help.c:2855 sql_help.c:3472 sql_help.c:3915 sql_help.c:4004 +#: sql_help.c:4154 sql_help.c:4264 sql_help.c:4348 msgid "output_name" msgstr "utdatanamn" -#: sql_help.c:2868 +#: sql_help.c:2871 msgid "code" msgstr "kod" -#: sql_help.c:3243 +#: sql_help.c:3246 msgid "parameter" msgstr "parameter" -#: sql_help.c:3263 sql_help.c:3264 sql_help.c:3566 +#: sql_help.c:3266 sql_help.c:3267 sql_help.c:3569 msgid "statement" msgstr "sats" -#: sql_help.c:3296 sql_help.c:3540 +#: sql_help.c:3299 sql_help.c:3543 msgid "direction" msgstr "riktning" -#: sql_help.c:3298 sql_help.c:3542 +#: sql_help.c:3301 sql_help.c:3545 msgid "where direction can be empty or one of:" msgstr "där riktning kan vara tom eller en av:" -#: sql_help.c:3299 sql_help.c:3300 sql_help.c:3301 sql_help.c:3302 -#: sql_help.c:3303 sql_help.c:3543 sql_help.c:3544 sql_help.c:3545 -#: sql_help.c:3546 sql_help.c:3547 sql_help.c:3922 sql_help.c:3924 -#: sql_help.c:4012 sql_help.c:4014 sql_help.c:4161 sql_help.c:4163 -#: sql_help.c:4290 sql_help.c:4292 sql_help.c:4355 sql_help.c:4357 +#: sql_help.c:3302 sql_help.c:3303 sql_help.c:3304 sql_help.c:3305 +#: sql_help.c:3306 sql_help.c:3546 sql_help.c:3547 sql_help.c:3548 +#: sql_help.c:3549 sql_help.c:3550 sql_help.c:3925 sql_help.c:3927 +#: sql_help.c:4015 sql_help.c:4017 sql_help.c:4164 sql_help.c:4166 +#: sql_help.c:4293 sql_help.c:4295 sql_help.c:4358 sql_help.c:4360 msgid "count" msgstr "antal" -#: sql_help.c:3385 sql_help.c:3727 +#: sql_help.c:3388 sql_help.c:3730 msgid "sequence_name" msgstr "sekvensnamn" -#: sql_help.c:3398 sql_help.c:3740 +#: sql_help.c:3401 sql_help.c:3743 msgid "arg_name" msgstr "arg_namn" -#: sql_help.c:3399 sql_help.c:3741 +#: sql_help.c:3402 sql_help.c:3744 msgid "arg_type" msgstr "arg_typ" -#: sql_help.c:3404 sql_help.c:3746 +#: sql_help.c:3407 sql_help.c:3749 msgid "loid" msgstr "loid" -#: sql_help.c:3428 +#: sql_help.c:3431 msgid "remote_schema" msgstr "externt_schema" -#: sql_help.c:3431 +#: sql_help.c:3434 msgid "local_schema" msgstr "lokalt_schema" -#: sql_help.c:3466 +#: sql_help.c:3469 msgid "conflict_target" msgstr "konfliktmål" -#: sql_help.c:3467 +#: sql_help.c:3470 msgid "conflict_action" msgstr "konfliktaktion" -#: sql_help.c:3470 +#: sql_help.c:3473 msgid "where conflict_target can be one of:" msgstr "där konfliktmål kan vara en av:" -#: sql_help.c:3471 +#: sql_help.c:3474 msgid "index_column_name" msgstr "indexkolumnnamn" -#: sql_help.c:3472 +#: sql_help.c:3475 msgid "index_expression" msgstr "indexuttryck" -#: sql_help.c:3475 +#: sql_help.c:3478 msgid "index_predicate" msgstr "indexpredikat" -#: sql_help.c:3477 +#: sql_help.c:3480 msgid "and conflict_action is one of:" msgstr "och konfliktaktion är en av:" -#: sql_help.c:3483 sql_help.c:4256 +#: sql_help.c:3486 sql_help.c:4259 msgid "sub-SELECT" msgstr "sub-SELECT" -#: sql_help.c:3492 sql_help.c:3555 sql_help.c:4232 +#: sql_help.c:3495 sql_help.c:3558 sql_help.c:4235 msgid "channel" msgstr "kanal" -#: sql_help.c:3514 +#: sql_help.c:3517 msgid "lockmode" msgstr "låsläge" -#: sql_help.c:3515 +#: sql_help.c:3518 msgid "where lockmode is one of:" msgstr "där låsläge är en av:" -#: sql_help.c:3556 +#: sql_help.c:3559 msgid "payload" msgstr "innehåll" -#: sql_help.c:3583 +#: sql_help.c:3586 msgid "old_role" msgstr "gammal_roll" -#: sql_help.c:3584 +#: sql_help.c:3587 msgid "new_role" msgstr "ny_roll" -#: sql_help.c:3609 sql_help.c:3781 sql_help.c:3789 +#: sql_help.c:3612 sql_help.c:3784 sql_help.c:3792 msgid "savepoint_name" msgstr "sparpunktnamn" -#: sql_help.c:3915 sql_help.c:3967 sql_help.c:4154 sql_help.c:4206 -#: sql_help.c:4348 sql_help.c:4400 +#: sql_help.c:3918 sql_help.c:3970 sql_help.c:4157 sql_help.c:4209 +#: sql_help.c:4351 sql_help.c:4403 msgid "grouping_element" msgstr "gruperingselement" -#: sql_help.c:3917 sql_help.c:4007 sql_help.c:4156 sql_help.c:4350 +#: sql_help.c:3920 sql_help.c:4010 sql_help.c:4159 sql_help.c:4353 msgid "window_name" msgstr "fönsternamn" -#: sql_help.c:3918 sql_help.c:4008 sql_help.c:4157 sql_help.c:4351 +#: sql_help.c:3921 sql_help.c:4011 sql_help.c:4160 sql_help.c:4354 msgid "window_definition" msgstr "fönsterdefinition" -#: sql_help.c:3919 sql_help.c:3933 sql_help.c:3971 sql_help.c:4009 -#: sql_help.c:4158 sql_help.c:4172 sql_help.c:4210 sql_help.c:4352 -#: sql_help.c:4366 sql_help.c:4404 +#: sql_help.c:3922 sql_help.c:3936 sql_help.c:3974 sql_help.c:4012 +#: sql_help.c:4161 sql_help.c:4175 sql_help.c:4213 sql_help.c:4355 +#: sql_help.c:4369 sql_help.c:4407 msgid "select" msgstr "select" -#: sql_help.c:3926 sql_help.c:4165 sql_help.c:4359 +#: sql_help.c:3929 sql_help.c:4168 sql_help.c:4362 msgid "where from_item can be one of:" msgstr "där frånval kan vara en av:" -#: sql_help.c:3929 sql_help.c:3935 sql_help.c:3938 sql_help.c:3942 -#: sql_help.c:3954 sql_help.c:4168 sql_help.c:4174 sql_help.c:4177 -#: sql_help.c:4181 sql_help.c:4193 sql_help.c:4362 sql_help.c:4368 -#: sql_help.c:4371 sql_help.c:4375 sql_help.c:4387 +#: sql_help.c:3932 sql_help.c:3938 sql_help.c:3941 sql_help.c:3945 +#: sql_help.c:3957 sql_help.c:4171 sql_help.c:4177 sql_help.c:4180 +#: sql_help.c:4184 sql_help.c:4196 sql_help.c:4365 sql_help.c:4371 +#: sql_help.c:4374 sql_help.c:4378 sql_help.c:4390 msgid "column_alias" msgstr "kolumnalias" -#: sql_help.c:3930 sql_help.c:4169 sql_help.c:4363 +#: sql_help.c:3933 sql_help.c:4172 sql_help.c:4366 msgid "sampling_method" msgstr "samplingsmetod" -#: sql_help.c:3931 sql_help.c:3940 sql_help.c:3944 sql_help.c:3948 -#: sql_help.c:3951 sql_help.c:4170 sql_help.c:4179 sql_help.c:4183 -#: sql_help.c:4187 sql_help.c:4190 sql_help.c:4364 sql_help.c:4373 -#: sql_help.c:4377 sql_help.c:4381 sql_help.c:4384 +#: sql_help.c:3934 sql_help.c:3943 sql_help.c:3947 sql_help.c:3951 +#: sql_help.c:3954 sql_help.c:4173 sql_help.c:4182 sql_help.c:4186 +#: sql_help.c:4190 sql_help.c:4193 sql_help.c:4367 sql_help.c:4376 +#: sql_help.c:4380 sql_help.c:4384 sql_help.c:4387 msgid "argument" msgstr "argument" -#: sql_help.c:3932 sql_help.c:4171 sql_help.c:4365 +#: sql_help.c:3935 sql_help.c:4174 sql_help.c:4368 msgid "seed" msgstr "frö" -#: sql_help.c:3936 sql_help.c:3969 sql_help.c:4175 sql_help.c:4208 -#: sql_help.c:4369 sql_help.c:4402 +#: sql_help.c:3939 sql_help.c:3972 sql_help.c:4178 sql_help.c:4211 +#: sql_help.c:4372 sql_help.c:4405 msgid "with_query_name" msgstr "with_frågenamn" -#: sql_help.c:3946 sql_help.c:3949 sql_help.c:3952 sql_help.c:4185 -#: sql_help.c:4188 sql_help.c:4191 sql_help.c:4379 sql_help.c:4382 -#: sql_help.c:4385 +#: sql_help.c:3949 sql_help.c:3952 sql_help.c:3955 sql_help.c:4188 +#: sql_help.c:4191 sql_help.c:4194 sql_help.c:4382 sql_help.c:4385 +#: sql_help.c:4388 msgid "column_definition" msgstr "kolumndefinition" -#: sql_help.c:3956 sql_help.c:4195 sql_help.c:4389 +#: sql_help.c:3959 sql_help.c:4198 sql_help.c:4392 msgid "join_type" msgstr "join-typ" -#: sql_help.c:3958 sql_help.c:4197 sql_help.c:4391 +#: sql_help.c:3961 sql_help.c:4200 sql_help.c:4394 msgid "join_condition" msgstr "join-villkor" -#: sql_help.c:3959 sql_help.c:4198 sql_help.c:4392 +#: sql_help.c:3962 sql_help.c:4201 sql_help.c:4395 msgid "join_column" msgstr "join-kolumn" -#: sql_help.c:3960 sql_help.c:4199 sql_help.c:4393 +#: sql_help.c:3963 sql_help.c:4202 sql_help.c:4396 msgid "and grouping_element can be one of:" msgstr "och grupperingselement kan vara en av:" -#: sql_help.c:3968 sql_help.c:4207 sql_help.c:4401 +#: sql_help.c:3971 sql_help.c:4210 sql_help.c:4404 msgid "and with_query is:" msgstr "och with_fråga är:" -#: sql_help.c:3972 sql_help.c:4211 sql_help.c:4405 +#: sql_help.c:3975 sql_help.c:4214 sql_help.c:4408 msgid "values" msgstr "värden" -#: sql_help.c:3973 sql_help.c:4212 sql_help.c:4406 +#: sql_help.c:3976 sql_help.c:4215 sql_help.c:4409 msgid "insert" msgstr "insert" -#: sql_help.c:3974 sql_help.c:4213 sql_help.c:4407 +#: sql_help.c:3977 sql_help.c:4216 sql_help.c:4410 msgid "update" msgstr "update" -#: sql_help.c:3975 sql_help.c:4214 sql_help.c:4408 +#: sql_help.c:3978 sql_help.c:4217 sql_help.c:4411 msgid "delete" msgstr "delete" -#: sql_help.c:4002 +#: sql_help.c:4005 msgid "new_table" msgstr "ny_tabell" -#: sql_help.c:4027 +#: sql_help.c:4030 msgid "timezone" msgstr "tidszon" -#: sql_help.c:4072 +#: sql_help.c:4075 msgid "snapshot_id" msgstr "snapshot_id" -#: sql_help.c:4288 +#: sql_help.c:4291 msgid "sort_expression" msgstr "sorteringsuttryck" -#: sql_help.c:4415 sql_help.c:5200 +#: sql_help.c:4418 sql_help.c:5203 msgid "abort the current transaction" msgstr "avbryt aktuell transaktion" -#: sql_help.c:4420 +#: sql_help.c:4423 msgid "change the definition of an aggregate function" msgstr "ändra definitionen av en aggregatfunktion" -#: sql_help.c:4425 +#: sql_help.c:4428 msgid "change the definition of a collation" msgstr "ändra definitionen av en jämförelse" -#: sql_help.c:4430 +#: sql_help.c:4433 msgid "change the definition of a conversion" msgstr "ändra definitionen av en konvertering" -#: sql_help.c:4435 +#: sql_help.c:4438 msgid "change a database" msgstr "ändra en databas" -#: sql_help.c:4440 +#: sql_help.c:4443 msgid "define default access privileges" msgstr "definiera standardaccessrättigheter" -#: sql_help.c:4445 +#: sql_help.c:4448 msgid "change the definition of a domain" msgstr "ändra definitionen av en domän" -#: sql_help.c:4450 +#: sql_help.c:4453 msgid "change the definition of an event trigger" msgstr "ändra definitionen av en händelseutlösare" -#: sql_help.c:4455 +#: sql_help.c:4458 msgid "change the definition of an extension" msgstr "ändra definitionen av en utökning" -#: sql_help.c:4460 +#: sql_help.c:4463 msgid "change the definition of a foreign-data wrapper" msgstr "ändra definitionen av en främmande data-omvandlare" -#: sql_help.c:4465 +#: sql_help.c:4468 msgid "change the definition of a foreign table" msgstr "ändra definitionen av en främmande tabell" -#: sql_help.c:4470 +#: sql_help.c:4473 msgid "change the definition of a function" msgstr "ändra definitionen av en funktion" -#: sql_help.c:4475 +#: sql_help.c:4478 msgid "change role name or membership" msgstr "ändra rollnamn eller medlemskap" -#: sql_help.c:4480 +#: sql_help.c:4483 msgid "change the definition of an index" msgstr "ändra definitionen av ett index" -#: sql_help.c:4485 +#: sql_help.c:4488 msgid "change the definition of a procedural language" msgstr "ändra definitionen av ett procedur-språk" -#: sql_help.c:4490 +#: sql_help.c:4493 msgid "change the definition of a large object" msgstr "ändra definitionen av ett stort objekt" -#: sql_help.c:4495 +#: sql_help.c:4498 msgid "change the definition of a materialized view" msgstr "ändra definitionen av en materialiserad vy" -#: sql_help.c:4500 +#: sql_help.c:4503 msgid "change the definition of an operator" msgstr "ändra definitionen av en operator" -#: sql_help.c:4505 +#: sql_help.c:4508 msgid "change the definition of an operator class" msgstr "ändra definitionen av en operatorklass" -#: sql_help.c:4510 +#: sql_help.c:4513 msgid "change the definition of an operator family" msgstr "ändra definitionen av en operatorfamilj" -#: sql_help.c:4515 +#: sql_help.c:4518 msgid "change the definition of a row level security policy" msgstr "ändra definitionen av en säkerhetspolicy på radnivå" -#: sql_help.c:4520 +#: sql_help.c:4523 msgid "change the definition of a publication" msgstr "ändra definitionen av en publicering" -#: sql_help.c:4525 sql_help.c:4605 +#: sql_help.c:4528 sql_help.c:4608 msgid "change a database role" msgstr "ändra databasroll" -#: sql_help.c:4530 +#: sql_help.c:4533 msgid "change the definition of a rule" msgstr "ändra definitionen av en regel" -#: sql_help.c:4535 +#: sql_help.c:4538 msgid "change the definition of a schema" msgstr "ändra definitionen av ett schema" -#: sql_help.c:4540 +#: sql_help.c:4543 msgid "change the definition of a sequence generator" msgstr "ändra definitionen av en sekvensgenerator" -#: sql_help.c:4545 +#: sql_help.c:4548 msgid "change the definition of a foreign server" msgstr "ändra definitionen av en främmande server" -#: sql_help.c:4550 +#: sql_help.c:4553 msgid "change the definition of an extended statistics object" msgstr "ändra definitionen av ett utökat statistikobjekt" -#: sql_help.c:4555 +#: sql_help.c:4558 msgid "change the definition of a subscription" msgstr "ändra definitionen av en prenumerering" -#: sql_help.c:4560 +#: sql_help.c:4563 msgid "change a server configuration parameter" msgstr "ändra en servers konfigurationsparameter" -#: sql_help.c:4565 +#: sql_help.c:4568 msgid "change the definition of a table" msgstr "ändra definitionen av en tabell" -#: sql_help.c:4570 +#: sql_help.c:4573 msgid "change the definition of a tablespace" msgstr "ändra definitionen av ett tabellutrymme" -#: sql_help.c:4575 +#: sql_help.c:4578 msgid "change the definition of a text search configuration" msgstr "ändra definitionen av en textsökkonfiguration" -#: sql_help.c:4580 +#: sql_help.c:4583 msgid "change the definition of a text search dictionary" msgstr "ändra definitionen av en textsökordlista" -#: sql_help.c:4585 +#: sql_help.c:4588 msgid "change the definition of a text search parser" msgstr "ändra definitionen av en textsökparser" -#: sql_help.c:4590 +#: sql_help.c:4593 msgid "change the definition of a text search template" msgstr "ändra definitionen av en textsökmall" -#: sql_help.c:4595 +#: sql_help.c:4598 msgid "change the definition of a trigger" msgstr "ändra definitionen av en utlösare" -#: sql_help.c:4600 +#: sql_help.c:4603 msgid "change the definition of a type" msgstr "ändra definitionen av en typ" -#: sql_help.c:4610 +#: sql_help.c:4613 msgid "change the definition of a user mapping" msgstr "ändra definitionen av en användarmappning" -#: sql_help.c:4615 +#: sql_help.c:4618 msgid "change the definition of a view" msgstr "ändra definitionen av en vy" -#: sql_help.c:4620 +#: sql_help.c:4623 msgid "collect statistics about a database" msgstr "samla in statistik om en databas" -#: sql_help.c:4625 sql_help.c:5265 +#: sql_help.c:4628 sql_help.c:5268 msgid "start a transaction block" msgstr "starta ett transaktionsblock" -#: sql_help.c:4630 +#: sql_help.c:4633 msgid "force a write-ahead log checkpoint" msgstr "tvinga checkpoint i transaktionsloggen" -#: sql_help.c:4635 +#: sql_help.c:4638 msgid "close a cursor" msgstr "stäng en markör" -#: sql_help.c:4640 +#: sql_help.c:4643 msgid "cluster a table according to an index" msgstr "klustra en tabell efter ett index" -#: sql_help.c:4645 +#: sql_help.c:4648 msgid "define or change the comment of an object" msgstr "definiera eller ändra en kommentar på ett objekt" -#: sql_help.c:4650 sql_help.c:5100 +#: sql_help.c:4653 sql_help.c:5103 msgid "commit the current transaction" msgstr "utför den aktuella transaktionen" -#: sql_help.c:4655 +#: sql_help.c:4658 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "utför commit på en transaktion som tidigare förberetts för två-fas-commit" -#: sql_help.c:4660 +#: sql_help.c:4663 msgid "copy data between a file and a table" msgstr "kopiera data mellan en fil och en tabell" -#: sql_help.c:4665 +#: sql_help.c:4668 msgid "define a new access method" msgstr "definiera en ny accessmetod" -#: sql_help.c:4670 +#: sql_help.c:4673 msgid "define a new aggregate function" msgstr "definiera en ny aggregatfunktion" -#: sql_help.c:4675 +#: sql_help.c:4678 msgid "define a new cast" msgstr "definiera en ny typomvandling" -#: sql_help.c:4680 +#: sql_help.c:4683 msgid "define a new collation" msgstr "definiera en ny jämförelse" -#: sql_help.c:4685 +#: sql_help.c:4688 msgid "define a new encoding conversion" msgstr "definiera en ny teckenkodningskonvertering" -#: sql_help.c:4690 +#: sql_help.c:4693 msgid "create a new database" msgstr "skapa en ny databas" -#: sql_help.c:4695 +#: sql_help.c:4698 msgid "define a new domain" msgstr "definiera en ny domän" -#: sql_help.c:4700 +#: sql_help.c:4703 msgid "define a new event trigger" msgstr "definiera en ny händelseutlösare" -#: sql_help.c:4705 +#: sql_help.c:4708 msgid "install an extension" msgstr "installera en utökning" -#: sql_help.c:4710 +#: sql_help.c:4713 msgid "define a new foreign-data wrapper" msgstr "definiera en ny främmande data-omvandlare" -#: sql_help.c:4715 +#: sql_help.c:4718 msgid "define a new foreign table" msgstr "definiera en ny främmande tabell" -#: sql_help.c:4720 +#: sql_help.c:4723 msgid "define a new function" msgstr "definiera en ny funktion" -#: sql_help.c:4725 sql_help.c:4770 sql_help.c:4855 +#: sql_help.c:4728 sql_help.c:4773 sql_help.c:4858 msgid "define a new database role" msgstr "definiera en ny databasroll" -#: sql_help.c:4730 +#: sql_help.c:4733 msgid "define a new index" msgstr "skapa ett nytt index" -#: sql_help.c:4735 +#: sql_help.c:4738 msgid "define a new procedural language" msgstr "definiera ett nytt procedur-språk" -#: sql_help.c:4740 +#: sql_help.c:4743 msgid "define a new materialized view" msgstr "definiera en ny materialiserad vy" -#: sql_help.c:4745 +#: sql_help.c:4748 msgid "define a new operator" msgstr "definiera en ny operator" -#: sql_help.c:4750 +#: sql_help.c:4753 msgid "define a new operator class" msgstr "definiera en ny operatorklass" -#: sql_help.c:4755 +#: sql_help.c:4758 msgid "define a new operator family" msgstr "definiera en ny operatorfamilj" -#: sql_help.c:4760 +#: sql_help.c:4763 msgid "define a new row level security policy for a table" msgstr "definiera en ny säkerhetspolicy på radnivå för en tabell" -#: sql_help.c:4765 +#: sql_help.c:4768 msgid "define a new publication" msgstr "definiera en ny publicering" -#: sql_help.c:4775 +#: sql_help.c:4778 msgid "define a new rewrite rule" msgstr "definiera en ny omskrivningsregel" -#: sql_help.c:4780 +#: sql_help.c:4783 msgid "define a new schema" msgstr "definiera ett nytt schema" -#: sql_help.c:4785 +#: sql_help.c:4788 msgid "define a new sequence generator" msgstr "definiera en ny sekvensgenerator" -#: sql_help.c:4790 +#: sql_help.c:4793 msgid "define a new foreign server" msgstr "definiera en ny främmande server" -#: sql_help.c:4795 +#: sql_help.c:4798 msgid "define extended statistics" msgstr "definiera utökad statistik" -#: sql_help.c:4800 +#: sql_help.c:4803 msgid "define a new subscription" msgstr "definiera en ny prenumeration" -#: sql_help.c:4805 +#: sql_help.c:4808 msgid "define a new table" msgstr "definiera en ny tabell" -#: sql_help.c:4810 sql_help.c:5230 +#: sql_help.c:4813 sql_help.c:5233 msgid "define a new table from the results of a query" msgstr "definiera en ny tabell utifrån resultatet av en fråga" -#: sql_help.c:4815 +#: sql_help.c:4818 msgid "define a new tablespace" msgstr "definiera ett nytt tabellutrymme" -#: sql_help.c:4820 +#: sql_help.c:4823 msgid "define a new text search configuration" msgstr "definiera en ny textsökkonfiguration" -#: sql_help.c:4825 +#: sql_help.c:4828 msgid "define a new text search dictionary" msgstr "definiera en ny textsökordlista" -#: sql_help.c:4830 +#: sql_help.c:4833 msgid "define a new text search parser" msgstr "definiera en ny textsökparser" -#: sql_help.c:4835 +#: sql_help.c:4838 msgid "define a new text search template" msgstr "definiera en ny textsökmall" -#: sql_help.c:4840 +#: sql_help.c:4843 msgid "define a new transform" msgstr "definiera en ny transform" -#: sql_help.c:4845 +#: sql_help.c:4848 msgid "define a new trigger" msgstr "definiera en ny utlösare" -#: sql_help.c:4850 +#: sql_help.c:4853 msgid "define a new data type" msgstr "definiera en ny datatyp" -#: sql_help.c:4860 +#: sql_help.c:4863 msgid "define a new mapping of a user to a foreign server" msgstr "definiera en ny mappning av en användare till en främmande server" -#: sql_help.c:4865 +#: sql_help.c:4868 msgid "define a new view" msgstr "definiera en ny vy" -#: sql_help.c:4870 +#: sql_help.c:4873 msgid "deallocate a prepared statement" msgstr "deallokera en förberedd sats" -#: sql_help.c:4875 +#: sql_help.c:4878 msgid "define a cursor" msgstr "definiera en markör" -#: sql_help.c:4880 +#: sql_help.c:4883 msgid "delete rows of a table" msgstr "radera rader i en tabell" -#: sql_help.c:4885 +#: sql_help.c:4888 msgid "discard session state" msgstr "släng sessionstillstånd" -#: sql_help.c:4890 +#: sql_help.c:4893 msgid "execute an anonymous code block" msgstr "kör ett annonymt kodblock" -#: sql_help.c:4895 +#: sql_help.c:4898 msgid "remove an access method" msgstr "ta bort en accessmetod" -#: sql_help.c:4900 +#: sql_help.c:4903 msgid "remove an aggregate function" msgstr "ta bort en aggregatfunktioner" -#: sql_help.c:4905 +#: sql_help.c:4908 msgid "remove a cast" msgstr "ta bort en typomvandling" -#: sql_help.c:4910 +#: sql_help.c:4913 msgid "remove a collation" msgstr "ta bort en jämförelse" -#: sql_help.c:4915 +#: sql_help.c:4918 msgid "remove a conversion" msgstr "ta bort en konvertering" -#: sql_help.c:4920 +#: sql_help.c:4923 msgid "remove a database" msgstr "ta bort en databas" -#: sql_help.c:4925 +#: sql_help.c:4928 msgid "remove a domain" msgstr "ta bort en domän" -#: sql_help.c:4930 +#: sql_help.c:4933 msgid "remove an event trigger" msgstr "ta bort en händelseutlösare" -#: sql_help.c:4935 +#: sql_help.c:4938 msgid "remove an extension" msgstr "ta bort en utökning" -#: sql_help.c:4940 +#: sql_help.c:4943 msgid "remove a foreign-data wrapper" msgstr "ta bort en frammande data-omvandlare" -#: sql_help.c:4945 +#: sql_help.c:4948 msgid "remove a foreign table" msgstr "ta bort en främmande tabell" -#: sql_help.c:4950 +#: sql_help.c:4953 msgid "remove a function" msgstr "ta bort en funktion" -#: sql_help.c:4955 sql_help.c:5005 sql_help.c:5085 +#: sql_help.c:4958 sql_help.c:5008 sql_help.c:5088 msgid "remove a database role" msgstr "ta bort en databasroll" -#: sql_help.c:4960 +#: sql_help.c:4963 msgid "remove an index" msgstr "ta bort ett index" -#: sql_help.c:4965 +#: sql_help.c:4968 msgid "remove a procedural language" msgstr "ta bort ett procedur-språk" -#: sql_help.c:4970 +#: sql_help.c:4973 msgid "remove a materialized view" msgstr "ta bort en materialiserad vy" -#: sql_help.c:4975 +#: sql_help.c:4978 msgid "remove an operator" msgstr "ta bort en operator" -#: sql_help.c:4980 +#: sql_help.c:4983 msgid "remove an operator class" msgstr "ta bort en operatorklass" -#: sql_help.c:4985 +#: sql_help.c:4988 msgid "remove an operator family" msgstr "ta bort en operatorfamilj" -#: sql_help.c:4990 +#: sql_help.c:4993 msgid "remove database objects owned by a database role" msgstr "ta bort databasobjekt som ägs av databasroll" -#: sql_help.c:4995 +#: sql_help.c:4998 msgid "remove a row level security policy from a table" msgstr "ta bort en säkerhetspolicy på radnivå från en tabell" -#: sql_help.c:5000 +#: sql_help.c:5003 msgid "remove a publication" msgstr "ta bort en publicering" -#: sql_help.c:5010 +#: sql_help.c:5013 msgid "remove a rewrite rule" msgstr "ta bort en omskrivningsregel" -#: sql_help.c:5015 +#: sql_help.c:5018 msgid "remove a schema" msgstr "ta bort ett schema" -#: sql_help.c:5020 +#: sql_help.c:5023 msgid "remove a sequence" msgstr "ta bort en sekvens" -#: sql_help.c:5025 +#: sql_help.c:5028 msgid "remove a foreign server descriptor" msgstr "ta bort en främmande server-deskriptor" -#: sql_help.c:5030 +#: sql_help.c:5033 msgid "remove extended statistics" msgstr "ta bort utökad statistik" -#: sql_help.c:5035 +#: sql_help.c:5038 msgid "remove a subscription" msgstr "ta bort en prenumeration" -#: sql_help.c:5040 +#: sql_help.c:5043 msgid "remove a table" msgstr "ta bort en tabell" -#: sql_help.c:5045 +#: sql_help.c:5048 msgid "remove a tablespace" msgstr "ta bort ett tabellutrymme" -#: sql_help.c:5050 +#: sql_help.c:5053 msgid "remove a text search configuration" msgstr "ta bort en textsökkonfiguration" -#: sql_help.c:5055 +#: sql_help.c:5058 msgid "remove a text search dictionary" msgstr "ta bort en textsökordlista" -#: sql_help.c:5060 +#: sql_help.c:5063 msgid "remove a text search parser" msgstr "ta bort en textsökparser" -#: sql_help.c:5065 +#: sql_help.c:5068 msgid "remove a text search template" msgstr "ta bort en textsökmall" -#: sql_help.c:5070 +#: sql_help.c:5073 msgid "remove a transform" msgstr "ta bort en transform" -#: sql_help.c:5075 +#: sql_help.c:5078 msgid "remove a trigger" msgstr "ta bort en utlösare" -#: sql_help.c:5080 +#: sql_help.c:5083 msgid "remove a data type" msgstr "ta bort en datatyp" -#: sql_help.c:5090 +#: sql_help.c:5093 msgid "remove a user mapping for a foreign server" msgstr "ta bort en användarmappning för en främmande server" -#: sql_help.c:5095 +#: sql_help.c:5098 msgid "remove a view" msgstr "ta bort en vy" -#: sql_help.c:5105 +#: sql_help.c:5108 msgid "execute a prepared statement" msgstr "utför en förberedd sats" -#: sql_help.c:5110 +#: sql_help.c:5113 msgid "show the execution plan of a statement" msgstr "visa körningsplanen för en sats" -#: sql_help.c:5115 +#: sql_help.c:5118 msgid "retrieve rows from a query using a cursor" msgstr "hämta rader från en fråga med hjälp av en markör" -#: sql_help.c:5120 +#: sql_help.c:5123 msgid "define access privileges" msgstr "definera åtkomsträttigheter" -#: sql_help.c:5125 +#: sql_help.c:5128 msgid "import table definitions from a foreign server" msgstr "importera tabelldefinitioner från en främmande server" -#: sql_help.c:5130 +#: sql_help.c:5133 msgid "create new rows in a table" msgstr "skapa nya rader i en tabell" -#: sql_help.c:5135 +#: sql_help.c:5138 msgid "listen for a notification" msgstr "lyssna efter notifiering" -#: sql_help.c:5140 +#: sql_help.c:5143 msgid "load a shared library file" msgstr "ladda en delad biblioteksfil (shared library)" -#: sql_help.c:5145 +#: sql_help.c:5148 msgid "lock a table" msgstr "lås en tabell" -#: sql_help.c:5150 +#: sql_help.c:5153 msgid "position a cursor" msgstr "flytta en markör" -#: sql_help.c:5155 +#: sql_help.c:5158 msgid "generate a notification" msgstr "generera en notifiering" -#: sql_help.c:5160 +#: sql_help.c:5163 msgid "prepare a statement for execution" msgstr "förbered en sats för körning" -#: sql_help.c:5165 +#: sql_help.c:5168 msgid "prepare the current transaction for two-phase commit" msgstr "avbryt aktuell transaktion för två-fas-commit" -#: sql_help.c:5170 +#: sql_help.c:5173 msgid "change the ownership of database objects owned by a database role" msgstr "byt ägare på databasobjekt som ägs av en databasroll" -#: sql_help.c:5175 +#: sql_help.c:5178 msgid "replace the contents of a materialized view" msgstr "ersätt innehållet av en materialiserad vy" -#: sql_help.c:5180 +#: sql_help.c:5183 msgid "rebuild indexes" msgstr "återskapa index" -#: sql_help.c:5185 +#: sql_help.c:5188 msgid "destroy a previously defined savepoint" msgstr "ta bort en tidigare definierad sparpunkt" -#: sql_help.c:5190 +#: sql_help.c:5193 msgid "restore the value of a run-time parameter to the default value" msgstr "återställ värde av körningsparameter till standardvärdet" -#: sql_help.c:5195 +#: sql_help.c:5198 msgid "remove access privileges" msgstr "ta bort åtkomsträttigheter" -#: sql_help.c:5205 +#: sql_help.c:5208 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "avbryt en transaktion som tidigare förberetts för två-fas-commit" -#: sql_help.c:5210 +#: sql_help.c:5213 msgid "roll back to a savepoint" msgstr "rulla tillbaka till sparpunkt" -#: sql_help.c:5215 +#: sql_help.c:5218 msgid "define a new savepoint within the current transaction" msgstr "definera en ny sparpunkt i den aktuella transaktionen" -#: sql_help.c:5220 +#: sql_help.c:5223 msgid "define or change a security label applied to an object" msgstr "definiera eller ändra en säkerhetsetikett på ett objekt" -#: sql_help.c:5225 sql_help.c:5270 sql_help.c:5300 +#: sql_help.c:5228 sql_help.c:5273 sql_help.c:5303 msgid "retrieve rows from a table or view" msgstr "hämta rader från en tabell eller vy" -#: sql_help.c:5235 +#: sql_help.c:5238 msgid "change a run-time parameter" msgstr "ändra en körningsparameter" -#: sql_help.c:5240 +#: sql_help.c:5243 msgid "set constraint check timing for the current transaction" msgstr "sätt integritetsvillkorstiming för nuvarande transaktion" -#: sql_help.c:5245 +#: sql_help.c:5248 msgid "set the current user identifier of the current session" msgstr "sätt användare för den aktiva sessionen" -#: sql_help.c:5250 +#: sql_help.c:5253 msgid "set the session user identifier and the current user identifier of the current session" msgstr "sätt sessionsanvändaridentifierare och nuvarande användaridentifierare för den aktiva sessionen" -#: sql_help.c:5255 +#: sql_help.c:5258 msgid "set the characteristics of the current transaction" msgstr "sätt inställningar för nuvarande transaktionen" -#: sql_help.c:5260 +#: sql_help.c:5263 msgid "show the value of a run-time parameter" msgstr "visa värde på en körningsparameter" -#: sql_help.c:5275 +#: sql_help.c:5278 msgid "empty a table or set of tables" msgstr "töm en eller flera tabeller" -#: sql_help.c:5280 +#: sql_help.c:5283 msgid "stop listening for a notification" msgstr "sluta att lyssna efter notifiering" -#: sql_help.c:5285 +#: sql_help.c:5288 msgid "update rows of a table" msgstr "uppdatera rader i en tabell" -#: sql_help.c:5290 +#: sql_help.c:5293 msgid "garbage-collect and optionally analyze a database" msgstr "skräpsamla och eventuellt analysera en databas" -#: sql_help.c:5295 +#: sql_help.c:5298 msgid "compute a set of rows" msgstr "beräkna en mängd rader" @@ -5642,7 +5653,7 @@ msgid "%s: could not find own program executable\n" msgstr "%s: kunde inte hitta det egna programmets körbara fil\n" -#: tab-complete.c:4214 +#: tab-complete.c:4216 #, c-format msgid "" "tab completion query failed: %s\n" @@ -5668,7 +5679,7 @@ msgid "invalid variable name: \"%s\"\n" msgstr "ogiltigt variabelnamn: \"%s\"\n" -#: variables.c:393 +#: variables.c:419 #, c-format msgid "" "unrecognized value \"%s\" for \"%s\"\n" diff -Nru postgresql-10-10.17/src/bin/psql/psqlscanslash.c postgresql-10-10.19/src/bin/psql/psqlscanslash.c --- postgresql-10-10.17/src/bin/psql/psqlscanslash.c 2021-05-10 20:59:01.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/psqlscanslash.c 2021-11-08 22:25:44.000000000 +0000 @@ -1043,6 +1043,8 @@ #line 28 "psqlscanslash.l" #include "fe_utils/psqlscan_int.h" +#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e)) + /* * We must have a typedef YYSTYPE for yylex's first argument, but this lexer * doesn't presently make use of that argument, so just declare it as int. @@ -1083,7 +1085,7 @@ extern int slash_yyget_column(yyscan_t yyscanner); extern void slash_yyset_column(int column_no, yyscan_t yyscanner); -#line 1087 "psqlscanslash.c" +#line 1089 "psqlscanslash.c" /* Except for the prefix, these options should match psqlscan.l */ #define YY_NO_INPUT 1 /* @@ -1099,7 +1101,7 @@ /* * Assorted character class definitions that should match psqlscan.l. */ -#line 1103 "psqlscanslash.c" +#line 1105 "psqlscanslash.c" #define INITIAL 0 #define xslashcmd 1 @@ -1379,11 +1381,11 @@ } { -#line 116 "psqlscanslash.l" +#line 118 "psqlscanslash.l" -#line 120 "psqlscanslash.l" +#line 122 "psqlscanslash.l" /* Declare some local variables inside yylex(), for convenience */ PsqlScanState cur_state = yyextra; PQExpBuffer output_buf = cur_state->output_buf; @@ -1403,7 +1405,7 @@ * lexer; but if we are, just spit data to the output_buf until EOF. */ -#line 1407 "psqlscanslash.c" +#line 1409 "psqlscanslash.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1436,7 +1438,7 @@ case 1: /* rule 1 can match eol */ YY_RULE_SETUP -#line 139 "psqlscanslash.l" +#line 141 "psqlscanslash.l" { ECHO; } YY_BREAK /* @@ -1447,7 +1449,7 @@ case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 148 "psqlscanslash.l" +#line 150 "psqlscanslash.l" { yyless(0); cur_state->start_state = YY_START; @@ -1456,7 +1458,7 @@ YY_BREAK case 3: YY_RULE_SETUP -#line 154 "psqlscanslash.l" +#line 156 "psqlscanslash.l" { ECHO; } YY_BREAK @@ -1469,12 +1471,12 @@ case 4: /* rule 4 can match eol */ YY_RULE_SETUP -#line 165 "psqlscanslash.l" +#line 167 "psqlscanslash.l" { } YY_BREAK case 5: YY_RULE_SETUP -#line 167 "psqlscanslash.l" +#line 169 "psqlscanslash.l" { if (option_type == OT_FILEPIPE) { @@ -1492,7 +1494,7 @@ YY_BREAK case 6: YY_RULE_SETUP -#line 182 "psqlscanslash.l" +#line 184 "psqlscanslash.l" { yyless(0); BEGIN(xslasharg); @@ -1510,7 +1512,7 @@ case 7: /* rule 7 can match eol */ YY_RULE_SETUP -#line 198 "psqlscanslash.l" +#line 200 "psqlscanslash.l" { /* * Unquoted space is end of arg; do not eat. Likewise @@ -1528,7 +1530,7 @@ YY_BREAK case 8: YY_RULE_SETUP -#line 213 "psqlscanslash.l" +#line 215 "psqlscanslash.l" { *option_quote = '\''; unquoted_option_chars = 0; @@ -1537,7 +1539,7 @@ YY_BREAK case 9: YY_RULE_SETUP -#line 219 "psqlscanslash.l" +#line 221 "psqlscanslash.l" { backtick_start_offset = output_buf->len; *option_quote = '`'; @@ -1547,7 +1549,7 @@ YY_BREAK case 10: YY_RULE_SETUP -#line 226 "psqlscanslash.l" +#line 228 "psqlscanslash.l" { ECHO; *option_quote = '"'; @@ -1557,7 +1559,7 @@ YY_BREAK case 11: YY_RULE_SETUP -#line 233 "psqlscanslash.l" +#line 235 "psqlscanslash.l" { /* Possible psql variable substitution */ if (cur_state->callbacks->get_variable == NULL) @@ -1597,7 +1599,7 @@ YY_BREAK case 12: YY_RULE_SETUP -#line 270 "psqlscanslash.l" +#line 272 "psqlscanslash.l" { psqlscan_escape_variable(cur_state, yytext, yyleng, PQUOTE_SQL_LITERAL); @@ -1607,7 +1609,7 @@ YY_BREAK case 13: YY_RULE_SETUP -#line 278 "psqlscanslash.l" +#line 280 "psqlscanslash.l" { psqlscan_escape_variable(cur_state, yytext, yyleng, PQUOTE_SQL_IDENT); @@ -1617,7 +1619,7 @@ YY_BREAK case 14: YY_RULE_SETUP -#line 285 "psqlscanslash.l" +#line 287 "psqlscanslash.l" { /* Throw back everything but the colon */ yyless(1); @@ -1627,7 +1629,7 @@ YY_BREAK case 15: YY_RULE_SETUP -#line 292 "psqlscanslash.l" +#line 294 "psqlscanslash.l" { /* Throw back everything but the colon */ yyless(1); @@ -1637,7 +1639,7 @@ YY_BREAK case 16: YY_RULE_SETUP -#line 299 "psqlscanslash.l" +#line 301 "psqlscanslash.l" { unquoted_option_chars++; ECHO; @@ -1651,42 +1653,42 @@ */ case 17: YY_RULE_SETUP -#line 312 "psqlscanslash.l" +#line 314 "psqlscanslash.l" { BEGIN(xslasharg); } YY_BREAK case 18: YY_RULE_SETUP -#line 314 "psqlscanslash.l" +#line 316 "psqlscanslash.l" { appendPQExpBufferChar(output_buf, '\''); } YY_BREAK case 19: YY_RULE_SETUP -#line 316 "psqlscanslash.l" +#line 318 "psqlscanslash.l" { appendPQExpBufferChar(output_buf, '\n'); } YY_BREAK case 20: YY_RULE_SETUP -#line 317 "psqlscanslash.l" +#line 319 "psqlscanslash.l" { appendPQExpBufferChar(output_buf, '\t'); } YY_BREAK case 21: YY_RULE_SETUP -#line 318 "psqlscanslash.l" +#line 320 "psqlscanslash.l" { appendPQExpBufferChar(output_buf, '\b'); } YY_BREAK case 22: YY_RULE_SETUP -#line 319 "psqlscanslash.l" +#line 321 "psqlscanslash.l" { appendPQExpBufferChar(output_buf, '\r'); } YY_BREAK case 23: YY_RULE_SETUP -#line 320 "psqlscanslash.l" +#line 322 "psqlscanslash.l" { appendPQExpBufferChar(output_buf, '\f'); } YY_BREAK case 24: YY_RULE_SETUP -#line 322 "psqlscanslash.l" +#line 324 "psqlscanslash.l" { /* octal case */ appendPQExpBufferChar(output_buf, @@ -1695,7 +1697,7 @@ YY_BREAK case 25: YY_RULE_SETUP -#line 328 "psqlscanslash.l" +#line 330 "psqlscanslash.l" { /* hex case */ appendPQExpBufferChar(output_buf, @@ -1704,13 +1706,13 @@ YY_BREAK case 26: YY_RULE_SETUP -#line 334 "psqlscanslash.l" +#line 336 "psqlscanslash.l" { psqlscan_emit(cur_state, yytext + 1, 1); } YY_BREAK case 27: /* rule 27 can match eol */ YY_RULE_SETUP -#line 336 "psqlscanslash.l" +#line 338 "psqlscanslash.l" { ECHO; } YY_BREAK @@ -1721,7 +1723,7 @@ */ case 28: YY_RULE_SETUP -#line 346 "psqlscanslash.l" +#line 348 "psqlscanslash.l" { /* In an inactive \if branch, don't evaluate the command */ if (cur_state->cb_passthrough == NULL || @@ -1732,7 +1734,7 @@ YY_BREAK case 29: YY_RULE_SETUP -#line 354 "psqlscanslash.l" +#line 356 "psqlscanslash.l" { /* Possible psql variable substitution */ if (cur_state->callbacks->get_variable == NULL) @@ -1762,7 +1764,7 @@ YY_BREAK case 30: YY_RULE_SETUP -#line 381 "psqlscanslash.l" +#line 383 "psqlscanslash.l" { psqlscan_escape_variable(cur_state, yytext, yyleng, PQUOTE_SHELL_ARG); @@ -1770,7 +1772,7 @@ YY_BREAK case 31: YY_RULE_SETUP -#line 386 "psqlscanslash.l" +#line 388 "psqlscanslash.l" { /* Throw back everything but the colon */ yyless(1); @@ -1780,7 +1782,7 @@ case 32: /* rule 32 can match eol */ YY_RULE_SETUP -#line 392 "psqlscanslash.l" +#line 394 "psqlscanslash.l" { ECHO; } YY_BREAK @@ -1788,7 +1790,7 @@ /* double-quoted text: copy verbatim, including the double quotes */ case 33: YY_RULE_SETUP -#line 399 "psqlscanslash.l" +#line 401 "psqlscanslash.l" { ECHO; BEGIN(xslasharg); @@ -1797,7 +1799,7 @@ case 34: /* rule 34 can match eol */ YY_RULE_SETUP -#line 404 "psqlscanslash.l" +#line 406 "psqlscanslash.l" { ECHO; } YY_BREAK @@ -1807,7 +1809,7 @@ case 35: /* rule 35 can match eol */ YY_RULE_SETUP -#line 412 "psqlscanslash.l" +#line 414 "psqlscanslash.l" { if (output_buf->len > 0) ECHO; @@ -1815,7 +1817,7 @@ YY_BREAK case 36: YY_RULE_SETUP -#line 417 "psqlscanslash.l" +#line 419 "psqlscanslash.l" { ECHO; } YY_BREAK @@ -1823,7 +1825,7 @@ /* at end of command, eat a double backslash, but not anything else */ case 37: YY_RULE_SETUP -#line 424 "psqlscanslash.l" +#line 426 "psqlscanslash.l" { cur_state->start_state = YY_START; return LEXRES_OK; @@ -1832,7 +1834,7 @@ case 38: /* rule 38 can match eol */ YY_RULE_SETUP -#line 429 "psqlscanslash.l" +#line 431 "psqlscanslash.l" { yyless(0); cur_state->start_state = YY_START; @@ -1849,7 +1851,7 @@ case YY_STATE_EOF(xslashdquote): case YY_STATE_EOF(xslashwholeline): case YY_STATE_EOF(xslashend): -#line 437 "psqlscanslash.l" +#line 439 "psqlscanslash.l" { if (cur_state->buffer_stack == NULL) { @@ -1867,10 +1869,10 @@ YY_BREAK case 39: YY_RULE_SETUP -#line 452 "psqlscanslash.l" +#line 454 "psqlscanslash.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1874 "psqlscanslash.c" +#line 1876 "psqlscanslash.c" case YY_END_OF_BUFFER: { @@ -2986,7 +2988,7 @@ #define YYTABLES_NAME "yytables" -#line 452 "psqlscanslash.l" +#line 454 "psqlscanslash.l" /* @@ -3269,7 +3271,7 @@ { if (downcase && !inquotes) *cp = pg_tolower((unsigned char) *cp); - cp += PQmblen(cp, encoding); + cp += PQmblenBounded(cp, encoding); } } } diff -Nru postgresql-10-10.17/src/bin/psql/psqlscanslash.l postgresql-10-10.19/src/bin/psql/psqlscanslash.l --- postgresql-10-10.17/src/bin/psql/psqlscanslash.l 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/psqlscanslash.l 2021-11-08 22:05:38.000000000 +0000 @@ -27,6 +27,8 @@ %{ #include "fe_utils/psqlscan_int.h" +#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e)) + /* * We must have a typedef YYSTYPE for yylex's first argument, but this lexer * doesn't presently make use of that argument, so just declare it as int. @@ -730,7 +732,7 @@ { if (downcase && !inquotes) *cp = pg_tolower((unsigned char) *cp); - cp += PQmblen(cp, encoding); + cp += PQmblenBounded(cp, encoding); } } } diff -Nru postgresql-10-10.17/src/bin/psql/sql_help.c postgresql-10-10.19/src/bin/psql/sql_help.c --- postgresql-10-10.17/src/bin/psql/sql_help.c 2021-05-10 20:59:01.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/sql_help.c 2021-11-08 22:25:44.000000000 +0000 @@ -494,7 +494,8 @@ "%s\n" "\n" " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" - " IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF\n" + " IMMUTABLE | STABLE | VOLATILE\n" + " [ NOT ] LEAKPROOF\n" " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" " PARALLEL { UNSAFE | RESTRICTED | SAFE }\n" " COST %s\n" @@ -1892,11 +1893,12 @@ appendPQExpBuffer(buf, "CREATE EVENT TRIGGER %s\n" " ON %s\n" - " [ WHEN %s IN (filter_value [, ... ]) [ AND ... ] ]\n" + " [ WHEN %s IN (%s [, ... ]) [ AND ... ] ]\n" " EXECUTE PROCEDURE %s()", _("name"), _("event"), _("filter_variable"), + _("filter_value"), _("function_name")); } @@ -2005,9 +2007,10 @@ " { LANGUAGE %s\n" " | TRANSFORM { FOR TYPE %s } [, ... ]\n" " | WINDOW\n" - " | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF\n" - " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" - " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" + " | { IMMUTABLE | STABLE | VOLATILE }\n" + " | [ NOT ] LEAKPROOF\n" + " | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT }\n" + " | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }\n" " | PARALLEL { UNSAFE | RESTRICTED | SAFE }\n" " | COST %s\n" " | ROWS %s\n" @@ -3116,7 +3119,7 @@ sql_help_DROP_STATISTICS(PQExpBuffer buf) { appendPQExpBuffer(buf, - "DROP STATISTICS [ IF EXISTS ] %s [, ...]", + "DROP STATISTICS [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]", _("name")); } @@ -4469,7 +4472,7 @@ { "ALTER FUNCTION", N_("change the definition of a function"), sql_help_ALTER_FUNCTION, - 22 }, + 23 }, { "ALTER GROUP", N_("change role name or membership"), @@ -4719,7 +4722,7 @@ { "CREATE FUNCTION", N_("define a new function"), sql_help_CREATE_FUNCTION, - 17 }, + 18 }, { "CREATE GROUP", N_("define a new database role"), diff -Nru postgresql-10-10.17/src/bin/psql/stringutils.c postgresql-10-10.19/src/bin/psql/stringutils.c --- postgresql-10-10.17/src/bin/psql/stringutils.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/stringutils.c 2021-11-08 22:05:38.000000000 +0000 @@ -12,6 +12,8 @@ #include "common.h" #include "stringutils.h" +#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e)) + /* * Replacement for strtok() (a.k.a. poor man's flex) @@ -143,7 +145,7 @@ /* okay, we have a quoted token, now scan for the closer */ char thisquote = *p++; - for (; *p; p += PQmblen(p, encoding)) + for (; *p; p += PQmblenBounded(p, encoding)) { if (*p == escape && p[1] != '\0') p++; /* process escaped anything */ @@ -262,7 +264,7 @@ else if (c == escape && src[1] != '\0') src++; /* process escaped character */ - i = PQmblen(src, encoding); + i = PQmblenBounded(src, encoding); while (i--) *dst++ = *src++; } @@ -322,7 +324,7 @@ else if (strchr(entails_quote, c)) need_quotes = true; - i = PQmblen(src, encoding); + i = PQmblenBounded(src, encoding); while (i--) *dst++ = *src++; } diff -Nru postgresql-10-10.17/src/bin/psql/tab-complete.c postgresql-10-10.19/src/bin/psql/tab-complete.c --- postgresql-10-10.17/src/bin/psql/tab-complete.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/psql/tab-complete.c 2021-11-08 22:05:38.000000000 +0000 @@ -60,6 +60,8 @@ #define completion_matches rl_completion_matches #endif +#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e)) + /* word break characters */ #define WORD_BREAKS "\t\n@$><=;|&{() " @@ -3787,7 +3789,7 @@ while (*pstr) { char_length++; - pstr += PQmblen(pstr, pset.encoding); + pstr += PQmblenBounded(pstr, pset.encoding); } /* Free any prior result */ diff -Nru postgresql-10-10.17/src/bin/scripts/common.c postgresql-10-10.19/src/bin/scripts/common.c --- postgresql-10-10.17/src/bin/scripts/common.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/scripts/common.c 2021-11-08 22:05:38.000000000 +0000 @@ -21,6 +21,8 @@ #include "fe_utils/connect.h" #include "fe_utils/string_utils.h" +#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e)) + static PGcancel *volatile cancelConn = NULL; bool CancelRequested = false; @@ -303,7 +305,7 @@ cp++; } else - cp += PQmblen(cp, encoding); + cp += PQmblenBounded(cp, encoding); } *table = pg_strdup(spec); (*table)[cp - spec] = '\0'; /* no strndup */ diff -Nru postgresql-10-10.17/src/bin/scripts/po/de.po postgresql-10-10.19/src/bin/scripts/po/de.po --- postgresql-10-10.17/src/bin/scripts/po/de.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/scripts/po/de.po 2021-11-08 22:05:38.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-04-08 16:05+0000\n" +"POT-Creation-Date: 2021-11-06 16:58+0000\n" "PO-Revision-Date: 2019-11-08 11:44+0100\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" @@ -69,46 +69,46 @@ msgid "invalid output format (internal error): %d" msgstr "ungültiges Ausgabeformat (interner Fehler): %d" -#: clusterdb.c:111 clusterdb.c:130 createdb.c:119 createdb.c:138 -#: createuser.c:175 createuser.c:190 dropdb.c:94 dropdb.c:103 dropdb.c:111 -#: dropuser.c:90 dropuser.c:105 dropuser.c:120 pg_isready.c:93 pg_isready.c:107 -#: reindexdb.c:131 reindexdb.c:150 vacuumdb.c:215 vacuumdb.c:234 +#: clusterdb.c:107 clusterdb.c:126 createdb.c:120 createdb.c:139 +#: createuser.c:176 createuser.c:191 dropdb.c:95 dropdb.c:104 dropdb.c:112 +#: dropuser.c:91 dropuser.c:106 dropuser.c:121 pg_isready.c:93 pg_isready.c:107 +#: reindexdb.c:127 reindexdb.c:146 vacuumdb.c:213 vacuumdb.c:232 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: clusterdb.c:128 createdb.c:136 createuser.c:188 dropdb.c:109 dropuser.c:103 -#: pg_isready.c:105 reindexdb.c:148 vacuumdb.c:232 +#: clusterdb.c:124 createdb.c:137 createuser.c:189 dropdb.c:110 dropuser.c:104 +#: pg_isready.c:105 reindexdb.c:144 vacuumdb.c:230 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: clusterdb.c:140 +#: clusterdb.c:143 #, 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" -#: clusterdb.c:147 +#: clusterdb.c:150 #, c-format msgid "%s: cannot cluster specific table(s) in all databases\n" msgstr "%s: kann nicht bestimmte Tabelle(n) in allen Datenbanken clustern\n" -#: clusterdb.c:216 +#: clusterdb.c:217 #, c-format msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: Clustern der Tabelle »%s« in Datenbank »%s« fehlgeschlagen: %s" -#: clusterdb.c:219 +#: clusterdb.c:220 #, c-format msgid "%s: clustering of database \"%s\" failed: %s" msgstr "%s: Clustern der Datenbank »%s« fehlgeschlagen: %s" -#: clusterdb.c:252 +#: clusterdb.c:248 #, c-format msgid "%s: clustering database \"%s\"\n" msgstr "%s: clustere Datenbank »%s«\n" -#: clusterdb.c:273 +#: clusterdb.c:264 #, c-format msgid "" "%s clusters all previously clustered tables in a database.\n" @@ -117,19 +117,19 @@ "%s clustert alle vorher geclusterten Tabellen in einer Datenbank.\n" "\n" -#: clusterdb.c:274 createdb.c:261 createuser.c:352 dropdb.c:156 dropuser.c:161 -#: pg_isready.c:222 reindexdb.c:402 vacuumdb.c:1014 +#: clusterdb.c:265 createdb.c:268 createuser.c:359 dropdb.c:162 dropuser.c:168 +#: pg_isready.c:222 reindexdb.c:399 vacuumdb.c:1004 #, c-format msgid "Usage:\n" msgstr "Aufruf:\n" -#: clusterdb.c:275 reindexdb.c:403 vacuumdb.c:1015 +#: clusterdb.c:266 reindexdb.c:400 vacuumdb.c:1005 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [DBNAME]\n" -#: clusterdb.c:276 createdb.c:263 createuser.c:354 dropdb.c:158 dropuser.c:163 -#: pg_isready.c:225 reindexdb.c:404 vacuumdb.c:1016 +#: clusterdb.c:267 createdb.c:270 createuser.c:361 dropdb.c:164 dropuser.c:170 +#: pg_isready.c:225 reindexdb.c:401 vacuumdb.c:1006 #, c-format msgid "" "\n" @@ -138,50 +138,50 @@ "\n" "Optionen:\n" -#: clusterdb.c:277 +#: clusterdb.c:268 #, c-format msgid " -a, --all cluster all databases\n" msgstr " -a, --all clustere alle Datenbanken\n" -#: clusterdb.c:278 +#: clusterdb.c:269 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" msgstr " -d, --dbname=DBNAME zu clusternde Datenbank\n" -#: clusterdb.c:279 createuser.c:358 dropdb.c:159 dropuser.c:164 reindexdb.c:407 +#: clusterdb.c:270 createuser.c:365 dropdb.c:165 dropuser.c:171 reindexdb.c:404 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr "" " -e, --echo zeige die Befehle, die an den Server\n" " gesendet werden\n" -#: clusterdb.c:280 reindexdb.c:409 +#: clusterdb.c:271 reindexdb.c:406 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet unterdrücke alle Mitteilungen\n" -#: clusterdb.c:281 +#: clusterdb.c:272 #, c-format msgid " -t, --table=TABLE cluster specific table(s) only\n" msgstr " -t, --table=TABELLE clustere nur bestimmte Tabelle(n)\n" -#: clusterdb.c:282 reindexdb.c:413 +#: clusterdb.c:273 reindexdb.c:410 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose erzeuge viele Meldungen\n" -#: clusterdb.c:283 createuser.c:370 dropdb.c:161 dropuser.c:167 reindexdb.c:414 +#: clusterdb.c:274 createuser.c:377 dropdb.c:167 dropuser.c:174 reindexdb.c:411 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" -#: clusterdb.c:284 createuser.c:375 dropdb.c:163 dropuser.c:169 reindexdb.c:415 +#: clusterdb.c:275 createuser.c:382 dropdb.c:169 dropuser.c:176 reindexdb.c:412 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" -#: clusterdb.c:285 createdb.c:274 createuser.c:376 dropdb.c:164 dropuser.c:170 -#: pg_isready.c:231 reindexdb.c:416 vacuumdb.c:1032 +#: clusterdb.c:276 createdb.c:281 createuser.c:383 dropdb.c:170 dropuser.c:177 +#: pg_isready.c:231 reindexdb.c:413 vacuumdb.c:1022 #, c-format msgid "" "\n" @@ -190,41 +190,41 @@ "\n" "Verbindungsoptionen:\n" -#: clusterdb.c:286 createuser.c:377 dropdb.c:165 dropuser.c:171 reindexdb.c:417 -#: vacuumdb.c:1033 +#: clusterdb.c:277 createuser.c:384 dropdb.c:171 dropuser.c:178 reindexdb.c:414 +#: vacuumdb.c:1023 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME Name des Datenbankservers oder Socket-Verzeichnis\n" -#: clusterdb.c:287 createuser.c:378 dropdb.c:166 dropuser.c:172 reindexdb.c:418 -#: vacuumdb.c:1034 +#: clusterdb.c:278 createuser.c:385 dropdb.c:172 dropuser.c:179 reindexdb.c:415 +#: vacuumdb.c:1024 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT Port des Datenbankservers\n" -#: clusterdb.c:288 dropdb.c:167 reindexdb.c:419 vacuumdb.c:1035 +#: clusterdb.c:279 dropdb.c:173 reindexdb.c:416 vacuumdb.c:1025 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=NAME Datenbankbenutzername\n" -#: clusterdb.c:289 createuser.c:380 dropdb.c:168 dropuser.c:174 reindexdb.c:420 -#: vacuumdb.c:1036 +#: clusterdb.c:280 createuser.c:387 dropdb.c:174 dropuser.c:181 reindexdb.c:417 +#: vacuumdb.c:1026 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password niemals nach Passwort fragen\n" -#: clusterdb.c:290 createuser.c:381 dropdb.c:169 dropuser.c:175 reindexdb.c:421 -#: vacuumdb.c:1037 +#: clusterdb.c:281 createuser.c:388 dropdb.c:175 dropuser.c:182 reindexdb.c:418 +#: vacuumdb.c:1027 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password Passwortfrage erzwingen\n" -#: clusterdb.c:291 dropdb.c:170 reindexdb.c:422 vacuumdb.c:1038 +#: clusterdb.c:282 dropdb.c:176 reindexdb.c:419 vacuumdb.c:1028 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=DBNAME alternative Wartungsdatenbank\n" -#: clusterdb.c:292 +#: clusterdb.c:283 #, c-format msgid "" "\n" @@ -234,8 +234,8 @@ "Für weitere Informationen lesen Sie bitte die Beschreibung des\n" "SQL-Befehls CLUSTER.\n" -#: clusterdb.c:293 createdb.c:282 createuser.c:382 dropdb.c:171 dropuser.c:176 -#: pg_isready.c:236 reindexdb.c:424 vacuumdb.c:1040 +#: clusterdb.c:284 createdb.c:289 createuser.c:389 dropdb.c:177 dropuser.c:183 +#: pg_isready.c:236 reindexdb.c:421 vacuumdb.c:1030 #, c-format msgid "" "\n" @@ -244,31 +244,31 @@ "\n" "Berichten Sie Fehler an .\n" -#: common.c:83 common.c:129 +#: common.c:86 common.c:144 msgid "Password: " msgstr "Passwort: " -#: common.c:116 +#: common.c:131 #, c-format msgid "%s: could not connect to database %s: out of memory\n" msgstr "%s: konnte nicht mit Datenbank %s verbinden: Speicher aufgebraucht\n" -#: common.c:143 +#: common.c:158 #, c-format msgid "%s: could not connect to database %s: %s" msgstr "%s: konnte nicht mit Datenbank %s verbinden: %s" -#: common.c:195 common.c:223 +#: common.c:214 common.c:242 #, c-format msgid "%s: query failed: %s" msgstr "%s: Anfrage fehlgeschlagen: %s" -#: common.c:197 common.c:225 +#: common.c:216 common.c:244 #, c-format msgid "%s: query was: %s\n" msgstr "%s: Anfrage war: %s\n" -#: common.c:343 +#: common.c:362 #, c-format msgid "%s: query returned %d row instead of one: %s\n" msgid_plural "%s: query returned %d rows instead of one: %s\n" @@ -276,63 +276,63 @@ msgstr[1] "%s: Anfrage ergab %d Zeilen anstatt einer: %s\n" #. translator: abbreviation for "yes" -#: common.c:369 +#: common.c:388 msgid "y" msgstr "j" #. translator: abbreviation for "no" -#: common.c:371 +#: common.c:390 msgid "n" msgstr "n" #. translator: This is a question followed by the translated options for #. "yes" and "no". -#: common.c:381 +#: common.c:400 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s) " -#: common.c:395 +#: common.c:414 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "Bitte antworten Sie »%s« oder »%s«.\n" -#: common.c:474 common.c:511 +#: common.c:493 common.c:530 #, c-format msgid "Cancel request sent\n" msgstr "Abbruchsanforderung gesendet\n" -#: common.c:477 common.c:515 +#: common.c:496 common.c:534 #, c-format msgid "Could not send cancel request: %s" msgstr "Konnte Abbruchsanforderung nicht senden: %s" -#: createdb.c:146 +#: createdb.c:147 #, c-format msgid "%s: only one of --locale and --lc-ctype can be specified\n" msgstr "%s: --locale und --lc-ctype können nicht zusammen angegeben werden\n" -#: createdb.c:152 +#: createdb.c:153 #, c-format msgid "%s: only one of --locale and --lc-collate can be specified\n" msgstr "%s: --locale und --lc-collate können nicht zusammen angegeben werden\n" -#: createdb.c:164 +#: createdb.c:165 #, c-format msgid "%s: \"%s\" is not a valid encoding name\n" msgstr "%s: »%s« ist kein gültiger Kodierungsname\n" -#: createdb.c:222 +#: createdb.c:229 #, c-format msgid "%s: database creation failed: %s" msgstr "%s: Erzeugen der Datenbank ist fehlgeschlagen: %s" -#: createdb.c:242 +#: createdb.c:249 #, c-format msgid "%s: comment creation failed (database was created): %s" msgstr "%s: Erzeugen des Kommentars ist fehlgeschlagen (Datenbank wurde erzeugt): %s" -#: createdb.c:260 +#: createdb.c:267 #, c-format msgid "" "%s creates a PostgreSQL database.\n" @@ -341,94 +341,94 @@ "%s erzeugt eine PostgreSQL-Datenbank.\n" "\n" -#: createdb.c:262 +#: createdb.c:269 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" msgstr " %s [OPTION]... [DBNAME] [BESCHREIBUNG]\n" -#: createdb.c:264 +#: createdb.c:271 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" msgstr " -D, --tablespace=TABLESPACE Standard-Tablespace der Datenbank\n" -#: createdb.c:265 +#: createdb.c:272 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr "" " -e, --echo zeige die Befehle, die an den Server\n" " gesendet werden\n" -#: createdb.c:266 +#: createdb.c:273 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" msgstr " -E, --encoding=KODIERUNG Kodierung für die Datenbank\n" -#: createdb.c:267 +#: createdb.c:274 #, 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:268 +#: createdb.c:275 #, 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:269 +#: createdb.c:276 #, 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:270 +#: createdb.c:277 #, 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:271 +#: createdb.c:278 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" msgstr " -T, --template=TEMPLATE zu kopierende Template-Datenbank\n" -#: createdb.c:272 +#: createdb.c:279 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" -#: createdb.c:273 +#: createdb.c:280 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" -#: createdb.c:275 +#: createdb.c:282 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME Name des Datenbankservers oder Socket-Verzeichnis\n" -#: createdb.c:276 +#: createdb.c:283 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT Port des Datenbankservers\n" -#: createdb.c:277 +#: createdb.c:284 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=NAME Datenbankbenutzername\n" -#: createdb.c:278 +#: createdb.c:285 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password niemals nach Passwort fragen\n" -#: createdb.c:279 +#: createdb.c:286 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password Passwortfrage erzwingen\n" -#: createdb.c:280 +#: createdb.c:287 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=DBNAME alternative Wartungsdatenbank\n" -#: createdb.c:281 +#: createdb.c:288 #, c-format msgid "" "\n" @@ -438,51 +438,51 @@ "Wenn nichts anderes angegeben ist, dann wird eine Datenbank mit dem Namen\n" "des aktuellen Benutzers erzeugt.\n" -#: createuser.c:154 +#: createuser.c:155 #, c-format msgid "%s: invalid value for --connection-limit: %s\n" msgstr "%s: ungültiger Wert für --connection-limit: %s\n" -#: createuser.c:198 +#: createuser.c:199 msgid "Enter name of role to add: " msgstr "Geben Sie den Namen der neuen Rolle ein: " -#: createuser.c:215 +#: createuser.c:216 msgid "Enter password for new role: " msgstr "Geben Sie das Passwort der neuen Rolle ein: " -#: createuser.c:217 +#: createuser.c:218 msgid "Enter it again: " msgstr "Geben Sie es noch einmal ein: " -#: createuser.c:220 +#: createuser.c:221 #, c-format msgid "Passwords didn't match.\n" msgstr "Passwörter stimmten nicht überein.\n" -#: createuser.c:228 +#: createuser.c:229 msgid "Shall the new role be a superuser?" msgstr "Soll die neue Rolle ein Superuser sein?" -#: createuser.c:243 +#: createuser.c:244 msgid "Shall the new role be allowed to create databases?" msgstr "Soll die neue Rolle Datenbanken erzeugen dürfen?" -#: createuser.c:251 +#: createuser.c:252 msgid "Shall the new role be allowed to create more new roles?" msgstr "Soll die neue Rolle weitere neue Rollen erzeugen dürfen?" -#: createuser.c:281 +#: createuser.c:288 #, c-format msgid "%s: password encryption failed: %s" msgstr "%s: Passwortverschlüsselung ist fehlgeschlagen: %s" -#: createuser.c:336 +#: createuser.c:343 #, c-format msgid "%s: creation of new role failed: %s" msgstr "%s: Erzeugen der neuen Rolle fehlgeschlagen: %s" -#: createuser.c:351 +#: createuser.c:358 #, c-format msgid "" "%s creates a new PostgreSQL role.\n" @@ -491,34 +491,34 @@ "%s erzeugt eine neue PostgreSQL-Rolle.\n" "\n" -#: createuser.c:353 dropuser.c:162 +#: createuser.c:360 dropuser.c:169 #, c-format msgid " %s [OPTION]... [ROLENAME]\n" msgstr " %s [OPTION]... [ROLLENNAME]\n" -#: createuser.c:355 +#: createuser.c:362 #, c-format msgid " -c, --connection-limit=N connection limit for role (default: no limit)\n" msgstr "" " -c, --connection-limit=N Hochzahl an Verbindungen für Rolle\n" " (Voreinstellung: keine Begrenzung)\n" -#: createuser.c:356 +#: createuser.c:363 #, c-format msgid " -d, --createdb role can create new databases\n" msgstr " -d, --createdb Rolle kann neue Datenbanken erzeugen\n" -#: createuser.c:357 +#: createuser.c:364 #, c-format msgid " -D, --no-createdb role cannot create databases (default)\n" msgstr " -D, --no-createdb Rolle kann keine Datenbanken erzeugen (Voreinstellung)\n" -#: createuser.c:359 +#: createuser.c:366 #, c-format msgid " -g, --role=ROLE new role will be a member of this role\n" msgstr " -g, --role=ROLLE neue Rolle wird Mitglied dieser Rolle\n" -#: createuser.c:360 +#: createuser.c:367 #, c-format msgid "" " -i, --inherit role inherits privileges of roles it is a\n" @@ -527,47 +527,47 @@ " -i, --inherit Rolle erbt alle Privilegien von Rollen, deren\n" " Mitglied sie ist (Voreinstellung)\n" -#: createuser.c:362 +#: createuser.c:369 #, c-format msgid " -I, --no-inherit role does not inherit privileges\n" msgstr " -I, --no-inherit Rolle erbt keine Privilegien\n" -#: createuser.c:363 +#: createuser.c:370 #, c-format msgid " -l, --login role can login (default)\n" msgstr " -l, --login Rolle kann sich anmelden (Voreinstellung)\n" -#: createuser.c:364 +#: createuser.c:371 #, c-format msgid " -L, --no-login role cannot login\n" msgstr " -L, --no-login Rolle kann sich nicht anmelden\n" -#: createuser.c:365 +#: createuser.c:372 #, c-format msgid " -P, --pwprompt assign a password to new role\n" msgstr " -P, --pwprompt weise der neuen Rolle ein Passwort zu\n" -#: createuser.c:366 +#: createuser.c:373 #, c-format msgid " -r, --createrole role can create new roles\n" msgstr " -r, --createrole Rolle kann neue Rollen erzeugen\n" -#: createuser.c:367 +#: createuser.c:374 #, c-format msgid " -R, --no-createrole role cannot create roles (default)\n" msgstr " -R, --no-createrole Rolle kann keine Rollen erzeugen (Voreinstellung)\n" -#: createuser.c:368 +#: createuser.c:375 #, c-format msgid " -s, --superuser role will be superuser\n" msgstr " -s, --superuser Rolle wird Superuser\n" -#: createuser.c:369 +#: createuser.c:376 #, c-format msgid " -S, --no-superuser role will not be superuser (default)\n" msgstr " -S, --no-superuser Rolle wird kein Superuser (Voreinstellung)\n" -#: createuser.c:371 +#: createuser.c:378 #, c-format msgid "" " --interactive prompt for missing role name and attributes rather\n" @@ -576,43 +576,43 @@ " --interactive nach fehlenden Rollennamen und -attributen fragen\n" " anstatt Vorgabewerte zu nehmen\n" -#: createuser.c:373 +#: createuser.c:380 #, c-format msgid " --replication role can initiate replication\n" msgstr " --replication Rolle kann Replikation einleiten\n" -#: createuser.c:374 +#: createuser.c:381 #, c-format msgid " --no-replication role cannot initiate replication\n" msgstr " --no-replication Rolle kann Replikation nicht einleiten\n" -#: createuser.c:379 +#: createuser.c:386 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to create)\n" msgstr "" " -U, --username=NAME Datenbankbenutzername für die Verbindung\n" " (nicht der Name des neuen Benutzers)\n" -#: dropdb.c:102 +#: dropdb.c:103 #, c-format msgid "%s: missing required argument database name\n" msgstr "%s: Datenbankname als Argument fehlt\n" -#: dropdb.c:117 +#: dropdb.c:118 #, c-format msgid "Database \"%s\" will be permanently removed.\n" msgstr "Datenbank »%s« wird unwiderruflich gelöscht werden.\n" -#: dropdb.c:118 dropuser.c:128 +#: dropdb.c:119 dropuser.c:129 msgid "Are you sure?" msgstr "Sind Sie sich sicher?" -#: dropdb.c:140 +#: dropdb.c:146 #, c-format msgid "%s: database removal failed: %s" msgstr "%s: Löschen der Datenbank fehlgeschlagen: %s" -#: dropdb.c:155 +#: dropdb.c:161 #, c-format msgid "" "%s removes a PostgreSQL database.\n" @@ -621,41 +621,41 @@ "%s löscht eine PostgreSQL-Datenbank.\n" "\n" -#: dropdb.c:157 +#: dropdb.c:163 #, c-format msgid " %s [OPTION]... DBNAME\n" msgstr " %s [OPTION]... DBNAME\n" -#: dropdb.c:160 +#: dropdb.c:166 #, c-format msgid " -i, --interactive prompt before deleting anything\n" msgstr " -i, --interactive frage nach, bevor irgendetwas gelöscht wird\n" -#: dropdb.c:162 +#: dropdb.c:168 #, c-format msgid " --if-exists don't report error if database doesn't exist\n" msgstr " --if-exists keinen Fehler ausgeben, wenn Datenbank nicht existiert\n" -#: dropuser.c:113 +#: dropuser.c:114 msgid "Enter name of role to drop: " msgstr "Geben Sie den Namen der zu löschenden Rolle ein: " -#: dropuser.c:119 +#: dropuser.c:120 #, c-format msgid "%s: missing required argument role name\n" msgstr "%s: Rollenname als Argument fehlt\n" -#: dropuser.c:127 +#: dropuser.c:128 #, c-format msgid "Role \"%s\" will be permanently removed.\n" msgstr "Rolle »%s« wird unwiderruflich gelöscht werden.\n" -#: dropuser.c:145 +#: dropuser.c:152 #, c-format msgid "%s: removal of role \"%s\" failed: %s" msgstr "%s: Löschen der Rolle »%s« fehlgeschlagen: %s" -#: dropuser.c:160 +#: dropuser.c:167 #, c-format msgid "" "%s removes a PostgreSQL role.\n" @@ -664,7 +664,7 @@ "%s löscht eine PostgreSQL-Rolle.\n" "\n" -#: dropuser.c:165 +#: dropuser.c:172 #, c-format msgid "" " -i, --interactive prompt before deleting anything, and prompt for\n" @@ -673,12 +673,12 @@ " -i, --interactive nachfragen, bevor irgendetwas gelöscht wird, und\n" " nach Rollennamen fragen, wenn nicht angegeben\n" -#: dropuser.c:168 +#: dropuser.c:175 #, c-format msgid " --if-exists don't report error if user doesn't exist\n" msgstr " --if-exists keinen Fehler ausgeben, wenn Benutzer nicht existiert\n" -#: dropuser.c:173 +#: dropuser.c:180 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to drop)\n" msgstr "" @@ -774,77 +774,77 @@ msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=NAME Datenbankbenutzername\n" -#: reindexdb.c:160 +#: reindexdb.c:163 #, c-format msgid "%s: cannot reindex all databases and a specific one at the same time\n" msgstr "%s: kann nicht alle Datenbanken und eine bestimmte gleichzeitig reindizieren\n" -#: reindexdb.c:165 +#: reindexdb.c:168 #, c-format msgid "%s: cannot reindex all databases and system catalogs at the same time\n" msgstr "%s: kann nicht alle Datenbanken und Systemkataloge gleichzeitig reindizieren\n" -#: reindexdb.c:170 +#: reindexdb.c:173 #, c-format msgid "%s: cannot reindex specific schema(s) in all databases\n" msgstr "%s: kann nicht bestimmte Schemas in allen Datenbanken reindizieren\n" -#: reindexdb.c:175 +#: reindexdb.c:178 #, c-format msgid "%s: cannot reindex specific table(s) in all databases\n" msgstr "%s: kann nicht bestimmte Tabelle(n) in allen Datenbanken reindizieren\n" -#: reindexdb.c:180 +#: reindexdb.c:183 #, c-format msgid "%s: cannot reindex specific index(es) in all databases\n" msgstr "%s: kann nicht bestimmte Indexe in allen Datenbanken reindizieren\n" -#: reindexdb.c:191 +#: reindexdb.c:196 #, c-format msgid "%s: cannot reindex specific schema(s) and system catalogs at the same time\n" msgstr "%s: kann nicht bestimmte Schemas und Systemkataloge gleichzeitig reindizieren\n" -#: reindexdb.c:196 +#: reindexdb.c:201 #, c-format msgid "%s: cannot reindex specific table(s) and system catalogs at the same time\n" msgstr "%s: kann nicht bestimmte Tabelle(n) und Systemkataloge gleichzeitig reindizieren\n" -#: reindexdb.c:201 +#: reindexdb.c:206 #, c-format msgid "%s: cannot reindex specific index(es) and system catalogs at the same time\n" msgstr "%s: kann nicht bestimmte Indexe und Systemkataloge gleichzeitig reindizieren\n" -#: reindexdb.c:308 +#: reindexdb.c:316 #, c-format msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: Reindizieren der Tabelle »%s« in Datenbank »%s« fehlgeschlagen: %s" -#: reindexdb.c:311 +#: reindexdb.c:319 #, c-format msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" msgstr "%s: Reindizieren des Index »%s« in Datenbank »%s« fehlgeschlagen: %s" -#: reindexdb.c:314 +#: reindexdb.c:322 #, c-format msgid "%s: reindexing of schema \"%s\" in database \"%s\" failed: %s" msgstr "%s: Reindizieren des Schemas »%s« in Datenbank »%s« fehlgeschlagen: %s" -#: reindexdb.c:317 +#: reindexdb.c:325 #, c-format msgid "%s: reindexing of database \"%s\" failed: %s" msgstr "%s: Reindizieren der Datenbank »%s« fehlgeschlagen: %s" -#: reindexdb.c:350 +#: reindexdb.c:353 #, c-format msgid "%s: reindexing database \"%s\"\n" msgstr "%s: reindiziere Datenbank »%s«\n" -#: reindexdb.c:389 +#: reindexdb.c:386 #, c-format msgid "%s: reindexing of system catalogs failed: %s" msgstr "%s: Reindizieren der Systemkataloge fehlgeschlagen: %s" -#: reindexdb.c:401 +#: reindexdb.c:398 #, c-format msgid "" "%s reindexes a PostgreSQL database.\n" @@ -853,37 +853,37 @@ "%s reindiziert eine PostgreSQL-Datenbank.\n" "\n" -#: reindexdb.c:405 +#: reindexdb.c:402 #, c-format msgid " -a, --all reindex all databases\n" msgstr " -a, --all alle Datenbanken reindizieren\n" -#: reindexdb.c:406 +#: reindexdb.c:403 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" msgstr " -d, --dbname=DBNAME zu reindizierende Datenbank\n" -#: reindexdb.c:408 +#: reindexdb.c:405 #, c-format msgid " -i, --index=INDEX recreate specific index(es) only\n" msgstr " -i, --index=INDEX nur bestimmte(n) Index(e) erneuern\n" -#: reindexdb.c:410 +#: reindexdb.c:407 #, c-format -msgid " -s, --system reindex system catalogs\n" -msgstr " -s, --system Systemkataloge reindizieren\n" +msgid " -s, --system reindex system catalogs only\n" +msgstr " -s, --system nur Systemkataloge reindizieren\n" -#: reindexdb.c:411 +#: reindexdb.c:408 #, c-format msgid " -S, --schema=SCHEMA reindex specific schema(s) only\n" msgstr " -S, --schema=SCHEMA nur bestimmte(s) Schema(s) reindizieren\n" -#: reindexdb.c:412 +#: reindexdb.c:409 #, c-format msgid " -t, --table=TABLE reindex specific table(s) only\n" msgstr " -t, --table=TABELLE nur bestimmte Tabelle(n) reindizieren\n" -#: reindexdb.c:423 +#: reindexdb.c:420 #, c-format msgid "" "\n" @@ -893,64 +893,64 @@ "Für weitere Informationen lesen Sie bitte die Beschreibung des\n" "SQL-Befehls REINDEX.\n" -#: vacuumdb.c:203 +#: vacuumdb.c:201 #, c-format msgid "%s: number of parallel jobs must be at least 1\n" msgstr "%s: Anzahl paralleler Jobs muss mindestens 1 sein\n" -#: vacuumdb.c:242 vacuumdb.c:248 +#: vacuumdb.c:240 vacuumdb.c:246 #, c-format msgid "%s: cannot use the \"%s\" option when performing only analyze\n" msgstr "%s: kann Option »%s« nicht verwenden, wenn nur Analyze durchgeführt wird\n" -#: vacuumdb.c:265 +#: vacuumdb.c:270 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "%s: kann nicht alle Datenbanken und eine bestimmte gleichzeitig vacuumen\n" -#: vacuumdb.c:271 +#: vacuumdb.c:276 #, c-format msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "%s: kann nicht bestimmte Tabelle(n) in allen Datenbanken vacuumen\n" -#: vacuumdb.c:357 +#: vacuumdb.c:361 msgid "Generating minimal optimizer statistics (1 target)" msgstr "Erzeuge minimale Optimierer-Statistiken (1 Ziel)" -#: vacuumdb.c:358 +#: vacuumdb.c:362 msgid "Generating medium optimizer statistics (10 targets)" msgstr "Erzeuge mittlere Optimierer-Statistiken (10 Ziele)" -#: vacuumdb.c:359 +#: vacuumdb.c:363 msgid "Generating default (full) optimizer statistics" msgstr "Erzeuge volle Optimierer-Statistiken" -#: vacuumdb.c:371 +#: vacuumdb.c:374 #, c-format msgid "%s: processing database \"%s\": %s\n" msgstr "%s: bearbeite Datenbank »%s«: %s\n" -#: vacuumdb.c:374 +#: vacuumdb.c:377 #, c-format msgid "%s: vacuuming database \"%s\"\n" msgstr "%s: führe Vacuum in Datenbank »%s« aus\n" -#: vacuumdb.c:453 +#: vacuumdb.c:455 #, c-format msgid "%s: too many jobs for this platform -- try %d\n" msgstr "%s: zu viele Jobs für diese Plattform -- versuchen Sie %d\n" -#: vacuumdb.c:740 +#: vacuumdb.c:730 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: Vacuum der Tabelle »%s« in Datenbank »%s« fehlgeschlagen: %s" -#: vacuumdb.c:743 vacuumdb.c:878 +#: vacuumdb.c:733 vacuumdb.c:868 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "%s: Vacuum der Datenbank »%s« fehlgeschlagen: %s" -#: vacuumdb.c:1013 +#: vacuumdb.c:1003 #, c-format msgid "" "%s cleans and analyzes a PostgreSQL database.\n" @@ -959,75 +959,75 @@ "%s säubert und analysiert eine PostgreSQL-Datenbank.\n" "\n" -#: vacuumdb.c:1017 +#: vacuumdb.c:1007 #, c-format msgid " -a, --all vacuum all databases\n" msgstr " -a, --all führe Vacuum in allen Datenbanken aus\n" -#: vacuumdb.c:1018 +#: vacuumdb.c:1008 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" msgstr " -d, --dbname=DBNAME führe Vacuum in dieser Datenbank aus\n" -#: vacuumdb.c:1019 +#: vacuumdb.c:1009 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr "" " -e, --echo zeige die Befehle, die an den Server\n" " gesendet werden\n" -#: vacuumdb.c:1020 +#: vacuumdb.c:1010 #, c-format msgid " -f, --full do full vacuuming\n" msgstr " -f, --full führe volles Vacuum durch\n" -#: vacuumdb.c:1021 +#: vacuumdb.c:1011 #, c-format msgid " -F, --freeze freeze row transaction information\n" msgstr " -F, --freeze Zeilentransaktionsinformationen einfrieren\n" -#: vacuumdb.c:1022 +#: vacuumdb.c:1012 #, c-format msgid " -j, --jobs=NUM use this many concurrent connections to vacuum\n" msgstr "" " -j, --jobs=NUM so viele parallele Verbindungen zum Vacuum\n" " verwenden\n" -#: vacuumdb.c:1023 +#: vacuumdb.c:1013 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet unterdrücke alle Mitteilungen\n" -#: vacuumdb.c:1024 +#: vacuumdb.c:1014 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n" msgstr "" " -t, --table='TABELLE[(SPALTEN)]'\n" " führe Vacuum für bestimmte Tabelle(n) aus\n" -#: vacuumdb.c:1025 +#: vacuumdb.c:1015 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose erzeuge viele Meldungen\n" -#: vacuumdb.c:1026 +#: vacuumdb.c:1016 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" -#: vacuumdb.c:1027 +#: vacuumdb.c:1017 #, c-format msgid " -z, --analyze update optimizer statistics\n" msgstr " -z, --analyze aktualisiere Statistiken für den Optimierer\n" -#: vacuumdb.c:1028 +#: vacuumdb.c:1018 #, c-format msgid " -Z, --analyze-only only update optimizer statistics; no vacuum\n" msgstr "" " -Z, --analyze-only aktualisiere nur Statistiken für den Optimierer;\n" " kein Vacuum\n" -#: vacuumdb.c:1029 +#: vacuumdb.c:1019 #, c-format msgid "" " --analyze-in-stages only update optimizer statistics, in multiple\n" @@ -1037,12 +1037,12 @@ " in mehreren Phasen für schnellere Ergebnisse;\n" " kein Vacuum\n" -#: vacuumdb.c:1031 +#: vacuumdb.c:1021 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" -#: vacuumdb.c:1039 +#: vacuumdb.c:1029 #, c-format msgid "" "\n" diff -Nru postgresql-10-10.17/src/bin/scripts/po/fr.po postgresql-10-10.19/src/bin/scripts/po/fr.po --- postgresql-10-10.17/src/bin/scripts/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/scripts/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -9,15 +9,15 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-04-15 07:46+0000\n" -"PO-Revision-Date: 2020-04-15 14:10+0200\n" +"POT-Creation-Date: 2021-10-28 01:27+0000\n" +"PO-Revision-Date: 2021-10-29 16:17+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 3.0\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 @@ -43,7 +43,7 @@ #: ../../common/username.c:60 #, c-format msgid "user name lookup failure: error code %lu" -msgstr "échec lors de la recherche du nom d'utilisateur : code erreur %lu" +msgstr "échec de la recherche du nom d'utilisateur : code d'erreur %lu" #: ../../fe_utils/print.c:353 #, c-format @@ -76,74 +76,74 @@ msgid "invalid output format (internal error): %d" msgstr "format de sortie invalide (erreur interne) : %d" -#: clusterdb.c:111 clusterdb.c:130 createdb.c:119 createdb.c:138 -#: createuser.c:175 createuser.c:190 dropdb.c:94 dropdb.c:103 dropdb.c:111 -#: dropuser.c:90 dropuser.c:105 dropuser.c:120 pg_isready.c:93 pg_isready.c:107 -#: reindexdb.c:131 reindexdb.c:150 vacuumdb.c:215 vacuumdb.c:234 +#: clusterdb.c:107 clusterdb.c:126 createdb.c:120 createdb.c:139 +#: createuser.c:176 createuser.c:191 dropdb.c:95 dropdb.c:104 dropdb.c:112 +#: dropuser.c:91 dropuser.c:106 dropuser.c:121 pg_isready.c:93 pg_isready.c:107 +#: reindexdb.c:127 reindexdb.c:146 vacuumdb.c:213 vacuumdb.c:232 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Essayer « %s --help » pour plus d'informations.\n" -#: clusterdb.c:128 createdb.c:136 createuser.c:188 dropdb.c:109 dropuser.c:103 -#: pg_isready.c:105 reindexdb.c:148 vacuumdb.c:232 +#: clusterdb.c:124 createdb.c:137 createuser.c:189 dropdb.c:110 dropuser.c:104 +#: pg_isready.c:105 reindexdb.c:144 vacuumdb.c:230 #, 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" -#: clusterdb.c:140 +#: clusterdb.c:143 #, c-format msgid "%s: cannot cluster all databases and a specific one at the same time\n" msgstr "" "%s : ne réorganise pas à la fois toutes les bases de données et une base\n" "spécifique via la commande CLUSTER\n" -#: clusterdb.c:147 +#: clusterdb.c:150 #, c-format msgid "%s: cannot cluster specific table(s) in all databases\n" msgstr "%s : impossible de réorganiser la(les) table(s) spécifique(s) dans toutes les bases de données\n" -#: clusterdb.c:216 +#: clusterdb.c:217 #, c-format msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" msgstr "" "%s : la réorganisation de la table « %s » de la base de données « %s » avec\n" "la commande CLUSTER a échoué : %s" -#: clusterdb.c:219 +#: clusterdb.c:220 #, c-format msgid "%s: clustering of database \"%s\" failed: %s" msgstr "" "%s : la réorganisation de la base de données « %s » via la commande\n" "CLUSTER a échoué : %s" -#: clusterdb.c:252 +#: clusterdb.c:248 #, c-format msgid "%s: clustering database \"%s\"\n" msgstr "%s : réorganisation de la base de données « %s » via la commande CLUSTER\n" -#: clusterdb.c:273 +#: clusterdb.c:264 #, c-format msgid "" "%s clusters all previously clustered tables in a database.\n" "\n" msgstr "" -"%s réorganise toutes les tables précédemment réorganisées au sein d'une base\n" -"de données via la commande CLUSTER.\n" +"%s réorganise toutes les tables précédemment réorganisées au sein d'une\n" +"base de données via la commande CLUSTER.\n" "\n" -#: clusterdb.c:274 createdb.c:261 createuser.c:352 dropdb.c:156 dropuser.c:161 -#: pg_isready.c:222 reindexdb.c:402 vacuumdb.c:1014 +#: clusterdb.c:265 createdb.c:268 createuser.c:359 dropdb.c:162 dropuser.c:168 +#: pg_isready.c:222 reindexdb.c:399 vacuumdb.c:1004 #, c-format msgid "Usage:\n" msgstr "Usage :\n" -#: clusterdb.c:275 reindexdb.c:403 vacuumdb.c:1015 +#: clusterdb.c:266 reindexdb.c:400 vacuumdb.c:1005 #, c-format msgid " %s [OPTION]... [DBNAME]\n" -msgstr " %s [OPTION]... [NOMBASE]\n" +msgstr " %s [OPTION]... [BASE]\n" -#: clusterdb.c:276 createdb.c:263 createuser.c:354 dropdb.c:158 dropuser.c:163 -#: pg_isready.c:225 reindexdb.c:404 vacuumdb.c:1016 +#: clusterdb.c:267 createdb.c:270 createuser.c:361 dropdb.c:164 dropuser.c:170 +#: pg_isready.c:225 reindexdb.c:401 vacuumdb.c:1006 #, c-format msgid "" "\n" @@ -152,48 +152,48 @@ "\n" "Options :\n" -#: clusterdb.c:277 +#: clusterdb.c:268 #, c-format msgid " -a, --all cluster all databases\n" -msgstr " -a, --all réorganise toutes les bases de données\n" +msgstr " -a, --all réorganise toutes les bases de données\n" -#: clusterdb.c:278 +#: clusterdb.c:269 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" -msgstr " -d, --dbname=NOMBASE base de données à réorganiser\n" +msgstr " -d, --dbname=BASE base de données à réorganiser\n" -#: clusterdb.c:279 createuser.c:358 dropdb.c:159 dropuser.c:164 reindexdb.c:407 +#: clusterdb.c:270 createuser.c:365 dropdb.c:165 dropuser.c:171 reindexdb.c:404 #, c-format msgid " -e, --echo show the commands being sent to the server\n" -msgstr " -e, --echo affiche les commandes envoyées au serveur\n" +msgstr " -e, --echo affiche les commandes envoyées au serveur\n" -#: clusterdb.c:280 reindexdb.c:409 +#: clusterdb.c:271 reindexdb.c:406 #, c-format msgid " -q, --quiet don't write any messages\n" -msgstr " -q, --quiet n'écrit aucun message\n" +msgstr " -q, --quiet n'écrit aucun message\n" -#: clusterdb.c:281 +#: clusterdb.c:272 #, c-format msgid " -t, --table=TABLE cluster specific table(s) only\n" -msgstr " -t, --table=TABLE réorganise uniquement cette(ces) table(s)\n" +msgstr " -t, --table=TABLE réorganise uniquement cette(ces) table(s)\n" -#: clusterdb.c:282 reindexdb.c:413 +#: clusterdb.c:273 reindexdb.c:410 #, c-format msgid " -v, --verbose write a lot of output\n" -msgstr " -v, --verbose mode verbeux\n" +msgstr " -v, --verbose mode verbeux\n" -#: clusterdb.c:283 createuser.c:370 dropdb.c:161 dropuser.c:167 reindexdb.c:414 +#: clusterdb.c:274 createuser.c:377 dropdb.c:167 dropuser.c:174 reindexdb.c:411 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" -#: clusterdb.c:284 createuser.c:375 dropdb.c:163 dropuser.c:169 reindexdb.c:415 +#: clusterdb.c:275 createuser.c:382 dropdb.c:169 dropuser.c:176 reindexdb.c:412 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" -#: clusterdb.c:285 createdb.c:274 createuser.c:376 dropdb.c:164 dropuser.c:170 -#: pg_isready.c:231 reindexdb.c:416 vacuumdb.c:1032 +#: clusterdb.c:276 createdb.c:281 createuser.c:383 dropdb.c:170 dropuser.c:177 +#: pg_isready.c:231 reindexdb.c:413 vacuumdb.c:1022 #, c-format msgid "" "\n" @@ -202,43 +202,43 @@ "\n" "Options de connexion :\n" -#: clusterdb.c:286 createuser.c:377 dropdb.c:165 dropuser.c:171 reindexdb.c:417 -#: vacuumdb.c:1033 +#: clusterdb.c:277 createuser.c:384 dropdb.c:171 dropuser.c:178 reindexdb.c:414 +#: vacuumdb.c:1023 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=HOTE hôte du serveur de bases de données ou\n" -" répertoire des sockets\n" +" -h, --host=HOTE hôte du serveur de bases de données ou\n" +" répertoire des sockets\n" -#: clusterdb.c:287 createuser.c:378 dropdb.c:166 dropuser.c:172 reindexdb.c:418 -#: vacuumdb.c:1034 +#: clusterdb.c:278 createuser.c:385 dropdb.c:172 dropuser.c:179 reindexdb.c:415 +#: vacuumdb.c:1024 #, c-format msgid " -p, --port=PORT database server port\n" -msgstr " -p, --port=PORT port du serveur de bases de données\n" +msgstr " -p, --port=PORT port du serveur de bases de données\n" -#: clusterdb.c:288 dropdb.c:167 reindexdb.c:419 vacuumdb.c:1035 +#: clusterdb.c:279 dropdb.c:173 reindexdb.c:416 vacuumdb.c:1025 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" -msgstr " -U, --username=NOMUTILISATEUR nom d'utilisateur pour la connexion\n" +msgstr " -U, --username=UTILISATEUR nom d'utilisateur pour la connexion\n" -#: clusterdb.c:289 createuser.c:380 dropdb.c:168 dropuser.c:174 reindexdb.c:420 -#: vacuumdb.c:1036 +#: clusterdb.c:280 createuser.c:387 dropdb.c:174 dropuser.c:181 reindexdb.c:417 +#: vacuumdb.c:1026 #, c-format msgid " -w, --no-password never prompt for password\n" -msgstr " -w, --no-password empêche la demande d'un mot de passe\n" +msgstr " -w, --no-password empêche la demande d'un mot de passe\n" -#: clusterdb.c:290 createuser.c:381 dropdb.c:169 dropuser.c:175 reindexdb.c:421 -#: vacuumdb.c:1037 +#: clusterdb.c:281 createuser.c:388 dropdb.c:175 dropuser.c:182 reindexdb.c:418 +#: vacuumdb.c:1027 #, c-format msgid " -W, --password force password prompt\n" -msgstr " -W, --password force la demande d'un mot de passe\n" +msgstr " -W, --password force la demande d'un mot de passe\n" -#: clusterdb.c:291 dropdb.c:170 reindexdb.c:422 vacuumdb.c:1038 +#: clusterdb.c:282 dropdb.c:176 reindexdb.c:419 vacuumdb.c:1028 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" -msgstr " --maintenance-db=NOM_BASE indique une autre base par défaut\n" +msgstr " --maintenance-db=BASE indique une autre base par défaut\n" -#: clusterdb.c:292 +#: clusterdb.c:283 #, c-format msgid "" "\n" @@ -247,8 +247,8 @@ "\n" "Lire la description de la commande SQL CLUSTER pour de plus amples détails.\n" -#: clusterdb.c:293 createdb.c:282 createuser.c:382 dropdb.c:171 dropuser.c:176 -#: pg_isready.c:236 reindexdb.c:424 vacuumdb.c:1040 +#: clusterdb.c:284 createdb.c:289 createuser.c:389 dropdb.c:177 dropuser.c:183 +#: pg_isready.c:236 reindexdb.c:421 vacuumdb.c:1030 #, c-format msgid "" "\n" @@ -257,31 +257,31 @@ "\n" "Rapporter les bogues à .\n" -#: common.c:83 common.c:129 +#: common.c:86 common.c:144 msgid "Password: " msgstr "Mot de passe : " -#: common.c:116 +#: common.c:131 #, c-format msgid "%s: could not connect to database %s: out of memory\n" msgstr "%s : n'a pas pu se connecter à la base de données %s : plus de mémoire\n" -#: common.c:143 +#: common.c:158 #, c-format msgid "%s: could not connect to database %s: %s" msgstr "%s : n'a pas pu se connecter à la base de données %s : %s" -#: common.c:195 common.c:223 +#: common.c:214 common.c:242 #, c-format msgid "%s: query failed: %s" msgstr "%s : échec de la requête : %s" -#: common.c:197 common.c:225 +#: common.c:216 common.c:244 #, c-format msgid "%s: query was: %s\n" msgstr "%s : la requête était : %s\n" -#: common.c:343 +#: common.c:362 #, c-format msgid "%s: query returned %d row instead of one: %s\n" msgid_plural "%s: query returned %d rows instead of one: %s\n" @@ -289,63 +289,63 @@ msgstr[1] "%s : la requête a renvoyé %d lignes au lieu d'une seule : %s\n" #. translator: abbreviation for "yes" -#: common.c:369 +#: common.c:388 msgid "y" msgstr "o" #. translator: abbreviation for "no" -#: common.c:371 +#: common.c:390 msgid "n" msgstr "n" #. translator: This is a question followed by the translated options for #. "yes" and "no". -#: common.c:381 +#: common.c:400 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s) " -#: common.c:395 +#: common.c:414 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "Merci de répondre « %s » ou « %s ».\n" -#: common.c:474 common.c:511 +#: common.c:493 common.c:530 #, c-format msgid "Cancel request sent\n" msgstr "Requête d'annulation envoyée\n" -#: common.c:477 common.c:515 +#: common.c:496 common.c:534 #, c-format msgid "Could not send cancel request: %s" msgstr "N'a pas pu envoyer la requête d'annulation : %s" -#: createdb.c:146 +#: createdb.c:147 #, c-format msgid "%s: only one of --locale and --lc-ctype can be specified\n" msgstr "%s : une seule des options --locale et --lc-ctype peut être indiquée\n" -#: createdb.c:152 +#: createdb.c:153 #, c-format msgid "%s: only one of --locale and --lc-collate can be specified\n" msgstr "%s : une seule des options --locale et --lc-collate peut être indiquée\n" -#: createdb.c:164 +#: createdb.c:165 #, c-format msgid "%s: \"%s\" is not a valid encoding name\n" msgstr "%s : « %s » n'est pas un nom d'encodage valide\n" -#: createdb.c:222 +#: createdb.c:229 #, c-format msgid "%s: database creation failed: %s" msgstr "%s : la création de la base de données a échoué : %s" -#: createdb.c:242 +#: createdb.c:249 #, c-format msgid "%s: comment creation failed (database was created): %s" msgstr "%s: l'ajout du commentaire a échoué (la base de données a été créée) : %s" -#: createdb.c:260 +#: createdb.c:267 #, c-format msgid "" "%s creates a PostgreSQL database.\n" @@ -354,98 +354,98 @@ "%s crée une base de données PostgreSQL.\n" "\n" -#: createdb.c:262 +#: createdb.c:269 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" -msgstr " %s [OPTION]... [NOMBASE] [DESCRIPTION]\n" +msgstr " %s [OPTION]... [BASE] [DESCRIPTION]\n" -#: createdb.c:264 +#: createdb.c:271 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" -msgstr " -D, --tablespace=TABLESPACE tablespace par défaut de la base de données\n" +msgstr " -D, --tablespace=TABLESPACE tablespace par défaut de la base de données\n" -#: createdb.c:265 +#: createdb.c:272 #, c-format msgid " -e, --echo show the commands being sent to the server\n" -msgstr " -e, --echo affiche les commandes envoyées au serveur\n" +msgstr " -e, --echo affiche les commandes envoyées au serveur\n" -#: createdb.c:266 +#: createdb.c:273 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" -msgstr " -E, --encoding=ENC encodage de la base de données\n" +msgstr " -E, --encoding=ENC encodage de la base de données\n" -#: createdb.c:267 +#: createdb.c:274 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" msgstr "" -" -l, --locale=LOCALE paramètre de la locale pour la base de\n" -" données\n" +" -l, --locale=LOCALE paramètre de la locale pour la base de\n" +" données\n" -#: createdb.c:268 +#: createdb.c:275 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" -msgstr " --lc-collate=LOCALE paramètre LC_COLLATE pour la base de données\n" +msgstr " --lc-collate=LOCALE paramètre LC_COLLATE pour la base de données\n" -#: createdb.c:269 +#: createdb.c:276 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" -msgstr " --lc-ctype=LOCALE paramètre LC_CTYPE pour la base de données\n" +msgstr " --lc-ctype=LOCALE paramètre LC_CTYPE pour la base de données\n" -#: createdb.c:270 +#: createdb.c:277 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" msgstr "" -" -O, --owner=PROPRIÉTAIRE nom du propriétaire de la nouvelle base de\n" -" données\n" +" -O, --owner=PROPRIÉTAIRE nom du propriétaire de la nouvelle base de\n" +" données\n" -#: createdb.c:271 +#: createdb.c:278 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" -msgstr " -T, --template=MODÈLE base de données modèle à copier\n" +msgstr " -T, --template=MODÈLE base de données modèle à copier\n" -#: createdb.c:272 +#: createdb.c:279 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" -#: createdb.c:273 +#: createdb.c:280 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" -#: createdb.c:275 +#: createdb.c:282 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=HOTE hôte du serveur de bases de données\n" -" ou répertoire des sockets\n" +" -h, --host=HOTE hôte du serveur de bases de données\n" +" ou répertoire des sockets\n" -#: createdb.c:276 +#: createdb.c:283 #, c-format msgid " -p, --port=PORT database server port\n" -msgstr " -p, --port=PORT port du serveur de bases de données\n" +msgstr " -p, --port=PORT port du serveur de bases de données\n" -#: createdb.c:277 +#: createdb.c:284 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" -msgstr " -U, --username=NOMUTILISATEUR nom d'utilisateur pour la connexion\n" +msgstr " -U, --username=UTILISATEUR nom d'utilisateur pour la connexion\n" -#: createdb.c:278 +#: createdb.c:285 #, c-format msgid " -w, --no-password never prompt for password\n" -msgstr " -w, --no-password empêche la demande d'un mot de passe\n" +msgstr " -w, --no-password empêche la demande d'un mot de passe\n" -#: createdb.c:279 +#: createdb.c:286 #, c-format msgid " -W, --password force password prompt\n" -msgstr " -W, --password force la demande d'un mot de passe\n" +msgstr " -W, --password force la demande d'un mot de passe\n" -#: createdb.c:280 +#: createdb.c:287 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" -msgstr " --maintenance-db=NOM_BASE indique une autre base par défaut\n" +msgstr " --maintenance-db=BASE indique une autre base par défaut\n" -#: createdb.c:281 +#: createdb.c:288 #, c-format msgid "" "\n" @@ -454,51 +454,51 @@ "\n" "Par défaut, la base de donnée créée porte le nom de l'utilisateur courant.\n" -#: createuser.c:154 +#: createuser.c:155 #, c-format msgid "%s: invalid value for --connection-limit: %s\n" msgstr "%s : valeur invalide pour --connection-limit : « %s »\n" -#: createuser.c:198 +#: createuser.c:199 msgid "Enter name of role to add: " msgstr "Saisir le nom du rôle à ajouter : " -#: createuser.c:215 +#: createuser.c:216 msgid "Enter password for new role: " msgstr "Saisir le mot de passe pour le nouveau rôle : " -#: createuser.c:217 +#: createuser.c:218 msgid "Enter it again: " -msgstr "Le saisir de nouveau : " +msgstr "Saisir le mot de passe à nouveau : " -#: createuser.c:220 +#: createuser.c:221 #, c-format msgid "Passwords didn't match.\n" msgstr "Les mots de passe ne sont pas identiques.\n" -#: createuser.c:228 +#: createuser.c:229 msgid "Shall the new role be a superuser?" msgstr "Le nouveau rôle est-il super-utilisateur ?" -#: createuser.c:243 +#: createuser.c:244 msgid "Shall the new role be allowed to create databases?" msgstr "Le nouveau rôle est-il autorisé à créer des bases de données ?" -#: createuser.c:251 +#: createuser.c:252 msgid "Shall the new role be allowed to create more new roles?" msgstr "Le nouveau rôle est-il autorisé à créer de nouveaux rôles ?" -#: createuser.c:281 +#: createuser.c:288 #, c-format msgid "%s: password encryption failed: %s" msgstr "%s : échec du chiffrement du mot de passe : %s" -#: createuser.c:336 +#: createuser.c:343 #, c-format msgid "%s: creation of new role failed: %s" msgstr "%s : la création du nouvel rôle a échoué : %s" -#: createuser.c:351 +#: createuser.c:358 #, c-format msgid "" "%s creates a new PostgreSQL role.\n" @@ -507,136 +507,140 @@ "%s crée un nouvel rôle PostgreSQL.\n" "\n" -#: createuser.c:353 dropuser.c:162 +#: createuser.c:360 dropuser.c:169 #, c-format msgid " %s [OPTION]... [ROLENAME]\n" -msgstr " %s [OPTION]... [NOMROLE]\n" +msgstr " %s [OPTION]... [ROLE]\n" -#: createuser.c:355 +#: createuser.c:362 #, c-format msgid " -c, --connection-limit=N connection limit for role (default: no limit)\n" msgstr "" -" -c, --connection-limit=N nombre maximal de connexions pour le rôle\n" -" (par défaut sans limite)\n" +" -c, --connection-limit=N nombre limite de connexions pour le rôle\n" +" (par défaut sans limite)\n" -#: createuser.c:356 +#: createuser.c:363 #, c-format msgid " -d, --createdb role can create new databases\n" msgstr "" -" -d, --createdb l'utilisateur peut créer des bases de\n" -" données\n" +" -d, --createdb l'utilisateur peut créer des bases de\n" +" données\n" -#: createuser.c:357 +#: createuser.c:364 #, c-format msgid " -D, --no-createdb role cannot create databases (default)\n" msgstr "" -" -D, --no-createdb le rôle ne peut pas créer de bases de\n" -" données (par défaut)\n" +" -D, --no-createdb le rôle ne peut pas créer de bases de\n" +" données (par défaut)\n" -#: createuser.c:359 +#: createuser.c:366 #, c-format msgid " -g, --role=ROLE new role will be a member of this role\n" -msgstr " -g, --role=ROLE le nouveau rôle sera un membre de ce rôle\n" +msgstr " -g, --role=ROLE le nouveau rôle sera un membre de ce rôle\n" -#: createuser.c:360 +#: createuser.c:367 #, c-format msgid "" " -i, --inherit role inherits privileges of roles it is a\n" " member of (default)\n" msgstr "" -" -i, --inherit le rôle hérite des droits des rôles dont il\n" -" est membre (par défaut)\n" +" -i, --inherit le rôle hérite des droits des rôles dont il\n" +" est membre (par défaut)\n" -#: createuser.c:362 +#: createuser.c:369 #, c-format msgid " -I, --no-inherit role does not inherit privileges\n" -msgstr " -I, --no-inherit le rôle n'hérite pas des droits\n" +msgstr " -I, --no-inherit le rôle n'hérite pas des droits\n" -#: createuser.c:363 +#: createuser.c:370 #, c-format msgid " -l, --login role can login (default)\n" -msgstr " -l, --login le rôle peut se connecter (par défaut)\n" +msgstr " -l, --login le rôle peut se connecter (par défaut)\n" -#: createuser.c:364 +#: createuser.c:371 #, c-format msgid " -L, --no-login role cannot login\n" -msgstr " -L, --no-login le rôle ne peut pas se connecter\n" +msgstr " -L, --no-login le rôle ne peut pas se connecter\n" -#: createuser.c:365 +#: createuser.c:372 #, c-format msgid " -P, --pwprompt assign a password to new role\n" -msgstr " -P, --pwprompt affecte un mot de passe au nouveau rôle\n" +msgstr " -P, --pwprompt affecte un mot de passe au nouveau rôle\n" -#: createuser.c:366 +#: createuser.c:373 #, c-format msgid " -r, --createrole role can create new roles\n" -msgstr " -r, --createrole le rôle peut créer des rôles\n" +msgstr " -r, --createrole le rôle peut créer des rôles\n" -#: createuser.c:367 +#: createuser.c:374 #, c-format msgid " -R, --no-createrole role cannot create roles (default)\n" -msgstr " -R, --no-createrole le rôle ne peut pas créer de rôles (par défaut)\n" +msgstr "" +" -R, --no-createrole le rôle ne peut pas créer de rôles (par\n" +" défaut)\n" -#: createuser.c:368 +#: createuser.c:375 #, c-format msgid " -s, --superuser role will be superuser\n" -msgstr " -s, --superuser le rôle est super-utilisateur\n" +msgstr " -s, --superuser le rôle est super-utilisateur\n" -#: createuser.c:369 +#: createuser.c:376 #, c-format msgid " -S, --no-superuser role will not be superuser (default)\n" -msgstr " -S, --no-superuser le rôle ne sera pas super-utilisateur (par défaut)\n" +msgstr "" +" -S, --no-superuser le rôle ne sera pas super-utilisateur (par\n" +" défaut)\n" -#: createuser.c:371 +#: createuser.c:378 #, c-format msgid "" " --interactive prompt for missing role name and attributes rather\n" " than using defaults\n" msgstr "" -" --interactive demande le nom du rôle et les attributs\n" -" plutôt qu'utiliser des valeurs par défaut\n" +" --interactive demande le nom du rôle et les attributs\n" +" plutôt qu'utiliser des valeurs par défaut\n" -#: createuser.c:373 +#: createuser.c:380 #, c-format msgid " --replication role can initiate replication\n" msgstr "" -" --replication le rôle peut initier une connexion de\n" -" réplication\n" +" --replication le rôle peut initier une connexion de\n" +" réplication\n" -#: createuser.c:374 +#: createuser.c:381 #, c-format msgid " --no-replication role cannot initiate replication\n" msgstr "" -" --no-replication le rôle ne peut pas initier de connexion de\n" -" réplication\n" +" --no-replication le rôle ne peut pas initier de connexion de\n" +" réplication\n" -#: createuser.c:379 +#: createuser.c:386 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to create)\n" msgstr "" -" -U, --username=NOMUTILISATEUR nom de l'utilisateur pour la connexion (pas\n" -" celui à créer)\n" +" -U, --username=UTILISATEUR nom de l'utilisateur pour la connexion (pas\n" +" celui à créer)\n" -#: dropdb.c:102 +#: dropdb.c:103 #, c-format msgid "%s: missing required argument database name\n" msgstr "%s : argument nom de la base de données requis mais manquant\n" -#: dropdb.c:117 +#: dropdb.c:118 #, c-format msgid "Database \"%s\" will be permanently removed.\n" msgstr "La base de données « %s » sera définitivement supprimée.\n" -#: dropdb.c:118 dropuser.c:128 +#: dropdb.c:119 dropuser.c:129 msgid "Are you sure?" msgstr "Êtes-vous sûr ?" -#: dropdb.c:140 +#: dropdb.c:146 #, c-format msgid "%s: database removal failed: %s" msgstr "%s: la suppression de la base de données a échoué : %s" -#: dropdb.c:155 +#: dropdb.c:161 #, c-format msgid "" "%s removes a PostgreSQL database.\n" @@ -645,45 +649,45 @@ "%s supprime une base de données PostgreSQL.\n" "\n" -#: dropdb.c:157 +#: dropdb.c:163 #, c-format msgid " %s [OPTION]... DBNAME\n" -msgstr " %s [OPTION]... NOMBASE\n" +msgstr " %s [OPTION]... BASE \n" -#: dropdb.c:160 +#: dropdb.c:166 #, c-format msgid " -i, --interactive prompt before deleting anything\n" msgstr "" -" -i, --interactive demande confirmation avant de supprimer quoi que\n" -" ce soit\n" +" -i, --interactive demande confirmation avant de supprimer quoi\n" +" que ce soit\n" -#: dropdb.c:162 +#: dropdb.c:168 #, c-format msgid " --if-exists don't report error if database doesn't exist\n" msgstr "" -" --if-exists ne renvoie pas d'erreur si la base\n" -" n'existe pas\n" +" --if-exists ne renvoie pas d'erreur si la base n'existe\n" +" pas\n" -#: dropuser.c:113 +#: dropuser.c:114 msgid "Enter name of role to drop: " msgstr "Saisir le nom du rôle à supprimer : " -#: dropuser.c:119 +#: dropuser.c:120 #, c-format msgid "%s: missing required argument role name\n" msgstr "%s : argument nom du rôle requis mais manquant\n" -#: dropuser.c:127 +#: dropuser.c:128 #, c-format msgid "Role \"%s\" will be permanently removed.\n" msgstr "Le rôle « %s » sera définitivement supprimé.\n" -#: dropuser.c:145 +#: dropuser.c:152 #, c-format msgid "%s: removal of role \"%s\" failed: %s" msgstr "%s : la suppression du rôle « %s » a échoué : %s" -#: dropuser.c:160 +#: dropuser.c:167 #, c-format msgid "" "%s removes a PostgreSQL role.\n" @@ -692,29 +696,29 @@ "%s supprime un rôle PostgreSQL.\n" "\n" -#: dropuser.c:165 +#: dropuser.c:172 #, c-format msgid "" " -i, --interactive prompt before deleting anything, and prompt for\n" " role name if not specified\n" msgstr "" -" -i, --interactive demande confirmation avant de supprimer quoi que\n" -" ce soit, et demande le nom du rôle s'il n'est pas\n" -" indiqué\n" +" -i, --interactive demande confirmation avant de supprimer quoi\n" +" que ce soit, et demande le nom du rôle s'il\n" +" n'est pas indiqué\n" -#: dropuser.c:168 +#: dropuser.c:175 #, c-format msgid " --if-exists don't report error if user doesn't exist\n" msgstr "" -" --if-exists ne renvoie pas d'erreur si l'utilisateur\n" -" n'existe pas\n" +" --if-exists ne renvoie pas d'erreur si l'utilisateur\n" +" n'existe pas\n" -#: dropuser.c:173 +#: dropuser.c:180 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to drop)\n" msgstr "" -" -U, --username=NOMUTILISATEUR nom de l'utilisateur pour la connexion (pas\n" -" celui à supprimer)\n" +" -U, --username=UTILISATEUR nom de l'utilisateur pour la connexion (pas\n" +" celui à supprimer)\n" #: pg_isready.c:142 #, c-format @@ -757,7 +761,7 @@ "%s issues a connection check to a PostgreSQL database.\n" "\n" msgstr "" -"%s produitun test de connexion à une base de données PostgreSQL.\n" +"%s réalise un test de connexion à une base de données PostgreSQL.\n" "\n" #: pg_isready.c:223 @@ -768,136 +772,137 @@ #: pg_isready.c:226 #, c-format msgid " -d, --dbname=DBNAME database name\n" -msgstr " -d, --dbname=NOMBASE base de données\n" +msgstr " -d, --dbname=BASE base de données\n" #: pg_isready.c:227 #, c-format msgid " -q, --quiet run quietly\n" -msgstr " -q, --quiet s'exécute sans affichage\n" +msgstr " -q, --quiet s'exécute sans affichage\n" #: pg_isready.c:228 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" #: pg_isready.c:229 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" #: pg_isready.c:232 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" -" répertoire des sockets\n" +" -h, --host=HÔTE hôte du serveur de bases de données ou\n" +" répertoire des sockets\n" #: pg_isready.c:233 #, c-format msgid " -p, --port=PORT database server port\n" -msgstr " -p, --port=PORT port du serveur de bases de données\n" +msgstr " -p, --port=PORT port du serveur de bases de données\n" #: pg_isready.c:234 #, c-format msgid " -t, --timeout=SECS seconds to wait when attempting connection, 0 disables (default: %s)\n" msgstr "" -" -t, --timeout=SECS durée en secondes à attendre lors d'une tentative de connexion\n" -" 0 pour désactiver (défaut: %s)\n" +" -t, --timeout=SECS durée en secondes à attendre lors d'une\n" +" tentative de connexion 0 pour désactiver\n" +" (défaut: %s)\n" #: pg_isready.c:235 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" -msgstr " -U, --username=NOMUTILISATEUR nom d'utilisateur pour la connexion\n" +msgstr " -U, --username=UTILISATEUR nom d'utilisateur pour la connexion\n" -#: reindexdb.c:160 +#: reindexdb.c:163 #, c-format msgid "%s: cannot reindex all databases and a specific one at the same time\n" msgstr "" "%s : ne peut pas réindexer toutes les bases de données et une base\n" "spécifique en même temps\n" -#: reindexdb.c:165 +#: reindexdb.c:168 #, c-format msgid "%s: cannot reindex all databases and system catalogs at the same time\n" msgstr "" "%s : ne peut pas réindexer toutes les bases de données et les catalogues\n" "système en même temps\n" -#: reindexdb.c:170 +#: reindexdb.c:173 #, c-format msgid "%s: cannot reindex specific schema(s) in all databases\n" msgstr "" "%s : ne peut pas réindexer un (des) schéma(s) spécifique(s) dans toutes\n" "les bases de données\n" -#: reindexdb.c:175 +#: reindexdb.c:178 #, c-format msgid "%s: cannot reindex specific table(s) in all databases\n" msgstr "" "%s : ne peut pas réindexer une (des) table(s) spécifique(s) dans toutes\n" "les bases de données\n" -#: reindexdb.c:180 +#: reindexdb.c:183 #, c-format msgid "%s: cannot reindex specific index(es) in all databases\n" msgstr "" "%s : ne peut pas réindexer un (des) index spécifique(s) dans toutes les\n" "bases de données\n" -#: reindexdb.c:191 +#: reindexdb.c:196 #, c-format msgid "%s: cannot reindex specific schema(s) and system catalogs at the same time\n" msgstr "%s : ne peut pas réindexer une (des) schéma(s) spécifique(s) et les catalogues système en même temps\n" -#: reindexdb.c:196 +#: reindexdb.c:201 #, c-format msgid "%s: cannot reindex specific table(s) and system catalogs at the same time\n" msgstr "%s : ne peut pas réindexer une (des) table(s) spécifique(s) etles catalogues système en même temps\n" -#: reindexdb.c:201 +#: reindexdb.c:206 #, c-format msgid "%s: cannot reindex specific index(es) and system catalogs at the same time\n" msgstr "" "%s : ne peut pas réindexer un (des) index spécifique(s) et\n" "les catalogues système en même temps\n" -#: reindexdb.c:308 +#: reindexdb.c:316 #, c-format msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" msgstr "" "%s : la réindexation de la table « %s » dans la base de données « %s » a\n" "échoué : %s" -#: reindexdb.c:311 +#: reindexdb.c:319 #, c-format msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" msgstr "" "%s : la réindexation de l'index « %s » dans la base de données « %s » a\n" "échoué : %s" -#: reindexdb.c:314 +#: reindexdb.c:322 #, c-format msgid "%s: reindexing of schema \"%s\" in database \"%s\" failed: %s" msgstr "" "%s : la réindexation du schéma « %s » dans la base de données « %s » a\n" "échoué : %s" -#: reindexdb.c:317 +#: reindexdb.c:325 #, c-format msgid "%s: reindexing of database \"%s\" failed: %s" msgstr "%s : la réindexation de la base de données « %s » a échoué : %s" -#: reindexdb.c:350 +#: reindexdb.c:353 #, c-format msgid "%s: reindexing database \"%s\"\n" msgstr "%s : réindexation de la base de données « %s »\n" -#: reindexdb.c:389 +#: reindexdb.c:386 #, c-format msgid "%s: reindexing of system catalogs failed: %s" msgstr "%s : la réindexation des catalogues système a échoué : %s" -#: reindexdb.c:401 +#: reindexdb.c:398 #, c-format msgid "" "%s reindexes a PostgreSQL database.\n" @@ -906,37 +911,37 @@ "%s réindexe une base de données PostgreSQL.\n" "\n" -#: reindexdb.c:405 +#: reindexdb.c:402 #, c-format msgid " -a, --all reindex all databases\n" -msgstr " -a, --all réindexe toutes les bases de données\n" +msgstr " -a, --all réindexe toutes les bases de données\n" -#: reindexdb.c:406 +#: reindexdb.c:403 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" -msgstr " -d, --dbname=NOMBASE base de données à réindexer\n" +msgstr " -d, --dbname=BASE base de données à réindexer\n" -#: reindexdb.c:408 +#: reindexdb.c:405 #, c-format msgid " -i, --index=INDEX recreate specific index(es) only\n" -msgstr " -i, --index=INDEX recrée uniquement cet (ces) index\n" +msgstr " -i, --index=INDEX recrée uniquement cet (ces) index\n" -#: reindexdb.c:410 +#: reindexdb.c:407 #, c-format -msgid " -s, --system reindex system catalogs\n" -msgstr " -s, --system réindexe les catalogues système\n" +msgid " -s, --system reindex system catalogs only\n" +msgstr " -s, --system réindexe seulement les catalogues système\n" -#: reindexdb.c:411 +#: reindexdb.c:408 #, c-format msgid " -S, --schema=SCHEMA reindex specific schema(s) only\n" -msgstr " -S, --schema=SCHEMA réindexe seulement le(s) schéma(s) indiqué(s)\n" +msgstr " -S, --schema=SCHEMA réindexe seulement le(s) schéma(s) indiqué(s)\n" -#: reindexdb.c:412 +#: reindexdb.c:409 #, c-format msgid " -t, --table=TABLE reindex specific table(s) only\n" -msgstr " -t, --table=TABLE réindexe uniquement cette (ces) table(s)\n" +msgstr " -t, --table=TABLE réindexe uniquement cette (ces) table(s)\n" -#: reindexdb.c:423 +#: reindexdb.c:420 #, c-format msgid "" "\n" @@ -945,70 +950,70 @@ "\n" "Lire la description de la commande SQL REINDEX pour plus d'informations.\n" -#: vacuumdb.c:203 +#: vacuumdb.c:201 #, c-format msgid "%s: number of parallel jobs must be at least 1\n" msgstr "%s : le nombre maximum de jobs en parallèle doit être au moins de 1\n" -#: vacuumdb.c:242 vacuumdb.c:248 +#: vacuumdb.c:240 vacuumdb.c:246 #, c-format msgid "%s: cannot use the \"%s\" option when performing only analyze\n" msgstr "%s : ne peut utiliser l'option « %s » lors de l'exécution d'un ANALYZE seul\n" -#: vacuumdb.c:265 +#: vacuumdb.c:270 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "" "%s : ne peut pas exécuter VACUUM sur toutes les bases de données et sur une\n" "base spécifique en même temps\n" -#: vacuumdb.c:271 +#: vacuumdb.c:276 #, c-format msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "" "%s : ne peut pas exécuter VACUUM sur une(des) table(s) spécifique(s)\n" "dans toutes les bases de données\n" -#: vacuumdb.c:357 +#: vacuumdb.c:361 msgid "Generating minimal optimizer statistics (1 target)" msgstr "Génération de statistiques minimales pour l'optimiseur (une cible)" -#: vacuumdb.c:358 +#: vacuumdb.c:362 msgid "Generating medium optimizer statistics (10 targets)" msgstr "Génération de statistiques moyennes pour l'optimiseur (dix cibles)" -#: vacuumdb.c:359 +#: vacuumdb.c:363 msgid "Generating default (full) optimizer statistics" msgstr "Génération de statistiques complètes pour l'optimiseur" -#: vacuumdb.c:371 +#: vacuumdb.c:374 #, c-format msgid "%s: processing database \"%s\": %s\n" msgstr "%s : traitement de la base de données « %s » %s\n" -#: vacuumdb.c:374 +#: vacuumdb.c:377 #, c-format msgid "%s: vacuuming database \"%s\"\n" msgstr "%s : exécution de VACUUM sur la base de données « %s »\n" -#: vacuumdb.c:453 +#: vacuumdb.c:455 #, c-format msgid "%s: too many jobs for this platform -- try %d\n" msgstr "%s : trop de jobs pour cette plateforme -- essayez %d\n" -#: vacuumdb.c:740 +#: vacuumdb.c:730 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "" "%s : l'exécution de VACUUM sur la table « %s » dans la base de données\n" "« %s » a échoué : %s" -#: vacuumdb.c:743 vacuumdb.c:878 +#: vacuumdb.c:733 vacuumdb.c:868 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "%s : l'exécution de VACUUM sur la base de données « %s » a échoué : %s" -#: vacuumdb.c:1013 +#: vacuumdb.c:1003 #, c-format msgid "" "%s cleans and analyzes a PostgreSQL database.\n" @@ -1017,90 +1022,90 @@ "%s nettoie et analyse une base de données PostgreSQL.\n" "\n" -#: vacuumdb.c:1017 +#: vacuumdb.c:1007 #, c-format msgid " -a, --all vacuum all databases\n" msgstr "" -" -a, --all exécute VACUUM sur toutes les bases de\n" -" données\n" +" -a, --all exécute VACUUM sur toutes les bases de\n" +" données\n" -#: vacuumdb.c:1018 +#: vacuumdb.c:1008 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" -msgstr " -d, --dbname=NOMBASE exécute VACUUM sur cette base de données\n" +msgstr " -d, --dbname=BASE exécute VACUUM sur cette base de données\n" -#: vacuumdb.c:1019 +#: vacuumdb.c:1009 #, c-format msgid " -e, --echo show the commands being sent to the server\n" -msgstr " -e, --echo affiche les commandes envoyées au serveur\n" +msgstr " -e, --echo affiche les commandes envoyées au serveur\n" -#: vacuumdb.c:1020 +#: vacuumdb.c:1010 #, c-format msgid " -f, --full do full vacuuming\n" -msgstr " -f, --full exécute VACUUM en mode FULL\n" +msgstr " -f, --full exécute VACUUM en mode FULL\n" -#: vacuumdb.c:1021 +#: vacuumdb.c:1011 #, c-format msgid " -F, --freeze freeze row transaction information\n" msgstr "" -" -F, --freeze gèle les informations de transactions des\n" -" lignes\n" +" -F, --freeze gèle les informations de transactions des\n" +" lignes\n" -#: vacuumdb.c:1022 +#: vacuumdb.c:1012 #, c-format msgid " -j, --jobs=NUM use this many concurrent connections to vacuum\n" msgstr "" -" -j, --jobs=NUMERO utilise ce nombre de connexions concurrentes pour\n" -" le VACUUM\n" +" -j, --jobs=NUMERO utilise ce nombre de connexions concurrentes\n" +" pour le VACUUM\n" -#: vacuumdb.c:1023 +#: vacuumdb.c:1013 #, c-format msgid " -q, --quiet don't write any messages\n" -msgstr " -q, --quiet n'écrit aucun message\n" +msgstr " -q, --quiet n'écrit aucun message\n" -#: vacuumdb.c:1024 +#: vacuumdb.c:1014 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n" -msgstr " -t, --table='TABLE[(COLONNES)]' exécute VACUUM sur cette (ces) tables\n" +msgstr " -t, --table='TABLE[(COLONNES)]' exécute VACUUM sur cette (ces) tables\n" -#: vacuumdb.c:1025 +#: vacuumdb.c:1015 #, c-format msgid " -v, --verbose write a lot of output\n" -msgstr " -v, --verbose mode verbeux\n" +msgstr " -v, --verbose mode verbeux\n" -#: vacuumdb.c:1026 +#: vacuumdb.c:1016 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version affiche la version puis quitte\n" +msgstr " -V, --version affiche la version puis quitte\n" -#: vacuumdb.c:1027 +#: vacuumdb.c:1017 #, c-format msgid " -z, --analyze update optimizer statistics\n" -msgstr " -z, --analyze met à jour les statistiques de l'optimiseur\n" +msgstr " -z, --analyze met à jour les statistiques de l'optimiseur\n" -#: vacuumdb.c:1028 +#: vacuumdb.c:1018 #, c-format msgid " -Z, --analyze-only only update optimizer statistics; no vacuum\n" msgstr "" -" -Z, --analyze-only met seulement à jour les statistiques de\n" -" l'optimiseur ; pas de VACUUM\n" +" -Z, --analyze-only met seulement à jour les statistiques de\n" +" l'optimiseur ; pas de VACUUM\n" -#: vacuumdb.c:1029 +#: vacuumdb.c:1019 #, c-format msgid "" " --analyze-in-stages only update optimizer statistics, in multiple\n" " stages for faster results; no vacuum\n" msgstr "" -" --analyze-in-stages met seulement à jour les statistiques de\n" -" l'optimiseur, en plusieurs étapes pour de\n" -" meilleurs résultats ; pas de VACUUM\n" +" --analyze-in-stages met seulement à jour les statistiques de\n" +" l'optimiseur, en plusieurs étapes pour de\n" +" meilleurs résultats ; pas de VACUUM\n" -#: vacuumdb.c:1031 +#: vacuumdb.c:1021 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help affiche cette aide puis quitte\n" +msgstr " -?, --help affiche cette aide puis quitte\n" -#: vacuumdb.c:1039 +#: vacuumdb.c:1029 #, c-format msgid "" "\n" @@ -1109,62 +1114,62 @@ "\n" "Lire la description de la commande SQL VACUUM pour plus d'informations.\n" -#~ msgid "%s: too many parallel jobs requested (maximum: %d)\n" -#~ msgstr "%s : trop de jobs en parallèle demandés (maximum %d)\n" - -#~ msgid "Name" -#~ msgstr "Nom" - -#~ msgid "no" -#~ msgstr "non" - -#~ msgid "yes" -#~ msgstr "oui" +#~ msgid "%s: invalid socket: %s" +#~ msgstr "%s : socket invalide : %s" -#~ msgid "Trusted?" -#~ msgstr "De confiance (trusted) ?" +#~ msgid "%s: could not obtain information about current user: %s\n" +#~ msgstr "%s : n'a pas pu obtenir les informations concernant l'utilisateur actuel : %s\n" -#~ msgid "Procedural Languages" -#~ msgstr "Langages procéduraux" +#~ msgid "%s: could not get current user name: %s\n" +#~ msgstr "%s : n'a pas pu récupérer le nom de l'utilisateur actuel : %s\n" -#~ msgid "%s: missing required argument language name\n" -#~ msgstr "%s : argument nom du langage requis mais manquant\n" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version et quitte\n" -#~ msgid "%s: language \"%s\" is already installed in database \"%s\"\n" -#~ msgstr "%s : le langage « %s » est déjà installé sur la base de données « %s »\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide et quitte\n" -#~ msgid "%s: language installation failed: %s" -#~ msgstr "%s : l'installation du langage a échoué : %s" +#~ msgid "%s: still %s functions declared in language \"%s\"; language not removed\n" +#~ msgstr "" +#~ "%s : il existe encore %s fonctions déclarées dans le langage « %s » ;\n" +#~ "langage non supprimé\n" #~ msgid "" -#~ "%s installs a procedural language into a PostgreSQL database.\n" #~ "\n" +#~ "If one of -d, -D, -r, -R, -s, -S, and ROLENAME is not specified, you will\n" +#~ "be prompted interactively.\n" #~ msgstr "" -#~ "%s installe un langage de procédures dans une base de données PostgreSQL.\n" #~ "\n" +#~ "Si une des options -d, -D, -r, -R, -s, -S et NOMROLE n'est pas précisée,\n" +#~ "elle sera demandée interactivement.\n" -#~ msgid " %s [OPTION]... LANGNAME [DBNAME]\n" -#~ msgstr " %s [OPTION]... NOMLANGAGE [NOMBASE]\n" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version et quitte\n" -#~ msgid " -d, --dbname=DBNAME database to install language in\n" -#~ msgstr " -d, --dbname=NOMBASE base sur laquelle installer le langage\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide et quitte\n" -#~ msgid " -l, --list show a list of currently installed languages\n" -#~ msgstr "" -#~ " -l, --list affiche la liste des langages déjà\n" -#~ " installés\n" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version et quitte\n" -#~ msgid " -E, --encrypted encrypt stored password\n" -#~ msgstr " -E, --encrypted chiffre le mot de passe stocké\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide et quitte\n" -#~ msgid " -N, --unencrypted do not encrypt stored password\n" -#~ msgstr " -N, --unencrypted ne chiffre pas le mot de passe stocké\n" +#~ msgid "pg_strdup: cannot duplicate null pointer (internal error)\n" +#~ msgstr "pg_strdup : ne peut pas dupliquer un pointeur nul (erreur interne)\n" -#~ msgid "%s: language \"%s\" is not installed in database \"%s\"\n" -#~ msgstr "%s : le langage « %s » n'est pas installé dans la base de données « %s »\n" +#~ msgid "%s: out of memory\n" +#~ msgstr "%s : mémoire épuisée\n" -#~ msgid "%s: language removal failed: %s" -#~ msgstr "%s : la suppression du langage a échoué : %s" +#~ msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" +#~ msgstr "" +#~ "%s : ne peut utiliser l'option « freeze » lors de l'exécution d'un ANALYZE\n" +#~ "seul\n" + +#~ msgid " -d, --dbname=DBNAME database from which to remove the language\n" +#~ msgstr "" +#~ " -d, --dbname=BASE base de données à partir de laquelle\n" +#~ " supprimer le langage\n" #~ msgid "" #~ "%s removes a procedural language from a database.\n" @@ -1173,59 +1178,59 @@ #~ "%s supprime un langage procédural d'une base de données.\n" #~ "\n" -#~ msgid " -d, --dbname=DBNAME database from which to remove the language\n" -#~ msgstr "" -#~ " -d, --dbname=NOMBASE base de données à partir de laquelle\n" -#~ " supprimer le langage\n" - -#~ msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" -#~ msgstr "" -#~ "%s : ne peut utiliser l'option « freeze » lors de l'exécution d'un ANALYZE\n" -#~ "seul\n" +#~ msgid "%s: language removal failed: %s" +#~ msgstr "%s : la suppression du langage a échoué : %s" -#~ msgid "%s: out of memory\n" -#~ msgstr "%s : mémoire épuisée\n" +#~ msgid "%s: language \"%s\" is not installed in database \"%s\"\n" +#~ msgstr "%s : le langage « %s » n'est pas installé dans la base de données « %s »\n" -#~ msgid "pg_strdup: cannot duplicate null pointer (internal error)\n" -#~ msgstr "pg_strdup : ne peut pas dupliquer un pointeur nul (erreur interne)\n" +#~ msgid " -N, --unencrypted do not encrypt stored password\n" +#~ msgstr " -N, --unencrypted ne chiffre pas le mot de passe stocké\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide et quitte\n" +#~ msgid " -E, --encrypted encrypt stored password\n" +#~ msgstr " -E, --encrypted chiffre le mot de passe stocké\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version et quitte\n" +#~ msgid " -l, --list show a list of currently installed languages\n" +#~ msgstr "" +#~ " -l, --list affiche la liste des langages déjà\n" +#~ " installés\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide et quitte\n" +#~ msgid " -d, --dbname=DBNAME database to install language in\n" +#~ msgstr " -d, --dbname=BASE base sur laquelle installer le langage\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version et quitte\n" +#~ msgid " %s [OPTION]... LANGNAME [DBNAME]\n" +#~ msgstr " %s [OPTION]... NOMLANGAGE [BASE]\n" #~ msgid "" +#~ "%s installs a procedural language into a PostgreSQL database.\n" #~ "\n" -#~ "If one of -d, -D, -r, -R, -s, -S, and ROLENAME is not specified, you will\n" -#~ "be prompted interactively.\n" #~ msgstr "" +#~ "%s installe un langage de procédures dans une base de données PostgreSQL.\n" #~ "\n" -#~ "Si une des options -d, -D, -r, -R, -s, -S et NOMROLE n'est pas précisée,\n" -#~ "elle sera demandée interactivement.\n" -#~ msgid "%s: still %s functions declared in language \"%s\"; language not removed\n" -#~ msgstr "" -#~ "%s : il existe encore %s fonctions déclarées dans le langage « %s » ;\n" -#~ "langage non supprimé\n" +#~ msgid "%s: language installation failed: %s" +#~ msgstr "%s : l'installation du langage a échoué : %s" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide et quitte\n" +#~ msgid "%s: language \"%s\" is already installed in database \"%s\"\n" +#~ msgstr "%s : le langage « %s » est déjà installé sur la base de données « %s »\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version et quitte\n" +#~ msgid "%s: missing required argument language name\n" +#~ msgstr "%s : argument nom du langage requis mais manquant\n" -#~ msgid "%s: could not get current user name: %s\n" -#~ msgstr "%s : n'a pas pu récupérer le nom de l'utilisateur actuel : %s\n" +#~ msgid "Procedural Languages" +#~ msgstr "Langages procéduraux" -#~ msgid "%s: could not obtain information about current user: %s\n" -#~ msgstr "%s : n'a pas pu obtenir les informations concernant l'utilisateur actuel : %s\n" +#~ msgid "Trusted?" +#~ msgstr "De confiance (trusted) ?" -#~ msgid "%s: invalid socket: %s" -#~ msgstr "%s : socket invalide : %s" +#~ msgid "yes" +#~ msgstr "oui" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgid "%s: too many parallel jobs requested (maximum: %d)\n" +#~ msgstr "%s : trop de jobs en parallèle demandés (maximum %d)\n" diff -Nru postgresql-10-10.17/src/bin/scripts/po/ru.po postgresql-10-10.19/src/bin/scripts/po/ru.po --- postgresql-10-10.17/src/bin/scripts/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/scripts/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PostgreSQL package. # Serguei A. Mokhov, , 2003-2004. # Oleg Bartunov , 2004. -# Alexander Lakhin , 2012-2017, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: pgscripts (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-11-09 07:36+0300\n" -"PO-Revision-Date: 2020-05-06 11:09+0300\n" +"POT-Creation-Date: 2021-11-08 05:26+0300\n" +"PO-Revision-Date: 2021-11-08 05:30+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -55,21 +55,19 @@ #: ../../fe_utils/print.c:2937 #, c-format msgid "Interrupted\n" -msgstr "Прерывание\n" +msgstr "Прервано\n" #: ../../fe_utils/print.c:3001 #, c-format msgid "Cannot add header to table content: column count of %d exceeded.\n" msgstr "" -"Добавить заголовок к содержимому таблицы нельзя: число столбцов превышает " -"%d.\n" +"Ошибка добавления заголовка таблицы: превышен предел числа столбцов (%d).\n" #: ../../fe_utils/print.c:3041 #, c-format msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" msgstr "" -"Добавить ячейку к содержимому таблицы нельзя: общее число ячеек превышает " -"%d.\n" +"Ошибка добавления ячейки в таблицу: превышен предел числа ячеек (%d).\n" #: ../../fe_utils/print.c:3290 #, c-format @@ -231,7 +229,7 @@ #: clusterdb.c:282 dropdb.c:176 reindexdb.c:419 vacuumdb.c:1028 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" -msgstr " --maintenance-db=ИМЯ_БД выбор другой обслуживаемой базы данных\n" +msgstr " --maintenance-db=ИМЯ_БД сменить опорную базу данных\n" #: clusterdb.c:283 #, c-format @@ -252,31 +250,31 @@ "\n" "Об ошибках сообщайте по адресу .\n" -#: common.c:84 common.c:142 +#: common.c:86 common.c:144 msgid "Password: " msgstr "Пароль: " -#: common.c:129 +#: common.c:131 #, c-format msgid "%s: could not connect to database %s: out of memory\n" msgstr "%s: не удалось подключиться к базе %s (нехватка памяти)\n" -#: common.c:156 +#: common.c:158 #, c-format msgid "%s: could not connect to database %s: %s" msgstr "%s: не удалось подключиться к базе %s: %s" -#: common.c:212 common.c:240 +#: common.c:214 common.c:242 #, c-format msgid "%s: query failed: %s" msgstr "%s: ошибка при выполнении запроса: %s" -#: common.c:214 common.c:242 +#: common.c:216 common.c:244 #, c-format msgid "%s: query was: %s\n" msgstr "%s: запрос: %s\n" -#: common.c:360 +#: common.c:362 #, c-format msgid "%s: query returned %d row instead of one: %s\n" msgid_plural "%s: query returned %d rows instead of one: %s\n" @@ -285,33 +283,33 @@ msgstr[2] "%s: запрос вернул %d строк вместо одной: %s\n" #. translator: abbreviation for "yes" -#: common.c:386 +#: common.c:388 msgid "y" msgstr "y" #. translator: abbreviation for "no" -#: common.c:388 +#: common.c:390 msgid "n" msgstr "n" #. translator: This is a question followed by the translated options for #. "yes" and "no". -#: common.c:398 +#: common.c:400 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s - да/%s - нет) " -#: common.c:412 +#: common.c:414 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "Пожалуйста, введите \"%s\" или \"%s\".\n" -#: common.c:491 common.c:528 +#: common.c:493 common.c:530 #, c-format msgid "Cancel request sent\n" msgstr "Сигнал отмены отправлен\n" -#: common.c:494 common.c:532 +#: common.c:496 common.c:534 #, c-format msgid "Could not send cancel request: %s" msgstr "Отправить сигнал отмены не удалось: %s" @@ -442,8 +440,7 @@ #: createdb.c:287 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" -msgstr "" -" --maintenance-db=ИМЯ_БД выбор другой обслуживаемой базы данных\n" +msgstr " --maintenance-db=ИМЯ_БД сменить опорную базу данных\n" #: createdb.c:288 #, c-format @@ -919,8 +916,9 @@ #: reindexdb.c:407 #, c-format -msgid " -s, --system reindex system catalogs\n" -msgstr " -s, --system переиндексировать системные каталоги\n" +msgid " -s, --system reindex system catalogs only\n" +msgstr "" +" -s, --system переиндексировать только системные каталоги\n" #: reindexdb.c:408 #, c-format diff -Nru postgresql-10-10.17/src/bin/scripts/po/sv.po postgresql-10-10.19/src/bin/scripts/po/sv.po --- postgresql-10-10.17/src/bin/scripts/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/scripts/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,5 +1,5 @@ # Swedish message translation file for postgresql -# Dennis Björklund , 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020. +# Dennis Björklund , 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # Peter Eisentraut , 2013. # Mats Erik Andersson , 2014. # @@ -7,10 +7,10 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-02-20 00:34+0000\n" -"PO-Revision-Date: 2020-02-22 07:38+0100\n" +"POT-Creation-Date: 2021-11-07 09:45+0000\n" +"PO-Revision-Date: 2021-11-07 15:07+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -69,46 +69,46 @@ msgid "invalid output format (internal error): %d" msgstr "ogiltigt utdataformat (internt fel): %d" -#: clusterdb.c:111 clusterdb.c:130 createdb.c:119 createdb.c:138 -#: createuser.c:175 createuser.c:190 dropdb.c:94 dropdb.c:103 dropdb.c:111 -#: dropuser.c:90 dropuser.c:105 dropuser.c:120 pg_isready.c:93 pg_isready.c:107 -#: reindexdb.c:131 reindexdb.c:150 vacuumdb.c:215 vacuumdb.c:234 +#: clusterdb.c:107 clusterdb.c:126 createdb.c:120 createdb.c:139 +#: createuser.c:176 createuser.c:191 dropdb.c:95 dropdb.c:104 dropdb.c:112 +#: dropuser.c:91 dropuser.c:106 dropuser.c:121 pg_isready.c:93 pg_isready.c:107 +#: reindexdb.c:127 reindexdb.c:146 vacuumdb.c:213 vacuumdb.c:232 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Försök med \"%s --help\" för mer information.\n" -#: clusterdb.c:128 createdb.c:136 createuser.c:188 dropdb.c:109 dropuser.c:103 -#: pg_isready.c:105 reindexdb.c:148 vacuumdb.c:232 +#: clusterdb.c:124 createdb.c:137 createuser.c:189 dropdb.c:110 dropuser.c:104 +#: pg_isready.c:105 reindexdb.c:144 vacuumdb.c:230 #, 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" -#: clusterdb.c:140 +#: clusterdb.c:143 #, c-format msgid "%s: cannot cluster all databases and a specific one at the same time\n" msgstr "%s: kan inte klustra alla databaser och en angiven på samma gång\n" -#: clusterdb.c:147 +#: clusterdb.c:150 #, c-format msgid "%s: cannot cluster specific table(s) in all databases\n" msgstr "%s: kan inte klustra angivna tabeller i alla databaser\n" -#: clusterdb.c:216 +#: clusterdb.c:217 #, c-format msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: klustring av tabell \"%s\" i databas \"%s\" misslyckades: %s" -#: clusterdb.c:219 +#: clusterdb.c:220 #, c-format msgid "%s: clustering of database \"%s\" failed: %s" msgstr "%s: klustring av databas \"%s\" misslyckades: %s" -#: clusterdb.c:252 +#: clusterdb.c:248 #, c-format msgid "%s: clustering database \"%s\"\n" msgstr "%s: klustring av databas \"%s\"\n" -#: clusterdb.c:273 +#: clusterdb.c:264 #, c-format msgid "" "%s clusters all previously clustered tables in a database.\n" @@ -117,19 +117,19 @@ "%s klustrar alla tidigare klustrade tabeller i en databas.\n" "\n" -#: clusterdb.c:274 createdb.c:252 createuser.c:352 dropdb.c:156 dropuser.c:161 -#: pg_isready.c:222 reindexdb.c:402 vacuumdb.c:1014 +#: clusterdb.c:265 createdb.c:268 createuser.c:359 dropdb.c:162 dropuser.c:168 +#: pg_isready.c:222 reindexdb.c:399 vacuumdb.c:1004 #, c-format msgid "Usage:\n" msgstr "Användning:\n" -#: clusterdb.c:275 reindexdb.c:403 vacuumdb.c:1015 +#: clusterdb.c:266 reindexdb.c:400 vacuumdb.c:1005 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [FLAGGA]... [DBNAMN]\n" -#: clusterdb.c:276 createdb.c:254 createuser.c:354 dropdb.c:158 dropuser.c:163 -#: pg_isready.c:225 reindexdb.c:404 vacuumdb.c:1016 +#: clusterdb.c:267 createdb.c:270 createuser.c:361 dropdb.c:164 dropuser.c:170 +#: pg_isready.c:225 reindexdb.c:401 vacuumdb.c:1006 #, c-format msgid "" "\n" @@ -138,48 +138,48 @@ "\n" "Flaggor:\n" -#: clusterdb.c:277 +#: clusterdb.c:268 #, c-format msgid " -a, --all cluster all databases\n" msgstr " -a, --all klustra alla databaser\n" -#: clusterdb.c:278 +#: clusterdb.c:269 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" msgstr " -d, --dbname=DBNAME databas att klustra\n" -#: clusterdb.c:279 createuser.c:358 dropdb.c:159 dropuser.c:164 reindexdb.c:407 +#: clusterdb.c:270 createuser.c:365 dropdb.c:165 dropuser.c:171 reindexdb.c:404 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo visa kommandon som skickas till servern\n" -#: clusterdb.c:280 reindexdb.c:409 +#: clusterdb.c:271 reindexdb.c:406 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet skriv inte ut några meddelanden\n" -#: clusterdb.c:281 +#: clusterdb.c:272 #, c-format msgid " -t, --table=TABLE cluster specific table(s) only\n" msgstr " -t, --table=TABELL klustra enbart ingivna tabeller\n" -#: clusterdb.c:282 reindexdb.c:413 +#: clusterdb.c:273 reindexdb.c:410 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose skriv massor med utdata\n" -#: clusterdb.c:283 createuser.c:370 dropdb.c:161 dropuser.c:167 reindexdb.c:414 +#: clusterdb.c:274 createuser.c:377 dropdb.c:167 dropuser.c:174 reindexdb.c:411 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version visa versionsinformation, avsluta sedan\n" -#: clusterdb.c:284 createuser.c:375 dropdb.c:163 dropuser.c:169 reindexdb.c:415 +#: clusterdb.c:275 createuser.c:382 dropdb.c:169 dropuser.c:176 reindexdb.c:412 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help visa denna hjälp, avsluta sedan\n" -#: clusterdb.c:285 createdb.c:265 createuser.c:376 dropdb.c:164 dropuser.c:170 -#: pg_isready.c:231 reindexdb.c:416 vacuumdb.c:1032 +#: clusterdb.c:276 createdb.c:281 createuser.c:383 dropdb.c:170 dropuser.c:177 +#: pg_isready.c:231 reindexdb.c:413 vacuumdb.c:1022 #, c-format msgid "" "\n" @@ -188,41 +188,41 @@ "\n" "Flaggor för anslutning:\n" -#: clusterdb.c:286 createuser.c:377 dropdb.c:165 dropuser.c:171 reindexdb.c:417 -#: vacuumdb.c:1033 +#: clusterdb.c:277 createuser.c:384 dropdb.c:171 dropuser.c:178 reindexdb.c:414 +#: vacuumdb.c:1023 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=VÄRDNAMN databasens värdnamn eller socketkatalog\n" -#: clusterdb.c:287 createuser.c:378 dropdb.c:166 dropuser.c:172 reindexdb.c:418 -#: vacuumdb.c:1034 +#: clusterdb.c:278 createuser.c:385 dropdb.c:172 dropuser.c:179 reindexdb.c:415 +#: vacuumdb.c:1024 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT databasserverns port\n" -#: clusterdb.c:288 dropdb.c:167 reindexdb.c:419 vacuumdb.c:1035 +#: clusterdb.c:279 dropdb.c:173 reindexdb.c:416 vacuumdb.c:1025 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=ANVÄNDARE användarnamn att ansluta som\n" -#: clusterdb.c:289 createuser.c:380 dropdb.c:168 dropuser.c:174 reindexdb.c:420 -#: vacuumdb.c:1036 +#: clusterdb.c:280 createuser.c:387 dropdb.c:174 dropuser.c:181 reindexdb.c:417 +#: vacuumdb.c:1026 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password fråga ej efter lösenord\n" -#: clusterdb.c:290 createuser.c:381 dropdb.c:169 dropuser.c:175 reindexdb.c:421 -#: vacuumdb.c:1037 +#: clusterdb.c:281 createuser.c:388 dropdb.c:175 dropuser.c:182 reindexdb.c:418 +#: vacuumdb.c:1027 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password framtvinga fråga om lösenord\n" -#: clusterdb.c:291 dropdb.c:170 reindexdb.c:422 vacuumdb.c:1038 +#: clusterdb.c:282 dropdb.c:176 reindexdb.c:419 vacuumdb.c:1028 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=DBNAMN annat val av underhållsdatabas\n" -#: clusterdb.c:292 +#: clusterdb.c:283 #, c-format msgid "" "\n" @@ -231,8 +231,8 @@ "\n" "Läs beskrivningen av SQL-kommandot CLUSTER för detaljer.\n" -#: clusterdb.c:293 createdb.c:273 createuser.c:382 dropdb.c:171 dropuser.c:176 -#: pg_isready.c:236 reindexdb.c:424 vacuumdb.c:1040 +#: clusterdb.c:284 createdb.c:289 createuser.c:389 dropdb.c:177 dropuser.c:183 +#: pg_isready.c:236 reindexdb.c:421 vacuumdb.c:1030 #, c-format msgid "" "\n" @@ -241,31 +241,31 @@ "\n" "Rapportera fel till .\n" -#: common.c:83 common.c:129 +#: common.c:86 common.c:144 msgid "Password: " msgstr "Lösenord: " -#: common.c:116 +#: common.c:131 #, c-format msgid "%s: could not connect to database %s: out of memory\n" msgstr "%s: kunde inte ansluta till databas %s: slut på minne\n" -#: common.c:143 +#: common.c:158 #, c-format msgid "%s: could not connect to database %s: %s" msgstr "%s: kunde inte ansluta till databas %s: %s" -#: common.c:195 common.c:223 +#: common.c:214 common.c:242 #, c-format msgid "%s: query failed: %s" msgstr "%s: fråga misslyckades: %s" -#: common.c:197 common.c:225 +#: common.c:216 common.c:244 #, c-format msgid "%s: query was: %s\n" msgstr "%s: frågan var: %s\n" -#: common.c:343 +#: common.c:362 #, c-format msgid "%s: query returned %d row instead of one: %s\n" msgid_plural "%s: query returned %d rows instead of one: %s\n" @@ -273,63 +273,63 @@ msgstr[1] "%s: fråga gav %d rader istället för en: %s\n" #. translator: abbreviation for "yes" -#: common.c:369 +#: common.c:388 msgid "y" msgstr "j" #. translator: abbreviation for "no" -#: common.c:371 +#: common.c:390 msgid "n" msgstr "n" #. translator: This is a question followed by the translated options for #. "yes" and "no". -#: common.c:381 +#: common.c:400 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s) " -#: common.c:395 +#: common.c:414 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "Var vänlig att svara \"%s\" eller \"%s\".\n" -#: common.c:474 common.c:511 +#: common.c:493 common.c:530 #, c-format msgid "Cancel request sent\n" -msgstr "Avbrottsbegäran skickad.\n" +msgstr "Förfrågan om avbrytning skickad\n" -#: common.c:477 common.c:515 +#: common.c:496 common.c:534 #, c-format msgid "Could not send cancel request: %s" msgstr "Kunde inte skicka avbrottsbegäran: %s" -#: createdb.c:146 +#: createdb.c:147 #, c-format msgid "%s: only one of --locale and --lc-ctype can be specified\n" msgstr "%s: endast en av --locale och --lc-ctype kan anges\n" -#: createdb.c:152 +#: createdb.c:153 #, c-format msgid "%s: only one of --locale and --lc-collate can be specified\n" msgstr "%s: endast en av --locale och --lc-collate kan anges\n" -#: createdb.c:164 +#: createdb.c:165 #, c-format msgid "%s: \"%s\" is not a valid encoding name\n" msgstr "%s: \"%s\" är inte en giltig teckenkodning.\n" -#: createdb.c:213 +#: createdb.c:229 #, c-format msgid "%s: database creation failed: %s" msgstr "%s: misslyckades att skapa databas: %s" -#: createdb.c:233 +#: createdb.c:249 #, c-format msgid "%s: comment creation failed (database was created): %s" msgstr "%s: misslyckades att skapa kommentar (databasen skapades): %s" -#: createdb.c:251 +#: createdb.c:267 #, c-format msgid "" "%s creates a PostgreSQL database.\n" @@ -338,92 +338,92 @@ "%s skapar en PostgreSQL-databas.\n" "\n" -#: createdb.c:253 +#: createdb.c:269 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" msgstr " %s [FLAGGA]... [DBNAMN] [BESKRIVNING]\n" -#: createdb.c:255 +#: createdb.c:271 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" msgstr " -D, --tablespace=TABELLRYMD förvalt tabellutrymme för databasen\n" -#: createdb.c:256 +#: createdb.c:272 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo visa kommandon som skickas till servern\n" -#: createdb.c:257 +#: createdb.c:273 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" msgstr " -E, --encoding=KODNING teckenkodning för databasen\n" -#: createdb.c:258 +#: createdb.c:274 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" msgstr " -l, --locale=LOKAL lokalnamn för databasen\n" -#: createdb.c:259 +#: createdb.c:275 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" msgstr " --lc-collate=LOKAL värde på LC_COLLATE för databasen\n" -#: createdb.c:260 +#: createdb.c:276 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" msgstr " --lc-ctype=LOKAL värde på LC_CTYPE för databasen\n" -#: createdb.c:261 +#: createdb.c:277 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" msgstr " -O, --owner=ÄGARE databasanvändare som äger nya databasen\n" -#: createdb.c:262 +#: createdb.c:278 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" msgstr " -T, --template=MALL databasmall att kopiera\n" -#: createdb.c:263 +#: createdb.c:279 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version visa versionsinformation, avsluta sedan\n" -#: createdb.c:264 +#: createdb.c:280 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help visa denna hjälp, avsluta sedan\n" -#: createdb.c:266 +#: createdb.c:282 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=VÄRDNAMN databasens värdnamn eller socketkatalog\n" -#: createdb.c:267 +#: createdb.c:283 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT databasserverns port\n" -#: createdb.c:268 +#: createdb.c:284 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=ANVÄNDARE användarnamn att ansluta som\n" -#: createdb.c:269 +#: createdb.c:285 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password fråga ej efter lösenord\n" -#: createdb.c:270 +#: createdb.c:286 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password framtvinga fråga om lösenord\n" -#: createdb.c:271 +#: createdb.c:287 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=DBNAMN annat val av underhållsdatabas\n" -#: createdb.c:272 +#: createdb.c:288 #, c-format msgid "" "\n" @@ -432,51 +432,51 @@ "\n" "Som standard skapas en databas med samma namn som den nuvarande användares namn.\n" -#: createuser.c:154 +#: createuser.c:155 #, c-format msgid "%s: invalid value for --connection-limit: %s\n" msgstr "%s: ogiltigt värde till --connection-limit: %s\n" -#: createuser.c:198 +#: createuser.c:199 msgid "Enter name of role to add: " msgstr "Mata in namn på den roll som skall läggas till: " -#: createuser.c:215 +#: createuser.c:216 msgid "Enter password for new role: " msgstr "Mata in lösenord för den nya rollen: " -#: createuser.c:217 +#: createuser.c:218 msgid "Enter it again: " msgstr "Mata in det igen: " -#: createuser.c:220 +#: createuser.c:221 #, c-format msgid "Passwords didn't match.\n" msgstr "Lösenorden stämde inte överens.\n" -#: createuser.c:228 +#: createuser.c:229 msgid "Shall the new role be a superuser?" msgstr "Skall den nya rollen vara en superanvändare?" -#: createuser.c:243 +#: createuser.c:244 msgid "Shall the new role be allowed to create databases?" msgstr "Skall den nya rollen tillåtas skapa databaser?" -#: createuser.c:251 +#: createuser.c:252 msgid "Shall the new role be allowed to create more new roles?" msgstr "Skall den nya rollen tillåtas skapa fler nya roller?" -#: createuser.c:281 +#: createuser.c:288 #, c-format msgid "%s: password encryption failed: %s" msgstr "%s: misslyckades med lösenordskryptering: %s" -#: createuser.c:336 +#: createuser.c:343 #, c-format msgid "%s: creation of new role failed: %s" msgstr "%s: misslyckades med att skapa ny roll: %s" -#: createuser.c:351 +#: createuser.c:358 #, c-format msgid "" "%s creates a new PostgreSQL role.\n" @@ -485,32 +485,32 @@ "%s skapar en ny PostgreSQL-roll.\n" "\n" -#: createuser.c:353 dropuser.c:162 +#: createuser.c:360 dropuser.c:169 #, c-format msgid " %s [OPTION]... [ROLENAME]\n" msgstr " %s [FLAGGA]... [ROLLNAMN]\n" -#: createuser.c:355 +#: createuser.c:362 #, c-format msgid " -c, --connection-limit=N connection limit for role (default: no limit)\n" msgstr " -c, --connection-limit=N anslutningsgräns för roll (standard: ingen gräns)\n" -#: createuser.c:356 +#: createuser.c:363 #, c-format msgid " -d, --createdb role can create new databases\n" msgstr " -d, --createdb rollen kan skapa nya databaser\n" -#: createuser.c:357 +#: createuser.c:364 #, c-format msgid " -D, --no-createdb role cannot create databases (default)\n" msgstr " -D, --no-createdb rollen kan inte skapa databaser (standard)\n" -#: createuser.c:359 +#: createuser.c:366 #, c-format msgid " -g, --role=ROLE new role will be a member of this role\n" msgstr " -g, --role=ROLL nya rollen kommer bli medlem i denna roll\n" -#: createuser.c:360 +#: createuser.c:367 #, c-format msgid "" " -i, --inherit role inherits privileges of roles it is a\n" @@ -519,47 +519,47 @@ " -i, --inherit rollen ärver rättigheter från roller den\n" " är medlem i (standard)\n" -#: createuser.c:362 +#: createuser.c:369 #, c-format msgid " -I, --no-inherit role does not inherit privileges\n" msgstr " -I, --no-inherit rollen ärver inga rättigheter\n" -#: createuser.c:363 +#: createuser.c:370 #, c-format msgid " -l, --login role can login (default)\n" msgstr " -l, --login rollen kan logga in (standard)\n" -#: createuser.c:364 +#: createuser.c:371 #, c-format msgid " -L, --no-login role cannot login\n" msgstr " -L, --no-login rollen kan inte logga in\n" -#: createuser.c:365 +#: createuser.c:372 #, c-format msgid " -P, --pwprompt assign a password to new role\n" msgstr " -P, --pwprompt tilldela den nya rollen ett lösenord\n" -#: createuser.c:366 +#: createuser.c:373 #, c-format msgid " -r, --createrole role can create new roles\n" msgstr " -r, --createrole rollen kan skapa nya roller\n" -#: createuser.c:367 +#: createuser.c:374 #, c-format msgid " -R, --no-createrole role cannot create roles (default)\n" msgstr " -R, --no-createrole rollen kan inte skapa roller (standard)\n" -#: createuser.c:368 +#: createuser.c:375 #, c-format msgid " -s, --superuser role will be superuser\n" msgstr " -s, --superuser rollen blir en superanvändare\n" -#: createuser.c:369 +#: createuser.c:376 #, c-format msgid " -S, --no-superuser role will not be superuser (default)\n" msgstr " -S, --no-superuser rollen blir inte superanvändare (standard)\n" -#: createuser.c:371 +#: createuser.c:378 #, c-format msgid "" " --interactive prompt for missing role name and attributes rather\n" @@ -568,41 +568,41 @@ " --interactive fråga efter rollnamn och egenskaper, snarare än\n" " att falla tillbaka på förval\n" -#: createuser.c:373 +#: createuser.c:380 #, c-format msgid " --replication role can initiate replication\n" msgstr " --replication rollen kan starta replikering\n" -#: createuser.c:374 +#: createuser.c:381 #, c-format msgid " --no-replication role cannot initiate replication\n" msgstr " --no-replication rollen får inte starta replikering\n" -#: createuser.c:379 +#: createuser.c:386 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to create)\n" msgstr " -U, --username=ANVÄNDARE användarnamn att ansluta som (ej den som skapas)\n" -#: dropdb.c:102 +#: dropdb.c:103 #, c-format msgid "%s: missing required argument database name\n" msgstr "%s: saknar nödvändigt databasnamn\n" -#: dropdb.c:117 +#: dropdb.c:118 #, c-format msgid "Database \"%s\" will be permanently removed.\n" msgstr "Databasen \"%s\" kommer att tas bort permanent.\n" -#: dropdb.c:118 dropuser.c:128 +#: dropdb.c:119 dropuser.c:129 msgid "Are you sure?" msgstr "Är du säker?" -#: dropdb.c:140 +#: dropdb.c:146 #, c-format msgid "%s: database removal failed: %s" msgstr "%s: borttagning av databas misslyckades: %s" -#: dropdb.c:155 +#: dropdb.c:161 #, c-format msgid "" "%s removes a PostgreSQL database.\n" @@ -611,48 +611,48 @@ "%s tar bort en PostgreSQL-databas.\n" "\n" -#: dropdb.c:157 +#: dropdb.c:163 #, c-format msgid " %s [OPTION]... DBNAME\n" msgstr " %s [FLAGGA]... DBNAMN\n" -#: dropdb.c:160 +#: dropdb.c:166 #, c-format msgid " -i, --interactive prompt before deleting anything\n" msgstr " -i, --interactive fråga innan något tas bort\n" -#: dropdb.c:162 +#: dropdb.c:168 #, c-format msgid " --if-exists don't report error if database doesn't exist\n" msgstr " --if-exists felrapportera ej om databasen saknas\n" -#: dropuser.c:113 +#: dropuser.c:114 msgid "Enter name of role to drop: " msgstr "Mata inn namnet på den roll som skall tas bort: " -#: dropuser.c:119 +#: dropuser.c:120 #, c-format msgid "%s: missing required argument role name\n" msgstr "%s: saknar ett nödvändigt rollnamn\n" -#: dropuser.c:127 +#: dropuser.c:128 #, c-format msgid "Role \"%s\" will be permanently removed.\n" msgstr "Rollen \"%s\" kommer att tas bort permanent.\n" -#: dropuser.c:145 +#: dropuser.c:152 #, c-format msgid "%s: removal of role \"%s\" failed: %s" msgstr "%s: borttagning av rollen \"%s\" misslyckades: %s" -#: dropuser.c:160 +#: dropuser.c:167 #, c-format msgid "" "%s removes a PostgreSQL role.\n" "\n" msgstr "%s tar bort en PostgreSQL-roll.\n" -#: dropuser.c:165 +#: dropuser.c:172 #, c-format msgid "" " -i, --interactive prompt before deleting anything, and prompt for\n" @@ -661,12 +661,12 @@ " -i, --interactive fråga innan något tas bort och fråga efter\n" " rollnamn om sådant saknas\n" -#: dropuser.c:168 +#: dropuser.c:175 #, c-format msgid " --if-exists don't report error if user doesn't exist\n" msgstr " --if-exists felrapportera ej om användaren saknas\n" -#: dropuser.c:173 +#: dropuser.c:180 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to drop)\n" msgstr " -U, --username=ANVÄNDARE användare som ansluter (inte den som tas bort)\n" @@ -760,77 +760,77 @@ msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=ANVÄNDARE användarnamn att ansluta som\n" -#: reindexdb.c:160 +#: reindexdb.c:163 #, c-format msgid "%s: cannot reindex all databases and a specific one at the same time\n" msgstr "%s: kan inte omindexera alla databaser och samtidigt en specifik databas\n" -#: reindexdb.c:165 +#: reindexdb.c:168 #, c-format msgid "%s: cannot reindex all databases and system catalogs at the same time\n" msgstr "%s: kan inte omindexera alla databaser samtidigt med systemkatalogerna\n" -#: reindexdb.c:170 +#: reindexdb.c:173 #, c-format msgid "%s: cannot reindex specific schema(s) in all databases\n" msgstr "%s: kan inte omindexera angivna scheman i alla databaser\n" -#: reindexdb.c:175 +#: reindexdb.c:178 #, c-format msgid "%s: cannot reindex specific table(s) in all databases\n" msgstr "%s: Kan inte indexera specifik tabell i alla databaser\n" -#: reindexdb.c:180 +#: reindexdb.c:183 #, c-format msgid "%s: cannot reindex specific index(es) in all databases\n" msgstr "%s: Kan inte omindexera angivet index i alla databaser\n" -#: reindexdb.c:191 +#: reindexdb.c:196 #, c-format msgid "%s: cannot reindex specific schema(s) and system catalogs at the same time\n" msgstr "%s: kan inte omindexera angivna scheman och systemkataloger på samma gång\n" -#: reindexdb.c:196 +#: reindexdb.c:201 #, c-format msgid "%s: cannot reindex specific table(s) and system catalogs at the same time\n" msgstr "%s: kan inte omindexera specifik tabell och systemkatalogerna samtidigt\n" -#: reindexdb.c:201 +#: reindexdb.c:206 #, c-format msgid "%s: cannot reindex specific index(es) and system catalogs at the same time\n" msgstr "%s: kan inte omindexera angivna index och systemkatalogerna samtidigt.\n" -#: reindexdb.c:308 +#: reindexdb.c:316 #, c-format msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: omindexering av tabell \"%s\" i databasen \"%s\" misslyckades: %s" -#: reindexdb.c:311 +#: reindexdb.c:319 #, c-format msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" msgstr "%s: omindexering av index \"%s\" i databasen \"%s\" misslyckades: %s" -#: reindexdb.c:314 +#: reindexdb.c:322 #, c-format msgid "%s: reindexing of schema \"%s\" in database \"%s\" failed: %s" msgstr "%s: omindexering av schemat \"%s\" i databasen \"%s\" misslyckades: %s" -#: reindexdb.c:317 +#: reindexdb.c:325 #, c-format msgid "%s: reindexing of database \"%s\" failed: %s" msgstr "%s: omindexering av databasen \"%s\" misslyckades: %s" -#: reindexdb.c:350 +#: reindexdb.c:353 #, c-format msgid "%s: reindexing database \"%s\"\n" msgstr "%s: omindexering av databasen \"%s\"\n" -#: reindexdb.c:389 +#: reindexdb.c:386 #, c-format msgid "%s: reindexing of system catalogs failed: %s" msgstr "%s: omindexering av systemkatalogerna misslyckades: %s" -#: reindexdb.c:401 +#: reindexdb.c:398 #, c-format msgid "" "%s reindexes a PostgreSQL database.\n" @@ -839,37 +839,37 @@ "%s indexerar om en PostgreSQL-databas.\n" "\n" -#: reindexdb.c:405 +#: reindexdb.c:402 #, c-format msgid " -a, --all reindex all databases\n" msgstr " -a, --all indexera om alla databaser\n" -#: reindexdb.c:406 +#: reindexdb.c:403 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" msgstr " -d, --dbname=DBNAME databas att indexera om\n" -#: reindexdb.c:408 +#: reindexdb.c:405 #, c-format msgid " -i, --index=INDEX recreate specific index(es) only\n" msgstr " -i, --index=INDEX återskapa enbart angivna index\n" -#: reindexdb.c:410 +#: reindexdb.c:407 #, c-format -msgid " -s, --system reindex system catalogs\n" -msgstr " -s, --system indexera om systemkatalogerna\n" +msgid " -s, --system reindex system catalogs only\n" +msgstr " -s, --system indexera enbart om systemkatalogerna\n" -#: reindexdb.c:411 +#: reindexdb.c:408 #, c-format msgid " -S, --schema=SCHEMA reindex specific schema(s) only\n" msgstr " -S, --schema=SCHEMA indexera enbart om angivna scheman\n" -#: reindexdb.c:412 +#: reindexdb.c:409 #, c-format msgid " -t, --table=TABLE reindex specific table(s) only\n" msgstr " -t, --table=TABELL indexera endast om angivna tabeller\n" -#: reindexdb.c:423 +#: reindexdb.c:420 #, c-format msgid "" "\n" @@ -878,64 +878,64 @@ "\n" "Läs beskrivningen av SQL-kommandot REINDEX för detaljer.\n" -#: vacuumdb.c:203 +#: vacuumdb.c:201 #, c-format msgid "%s: number of parallel jobs must be at least 1\n" msgstr "%s: antalet parallella jobb måste vara minst 1\n" -#: vacuumdb.c:242 vacuumdb.c:248 +#: vacuumdb.c:240 vacuumdb.c:246 #, c-format msgid "%s: cannot use the \"%s\" option when performing only analyze\n" msgstr "%s: flaggan \"%s\" kan inte användas vid enbart analys\n" -#: vacuumdb.c:265 +#: vacuumdb.c:270 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "%s: kan inte städa alla databaser och endast en angiven på samma gång\n" -#: vacuumdb.c:271 +#: vacuumdb.c:276 #, c-format msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "%s: kan inte städa en specifik tabell i alla databaser.\n" -#: vacuumdb.c:357 +#: vacuumdb.c:361 msgid "Generating minimal optimizer statistics (1 target)" msgstr "Skapar minimal optimeringsstatistik (1 mål)" -#: vacuumdb.c:358 +#: vacuumdb.c:362 msgid "Generating medium optimizer statistics (10 targets)" msgstr "Skapar medium optimeringsstatistik (10 mål)" -#: vacuumdb.c:359 +#: vacuumdb.c:363 msgid "Generating default (full) optimizer statistics" msgstr "Skapar förvald (full) optimeringsstatistik" -#: vacuumdb.c:371 +#: vacuumdb.c:374 #, c-format msgid "%s: processing database \"%s\": %s\n" msgstr "%s: processar databasen \"%s\": %s\n" -#: vacuumdb.c:374 +#: vacuumdb.c:377 #, c-format msgid "%s: vacuuming database \"%s\"\n" msgstr "%s: städar databasen \"%s\".\n" -#: vacuumdb.c:453 +#: vacuumdb.c:455 #, c-format msgid "%s: too many jobs for this platform -- try %d\n" msgstr "%s: för många jobb för denna plattform -- försök med %d\n" -#: vacuumdb.c:740 +#: vacuumdb.c:730 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: städning av tabell \"%s\" i databasen \"%s\" misslyckades: %s" -#: vacuumdb.c:743 vacuumdb.c:878 +#: vacuumdb.c:733 vacuumdb.c:868 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "%s: städning av databasen \"%s\" misslyckades: %s" -#: vacuumdb.c:1013 +#: vacuumdb.c:1003 #, c-format msgid "" "%s cleans and analyzes a PostgreSQL database.\n" @@ -944,67 +944,67 @@ "%s städar och analyserar en PostgreSQL-databas.\n" "\n" -#: vacuumdb.c:1017 +#: vacuumdb.c:1007 #, c-format msgid " -a, --all vacuum all databases\n" msgstr " -a, --all städa i alla databaser\n" -#: vacuumdb.c:1018 +#: vacuumdb.c:1008 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" msgstr " -d, --dbname=DBNAMN databas att städa i\n" -#: vacuumdb.c:1019 +#: vacuumdb.c:1009 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo visa kommandon som skickas till servern\n" -#: vacuumdb.c:1020 +#: vacuumdb.c:1010 #, c-format msgid " -f, --full do full vacuuming\n" msgstr " -f, --full utför full städning\n" -#: vacuumdb.c:1021 +#: vacuumdb.c:1011 #, c-format msgid " -F, --freeze freeze row transaction information\n" msgstr " -F, --freeze frys information om radtransaktioner\n" -#: vacuumdb.c:1022 +#: vacuumdb.c:1012 #, c-format msgid " -j, --jobs=NUM use this many concurrent connections to vacuum\n" msgstr " -j, --jobs=NUM använd så här många samtida anslutningar för städning\n" -#: vacuumdb.c:1023 +#: vacuumdb.c:1013 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet skriv inte ut några meddelanden\n" -#: vacuumdb.c:1024 +#: vacuumdb.c:1014 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n" msgstr " -t, --table='TABELL[(KOLUMNER)]' städa enbart i dessa tabeller\n" -#: vacuumdb.c:1025 +#: vacuumdb.c:1015 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose skriv massor med utdata\n" -#: vacuumdb.c:1026 +#: vacuumdb.c:1016 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version visa versionsinformation, avsluta sedan\n" -#: vacuumdb.c:1027 +#: vacuumdb.c:1017 #, c-format msgid " -z, --analyze update optimizer statistics\n" msgstr " -z, --analyze uppdatera optimeringsstatistik\n" -#: vacuumdb.c:1028 +#: vacuumdb.c:1018 #, c-format msgid " -Z, --analyze-only only update optimizer statistics; no vacuum\n" msgstr " -Z, --analyze-only uppdatera bara optimeringsstatistik; ingen städning\n" -#: vacuumdb.c:1029 +#: vacuumdb.c:1019 #, c-format msgid "" " --analyze-in-stages only update optimizer statistics, in multiple\n" @@ -1013,12 +1013,12 @@ " --analyze-in-stages uppdatera bara optimeringsstatistik, men i\n" " flera steg för snabbare resultat; ingen städning\n" -#: vacuumdb.c:1031 +#: vacuumdb.c:1021 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help visa denna hjälp, avsluta sedan\n" -#: vacuumdb.c:1039 +#: vacuumdb.c:1029 #, c-format msgid "" "\n" @@ -1026,74 +1026,3 @@ msgstr "" "\n" "Läs beskrivningen av SQL-kommandot VACUUM för detaljer.\n" - -#~ msgid "%s: too many parallel jobs requested (maximum: %d)\n" -#~ msgstr "%s: för många parallella job (maximum: %d)\n" - -#~ msgid "%s: invalid socket: %s" -#~ msgstr "%s: ogiltigt uttag: %s" - -#~ msgid "Name" -#~ msgstr "Namn" - -#~ msgid "no" -#~ msgstr "nej" - -#~ msgid "yes" -#~ msgstr "ja" - -#~ msgid "Trusted?" -#~ msgstr "Tillförlitligt?" - -#~ msgid "Procedural Languages" -#~ msgstr "Procedurspråk" - -#~ msgid "%s: missing required argument language name\n" -#~ msgstr "%s: Saknar nödvändigt språknamnsargument.\n" - -#~ msgid "%s: language \"%s\" is already installed in database \"%s\"\n" -#~ msgstr "%s: Språket \"%s\" är redan installerat i databasen \"%s\".\n" - -#~ msgid "%s: language installation failed: %s" -#~ msgstr "%s: Språkinstallation misslyckades: %s" - -#~ msgid "" -#~ "%s installs a procedural language into a PostgreSQL database.\n" -#~ "\n" -#~ msgstr "" -#~ "%s installerar ett procedurspråk i en PostgreSQL-databas.\n" -#~ "\n" - -#~ msgid " %s [OPTION]... LANGNAME [DBNAME]\n" -#~ msgstr " %s [FLAGGA]... SPRÅK [DBNAMN]\n" - -#~ msgid " -d, --dbname=DBNAME database to install language in\n" -#~ msgstr " -d, --dbname=DBNAMN databas där språket installeras\n" - -#~ msgid " -l, --list show a list of currently installed languages\n" -#~ msgstr " -l, --list lista alla nu installerade språk\n" - -#~ msgid " -E, --encrypted encrypt stored password\n" -#~ msgstr " -E, --encrypted lösenordet skall sparas krypterat\n" - -#~ msgid " -N, --unencrypted do not encrypt stored password\n" -#~ msgstr " -N, --unencrypted lösenordet sparas okrypterat\n" - -#~ msgid "%s: language \"%s\" is not installed in database \"%s\"\n" -#~ msgstr "%s: Språk \"%s\" är inte installerat i databasen \"%s\".\n" - -#~ msgid "%s: language removal failed: %s" -#~ msgstr "%s: Borttagning av språk misslyckades: %s" - -#~ msgid "" -#~ "%s removes a procedural language from a database.\n" -#~ "\n" -#~ msgstr "" -#~ "%s tar bort ett procedurspråk från en databas.\n" -#~ "\n" - -#~ msgid " -d, --dbname=DBNAME database from which to remove the language\n" -#~ msgstr " -d, --dbname=DBNAMN databas från vilken språket skall tas bort\n" - -#~ msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" -#~ msgstr "%s: Växeln \"freeze\" kan inte utföras med enbart analys.\n" diff -Nru postgresql-10-10.17/src/bin/scripts/reindexdb.c postgresql-10-10.19/src/bin/scripts/reindexdb.c --- postgresql-10-10.17/src/bin/scripts/reindexdb.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/bin/scripts/reindexdb.c 2021-11-08 22:05:38.000000000 +0000 @@ -404,7 +404,7 @@ printf(_(" -e, --echo show the commands being sent to the server\n")); printf(_(" -i, --index=INDEX recreate specific index(es) only\n")); printf(_(" -q, --quiet don't write any messages\n")); - printf(_(" -s, --system reindex system catalogs\n")); + printf(_(" -s, --system reindex system catalogs only\n")); printf(_(" -S, --schema=SCHEMA reindex specific schema(s) only\n")); printf(_(" -t, --table=TABLE reindex specific table(s) only\n")); printf(_(" -v, --verbose write a lot of output\n")); diff -Nru postgresql-10-10.17/src/fe_utils/print.c postgresql-10-10.19/src/fe_utils/print.c --- postgresql-10-10.17/src/fe_utils/print.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/fe_utils/print.c 2021-11-08 22:05:38.000000000 +0000 @@ -3526,6 +3526,9 @@ curr_width += char_width; str += PQmblen((char *) str, encoding); + + if (str > end) /* Don't overrun invalid string */ + str = end; } *target_width = curr_width; diff -Nru postgresql-10-10.17/src/include/access/twophase.h postgresql-10-10.19/src/include/access/twophase.h --- postgresql-10-10.17/src/include/access/twophase.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/access/twophase.h 2021-11-08 22:05:38.000000000 +0000 @@ -33,6 +33,8 @@ extern void AtAbort_Twophase(void); extern void PostPrepare_Twophase(void); +extern TransactionId TwoPhaseGetXidByVirtualXID(VirtualTransactionId vxid, + bool *have_more); extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid); extern BackendId TwoPhaseGetDummyBackendId(TransactionId xid); diff -Nru postgresql-10-10.17/src/include/access/xlog_internal.h postgresql-10-10.19/src/include/access/xlog_internal.h --- postgresql-10-10.17/src/include/access/xlog_internal.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/access/xlog_internal.h 2021-11-08 22:05:38.000000000 +0000 @@ -79,8 +79,10 @@ #define XLP_LONG_HEADER 0x0002 /* This flag indicates backup blocks starting in this page are optional */ #define XLP_BKP_REMOVABLE 0x0004 +/* Replaces a missing contrecord; see CreateOverwriteContrecordRecord */ +#define XLP_FIRST_IS_OVERWRITE_CONTRECORD 0x0008 /* All defined flag bits in xlp_info (used for validity checking of header) */ -#define XLP_ALL_FLAGS 0x0007 +#define XLP_ALL_FLAGS 0x000F #define XLogPageHeaderSize(hdr) \ (((hdr)->xlp_info & XLP_LONG_HEADER) ? SizeOfXLogLongPHD : SizeOfXLogShortPHD) @@ -226,6 +228,13 @@ char rp_name[MAXFNAMELEN]; } xl_restore_point; +/* Overwrite of prior contrecord */ +typedef struct xl_overwrite_contrecord +{ + XLogRecPtr overwritten_lsn; + TimestampTz overwrite_time; +} xl_overwrite_contrecord; + /* End of recovery mark, when we don't do an END_OF_RECOVERY checkpoint */ typedef struct xl_end_of_recovery { diff -Nru postgresql-10-10.17/src/include/access/xlogreader.h postgresql-10-10.19/src/include/access/xlogreader.h --- postgresql-10-10.17/src/include/access/xlogreader.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/access/xlogreader.h 2021-11-08 22:05:38.000000000 +0000 @@ -186,6 +186,16 @@ /* Buffer to hold error message */ char *errormsg_buf; + + /* + * Set at the end of recovery: the start point of a partial record at the + * end of WAL (InvalidXLogRecPtr if there wasn't one), and the start + * location of its first contrecord that went missing. + */ + XLogRecPtr abortedRecPtr; + XLogRecPtr missingContrecPtr; + /* Set when XLP_FIRST_IS_OVERWRITE_CONTRECORD is found */ + XLogRecPtr overwrittenRecPtr; }; /* Get a new XLogReader */ diff -Nru postgresql-10-10.17/src/include/catalog/pg_control.h postgresql-10-10.19/src/include/catalog/pg_control.h --- postgresql-10-10.17/src/include/catalog/pg_control.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/catalog/pg_control.h 2021-11-08 22:05:38.000000000 +0000 @@ -77,6 +77,7 @@ #define XLOG_FPI_FOR_HINT 0xA0 #define XLOG_FPI 0xB0 #define XLOG_FPI_MULTI 0xC0 +#define XLOG_OVERWRITE_CONTRECORD 0xD0 /* diff -Nru postgresql-10-10.17/src/include/lib/simplehash.h postgresql-10-10.19/src/include/lib/simplehash.h --- postgresql-10-10.17/src/include/lib/simplehash.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/lib/simplehash.h 2021-11-08 22:05:38.000000000 +0000 @@ -140,7 +140,7 @@ SH_SCOPE SH_TYPE *SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data); SH_SCOPE void SH_DESTROY(SH_TYPE * tb); -SH_SCOPE void SH_GROW(SH_TYPE * tb, uint32 newsize); +SH_SCOPE void SH_GROW(SH_TYPE * tb, uint64 newsize); SH_SCOPE SH_ELEMENT_TYPE *SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found); SH_SCOPE SH_ELEMENT_TYPE *SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key); SH_SCOPE bool SH_DELETE(SH_TYPE * tb, SH_KEY_TYPE key); @@ -211,7 +211,7 @@ * the hashtable. */ static inline void -SH_COMPUTE_PARAMETERS(SH_TYPE * tb, uint32 newsize) +SH_COMPUTE_PARAMETERS(SH_TYPE * tb, uint64 newsize) { uint64 size; @@ -231,11 +231,7 @@ /* now set size */ tb->size = size; - - if (tb->size == SH_MAX_SIZE) - tb->sizemask = 0; - else - tb->sizemask = tb->size - 1; + tb->sizemask = (uint32) (size - 1); /* * Compute the next threshold at which we need to grow the hash table @@ -364,7 +360,7 @@ * performance-wise, when known at some point. */ SH_SCOPE void -SH_GROW(SH_TYPE * tb, uint32 newsize) +SH_GROW(SH_TYPE * tb, uint64 newsize) { uint64 oldsize = tb->size; SH_ELEMENT_TYPE *olddata = tb->data; diff -Nru postgresql-10-10.17/src/include/libpq/libpq.h postgresql-10-10.19/src/include/libpq/libpq.h --- postgresql-10-10.17/src/include/libpq/libpq.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/libpq/libpq.h 2021-11-08 22:05:38.000000000 +0000 @@ -70,6 +70,7 @@ extern int pq_getbyte(void); extern int pq_peekbyte(void); extern int pq_getbyte_if_available(unsigned char *c); +extern bool pq_buffer_has_data(void); extern int pq_putbytes(const char *s, size_t len); /* diff -Nru postgresql-10-10.17/src/include/miscadmin.h postgresql-10-10.19/src/include/miscadmin.h --- postgresql-10-10.17/src/include/miscadmin.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/miscadmin.h 2021-11-08 22:05:38.000000000 +0000 @@ -56,6 +56,15 @@ * allowing die interrupts: HOLD_CANCEL_INTERRUPTS() and * RESUME_CANCEL_INTERRUPTS(). * + * Note that ProcessInterrupts() has also acquired a number of tasks that + * do not necessarily cause a query-cancel-or-die response. Hence, it's + * possible that it will just clear InterruptPending and return. + * + * INTERRUPTS_PENDING_CONDITION() can be checked to see whether an + * interrupt needs to be serviced, without trying to do so immediately. + * Some callers are also interested in INTERRUPTS_CAN_BE_PROCESSED(), + * which tells whether ProcessInterrupts is sure to clear the interrupt. + * * Special mechanisms are used to let an interrupt be accepted when we are * waiting for a lock or when we are waiting for command input (but, of * course, only if the interrupt holdoff counter is zero). See the @@ -93,24 +102,27 @@ /* in tcop/postgres.c */ extern void ProcessInterrupts(void); +/* Test whether an interrupt is pending */ #ifndef WIN32 +#define INTERRUPTS_PENDING_CONDITION() \ + (unlikely(InterruptPending)) +#else +#define INTERRUPTS_PENDING_CONDITION() \ + (unlikely(UNBLOCKED_SIGNAL_QUEUE()) ? pgwin32_dispatch_queued_signals() : 0, \ + unlikely(InterruptPending)) +#endif +/* Service interrupt, if one is pending and it's safe to service it now */ #define CHECK_FOR_INTERRUPTS() \ do { \ - if (unlikely(InterruptPending)) \ - ProcessInterrupts(); \ -} while(0) -#else /* WIN32 */ - -#define CHECK_FOR_INTERRUPTS() \ -do { \ - if (unlikely(UNBLOCKED_SIGNAL_QUEUE())) \ - pgwin32_dispatch_queued_signals(); \ - if (unlikely(InterruptPending)) \ + if (INTERRUPTS_PENDING_CONDITION()) \ ProcessInterrupts(); \ } while(0) -#endif /* WIN32 */ +/* Is ProcessInterrupts() guaranteed to clear InterruptPending? */ +#define INTERRUPTS_CAN_BE_PROCESSED() \ + (InterruptHoldoffCount == 0 && CritSectionCount == 0 && \ + QueryCancelHoldoffCount == 0) #define HOLD_INTERRUPTS() (InterruptHoldoffCount++) diff -Nru postgresql-10-10.17/src/include/nodes/parsenodes.h postgresql-10-10.19/src/include/nodes/parsenodes.h --- postgresql-10-10.17/src/include/nodes/parsenodes.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/nodes/parsenodes.h 2021-11-08 22:05:38.000000000 +0000 @@ -898,10 +898,10 @@ * inFromCl marks those range variables that are listed in the FROM clause. * It's false for RTEs that are added to a query behind the scenes, such * as the NEW and OLD variables for a rule, or the subqueries of a UNION. - * This flag is not used anymore during parsing, since the parser now uses - * a separate "namespace" data structure to control visibility, but it is - * needed by ruleutils.c to determine whether RTEs should be shown in - * decompiled queries. + * This flag is not used during parsing (except in transformLockingClause, + * q.v.); the parser now uses a separate "namespace" data structure to + * control visibility. But it is needed by ruleutils.c to determine + * whether RTEs should be shown in decompiled queries. * * requiredPerms and checkAsUser specify run-time access permissions * checks to be performed at query startup. The user must have *all* diff -Nru postgresql-10-10.17/src/include/pg_config.h.in postgresql-10-10.19/src/include/pg_config.h.in --- postgresql-10-10.17/src/include/pg_config.h.in 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/pg_config.h.in 2021-11-08 22:05:38.000000000 +0000 @@ -150,6 +150,10 @@ don't. */ #undef HAVE_DECL_STRLCPY +/* Define to 1 if you have the declaration of `strnlen', and to 0 if you + don't. */ +#undef HAVE_DECL_STRNLEN + /* Define to 1 if you have the declaration of `strtoll', and to 0 if you don't. */ #undef HAVE_DECL_STRTOLL @@ -317,9 +321,6 @@ /* Define to 1 if you have the `ldap' library (-lldap). */ #undef HAVE_LIBLDAP -/* Define to 1 if you have the `ldap_r' library (-lldap_r). */ -#undef HAVE_LIBLDAP_R - /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM @@ -504,6 +505,9 @@ /* Define to 1 if you have the `strlcpy' function. */ #undef HAVE_STRLCPY +/* Define to 1 if you have the `strnlen' function. */ +#undef HAVE_STRNLEN + /* Define to use have a strong random number source */ #undef HAVE_STRONG_RANDOM diff -Nru postgresql-10-10.17/src/include/pg_config.h.win32 postgresql-10-10.19/src/include/pg_config.h.win32 --- postgresql-10-10.17/src/include/pg_config.h.win32 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/pg_config.h.win32 2021-11-08 22:05:38.000000000 +0000 @@ -102,6 +102,10 @@ don't. */ #define HAVE_DECL_SNPRINTF 1 +/* Define to 1 if you have the declaration of `strnlen', and to 0 if you + don't. */ +#define HAVE_DECL_STRNLEN 1 + /* Define to 1 if you have the declaration of `strtoll', and to 0 if you don't. */ #define HAVE_DECL_STRTOLL 1 @@ -271,6 +275,9 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_PAM_PAM_APPL_H */ +/* Define to 1 if you have the `strnlen' function. */ +#define HAVE_STRNLEN 1 + /* Define to 1 if you have the `poll' function. */ /* #undef HAVE_POLL */ @@ -579,10 +586,10 @@ #define PACKAGE_NAME "PostgreSQL" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "PostgreSQL 10.17" +#define PACKAGE_STRING "PostgreSQL 10.19" /* Define to the version of this package. */ -#define PACKAGE_VERSION "10.17" +#define PACKAGE_VERSION "10.19" /* Define to the name of a signed 128-bit integer type. */ #undef PG_INT128_TYPE @@ -591,10 +598,10 @@ #define PG_INT64_TYPE long long int /* PostgreSQL version as a string */ -#define PG_VERSION "10.17" +#define PG_VERSION "10.19" /* PostgreSQL version as a number */ -#define PG_VERSION_NUM 100017 +#define PG_VERSION_NUM 100019 /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "postgresql" diff -Nru postgresql-10-10.17/src/include/port.h postgresql-10-10.19/src/include/port.h --- postgresql-10-10.17/src/include/port.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/port.h 2021-11-08 22:05:38.000000000 +0000 @@ -409,6 +409,10 @@ extern size_t strlcpy(char *dst, const char *src, size_t siz); #endif +#if !HAVE_DECL_STRNLEN +extern size_t strnlen(const char *str, size_t maxlen); +#endif + #if !defined(HAVE_RANDOM) extern long random(void); #endif diff -Nru postgresql-10-10.17/src/include/replication/logicalrelation.h postgresql-10-10.19/src/include/replication/logicalrelation.h --- postgresql-10-10.17/src/include/replication/logicalrelation.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/replication/logicalrelation.h 2021-11-08 22:05:38.000000000 +0000 @@ -38,7 +38,4 @@ extern void logicalrep_rel_close(LogicalRepRelMapEntry *rel, LOCKMODE lockmode); -extern void logicalrep_typmap_update(LogicalRepTyp *remotetyp); -extern char *logicalrep_typmap_gettypname(Oid remoteid); - #endif /* LOGICALRELATION_H */ diff -Nru postgresql-10-10.17/src/include/replication/reorderbuffer.h postgresql-10-10.19/src/include/replication/reorderbuffer.h --- postgresql-10-10.17/src/include/replication/reorderbuffer.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/replication/reorderbuffer.h 2021-11-08 22:05:38.000000000 +0000 @@ -44,10 +44,10 @@ * changes. Users of the decoding facilities will never see changes with * *_INTERNAL_* actions. * - * The INTERNAL_SPEC_INSERT and INTERNAL_SPEC_CONFIRM changes concern - * "speculative insertions", and their confirmation respectively. They're - * used by INSERT .. ON CONFLICT .. UPDATE. Users of logical decoding don't - * have to care about these. + * The INTERNAL_SPEC_INSERT and INTERNAL_SPEC_CONFIRM, and INTERNAL_SPEC_ABORT + * changes concern "speculative insertions", their confirmation, and abort + * respectively. They're used by INSERT .. ON CONFLICT .. UPDATE. Users of + * logical decoding don't have to care about these. */ enum ReorderBufferChangeType { @@ -59,7 +59,8 @@ REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID, REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID, REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT, - REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM + REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM, + REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT }; /* diff -Nru postgresql-10-10.17/src/include/replication/snapbuild.h postgresql-10-10.19/src/include/replication/snapbuild.h --- postgresql-10-10.17/src/include/replication/snapbuild.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/replication/snapbuild.h 2021-11-08 22:05:38.000000000 +0000 @@ -69,6 +69,7 @@ extern Snapshot SnapBuildInitialSnapshot(SnapBuild *builder); extern const char *SnapBuildExportSnapshot(SnapBuild *snapstate); extern void SnapBuildClearExportedSnapshot(void); +extern void SnapBuildResetExportedSnapshotState(void); extern SnapBuildState SnapBuildCurrentState(SnapBuild *snapstate); extern Snapshot SnapBuildGetOrBuildSnapshot(SnapBuild *builder, diff -Nru postgresql-10-10.17/src/include/replication/worker_internal.h postgresql-10-10.19/src/include/replication/worker_internal.h --- postgresql-10-10.17/src/include/replication/worker_internal.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/replication/worker_internal.h 2021-11-08 22:05:38.000000000 +0000 @@ -60,7 +60,7 @@ extern MemoryContext ApplyContext; /* libpqreceiver connection */ -extern struct WalReceiverConn *wrconn; +extern struct WalReceiverConn *LogRepWorkerWalRcvConn; /* Worker and subscription objects. */ extern Subscription *MySubscription; diff -Nru postgresql-10-10.17/src/include/storage/lock.h postgresql-10-10.19/src/include/storage/lock.h --- postgresql-10-10.17/src/include/storage/lock.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/storage/lock.h 2021-11-08 22:05:38.000000000 +0000 @@ -47,10 +47,11 @@ /* * Top-level transactions are identified by VirtualTransactionIDs comprising - * PGPROC fields backendId and lxid. For prepared transactions, the - * LocalTransactionId is an ordinary XID. These are guaranteed unique over - * the short term, but will be reused after a database restart or XID - * wraparound; hence they should never be stored on disk. + * PGPROC fields backendId and lxid. For recovered prepared transactions, the + * LocalTransactionId is an ordinary XID; LOCKTAG_VIRTUALTRANSACTION never + * refers to that kind. These are guaranteed unique over the short term, but + * will be reused after a database restart or XID wraparound; hence they + * should never be stored on disk. * * Note that struct VirtualTransactionId can not be assumed to be atomically * assignable as a whole. However, type LocalTransactionId is assumed to @@ -70,7 +71,7 @@ #define LocalTransactionIdIsValid(lxid) ((lxid) != InvalidLocalTransactionId) #define VirtualTransactionIdIsValid(vxid) \ (LocalTransactionIdIsValid((vxid).localTransactionId)) -#define VirtualTransactionIdIsPreparedXact(vxid) \ +#define VirtualTransactionIdIsRecoveredPreparedXact(vxid) \ ((vxid).backendId == InvalidBackendId) #define VirtualTransactionIdEquals(vxid1, vxid2) \ ((vxid1).backendId == (vxid2).backendId && \ diff -Nru postgresql-10-10.17/src/include/storage/s_lock.h postgresql-10-10.19/src/include/storage/s_lock.h --- postgresql-10-10.17/src/include/storage/s_lock.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/storage/s_lock.h 2021-11-08 22:05:38.000000000 +0000 @@ -314,6 +314,7 @@ #endif /* __INTEL_COMPILER */ #endif /* __ia64__ || __ia64 */ + /* * On ARM and ARM64, we use __sync_lock_test_and_set(int *, int) if available. * @@ -340,6 +341,29 @@ #endif /* __arm__ || __arm || __aarch64__ || __aarch64 */ +/* + * RISC-V likewise uses __sync_lock_test_and_set(int *, int) if available. + */ +#if defined(__riscv) +#ifdef HAVE_GCC__SYNC_INT32_TAS +#define HAS_TEST_AND_SET + +#define TAS(lock) tas(lock) + +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) + +#endif /* HAVE_GCC__SYNC_INT32_TAS */ +#endif /* __riscv */ + + /* S/390 and S/390x Linux (32- and 64-bit zSeries) */ #if defined(__s390__) || defined(__s390x__) #define HAS_TEST_AND_SET diff -Nru postgresql-10-10.17/src/include/utils/inval.h postgresql-10-10.19/src/include/utils/inval.h --- postgresql-10-10.17/src/include/utils/inval.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/utils/inval.h 2021-11-08 22:05:38.000000000 +0000 @@ -63,4 +63,5 @@ extern void CallSyscacheCallbacks(int cacheid, uint32 hashvalue); extern void InvalidateSystemCaches(void); +extern void InvalidateSystemCachesExtended(bool debug_discard); #endif /* INVAL_H */ diff -Nru postgresql-10-10.17/src/include/utils/pg_locale.h postgresql-10-10.19/src/include/utils/pg_locale.h --- postgresql-10-10.17/src/include/utils/pg_locale.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/utils/pg_locale.h 2021-11-08 22:05:38.000000000 +0000 @@ -17,6 +17,10 @@ #endif #ifdef USE_ICU #include +/* ICU might have a different definition of "bool", don't buy it */ +#ifdef bool +#undef bool +#endif #endif #include "utils/guc.h" diff -Nru postgresql-10-10.17/src/include/utils/relcache.h postgresql-10-10.19/src/include/utils/relcache.h --- postgresql-10-10.17/src/include/utils/relcache.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/include/utils/relcache.h 2021-11-08 22:05:38.000000000 +0000 @@ -114,7 +114,7 @@ extern void RelationCacheInvalidateEntry(Oid relationId); -extern void RelationCacheInvalidate(void); +extern void RelationCacheInvalidate(bool debug_discard); extern void RelationCloseSmgrByOid(Oid relationId); diff -Nru postgresql-10-10.17/src/interfaces/ecpg/ecpglib/connect.c postgresql-10-10.19/src/interfaces/ecpg/ecpglib/connect.c --- postgresql-10-10.17/src/interfaces/ecpg/ecpglib/connect.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/ecpglib/connect.c 2021-11-08 22:05:38.000000000 +0000 @@ -484,39 +484,12 @@ else realname = NULL; - /* add connection to our list */ -#ifdef ENABLE_THREAD_SAFETY - pthread_mutex_lock(&connections_mutex); -#endif - if (connection_name != NULL) - this->name = ecpg_strdup(connection_name, lineno); - else - this->name = ecpg_strdup(realname, lineno); - - this->cache_head = NULL; - this->prep_stmts = NULL; - - if (all_connections == NULL) - this->next = NULL; - else - this->next = all_connections; - - all_connections = this; -#ifdef ENABLE_THREAD_SAFETY - pthread_setspecific(actual_connection_key, all_connections); -#endif - actual_connection = all_connections; - - ecpg_log("ECPGconnect: opening database %s on %s port %s %s%s %s%s\n", - realname ? realname : "", - host ? host : "", - port ? (ecpg_internal_regression_mode ? "" : port) : "", - options ? "with options " : "", options ? options : "", - (user && strlen(user) > 0) ? "for user " : "", user ? user : ""); - + /* + * Count options for the allocation done below (this may produce an + * overestimate, it's ok). + */ if (options) for (i = 0; options[i]; i++) - /* count options */ if (options[i] == '=') connect_params++; @@ -525,7 +498,11 @@ if (passwd && strlen(passwd) > 0) connect_params++; - /* allocate enough space for all connection parameters */ + /* + * Allocate enough space for all connection parameters. These allocations + * are done before manipulating the list of connections to ease the error + * handling on failure. + */ conn_keywords = (const char **) ecpg_alloc((connect_params + 1) * sizeof(char *), lineno); conn_values = (const char **) ecpg_alloc(connect_params * sizeof(char *), lineno); if (conn_keywords == NULL || conn_values == NULL) @@ -548,6 +525,36 @@ return false; } + /* add connection to our list */ +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_lock(&connections_mutex); +#endif + if (connection_name != NULL) + this->name = ecpg_strdup(connection_name, lineno); + else + this->name = ecpg_strdup(realname, lineno); + + this->cache_head = NULL; + this->prep_stmts = NULL; + + if (all_connections == NULL) + this->next = NULL; + else + this->next = all_connections; + + all_connections = this; +#ifdef ENABLE_THREAD_SAFETY + pthread_setspecific(actual_connection_key, all_connections); +#endif + actual_connection = all_connections; + + ecpg_log("ECPGconnect: opening database %s on %s port %s %s%s %s%s\n", + realname ? realname : "", + host ? host : "", + port ? (ecpg_internal_regression_mode ? "" : port) : "", + options ? "with options " : "", options ? options : "", + (user && strlen(user) > 0) ? "for user " : "", user ? user : ""); + i = 0; if (realname) { diff -Nru postgresql-10-10.17/src/interfaces/ecpg/ecpglib/po/ru.po postgresql-10-10.19/src/interfaces/ecpg/ecpglib/po/ru.po --- postgresql-10-10.17/src/interfaces/ecpg/ecpglib/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/ecpglib/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: ecpglib (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2019-02-10 17:44+0300\n" +"POT-Creation-Date: 2021-09-13 07:58+0300\n" "PO-Revision-Date: 2016-09-20 12:00+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" @@ -21,7 +21,7 @@ msgid "empty message text" msgstr "пустое сообщение" -#: connect.c:401 connect.c:430 connect.c:638 +#: connect.c:401 connect.c:430 connect.c:645 msgid "" msgstr "<ПО_УМОЛЧАНИЮ>" diff -Nru postgresql-10-10.17/src/interfaces/ecpg/ecpglib/po/sv.po postgresql-10-10.19/src/interfaces/ecpg/ecpglib/po/sv.po --- postgresql-10-10.17/src/interfaces/ecpg/ecpglib/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/ecpglib/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,30 +1,31 @@ # SWEDISH message translation file for ecpglib # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-09-08 23:08+0000\n" -"PO-Revision-Date: 2017-09-10 11:27+0200\n" -"Last-Translator: Dennis Björklund , 2017\n" -"Language-Team: Swedish \n" +"POT-Creation-Date: 2021-11-07 09:39+0000\n" +"PO-Revision-Date: 2021-11-07 10:36+0100\n" +"Last-Translator: Dennis Björklund \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: connect.c:237 msgid "empty message text" msgstr "tom meddelandetext" -#: connect.c:401 connect.c:430 connect.c:638 +#: connect.c:401 connect.c:430 connect.c:645 msgid "" msgstr "" -#: descriptor.c:833 misc.c:120 +#: descriptor.c:856 misc.c:120 msgid "NULL" msgstr "NULL" @@ -193,6 +194,6 @@ msgid "SQL error: %s\n" msgstr "SQL-fel: %s\n" -#: execute.c:1961 +#: execute.c:1996 msgid "" msgstr "" diff -Nru postgresql-10-10.17/src/interfaces/ecpg/pgtypeslib/numeric.c postgresql-10-10.19/src/interfaces/ecpg/pgtypeslib/numeric.c --- postgresql-10-10.17/src/interfaces/ecpg/pgtypeslib/numeric.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/pgtypeslib/numeric.c 2021-11-08 22:05:38.000000000 +0000 @@ -1586,12 +1586,17 @@ if ((i = PGTYPESnumeric_to_long(nv, &l)) != 0) return i; - if (l < -INT_MAX || l > INT_MAX) +/* silence compilers that might complain about useless tests */ +#if SIZEOF_LONG > SIZEOF_INT + + if (l < INT_MIN || l > INT_MAX) { errno = PGTYPES_NUM_OVERFLOW; return -1; } +#endif + *ip = (int) l; return 0; } diff -Nru postgresql-10-10.17/src/interfaces/ecpg/preproc/po/fr.po postgresql-10-10.19/src/interfaces/ecpg/preproc/po/fr.po --- postgresql-10-10.17/src/interfaces/ecpg/preproc/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/preproc/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -78,7 +78,7 @@ #: ecpg.c:40 #, c-format msgid "Options:\n" -msgstr "Options:\n" +msgstr "Options :\n" #: ecpg.c:41 #, c-format @@ -86,8 +86,8 @@ " -c automatically generate C code from embedded SQL code;\n" " this affects EXEC SQL TYPE\n" msgstr "" -" -c produit automatiquement le code C à partir du code SQL embarqué ;\n" -" ceci affecte EXEC SQL TYPE\n" +" -c produit automatiquement le code C à partir du code SQL\n" +" embarqué ; ceci affecte EXEC SQL TYPE\n" #: ecpg.c:43 #, c-format @@ -111,7 +111,9 @@ #: ecpg.c:49 #, c-format msgid " -h parse a header file, this option includes option \"-c\"\n" -msgstr " -h analyse un fichier d'en-tête, cette option inclut l'option « -c »\n" +msgstr "" +" -h analyse un fichier d'en-tête,\n" +" cette option inclut l'option « -c »\n" #: ecpg.c:50 #, c-format @@ -181,7 +183,7 @@ #: ecpg.c:139 #, c-format msgid "%s: could not locate my own executable path\n" -msgstr "%s : n'a pas pu localiser mon propre exécutable\n" +msgstr "%s : n'a pas pu localiser le chemin de mon propre exécutable\n" #: ecpg.c:174 ecpg.c:327 ecpg.c:337 #, c-format @@ -246,7 +248,7 @@ #: pgc.l:469 #, c-format msgid "unterminated hexadecimal string literal" -msgstr "chaîne hexadécimale litéralle non terminée" +msgstr "chaîne hexadécimale litérale non terminée" #: pgc.l:547 #, c-format diff -Nru postgresql-10-10.17/src/interfaces/ecpg/preproc/po/ru.po postgresql-10-10.19/src/interfaces/ecpg/preproc/po/ru.po --- postgresql-10-10.17/src/interfaces/ecpg/preproc/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/preproc/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,13 +1,13 @@ # Russian message translation file for ecpg # Copyright (C) 2012-2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: ecpg (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2019-04-29 07:27+0300\n" -"PO-Revision-Date: 2018-01-31 08:18+0300\n" +"PO-Revision-Date: 2021-09-04 10:54+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -179,7 +179,7 @@ #: ecpg.c:139 #, c-format msgid "%s: could not locate my own executable path\n" -msgstr "%s: не удалось найти свой путь к исполняемым файлам\n" +msgstr "%s: не удалось найти путь к собственному исполняемому файлу\n" #: ecpg.c:174 ecpg.c:327 ecpg.c:338 #, c-format diff -Nru postgresql-10-10.17/src/interfaces/ecpg/preproc/po/sv.po postgresql-10-10.19/src/interfaces/ecpg/preproc/po/sv.po --- postgresql-10-10.17/src/interfaces/ecpg/preproc/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/preproc/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,16 +1,16 @@ # SWEDISHE message translation file for ecpg # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2018-01-15 21:08+0000\n" -"PO-Revision-Date: 2018-01-15 22:28+0100\n" +"POT-Creation-Date: 2021-11-07 09:39+0000\n" +"PO-Revision-Date: 2021-11-06 21:58+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -179,7 +179,7 @@ msgid "%s: could not locate my own executable path\n" msgstr "%s: kunde inte hitta min egna körbara fils sökväg\n" -#: ecpg.c:174 ecpg.c:327 ecpg.c:337 +#: ecpg.c:174 ecpg.c:327 ecpg.c:338 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: kunde inte öppna fil \"%s\": %s\n" @@ -214,112 +214,112 @@ msgid "%s: no input files specified\n" msgstr "%s: inga indatafiler angivna\n" -#: ecpg.c:460 +#: ecpg.c:461 #, c-format msgid "cursor \"%s\" has been declared but not opened" msgstr "markören \"%s\" har deklarerats men inte öppnats" -#: ecpg.c:473 preproc.y:127 +#: ecpg.c:474 preproc.y:127 #, c-format msgid "could not remove output file \"%s\"\n" msgstr "kunde inte ta bort utdatafil \"%s\"\n" -#: pgc.l:431 +#: pgc.l:441 #, c-format msgid "unterminated /* comment" msgstr "ej avslutad /*-kommentar" -#: pgc.l:444 +#: pgc.l:454 #, c-format msgid "invalid bit string literal" msgstr "ogiltig bit-sträng-literal" -#: pgc.l:453 +#: pgc.l:463 #, c-format msgid "unterminated bit string literal" msgstr "ej avslutad bitsträngslitteral" -#: pgc.l:469 +#: pgc.l:479 #, c-format msgid "unterminated hexadecimal string literal" msgstr "ej avslutad hexadecimal stränglitteral" -#: pgc.l:547 +#: pgc.l:557 #, c-format msgid "unterminated quoted string" msgstr "icketerminerad citerad sträng" -#: pgc.l:605 pgc.l:618 +#: pgc.l:615 pgc.l:628 #, c-format msgid "zero-length delimited identifier" msgstr "noll-längds avdelad identifierare" -#: pgc.l:626 +#: pgc.l:636 #, c-format msgid "unterminated quoted identifier" msgstr "ej avslutad citerad identifierare" -#: pgc.l:881 +#: pgc.l:923 #, c-format msgid "nested /* ... */ comments" msgstr "nästlade /* ... */-kommentarer" -#: pgc.l:974 +#: pgc.l:1016 #, c-format msgid "missing identifier in EXEC SQL UNDEF command" msgstr "saknar identifierare i EXEC SQL UNDEF-kommando" -#: pgc.l:1020 pgc.l:1034 +#: pgc.l:1062 pgc.l:1076 #, c-format msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "saknar matchande \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" -#: pgc.l:1023 pgc.l:1036 pgc.l:1212 +#: pgc.l:1065 pgc.l:1078 pgc.l:1254 #, c-format msgid "missing \"EXEC SQL ENDIF;\"" msgstr "saknar \"EXEC SQL ENDIF;\"" -#: pgc.l:1052 pgc.l:1071 +#: pgc.l:1094 pgc.l:1113 #, c-format msgid "more than one EXEC SQL ELSE" msgstr "mer än en EXEC SQL ELSE" -#: pgc.l:1093 pgc.l:1107 +#: pgc.l:1135 pgc.l:1149 #, c-format msgid "unmatched EXEC SQL ENDIF" msgstr "ej matchad EXEC SQL ENDIF" -#: pgc.l:1127 +#: pgc.l:1169 #, c-format msgid "too many nested EXEC SQL IFDEF conditions" msgstr "för många nästlade EXEC SQL IFDEF-villkor" -#: pgc.l:1160 +#: pgc.l:1202 #, c-format msgid "missing identifier in EXEC SQL IFDEF command" msgstr "saknar identifierare i EXEC SQL IFDEF-kommando" -#: pgc.l:1169 +#: pgc.l:1211 #, c-format msgid "missing identifier in EXEC SQL DEFINE command" msgstr "saknar identifierare i EXEC SQL DEFINE-kommando" -#: pgc.l:1202 +#: pgc.l:1244 #, c-format msgid "syntax error in EXEC SQL INCLUDE command" msgstr "syntaxfel i EXEC SQL INCLUDE-kommando" -#: pgc.l:1251 +#: pgc.l:1293 #, c-format msgid "internal error: unreachable state; please report this to " msgstr "internt fel: state som ej skall kunna nås; vänligen rapportera detta till " -#: pgc.l:1376 +#: pgc.l:1417 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "Fel: include-sökväg \"%s/%s\" är för lång på rad %d, hoppar över\n" -#: pgc.l:1399 +#: pgc.l:1440 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "kunde inte öppna inkludefil \"%s\" på rad %d" @@ -353,12 +353,12 @@ msgid "type name \"string\" is reserved in Informix mode" msgstr "typnamn \"string\" är reserverat i Informix-läge" -#: preproc.y:546 preproc.y:15393 +#: preproc.y:546 preproc.y:15439 #, c-format msgid "type \"%s\" is already defined" msgstr "typen \"%s\" är redan definierad" -#: preproc.y:570 preproc.y:16051 preproc.y:16371 variable.c:620 +#: preproc.y:570 preproc.y:16097 preproc.y:16417 variable.c:620 #, c-format msgid "multidimensional arrays for simple data types are not supported" msgstr "multidimensionella array:er för enkla datatyper stöds inte" @@ -398,140 +398,140 @@ msgid "AT option not allowed in WHENEVER statement" msgstr "AT-flaggan tillåts inte i WHENEVER-sats" -#: preproc.y:2079 preproc.y:2251 preproc.y:2256 preproc.y:2372 preproc.y:3950 -#: preproc.y:5500 preproc.y:5509 preproc.y:5809 preproc.y:7345 preproc.y:8782 -#: preproc.y:8787 preproc.y:11519 preproc.y:12140 +#: preproc.y:2079 preproc.y:2251 preproc.y:2256 preproc.y:2379 preproc.y:3969 +#: preproc.y:5519 preproc.y:5528 preproc.y:5828 preproc.y:7371 preproc.y:8808 +#: preproc.y:8813 preproc.y:11558 preproc.y:12179 #, c-format msgid "unsupported feature will be passed to server" msgstr "ej stödd funktion skickass till servern" -#: preproc.y:2630 +#: preproc.y:2637 #, c-format msgid "SHOW ALL is not implemented" msgstr "SHOW ALL är inte implementerad" -#: preproc.y:3306 +#: preproc.y:3321 #, c-format msgid "COPY FROM STDIN is not implemented" msgstr "COPY FROM STDIN är inte implementerad" -#: preproc.y:9685 preproc.y:14982 +#: preproc.y:9715 preproc.y:15028 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "använda variabel \"%s\" i olika deklarationssatser stöds inte" -#: preproc.y:9687 preproc.y:14984 +#: preproc.y:9717 preproc.y:15030 #, c-format msgid "cursor \"%s\" is already defined" msgstr "markören \"%s\" är redan definierad" -#: preproc.y:10117 +#: preproc.y:10147 #, c-format msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "ej längre stödd syntax LIMIT #,# har skickats till servern" -#: preproc.y:10433 preproc.y:10440 +#: preproc.y:10472 preproc.y:10479 #, c-format msgid "subquery in FROM must have an alias" msgstr "subfråga i FROM måste ha ett alias" -#: preproc.y:14712 +#: preproc.y:14751 preproc.y:14758 #, c-format msgid "CREATE TABLE AS cannot specify INTO" msgstr "CREATE TABLE AS kan inte ange INTO" -#: preproc.y:14748 +#: preproc.y:14794 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "förväntade \"@\", hittade \"%s\"" -#: preproc.y:14760 +#: preproc.y:14806 #, c-format msgid "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are supported" msgstr "bara protokoll \"tcp\" och \"unix\" samt databastyp \"postgresql\" stöds" -#: preproc.y:14763 +#: preproc.y:14809 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "förväntade \"://\", hittade \"%s\"" -#: preproc.y:14768 +#: preproc.y:14814 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" msgstr "Unix-domän-socket fungerart bara på \"localhost\" men inte på \"%s\"" -#: preproc.y:14794 +#: preproc.y:14840 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "förväntade \"postgresql\", hittade \"%s\"" -#: preproc.y:14797 +#: preproc.y:14843 #, c-format msgid "invalid connection type: %s" msgstr "ogiltig anslutningstyp: %s" -#: preproc.y:14806 +#: preproc.y:14852 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "förväntade \"@\" eller \"://\", hittade \"%s\"" -#: preproc.y:14881 preproc.y:14899 +#: preproc.y:14927 preproc.y:14945 #, c-format msgid "invalid data type" msgstr "ogiltig datatyp" -#: preproc.y:14910 preproc.y:14927 +#: preproc.y:14956 preproc.y:14973 #, c-format msgid "incomplete statement" msgstr "ofullständig sats" -#: preproc.y:14913 preproc.y:14930 +#: preproc.y:14959 preproc.y:14976 #, c-format msgid "unrecognized token \"%s\"" msgstr "okänd symbol \"%s\"" -#: preproc.y:15204 +#: preproc.y:15250 #, c-format msgid "only data types numeric and decimal have precision/scale argument" msgstr "bara datatyperna numeric och decimal har precision/skala-argument" -#: preproc.y:15216 +#: preproc.y:15262 #, c-format msgid "interval specification not allowed here" msgstr "intervallspecifikation tillåts inte här" -#: preproc.y:15368 preproc.y:15420 +#: preproc.y:15414 preproc.y:15466 #, c-format msgid "too many levels in nested structure/union definition" msgstr "för många nästlade nivåer i struktur/union-definition" -#: preproc.y:15559 +#: preproc.y:15605 #, c-format msgid "pointers to varchar are not implemented" msgstr "pekare till varchar är inte implementerat" -#: preproc.y:15746 preproc.y:15771 +#: preproc.y:15792 preproc.y:15817 #, c-format msgid "using unsupported DESCRIBE statement" msgstr "använder ej stödd DESCRIBE-sats" -#: preproc.y:16018 +#: preproc.y:16064 #, c-format msgid "initializer not allowed in EXEC SQL VAR command" msgstr "initialiserare tillåts inte i EXEC SQL VAR-kommando" -#: preproc.y:16329 +#: preproc.y:16375 #, c-format msgid "arrays of indicators are not allowed on input" msgstr "array:er av indikatorer tillåts inte vid indata" -#: preproc.y:16550 +#: preproc.y:16596 #, c-format msgid "operator not allowed in variable definition" msgstr "operator tillåts inte i variabeldefinition" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:16591 +#: preproc.y:16637 #, c-format msgid "%s at or near \"%s\"" msgstr "%s vid eller nära \"%s\"" diff -Nru postgresql-10-10.17/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c postgresql-10-10.19/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c --- postgresql-10-10.17/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c 2021-11-08 22:05:38.000000000 +0000 @@ -47,7 +47,7 @@ double d; long l1, l2; - int i; + int i, min, max; ECPGdebug(1, stderr); /* exec sql whenever sqlerror do sqlprint ( ) ; */ @@ -144,17 +144,28 @@ PGTYPESnumeric_free(value2); PGTYPESnumeric_free(res); + /* check conversion of numeric to int */ + value1 = PGTYPESnumeric_from_asc("-2147483648", NULL); + PGTYPESnumeric_to_int(value1, &min); + printf("min int = %d\n", min); + PGTYPESnumeric_free(value1); + + value2 = PGTYPESnumeric_from_asc("2147483647", NULL); + PGTYPESnumeric_to_int(value2, &max); + printf("max int = %d\n", max); + PGTYPESnumeric_free(value2); + { ECPGtrans(__LINE__, NULL, "rollback"); -#line 93 "num_test.pgc" +#line 104 "num_test.pgc" if (sqlca.sqlcode < 0) sqlprint ( );} -#line 93 "num_test.pgc" +#line 104 "num_test.pgc" { ECPGdisconnect(__LINE__, "CURRENT"); -#line 94 "num_test.pgc" +#line 105 "num_test.pgc" if (sqlca.sqlcode < 0) sqlprint ( );} -#line 94 "num_test.pgc" +#line 105 "num_test.pgc" return (0); diff -Nru postgresql-10-10.17/src/interfaces/ecpg/test/expected/pgtypeslib-num_test-MinGW32.stdout postgresql-10-10.19/src/interfaces/ecpg/test/expected/pgtypeslib-num_test-MinGW32.stdout --- postgresql-10-10.17/src/interfaces/ecpg/test/expected/pgtypeslib-num_test-MinGW32.stdout 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/test/expected/pgtypeslib-num_test-MinGW32.stdout 2021-11-08 22:05:38.000000000 +0000 @@ -4,3 +4,5 @@ mul = 13306998429.873000000 div = 1330699.84298730000 1.330700e+006 to long(0) = 20000000 14 +min int = -2147483648 +max int = 2147483647 diff -Nru postgresql-10-10.17/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr postgresql-10-10.19/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr --- postgresql-10-10.17/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stderr 2021-11-08 22:05:38.000000000 +0000 @@ -26,7 +26,7 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_get_data on line 66: RESULT: 2369.7000000 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ECPGtrans on line 93: action "rollback"; connection "ecpg1_regression" +[NO_PID]: ECPGtrans on line 104: action "rollback"; connection "ecpg1_regression" [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_finish: connection ecpg1_regression closed [NO_PID]: sqlca: code: 0, state: 00000 diff -Nru postgresql-10-10.17/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout postgresql-10-10.19/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout --- postgresql-10-10.17/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.stdout 2021-11-08 22:05:38.000000000 +0000 @@ -4,3 +4,5 @@ mul = 13306998429.873000000 div = 1330699.84298730000 1.330700e+06 to long(0) = 20000000 14 +min int = -2147483648 +max int = 2147483647 diff -Nru postgresql-10-10.17/src/interfaces/ecpg/test/pgtypeslib/num_test.pgc postgresql-10-10.19/src/interfaces/ecpg/test/pgtypeslib/num_test.pgc --- postgresql-10-10.17/src/interfaces/ecpg/test/pgtypeslib/num_test.pgc 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/ecpg/test/pgtypeslib/num_test.pgc 2021-11-08 22:05:38.000000000 +0000 @@ -24,7 +24,7 @@ exec sql end declare section; double d; long l1, l2; - int i; + int i, min, max; ECPGdebug(1, stderr); exec sql whenever sqlerror do sqlprint(); @@ -90,6 +90,17 @@ PGTYPESnumeric_free(value2); PGTYPESnumeric_free(res); + /* check conversion of numeric to int */ + value1 = PGTYPESnumeric_from_asc("-2147483648", NULL); + PGTYPESnumeric_to_int(value1, &min); + printf("min int = %d\n", min); + PGTYPESnumeric_free(value1); + + value2 = PGTYPESnumeric_from_asc("2147483647", NULL); + PGTYPESnumeric_to_int(value2, &max); + printf("max int = %d\n", max); + PGTYPESnumeric_free(value2); + exec sql rollback; exec sql disconnect; diff -Nru postgresql-10-10.17/src/interfaces/libpq/fe-auth.c postgresql-10-10.19/src/interfaces/libpq/fe-auth.c --- postgresql-10-10.17/src/interfaces/libpq/fe-auth.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/fe-auth.c 2021-11-08 22:05:38.000000000 +0000 @@ -75,7 +75,9 @@ { gss_display_status(&lmin_s, stat, type, GSS_C_NO_OID, &msg_ctx, &lmsg); - appendPQExpBuffer(str, "%s: %s\n", mprefix, (char *) lmsg.value); + appendPQExpBuffer(str, "%s: ", mprefix); + appendBinaryPQExpBuffer(str, lmsg.value, lmsg.length); + appendPQExpBufferChar(str, '\n'); gss_release_buffer(&lmin_s, &lmsg); } while (msg_ctx); } diff -Nru postgresql-10-10.17/src/interfaces/libpq/fe-connect.c postgresql-10-10.19/src/interfaces/libpq/fe-connect.c --- postgresql-10-10.17/src/interfaces/libpq/fe-connect.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/fe-connect.c 2021-11-08 22:05:38.000000000 +0000 @@ -2719,6 +2719,19 @@ pollres = pqsecure_open_client(conn); if (pollres == PGRES_POLLING_OK) { + /* + * At this point we should have no data already buffered. + * If we do, it was received before we performed the SSL + * handshake, so it wasn't encrypted and indeed may have + * been injected by a man-in-the-middle. + */ + if (conn->inCursor != conn->inEnd) + { + appendPQExpBufferStr(&conn->errorMessage, + libpq_gettext("received unencrypted data after SSL response\n")); + goto error_return; + } + /* SSL handshake done, ready to send startup packet */ conn->status = CONNECTION_MADE; return PGRES_POLLING_WRITING; diff -Nru postgresql-10-10.17/src/interfaces/libpq/fe-print.c postgresql-10-10.19/src/interfaces/libpq/fe-print.c --- postgresql-10-10.17/src/interfaces/libpq/fe-print.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/fe-print.c 2021-11-08 22:05:38.000000000 +0000 @@ -36,8 +36,9 @@ #include "libpq-fe.h" #include "libpq-int.h" +#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e)) -static void do_field(const PQprintOpt *po, const PGresult *res, +static bool do_field(const PQprintOpt *po, const PGresult *res, const int i, const int j, const int fs_len, char **fields, const int nFields, const char **fieldNames, @@ -80,12 +81,12 @@ unsigned char *fieldNotNum = NULL; char *border = NULL; char **fields = NULL; - const char **fieldNames; + const char **fieldNames = NULL; int fieldMaxLen = 0; int numFieldName; int fs_len = strlen(po->fieldSep); int total_line_length = 0; - int usePipe = 0; + bool usePipe = false; char *pagerenv; #if defined(ENABLE_THREAD_SAFETY) && !defined(WIN32) @@ -108,20 +109,13 @@ #endif nTups = PQntuples(res); - if (!(fieldNames = (const char **) calloc(nFields, sizeof(char *)))) + fieldNames = (const char **) calloc(nFields, sizeof(char *)); + fieldNotNum = (unsigned char *) calloc(nFields, 1); + fieldMax = (int *) calloc(nFields, sizeof(int)); + if (!fieldNames || !fieldNotNum || !fieldMax) { fprintf(stderr, libpq_gettext("out of memory\n")); - abort(); - } - if (!(fieldNotNum = (unsigned char *) calloc(nFields, 1))) - { - fprintf(stderr, libpq_gettext("out of memory\n")); - abort(); - } - if (!(fieldMax = (int *) calloc(nFields, sizeof(int)))) - { - fprintf(stderr, libpq_gettext("out of memory\n")); - abort(); + goto exit; } for (numFieldName = 0; po->fieldName && po->fieldName[numFieldName]; @@ -183,7 +177,7 @@ fout = popen(pagerenv, "w"); if (fout) { - usePipe = 1; + usePipe = true; #ifndef WIN32 #ifdef ENABLE_THREAD_SAFETY if (pq_block_sigpipe(&osigset, &sigpipe_pending) == 0) @@ -200,10 +194,12 @@ if (!po->expanded && (po->align || po->html3)) { - if (!(fields = (char **) calloc(nFields * (nTups + 1), sizeof(char *)))) + fields = (char **) calloc((size_t) nTups + 1, + nFields * sizeof(char *)); + if (!fields) { fprintf(stderr, libpq_gettext("out of memory\n")); - abort(); + goto exit; } } else if (po->header && !po->html3) @@ -257,9 +253,12 @@ fprintf(fout, libpq_gettext("-- RECORD %d --\n"), i); } for (j = 0; j < nFields; j++) - do_field(po, res, i, j, fs_len, fields, nFields, - fieldNames, fieldNotNum, - fieldMax, fieldMaxLen, fout); + { + if (!do_field(po, res, i, j, fs_len, fields, nFields, + fieldNames, fieldNotNum, + fieldMax, fieldMaxLen, fout)) + goto exit; + } if (po->html3 && po->expanded) fputs("\n", fout); } @@ -290,16 +289,34 @@ for (i = 0; i < nTups; i++) output_row(fout, po, nFields, fields, fieldNotNum, fieldMax, border, i); - free(fields); - if (border) - free(border); } if (po->header && !po->html3) fprintf(fout, "(%d row%s)\n\n", PQntuples(res), (PQntuples(res) == 1) ? "" : "s"); - free(fieldMax); - free(fieldNotNum); - free((void *) fieldNames); + if (po->html3 && !po->expanded) + fputs("\n", fout); + +exit: + if (fieldMax) + free(fieldMax); + if (fieldNotNum) + free(fieldNotNum); + if (border) + free(border); + if (fields) + { + /* if calloc succeeded, this shouldn't overflow size_t */ + size_t numfields = ((size_t) nTups + 1) * (size_t) nFields; + + while (numfields-- > 0) + { + if (fields[numfields]) + free(fields[numfields]); + } + free(fields); + } + if (fieldNames) + free((void *) fieldNames); if (usePipe) { #ifdef WIN32 @@ -316,13 +333,11 @@ #endif /* ENABLE_THREAD_SAFETY */ #endif /* WIN32 */ } - if (po->html3 && !po->expanded) - fputs("\n", fout); } } -static void +static bool do_field(const PQprintOpt *po, const PGresult *res, const int i, const int j, const int fs_len, char **fields, @@ -358,7 +373,7 @@ /* Detect whether field contains non-numeric data */ char ch = '0'; - for (p = pval; *p; p += PQmblen(p, res->client_encoding)) + for (p = pval; *p; p += PQmblenBounded(p, res->client_encoding)) { ch = *p; if (!((ch >= '0' && ch <= '9') || @@ -390,7 +405,7 @@ if (!(fields[i * nFields + j] = (char *) malloc(plen + 1))) { fprintf(stderr, libpq_gettext("out of memory\n")); - abort(); + return false; } strcpy(fields[i * nFields + j], pval); } @@ -433,6 +448,7 @@ } } } + return true; } @@ -460,7 +476,7 @@ if (!border) { fprintf(stderr, libpq_gettext("out of memory\n")); - abort(); + return NULL; } p = border; if (po->standard) @@ -551,8 +567,6 @@ if (po->standard || field_index + 1 < nFields) fputs(po->fieldSep, fout); } - if (p) - free(p); } if (po->html3) fputs("", fout); @@ -602,7 +616,7 @@ if (!fLength) { fprintf(stderr, libpq_gettext("out of memory\n")); - abort(); + return; } for (j = 0; j < nFields; j++) @@ -700,7 +714,7 @@ if (!tborder) { fprintf(stderr, libpq_gettext("out of memory\n")); - abort(); + return; } for (i = 0; i < width; i++) tborder[i] = '-'; diff -Nru postgresql-10-10.17/src/interfaces/libpq/fe-protocol3.c postgresql-10-10.19/src/interfaces/libpq/fe-protocol3.c --- postgresql-10-10.17/src/interfaces/libpq/fe-protocol3.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/fe-protocol3.c 2021-11-08 22:05:38.000000000 +0000 @@ -42,6 +42,8 @@ ((id) == 'T' || (id) == 'D' || (id) == 'd' || (id) == 'V' || \ (id) == 'E' || (id) == 'N' || (id) == 'A') +#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e)) + static void handleSyncLoss(PGconn *conn, char id, int msgLength); static int getRowDescriptions(PGconn *conn, int msgLength); @@ -1228,7 +1230,7 @@ if (w <= 0) w = 1; scroffset += w; - qoffset += pg_encoding_mblen(encoding, &wquery[qoffset]); + qoffset += PQmblenBounded(&wquery[qoffset], encoding); } else { @@ -1296,7 +1298,7 @@ * width. */ scroffset = 0; - for (; i < msg->len; i += pg_encoding_mblen(encoding, &msg->data[i])) + for (; i < msg->len; i += PQmblenBounded(&msg->data[i], encoding)) { int w = pg_encoding_dsplen(encoding, &msg->data[i]); diff -Nru postgresql-10-10.17/src/interfaces/libpq/fe-secure-openssl.c postgresql-10-10.19/src/interfaces/libpq/fe-secure-openssl.c --- postgresql-10-10.17/src/interfaces/libpq/fe-secure-openssl.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/fe-secure-openssl.c 2021-11-08 22:05:38.000000000 +0000 @@ -1653,6 +1653,7 @@ my_bio_index = BIO_get_new_index(); if (my_bio_index == -1) return NULL; + my_bio_index |= (BIO_TYPE_DESCRIPTOR | BIO_TYPE_SOURCE_SINK); my_bio_methods = BIO_meth_new(my_bio_index, "libpq socket"); if (!my_bio_methods) return NULL; diff -Nru postgresql-10-10.17/src/interfaces/libpq/.gitignore postgresql-10-10.19/src/interfaces/libpq/.gitignore --- postgresql-10-10.17/src/interfaces/libpq/.gitignore 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/.gitignore 2021-11-08 22:05:38.000000000 +0000 @@ -18,6 +18,7 @@ /snprintf.c /strerror.c /strlcpy.c +/strnlen.c /thread.c /win32error.c /win32setlocale.c diff -Nru postgresql-10-10.17/src/interfaces/libpq/libpq-dist.rc postgresql-10-10.19/src/interfaces/libpq/libpq-dist.rc --- postgresql-10-10.17/src/interfaces/libpq/libpq-dist.rc 2021-05-10 20:58:58.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/libpq-dist.rc 2021-11-08 22:25:42.000000000 +0000 @@ -1,8 +1,8 @@ #include VS_VERSION_INFO VERSIONINFO - FILEVERSION 10,0,17,21130 - PRODUCTVERSION 10,0,17,21130 + FILEVERSION 10,0,19,21312 + PRODUCTVERSION 10,0,19,21312 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS__WINDOWS32 @@ -15,13 +15,13 @@ BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "PostgreSQL Access Library\0" - VALUE "FileVersion", "10.17\0" + VALUE "FileVersion", "10.19\0" VALUE "InternalName", "libpq\0" VALUE "LegalCopyright", "Copyright (C) 2017\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "libpq.dll\0" VALUE "ProductName", "PostgreSQL\0" - VALUE "ProductVersion", "10.17\0" + VALUE "ProductVersion", "10.19\0" END END BLOCK "VarFileInfo" diff -Nru postgresql-10-10.17/src/interfaces/libpq/libpq.rc.in postgresql-10-10.19/src/interfaces/libpq/libpq.rc.in --- postgresql-10-10.17/src/interfaces/libpq/libpq.rc.in 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/libpq.rc.in 2021-11-08 22:05:38.000000000 +0000 @@ -1,8 +1,8 @@ #include VS_VERSION_INFO VERSIONINFO - FILEVERSION 10,0,17,0 - PRODUCTVERSION 10,0,17,0 + FILEVERSION 10,0,19,0 + PRODUCTVERSION 10,0,19,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS__WINDOWS32 @@ -15,13 +15,13 @@ BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "PostgreSQL Access Library\0" - VALUE "FileVersion", "10.17\0" + VALUE "FileVersion", "10.19\0" VALUE "InternalName", "libpq\0" VALUE "LegalCopyright", "Copyright (C) 2017\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "libpq.dll\0" VALUE "ProductName", "PostgreSQL\0" - VALUE "ProductVersion", "10.17\0" + VALUE "ProductVersion", "10.19\0" END END BLOCK "VarFileInfo" diff -Nru postgresql-10-10.17/src/interfaces/libpq/Makefile postgresql-10-10.19/src/interfaces/libpq/Makefile --- postgresql-10-10.17/src/interfaces/libpq/Makefile 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/Makefile 2021-11-08 22:05:38.000000000 +0000 @@ -38,7 +38,7 @@ OBJS += chklocale.o inet_net_ntop.o noblock.o pgstrcasecmp.o pqsignal.o \ thread.o # libpgport C files that are needed if identified by configure -OBJS += $(filter crypt.o getaddrinfo.o getpeereid.o inet_aton.o open.o system.o snprintf.o strerror.o strlcpy.o win32error.o win32setlocale.o, $(LIBOBJS)) +OBJS += $(filter crypt.o getaddrinfo.o getpeereid.o inet_aton.o open.o system.o snprintf.o strerror.o strlcpy.o strnlen.o win32error.o win32setlocale.o, $(LIBOBJS)) ifeq ($(enable_strong_random), yes) OBJS += pg_strong_random.o @@ -103,7 +103,7 @@ # the module is needed (see filter hack in OBJS, above). # When you add a file here, remember to add it in the "clean" target below. -chklocale.c crypt.c erand48.c getaddrinfo.c getpeereid.c inet_aton.c inet_net_ntop.c noblock.c open.c system.c pgsleep.c pg_strong_random.c pgstrcasecmp.c pqsignal.c snprintf.c strerror.c strlcpy.c thread.c win32error.c win32setlocale.c: % : $(top_srcdir)/src/port/% +chklocale.c crypt.c erand48.c getaddrinfo.c getpeereid.c inet_aton.c inet_net_ntop.c noblock.c open.c system.c pgsleep.c pg_strong_random.c pgstrcasecmp.c pqsignal.c snprintf.c strerror.c strlcpy.c strnlen.c thread.c win32error.c win32setlocale.c: % : $(top_srcdir)/src/port/% rm -f $@ && $(LN_S) $< . ip.c md5.c base64.c scram-common.c sha2.c sha2_openssl.c saslprep.c unicode_norm.c: % : $(top_srcdir)/src/common/% @@ -155,7 +155,7 @@ # Might be left over from a Win32 client-only build rm -f pg_config_paths.h # Remove files we (may have) symlinked in from src/port and other places - rm -f chklocale.c crypt.c erand48.c getaddrinfo.c getpeereid.c inet_aton.c inet_net_ntop.c noblock.c open.c system.c pgsleep.c pg_strong_random.c pgstrcasecmp.c pqsignal.c snprintf.c strerror.c strlcpy.c thread.c win32error.c win32setlocale.c + rm -f chklocale.c crypt.c erand48.c getaddrinfo.c getpeereid.c inet_aton.c inet_net_ntop.c noblock.c open.c system.c pgsleep.c pg_strong_random.c pgstrcasecmp.c pqsignal.c snprintf.c strerror.c strlcpy.c strnlen.c thread.c win32error.c win32setlocale.c rm -f ip.c md5.c base64.c scram-common.c sha2.c sha2_openssl.c saslprep.c unicode_norm.c rm -f encnames.c wchar.c diff -Nru postgresql-10-10.17/src/interfaces/libpq/po/fr.po postgresql-10-10.19/src/interfaces/libpq/po/fr.po --- postgresql-10-10.17/src/interfaces/libpq/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -130,7 +130,7 @@ #: fe-auth.c:447 msgid "could not acquire SSPI credentials" -msgstr "n'a pas pu récupérer les pièces d'identité SSPI" +msgstr "n'a pas pu obtenir les pièces d'identité SSPI" #: fe-auth.c:500 msgid "duplicate SASL authentication request\n" @@ -183,7 +183,7 @@ #: fe-auth.c:1055 #, c-format msgid "user name lookup failure: error code %lu\n" -msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu\n" +msgstr "échec de la recherche du nom d'utilisateur : code d'erreur %lu\n" #: fe-auth.c:1065 fe-connect.c:2528 #, c-format @@ -1127,7 +1127,7 @@ #: fe-secure-openssl.c:1474 #, c-format msgid "SSL error code %lu" -msgstr "erreur SSL %lu" +msgstr "code d'erreur SSL %lu" #: fe-secure.c:261 #, c-format diff -Nru postgresql-10-10.17/src/interfaces/libpq/po/ru.po postgresql-10-10.19/src/interfaces/libpq/po/ru.po --- postgresql-10-10.17/src/interfaces/libpq/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -4,13 +4,14 @@ # Serguei A. Mokhov , 2001-2004. # Oleg Bartunov , 2005. # Andrey Sudnik , 2010. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. +# Maxim Yablokov , 2021. msgid "" msgstr "" "Project-Id-Version: libpq (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-11-09 07:36+0300\n" -"PO-Revision-Date: 2019-09-02 12:06+0300\n" +"POT-Creation-Date: 2021-08-09 23:07+0300\n" +"PO-Revision-Date: 2021-05-13 09:59+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -54,16 +55,16 @@ #: fe-auth-scram.c:319 fe-auth-scram.c:336 fe-auth-scram.c:346 #: fe-auth-scram.c:400 fe-auth-scram.c:420 fe-auth-scram.c:445 -#: fe-auth-scram.c:459 fe-auth-scram.c:508 fe-auth-scram.c:540 fe-auth.c:227 -#: fe-auth.c:362 fe-auth.c:432 fe-auth.c:467 fe-auth.c:609 fe-auth.c:768 -#: fe-auth.c:1080 fe-auth.c:1228 fe-connect.c:830 fe-connect.c:1259 +#: fe-auth-scram.c:459 fe-auth-scram.c:508 fe-auth-scram.c:540 fe-auth.c:229 +#: fe-auth.c:364 fe-auth.c:434 fe-auth.c:469 fe-auth.c:611 fe-auth.c:770 +#: fe-auth.c:1082 fe-auth.c:1230 fe-connect.c:830 fe-connect.c:1259 #: fe-connect.c:1435 fe-connect.c:1917 fe-connect.c:1940 fe-connect.c:2601 #: fe-connect.c:4146 fe-connect.c:4398 fe-connect.c:4517 fe-connect.c:4771 #: fe-connect.c:4851 fe-connect.c:4950 fe-connect.c:5206 fe-connect.c:5235 #: fe-connect.c:5307 fe-connect.c:5331 fe-connect.c:5349 fe-connect.c:5450 #: fe-connect.c:5459 fe-connect.c:5815 fe-connect.c:5965 fe-exec.c:2705 #: fe-exec.c:3452 fe-exec.c:3617 fe-lobj.c:896 fe-protocol2.c:1214 -#: fe-protocol3.c:1000 fe-protocol3.c:1686 fe-secure-openssl.c:521 +#: fe-protocol3.c:968 fe-protocol3.c:1654 fe-secure-openssl.c:521 #: fe-secure-openssl.c:1145 msgid "out of memory\n" msgstr "нехватка памяти\n" @@ -99,59 +100,59 @@ msgid "malformed SCRAM message (invalid server signature)\n" msgstr "неправильное сообщение SCRAM (неверная сигнатура сервера)\n" -#: fe-auth.c:122 +#: fe-auth.c:124 #, c-format msgid "out of memory allocating GSSAPI buffer (%d)\n" msgstr "недостаточно памяти для буфера GSSAPI (%d)\n" -#: fe-auth.c:177 +#: fe-auth.c:179 msgid "GSSAPI continuation error" msgstr "ошибка продолжения в GSSAPI" -#: fe-auth.c:207 fe-auth.c:461 fe-secure-openssl.c:493 +#: fe-auth.c:209 fe-auth.c:463 fe-secure-openssl.c:493 msgid "host name must be specified\n" msgstr "требуется указать имя сервера\n" -#: fe-auth.c:214 +#: fe-auth.c:216 msgid "duplicate GSS authentication request\n" msgstr "повторный запрос аутентификации GSS\n" -#: fe-auth.c:240 +#: fe-auth.c:242 msgid "GSSAPI name import error" msgstr "ошибка импорта имени в GSSAPI" -#: fe-auth.c:303 +#: fe-auth.c:305 #, c-format msgid "out of memory allocating SSPI buffer (%d)\n" msgstr "недостаточно памяти для буфера SSPI (%d)\n" -#: fe-auth.c:351 +#: fe-auth.c:353 msgid "SSPI continuation error" msgstr "ошибка продолжения в SSPI" -#: fe-auth.c:422 +#: fe-auth.c:424 msgid "duplicate SSPI authentication request\n" msgstr "повторный запрос аутентификации SSPI\n" -#: fe-auth.c:447 +#: fe-auth.c:449 msgid "could not acquire SSPI credentials" msgstr "не удалось получить удостоверение SSPI" -#: fe-auth.c:500 +#: fe-auth.c:502 msgid "duplicate SASL authentication request\n" msgstr "повторный запрос аутентификации SASL\n" -#: fe-auth.c:560 +#: fe-auth.c:562 msgid "none of the server's SASL authentication mechanisms are supported\n" msgstr "" "ни один из серверных механизмов аутентификации SASL не поддерживается\n" -#: fe-auth.c:633 +#: fe-auth.c:635 #, c-format msgid "out of memory allocating SASL buffer (%d)\n" msgstr "недостаточно памяти для буфера SASL (%d)\n" -#: fe-auth.c:658 +#: fe-auth.c:660 msgid "" "AuthenticationSASLFinal received from server, but SASL authentication was " "not completed\n" @@ -159,59 +160,59 @@ "c сервера получено сообщение AuthenticationSASLFinal, но аутентификация SASL " "ещё не завершена\n" -#: fe-auth.c:735 +#: fe-auth.c:737 msgid "SCM_CRED authentication method not supported\n" msgstr "аутентификация SCM_CRED не поддерживается\n" -#: fe-auth.c:826 +#: fe-auth.c:828 msgid "Kerberos 4 authentication not supported\n" msgstr "аутентификация Kerberos 4 не поддерживается\n" -#: fe-auth.c:831 +#: fe-auth.c:833 msgid "Kerberos 5 authentication not supported\n" msgstr "аутентификация Kerberos 5 не поддерживается\n" -#: fe-auth.c:902 +#: fe-auth.c:904 msgid "GSSAPI authentication not supported\n" msgstr "аутентификация через GSSAPI не поддерживается\n" -#: fe-auth.c:934 +#: fe-auth.c:936 msgid "SSPI authentication not supported\n" msgstr "аутентификация через SSPI не поддерживается\n" -#: fe-auth.c:942 +#: fe-auth.c:944 msgid "Crypt authentication not supported\n" msgstr "аутентификация Crypt не поддерживается\n" -#: fe-auth.c:1008 +#: fe-auth.c:1010 #, c-format msgid "authentication method %u not supported\n" msgstr "метод аутентификации %u не поддерживается\n" -#: fe-auth.c:1055 +#: fe-auth.c:1057 #, c-format msgid "user name lookup failure: error code %lu\n" msgstr "распознать имя пользователя не удалось (код ошибки: %lu)\n" -#: fe-auth.c:1065 fe-connect.c:2528 +#: fe-auth.c:1067 fe-connect.c:2528 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "найти локального пользователя по идентификатору (%d) не удалось: %s\n" -#: fe-auth.c:1070 fe-connect.c:2533 +#: fe-auth.c:1072 fe-connect.c:2533 #, c-format msgid "local user with ID %d does not exist\n" msgstr "локальный пользователь с ID %d не существует\n" -#: fe-auth.c:1172 +#: fe-auth.c:1174 msgid "unexpected shape of result set returned for SHOW\n" msgstr "неожиданная форма набора результатов, возвращённого для SHOW\n" -#: fe-auth.c:1181 +#: fe-auth.c:1183 msgid "password_encryption value too long\n" msgstr "слишком длинное значение password_encryption\n" -#: fe-auth.c:1221 +#: fe-auth.c:1223 #, c-format msgid "unrecognized password encryption algorithm \"%s\"\n" msgstr "нераспознанный алгоритм шифрования пароля \"%s\"\n" @@ -589,12 +590,12 @@ msgstr "номер записи %d вне диапазона 0..%d" #: fe-exec.c:498 fe-protocol2.c:503 fe-protocol2.c:538 fe-protocol2.c:1057 -#: fe-protocol3.c:209 fe-protocol3.c:236 fe-protocol3.c:253 fe-protocol3.c:333 -#: fe-protocol3.c:728 fe-protocol3.c:959 +#: fe-protocol3.c:211 fe-protocol3.c:238 fe-protocol3.c:255 fe-protocol3.c:333 +#: fe-protocol3.c:699 fe-protocol3.c:927 msgid "out of memory" msgstr "нехватка памяти" -#: fe-exec.c:499 fe-protocol2.c:1403 fe-protocol3.c:1894 +#: fe-exec.c:499 fe-protocol2.c:1403 fe-protocol3.c:1862 #, c-format msgid "%s" msgstr "%s" @@ -666,7 +667,7 @@ msgstr "вызов PQexec не допускается в процессе COPY BOTH\n" #: fe-exec.c:2283 fe-exec.c:2350 fe-exec.c:2440 fe-protocol2.c:1360 -#: fe-protocol3.c:1825 +#: fe-protocol3.c:1793 msgid "no COPY in progress\n" msgstr "операция COPY не выполняется\n" @@ -832,7 +833,7 @@ msgid "invalid state %c, probably indicative of memory corruption\n" msgstr "неверное состояние %c - возможно разрушение памяти\n" -#: fe-protocol2.c:479 fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:188 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "от сервера во время простоя получено сообщение типа 0x%02x" @@ -860,12 +861,12 @@ "сервер отправил двоичные данные (сообщение \"B\") без предварительного " "описания строки (сообщение \"T\")" -#: fe-protocol2.c:633 fe-protocol3.c:412 +#: fe-protocol2.c:633 fe-protocol3.c:409 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "неожиданный ответ сервера; первый полученный символ: \"%c\"\n" -#: fe-protocol2.c:762 fe-protocol2.c:937 fe-protocol3.c:627 fe-protocol3.c:854 +#: fe-protocol2.c:762 fe-protocol2.c:937 fe-protocol3.c:610 fe-protocol3.c:816 msgid "out of memory for query result" msgstr "недостаточно памяти для результата запроса" @@ -874,12 +875,12 @@ msgid "lost synchronization with server, resetting connection" msgstr "потеряна синхронизация с сервером; попытка восстановить соединение" -#: fe-protocol2.c:1549 fe-protocol2.c:1581 fe-protocol3.c:2097 +#: fe-protocol2.c:1549 fe-protocol2.c:1581 fe-protocol3.c:2065 #, c-format msgid "protocol error: id=0x%x\n" msgstr "ошибка протокола: id=0x%x\n" -#: fe-protocol3.c:368 +#: fe-protocol3.c:365 msgid "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)\n" @@ -887,116 +888,108 @@ "сервер отправил данные (сообщение \"D\") без предварительного описания " "строки (сообщение \"T\")\n" -#: fe-protocol3.c:433 +#: fe-protocol3.c:430 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "содержимое не соответствует длине в сообщении типа \"%c\"\n" -#: fe-protocol3.c:454 +#: fe-protocol3.c:451 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "" "потеряна синхронизация с сервером: получено сообщение типа \"%c\", длина %d\n" -#: fe-protocol3.c:505 fe-protocol3.c:545 +#: fe-protocol3.c:501 fe-protocol3.c:541 msgid "insufficient data in \"T\" message" msgstr "недостаточно данных в сообщении \"T\"" -#: fe-protocol3.c:578 -msgid "extraneous data in \"T\" message" -msgstr "лишние данные в сообщении \"T\"" - -#: fe-protocol3.c:691 -msgid "extraneous data in \"t\" message" -msgstr "лишние данные в сообщении \"t\"" +#: fe-protocol3.c:679 +msgid "insufficient data in \"t\" message" +msgstr "недостаточно данных в сообщении \"t\"" -#: fe-protocol3.c:762 fe-protocol3.c:794 fe-protocol3.c:812 +#: fe-protocol3.c:738 fe-protocol3.c:770 fe-protocol3.c:788 msgid "insufficient data in \"D\" message" msgstr "недостаточно данных в сообщении \"D\"" -#: fe-protocol3.c:768 +#: fe-protocol3.c:744 msgid "unexpected field count in \"D\" message" msgstr "неверное число полей в сообщении \"D\"" -#: fe-protocol3.c:821 -msgid "extraneous data in \"D\" message" -msgstr "лишние данные в сообщении \"D\"" - -#: fe-protocol3.c:1013 +#: fe-protocol3.c:981 msgid "no error message available\n" msgstr "нет сообщения об ошибке\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1043 fe-protocol3.c:1062 +#: fe-protocol3.c:1011 fe-protocol3.c:1030 #, c-format msgid " at character %s" msgstr " символ %s" -#: fe-protocol3.c:1075 +#: fe-protocol3.c:1043 #, c-format msgid "DETAIL: %s\n" msgstr "ПОДРОБНОСТИ: %s\n" -#: fe-protocol3.c:1078 +#: fe-protocol3.c:1046 #, c-format msgid "HINT: %s\n" msgstr "ПОДСКАЗКА: %s\n" -#: fe-protocol3.c:1081 +#: fe-protocol3.c:1049 #, c-format msgid "QUERY: %s\n" msgstr "ЗАПРОС: %s\n" -#: fe-protocol3.c:1088 +#: fe-protocol3.c:1056 #, c-format msgid "CONTEXT: %s\n" msgstr "КОНТЕКСТ: %s\n" -#: fe-protocol3.c:1097 +#: fe-protocol3.c:1065 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "СХЕМА: %s\n" -#: fe-protocol3.c:1101 +#: fe-protocol3.c:1069 #, c-format msgid "TABLE NAME: %s\n" msgstr "ТАБЛИЦА: %s\n" -#: fe-protocol3.c:1105 +#: fe-protocol3.c:1073 #, c-format msgid "COLUMN NAME: %s\n" msgstr "СТОЛБЕЦ: %s\n" -#: fe-protocol3.c:1109 +#: fe-protocol3.c:1077 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "ТИП ДАННЫХ: %s\n" -#: fe-protocol3.c:1113 +#: fe-protocol3.c:1081 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "ОГРАНИЧЕНИЕ: %s\n" -#: fe-protocol3.c:1125 +#: fe-protocol3.c:1093 msgid "LOCATION: " msgstr "ПОЛОЖЕНИЕ: " -#: fe-protocol3.c:1127 +#: fe-protocol3.c:1095 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1129 +#: fe-protocol3.c:1097 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1324 +#: fe-protocol3.c:1292 #, c-format msgid "LINE %d: " msgstr "СТРОКА %d: " -#: fe-protocol3.c:1719 +#: fe-protocol3.c:1687 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline можно вызывать только во время COPY OUT с текстом\n" @@ -1170,6 +1163,15 @@ msgid "unrecognized socket error: 0x%08X/%d" msgstr "нераспознанная ошибка сокета: 0x%08X/%d" +#~ msgid "extraneous data in \"T\" message" +#~ msgstr "лишние данные в сообщении \"T\"" + +#~ msgid "extraneous data in \"t\" message" +#~ msgstr "лишние данные в сообщении \"t\"" + +#~ msgid "extraneous data in \"D\" message" +#~ msgstr "лишние данные в сообщении \"D\"" + #~ msgid "could not get home directory to locate password file\n" #~ msgstr "не удалось получить домашний каталог для загрузки файла паролей\n" diff -Nru postgresql-10-10.17/src/interfaces/libpq/po/sv.po postgresql-10-10.19/src/interfaces/libpq/po/sv.po --- postgresql-10-10.17/src/interfaces/libpq/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/interfaces/libpq/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,6 +1,6 @@ # Swedish message translation file for libpq # Peter Eisentraut , 2001, 2010. -# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019. +# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021. # # Use these quotes: "%s" # @@ -8,14 +8,15 @@ msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2019-06-18 22:55+0000\n" -"PO-Revision-Date: 2019-06-20 08:32+0200\n" +"POT-Creation-Date: 2021-11-07 09:39+0000\n" +"PO-Revision-Date: 2021-11-07 09:56+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: fe-auth-scram.c:176 msgid "malformed SCRAM message (empty message)\n" @@ -49,16 +50,16 @@ #: fe-auth-scram.c:319 fe-auth-scram.c:336 fe-auth-scram.c:346 #: fe-auth-scram.c:400 fe-auth-scram.c:420 fe-auth-scram.c:445 -#: fe-auth-scram.c:459 fe-auth-scram.c:508 fe-auth-scram.c:540 fe-auth.c:227 -#: fe-auth.c:362 fe-auth.c:432 fe-auth.c:467 fe-auth.c:609 fe-auth.c:768 -#: fe-auth.c:1080 fe-auth.c:1228 fe-connect.c:834 fe-connect.c:1263 -#: fe-connect.c:1439 fe-connect.c:1921 fe-connect.c:1944 fe-connect.c:2605 -#: fe-connect.c:4151 fe-connect.c:4403 fe-connect.c:4522 fe-connect.c:4772 -#: fe-connect.c:4852 fe-connect.c:4951 fe-connect.c:5207 fe-connect.c:5236 -#: fe-connect.c:5308 fe-connect.c:5332 fe-connect.c:5350 fe-connect.c:5451 -#: fe-connect.c:5460 fe-connect.c:5816 fe-connect.c:5966 fe-exec.c:2705 +#: fe-auth-scram.c:459 fe-auth-scram.c:508 fe-auth-scram.c:540 fe-auth.c:229 +#: fe-auth.c:364 fe-auth.c:434 fe-auth.c:469 fe-auth.c:611 fe-auth.c:770 +#: fe-auth.c:1082 fe-auth.c:1230 fe-connect.c:830 fe-connect.c:1259 +#: fe-connect.c:1435 fe-connect.c:1917 fe-connect.c:1940 fe-connect.c:2601 +#: fe-connect.c:4146 fe-connect.c:4398 fe-connect.c:4517 fe-connect.c:4771 +#: fe-connect.c:4851 fe-connect.c:4950 fe-connect.c:5206 fe-connect.c:5235 +#: fe-connect.c:5307 fe-connect.c:5331 fe-connect.c:5349 fe-connect.c:5450 +#: fe-connect.c:5459 fe-connect.c:5815 fe-connect.c:5965 fe-exec.c:2705 #: fe-exec.c:3452 fe-exec.c:3617 fe-lobj.c:896 fe-protocol2.c:1214 -#: fe-protocol3.c:1000 fe-protocol3.c:1686 fe-secure-openssl.c:521 +#: fe-protocol3.c:968 fe-protocol3.c:1654 fe-secure-openssl.c:521 #: fe-secure-openssl.c:1145 msgid "out of memory\n" msgstr "slut på minne\n" @@ -92,149 +93,149 @@ msgid "malformed SCRAM message (invalid server signature)\n" msgstr "felaktigt SCRAM-meddelande (ogiltigt serversignatur)\n" -#: fe-auth.c:122 +#: fe-auth.c:124 #, c-format msgid "out of memory allocating GSSAPI buffer (%d)\n" msgstr "slut på minne vid allokering av buffer till GSSAPI (%d)\n" -#: fe-auth.c:177 +#: fe-auth.c:179 msgid "GSSAPI continuation error" msgstr "GSSAPI fortsättningsfel" -#: fe-auth.c:207 fe-auth.c:461 fe-secure-openssl.c:493 +#: fe-auth.c:209 fe-auth.c:463 fe-secure-openssl.c:493 msgid "host name must be specified\n" msgstr "värdnamn måste anges\n" -#: fe-auth.c:214 +#: fe-auth.c:216 msgid "duplicate GSS authentication request\n" msgstr "duplicerad autentiseringsbegäran från GSS\n" -#: fe-auth.c:240 +#: fe-auth.c:242 msgid "GSSAPI name import error" msgstr "GSSAPI-fel vid import av namn" -#: fe-auth.c:303 +#: fe-auth.c:305 #, c-format msgid "out of memory allocating SSPI buffer (%d)\n" msgstr "slut på minne vid allokering av buffer till GSSAPI (%d)\n" -#: fe-auth.c:351 +#: fe-auth.c:353 msgid "SSPI continuation error" msgstr "SSPI fortsättningsfel" -#: fe-auth.c:422 +#: fe-auth.c:424 msgid "duplicate SSPI authentication request\n" msgstr "duplicerad autentiseringsbegäran från SSPI\n" -#: fe-auth.c:447 +#: fe-auth.c:449 msgid "could not acquire SSPI credentials" msgstr "kunde inte hämta SSPI-referenser" -#: fe-auth.c:500 +#: fe-auth.c:502 msgid "duplicate SASL authentication request\n" msgstr "duplicerad autentiseringsbegäran från SASL\n" -#: fe-auth.c:560 +#: fe-auth.c:562 msgid "none of the server's SASL authentication mechanisms are supported\n" msgstr "ingen av serverns SASL-autentiseringsmekanismer stöds\n" -#: fe-auth.c:633 +#: fe-auth.c:635 #, c-format msgid "out of memory allocating SASL buffer (%d)\n" msgstr "slut på minne vid allokering av buffer till SASL (%d)\n" -#: fe-auth.c:658 +#: fe-auth.c:660 msgid "AuthenticationSASLFinal received from server, but SASL authentication was not completed\n" msgstr "mottog AuthenticationSASLFinal från server, men SASL-autentisering slutfördes ej\n" -#: fe-auth.c:735 +#: fe-auth.c:737 msgid "SCM_CRED authentication method not supported\n" msgstr "autentiseringsmetoden SCM_CRED stöds ej\n" -#: fe-auth.c:826 +#: fe-auth.c:828 msgid "Kerberos 4 authentication not supported\n" msgstr "Kerberos-4-autentisering stöds ej\n" -#: fe-auth.c:831 +#: fe-auth.c:833 msgid "Kerberos 5 authentication not supported\n" msgstr "Kerberos-5-autentisering stöds ej\n" -#: fe-auth.c:902 +#: fe-auth.c:904 msgid "GSSAPI authentication not supported\n" msgstr "GSSAPI-autentisering stöds ej\n" -#: fe-auth.c:934 +#: fe-auth.c:936 msgid "SSPI authentication not supported\n" msgstr "SSPI-autentisering stöds ej\n" -#: fe-auth.c:942 +#: fe-auth.c:944 msgid "Crypt authentication not supported\n" msgstr "Crypt-autentisering stöds ej\n" -#: fe-auth.c:1008 +#: fe-auth.c:1010 #, c-format msgid "authentication method %u not supported\n" msgstr "autentiseringsmetod %u stöds ej\n" -#: fe-auth.c:1055 +#: fe-auth.c:1057 #, c-format msgid "user name lookup failure: error code %lu\n" msgstr "misslyckad sökning efter användarnamn: felkod %lu\n" -#: fe-auth.c:1065 fe-connect.c:2532 +#: fe-auth.c:1067 fe-connect.c:2528 #, c-format msgid "could not look up local user ID %d: %s\n" msgstr "kunde inte slå upp lokalt användar-id %d: %s\n" -#: fe-auth.c:1070 fe-connect.c:2537 +#: fe-auth.c:1072 fe-connect.c:2533 #, c-format msgid "local user with ID %d does not exist\n" msgstr "lokal användare med ID %d existerar inte\n" -#: fe-auth.c:1172 +#: fe-auth.c:1174 msgid "unexpected shape of result set returned for SHOW\n" msgstr "oväntad form på resultatmängden som returnerades för SHOW\n" -#: fe-auth.c:1181 +#: fe-auth.c:1183 msgid "password_encryption value too long\n" msgstr "password_encryption-värdet är för långt\n" -#: fe-auth.c:1221 +#: fe-auth.c:1223 #, c-format msgid "unrecognized password encryption algorithm \"%s\"\n" msgstr "okänd lösenordskrypteringsalgoritm \"%s\"\n" -#: fe-connect.c:1017 +#: fe-connect.c:1013 #, c-format msgid "could not match %d host names to %d hostaddr values\n" msgstr "kunde inte matcha %d värdnamn till %d värdadresser\n" -#: fe-connect.c:1093 +#: fe-connect.c:1089 #, c-format msgid "could not match %d port numbers to %d hosts\n" msgstr "kunde inte matcha %d portnummer med %d värdar\n" -#: fe-connect.c:1189 +#: fe-connect.c:1185 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "ogiltigt värde för ssl-läge: \"%s\"\n" -#: fe-connect.c:1210 +#: fe-connect.c:1206 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "värde för ssl-läge, \"%s\", är ogiltigt när SSL-stöd inte kompilerats in\n" -#: fe-connect.c:1245 +#: fe-connect.c:1241 #, c-format msgid "invalid target_session_attrs value: \"%s\"\n" msgstr "ogiltigt target_session_attrs-värde: \"%s\"\n" -#: fe-connect.c:1463 +#: fe-connect.c:1459 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "kunde inte sätta uttag (socket) till läget TCP-ingen-fördröjning: %s\n" -#: fe-connect.c:1493 +#: fe-connect.c:1489 #, c-format msgid "" "could not connect to server: %s\n" @@ -245,7 +246,7 @@ "\tKör servern på lokalt och accepterar den\n" "\tanslutningar på Unix-uttaget \"%s\"?\n" -#: fe-connect.c:1551 +#: fe-connect.c:1547 #, c-format msgid "" "could not connect to server: %s\n" @@ -256,7 +257,7 @@ "\tKör servern på värden \"%s\" (%s) och accepterar\n" "\tden TCP/IP-uppkopplingar på port %s?\n" -#: fe-connect.c:1560 +#: fe-connect.c:1556 #, c-format msgid "" "could not connect to server: %s\n" @@ -267,286 +268,286 @@ "\tKör servern på värden \"%s\" och accepterar\n" "\tden TCP/IP-uppkopplingar på porten %s?\n" -#: fe-connect.c:1611 fe-connect.c:1643 fe-connect.c:1676 fe-connect.c:2324 +#: fe-connect.c:1607 fe-connect.c:1639 fe-connect.c:1672 fe-connect.c:2320 #, c-format msgid "setsockopt(%s) failed: %s\n" msgstr "setsockopt(%s) misslyckades: %s\n" -#: fe-connect.c:1725 +#: fe-connect.c:1721 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) misslyckades: %ui\n" -#: fe-connect.c:2034 +#: fe-connect.c:2030 msgid "invalid connection state, probably indicative of memory corruption\n" -msgstr "ogiltigt förbindelsetillstånd, antagligen korrupt minne\n" +msgstr "ogiltigt tillstånd i anslutning, antagligen korrupt minne\n" -#: fe-connect.c:2100 +#: fe-connect.c:2096 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "ogiltigt portnummer \"%s\"\n" -#: fe-connect.c:2116 +#: fe-connect.c:2112 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "kunde inte översätta värdnamn \"%s\" till adress: %s\n" -#: fe-connect.c:2129 +#: fe-connect.c:2125 #, c-format msgid "could not parse network address \"%s\": %s\n" msgstr "kunde inte parsa nätverksadress \"%s\": %s\n" -#: fe-connect.c:2142 +#: fe-connect.c:2138 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" msgstr "Sökväg till unixdomänuttag \"%s\" är för lång (maximalt %d byte)\n" -#: fe-connect.c:2157 +#: fe-connect.c:2153 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "kunde inte översätta sökväg till unix-uttag (socket) \"%s\" till adress: %s\n" -#: fe-connect.c:2261 +#: fe-connect.c:2257 #, c-format msgid "could not create socket: %s\n" msgstr "kan inte skapa uttag: %s\n" -#: fe-connect.c:2283 +#: fe-connect.c:2279 #, c-format msgid "could not set socket to nonblocking mode: %s\n" msgstr "kunde inte sätta uttag (socket) till ickeblockerande läge: %s\n" -#: fe-connect.c:2293 +#: fe-connect.c:2289 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "kunde inte ställa in uttag (socket) i \"close-on-exec\"-läge: %s\n" -#: fe-connect.c:2311 +#: fe-connect.c:2307 msgid "keepalives parameter must be an integer\n" msgstr "keepalives-parameter måste vara ett heltal\n" -#: fe-connect.c:2449 +#: fe-connect.c:2445 #, c-format msgid "could not get socket error status: %s\n" msgstr "kunde inte hämta felstatus för uttag (socket): %s\n" -#: fe-connect.c:2477 +#: fe-connect.c:2473 #, c-format msgid "could not get client address from socket: %s\n" msgstr "kunde inte få tag på klientadressen från uttag (socket): %s\n" -#: fe-connect.c:2519 +#: fe-connect.c:2515 msgid "requirepeer parameter is not supported on this platform\n" msgstr "requirepeer-parameter stöds inte på denna plattform\n" -#: fe-connect.c:2522 +#: fe-connect.c:2518 #, c-format msgid "could not get peer credentials: %s\n" msgstr "kunde inte hämta andra sidans referenser: %s\n" -#: fe-connect.c:2545 +#: fe-connect.c:2541 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "requirepeer anger \"%s\", men andra sidans användarnamn är \"%s\"\n" -#: fe-connect.c:2579 +#: fe-connect.c:2575 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "kunde inte skicka SSL-paket för uppkopplingsförhandling: %s\n" -#: fe-connect.c:2618 +#: fe-connect.c:2614 #, c-format msgid "could not send startup packet: %s\n" msgstr "kan inte skicka startpaketet: %s\n" -#: fe-connect.c:2688 +#: fe-connect.c:2684 msgid "server does not support SSL, but SSL was required\n" msgstr "SSL stöds inte av servern, men SSL krävdes\n" -#: fe-connect.c:2714 +#: fe-connect.c:2710 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "tog emot ogiltigt svar till SSL-uppkopplingsförhandling: %c\n" -#: fe-connect.c:2791 fe-connect.c:2824 +#: fe-connect.c:2787 fe-connect.c:2820 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "förväntade autentiseringsförfrågan från servern, men fick %c\n" -#: fe-connect.c:3051 +#: fe-connect.c:3047 msgid "unexpected message from server during startup\n" msgstr "oväntat meddelande från servern under starten\n" -#: fe-connect.c:3281 +#: fe-connect.c:3277 #, c-format msgid "could not make a writable connection to server \"%s:%s\"\n" msgstr "kunde inte upprätta en skrivbar anslutning till server \"%s:%s\"\n" -#: fe-connect.c:3327 +#: fe-connect.c:3323 #, c-format msgid "test \"SHOW transaction_read_only\" failed on server \"%s:%s\"\n" msgstr "test \"SHOW transaction_read_only\" misslyckades på server \"%s:%s\"\n" -#: fe-connect.c:3342 +#: fe-connect.c:3338 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" -msgstr "ogiltigt förbindelsetillstånd %d, antagligen korrupt minne\n" +msgstr "ogiltigt tillstånd %d i anslutning, antagligen korrupt minne\n" -#: fe-connect.c:3757 fe-connect.c:3817 +#: fe-connect.c:3752 fe-connect.c:3812 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc \"%s\" misslyckades under PGEVT_CONNRESET-händelse\n" -#: fe-connect.c:4164 +#: fe-connect.c:4159 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "ogiltig LDAP URL \"%s\": schemat måste vara ldap://\n" -#: fe-connect.c:4179 +#: fe-connect.c:4174 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "ogiltig LDAP URL \"%s\": saknar urskiljbart namn\n" -#: fe-connect.c:4190 fe-connect.c:4243 +#: fe-connect.c:4185 fe-connect.c:4238 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "ogiltig LDAP URL \"%s\": måste finnas exakt ett attribut\n" -#: fe-connect.c:4200 fe-connect.c:4257 +#: fe-connect.c:4195 fe-connect.c:4252 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "ogiltig LDAP URL \"%s\": måste ha sök-scope (base/one/sub)\n" -#: fe-connect.c:4211 +#: fe-connect.c:4206 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "ogiltigt LDAP URL \"%s\": inget filter\n" -#: fe-connect.c:4232 +#: fe-connect.c:4227 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "ogiltig LDAP URL \"%s\": ogiltigt portnummer\n" -#: fe-connect.c:4266 +#: fe-connect.c:4261 msgid "could not create LDAP structure\n" msgstr "kunde inte skapa LDAP-struktur\n" -#: fe-connect.c:4342 +#: fe-connect.c:4337 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "uppslagning av LDAP-server misslyckades: %s\n" -#: fe-connect.c:4353 +#: fe-connect.c:4348 msgid "more than one entry found on LDAP lookup\n" msgstr "mer än en post hittad i LDAP-uppslagning\n" -#: fe-connect.c:4354 fe-connect.c:4366 +#: fe-connect.c:4349 fe-connect.c:4361 msgid "no entry found on LDAP lookup\n" msgstr "ingen post hittad i LDAP-uppslagning\n" -#: fe-connect.c:4377 fe-connect.c:4390 +#: fe-connect.c:4372 fe-connect.c:4385 msgid "attribute has no values on LDAP lookup\n" msgstr "attributet har inga värden i LDAP-uppslagning\n" -#: fe-connect.c:4442 fe-connect.c:4461 fe-connect.c:4990 +#: fe-connect.c:4437 fe-connect.c:4456 fe-connect.c:4989 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" -msgstr "\"=\" efter \"%s\" saknas i förbindelseinfosträng\n" +msgstr "\"=\" efter \"%s\" saknas i anslutningssträng\n" -#: fe-connect.c:4534 fe-connect.c:5175 fe-connect.c:5949 +#: fe-connect.c:4529 fe-connect.c:5174 fe-connect.c:5948 #, c-format msgid "invalid connection option \"%s\"\n" -msgstr "ogiltig förbindelseparameter \"%s\"\n" +msgstr "ogiltig anslutningsparameter \"%s\"\n" -#: fe-connect.c:4550 fe-connect.c:5039 +#: fe-connect.c:4545 fe-connect.c:5038 msgid "unterminated quoted string in connection info string\n" msgstr "icke terminerad sträng i uppkopplingsinformationen\n" -#: fe-connect.c:4633 +#: fe-connect.c:4628 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "definition av service \"%s\" hittades inte\n" -#: fe-connect.c:4656 +#: fe-connect.c:4651 #, c-format msgid "service file \"%s\" not found\n" msgstr "servicefil \"%s\" hittades inte\n" -#: fe-connect.c:4669 +#: fe-connect.c:4666 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "rad %d för lång i servicefil \"%s\"\n" -#: fe-connect.c:4740 fe-connect.c:4784 +#: fe-connect.c:4739 fe-connect.c:4783 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "syntaxfel i servicefel \"%s\", rad %d\n" -#: fe-connect.c:4751 +#: fe-connect.c:4750 #, c-format msgid "nested service specifications not supported in service file \"%s\", line %d\n" msgstr "nästlade servicespecifikationer stöds inte i servicefil \"%s\", rad %d\n" -#: fe-connect.c:5471 +#: fe-connect.c:5470 #, c-format msgid "invalid URI propagated to internal parser routine: \"%s\"\n" msgstr "ogiltig URI propagerad till intern parsningsrutin: \"%s\"\n" -#: fe-connect.c:5548 +#: fe-connect.c:5547 #, c-format msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n" msgstr "nådde slutet på strängen när vi letade efter matchande \"]\" i IPv6-värdadress i URI: \"%s\"\n" -#: fe-connect.c:5555 +#: fe-connect.c:5554 #, c-format msgid "IPv6 host address may not be empty in URI: \"%s\"\n" msgstr "IPv6-värdadress får ej vara tom i URI: \"%s\"\n" -#: fe-connect.c:5570 +#: fe-connect.c:5569 #, c-format msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n" msgstr "oväntat tecken \"%c\" vid position %d i URI (förväntade \":\" eller \"/\"): \"%s\"\n" -#: fe-connect.c:5699 +#: fe-connect.c:5698 #, c-format msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "extra nyckel/värde-separator \"=\" i URI-frågeparameter: \"%s\"\n" -#: fe-connect.c:5719 +#: fe-connect.c:5718 #, c-format msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n" msgstr "saknar nyckel/värde-separator \"=\" i URI-frågeparameter: \"%s\"\n" -#: fe-connect.c:5770 +#: fe-connect.c:5769 #, c-format msgid "invalid URI query parameter: \"%s\"\n" msgstr "ogiltig URI-frågeparameter: \"%s\"\n" -#: fe-connect.c:5844 +#: fe-connect.c:5843 #, c-format msgid "invalid percent-encoded token: \"%s\"\n" msgstr "ogiltigt procent-kodad symbol: \"%s\"\n" -#: fe-connect.c:5854 +#: fe-connect.c:5853 #, c-format msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n" msgstr "förbjudet värde %%00 i procentkodat värde: \"%s\"\n" -#: fe-connect.c:6200 +#: fe-connect.c:6199 msgid "connection pointer is NULL\n" msgstr "anslutningspekare är NULL\n" -#: fe-connect.c:6498 +#: fe-connect.c:6495 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "FEL: lösenordsfil \"%s\" är inte en vanlig fil\n" -#: fe-connect.c:6507 +#: fe-connect.c:6504 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "VARNING: lösenordsfilen \"%s\" har läsrättigheter för gruppen eller världen; rättigheten skall vara u=rw (0600) eller mindre\n" -#: fe-connect.c:6601 +#: fe-connect.c:6616 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "lösenord hämtat från fil \"%s\"\n" @@ -557,12 +558,12 @@ msgstr "radnummer %d är utanför giltigt intervall 0..%d" #: fe-exec.c:498 fe-protocol2.c:503 fe-protocol2.c:538 fe-protocol2.c:1057 -#: fe-protocol3.c:209 fe-protocol3.c:236 fe-protocol3.c:253 fe-protocol3.c:333 -#: fe-protocol3.c:728 fe-protocol3.c:959 +#: fe-protocol3.c:211 fe-protocol3.c:238 fe-protocol3.c:255 fe-protocol3.c:333 +#: fe-protocol3.c:699 fe-protocol3.c:927 msgid "out of memory" msgstr "slut på minne" -#: fe-exec.c:499 fe-protocol2.c:1403 fe-protocol3.c:1894 +#: fe-exec.c:499 fe-protocol2.c:1403 fe-protocol3.c:1862 #, c-format msgid "%s" msgstr "%s" @@ -634,13 +635,13 @@ msgstr "PQexec tillåts inte under COPY BOTH\n" #: fe-exec.c:2283 fe-exec.c:2350 fe-exec.c:2440 fe-protocol2.c:1360 -#: fe-protocol3.c:1825 +#: fe-protocol3.c:1793 msgid "no COPY in progress\n" msgstr "ingen COPY pågår\n" #: fe-exec.c:2630 msgid "connection in wrong state\n" -msgstr "förbindelse i felaktigt tillstånd\n" +msgstr "anslutning i felaktigt tillstånd\n" #: fe-exec.c:2661 msgid "invalid ExecStatusType code" @@ -764,7 +765,7 @@ #: fe-misc.c:639 fe-misc.c:840 msgid "connection not open\n" -msgstr "förbindelse inte öppen\n" +msgstr "anslutningen är inte öppen\n" #: fe-misc.c:809 fe-secure-openssl.c:229 fe-secure-openssl.c:338 #: fe-secure.c:253 fe-secure.c:362 @@ -800,7 +801,7 @@ msgid "invalid state %c, probably indicative of memory corruption\n" msgstr "ogiltigt tillstånd %c, indikerar troligen ett minnesfel\n" -#: fe-protocol2.c:479 fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:188 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "meddelandetyp 0x%02x kom från server under viloperiod" @@ -820,12 +821,12 @@ msgid "server sent binary data (\"B\" message) without prior row description (\"T\" message)" msgstr "servern skickade binärdata (meddelande \"B\") utan föregående radbeskrivning (meddelande \"T\")" -#: fe-protocol2.c:633 fe-protocol3.c:412 +#: fe-protocol2.c:633 fe-protocol3.c:409 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "oväntat svar för servern; första mottagna tecknet var \"%c\"\n" -#: fe-protocol2.c:762 fe-protocol2.c:937 fe-protocol3.c:627 fe-protocol3.c:854 +#: fe-protocol2.c:762 fe-protocol2.c:937 fe-protocol3.c:610 fe-protocol3.c:816 msgid "out of memory for query result" msgstr "slut på minnet för frågeresultat" @@ -834,124 +835,116 @@ msgid "lost synchronization with server, resetting connection" msgstr "tappade synkronisering med servern, startar o, uppkopplingen" -#: fe-protocol2.c:1549 fe-protocol2.c:1581 fe-protocol3.c:2097 +#: fe-protocol2.c:1549 fe-protocol2.c:1581 fe-protocol3.c:2065 #, c-format msgid "protocol error: id=0x%x\n" msgstr "protokollfel: id=0x%x\n" -#: fe-protocol3.c:368 +#: fe-protocol3.c:365 msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" msgstr "servern skickade data (meddelande \"D\") utan att först skicka en radbeskrivning (meddelande \"T\")\n" -#: fe-protocol3.c:433 +#: fe-protocol3.c:430 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "meddelandeinnehåll stämmer inte med längden för meddelandetyp \"%c\"\n" -#: fe-protocol3.c:454 +#: fe-protocol3.c:451 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "tappade synkronisering med servern: fick meddelandetyp \"%c\", längd %d\n" -#: fe-protocol3.c:505 fe-protocol3.c:545 +#: fe-protocol3.c:501 fe-protocol3.c:541 msgid "insufficient data in \"T\" message" msgstr "otillräckligt med data i \"T\"-meddelande" -#: fe-protocol3.c:578 -msgid "extraneous data in \"T\" message" -msgstr "extra data i \"T\"-meddelande" - -#: fe-protocol3.c:691 -msgid "extraneous data in \"t\" message" -msgstr "extra data i \"t\"-meddelande" +#: fe-protocol3.c:679 +msgid "insufficient data in \"t\" message" +msgstr "otillräckligt med data i \"t\"-meddelande" -#: fe-protocol3.c:762 fe-protocol3.c:794 fe-protocol3.c:812 +#: fe-protocol3.c:738 fe-protocol3.c:770 fe-protocol3.c:788 msgid "insufficient data in \"D\" message" msgstr "otillräckligt med data i \"D\"-meddelande" -#: fe-protocol3.c:768 +#: fe-protocol3.c:744 msgid "unexpected field count in \"D\" message" msgstr "oväntat fältantal i \"D\"-meddelande" -#: fe-protocol3.c:821 -msgid "extraneous data in \"D\" message" -msgstr "extra data i \"D\"-meddelande" - -#: fe-protocol3.c:1013 +#: fe-protocol3.c:981 msgid "no error message available\n" msgstr "inget felmeddelande finns tillgängligt\n" #. translator: %s represents a digit string -#: fe-protocol3.c:1043 fe-protocol3.c:1062 +#: fe-protocol3.c:1011 fe-protocol3.c:1030 #, c-format msgid " at character %s" msgstr " vid tecken %s" -#: fe-protocol3.c:1075 +#: fe-protocol3.c:1043 #, c-format msgid "DETAIL: %s\n" msgstr "DETALJ: %s\n" -#: fe-protocol3.c:1078 +#: fe-protocol3.c:1046 #, c-format msgid "HINT: %s\n" msgstr "TIPS: %s\n" -#: fe-protocol3.c:1081 +#: fe-protocol3.c:1049 #, c-format msgid "QUERY: %s\n" msgstr "FRÅGA: %s\n" -#: fe-protocol3.c:1088 +#: fe-protocol3.c:1056 #, c-format msgid "CONTEXT: %s\n" msgstr "KONTEXT: %s\n" -#: fe-protocol3.c:1097 +#: fe-protocol3.c:1065 #, c-format msgid "SCHEMA NAME: %s\n" msgstr "SCHEMANAMN: %s\n" -#: fe-protocol3.c:1101 +#: fe-protocol3.c:1069 #, c-format msgid "TABLE NAME: %s\n" msgstr "TABELLNAMN: %s\n" -#: fe-protocol3.c:1105 +#: fe-protocol3.c:1073 #, c-format msgid "COLUMN NAME: %s\n" msgstr "KOLUMNNAMN: %s\n" -#: fe-protocol3.c:1109 +#: fe-protocol3.c:1077 #, c-format msgid "DATATYPE NAME: %s\n" msgstr "DATATYPNAMN: %s\n" -#: fe-protocol3.c:1113 +#: fe-protocol3.c:1081 #, c-format msgid "CONSTRAINT NAME: %s\n" msgstr "VILLKORSNAMN: %s\n" -#: fe-protocol3.c:1125 +#: fe-protocol3.c:1093 msgid "LOCATION: " msgstr "PLATS: " -#: fe-protocol3.c:1127 +#: fe-protocol3.c:1095 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:1129 +#: fe-protocol3.c:1097 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1324 +#: fe-protocol3.c:1292 #, c-format msgid "LINE %d: " msgstr "RAD %d: " -#: fe-protocol3.c:1719 +#: fe-protocol3.c:1687 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: utför inte text-COPY OUT\n" @@ -1044,7 +1037,7 @@ #: fe-secure-openssl.c:1107 #, c-format msgid "could not establish SSL connection: %s\n" -msgstr "kan inte skapa SSL-förbindelse: %s\n" +msgstr "kan inte skapa SSL-anslutning: %s\n" #: fe-secure-openssl.c:1161 #, c-format @@ -1115,70 +1108,3 @@ #, c-format msgid "unrecognized socket error: 0x%08X/%d" msgstr "okänt uttagsfel: 0x%08X/%d" - -#~ msgid "could not get home directory to locate password file\n" -#~ msgstr "kunde inte hämta hemkatalogen för att lokalisera lösenordsfilen\n" - -#~ msgid "could not get home directory to locate service definition file" -#~ msgstr "kunde inte hämta hemkatalogen för att lokalisera servicedefinitionsfilen" - -#~ msgid "certificate could not be validated: %s\n" -#~ msgstr "certifikatet kunde inte valideras: %s\n" - -#~ msgid "could not read private key file \"%s\": %s\n" -#~ msgstr "kunde inte läsa privat nyckelfil \"%s\": %s\n" - -#~ msgid "private key file \"%s\" changed during execution\n" -#~ msgstr "privata nyckelfilen \"%s\" har ändrats under körning\n" - -#~ msgid "could not open private key file \"%s\": %s\n" -#~ msgstr "kan inte öppna privat nyckelfil \"%s\": %s\n" - -#~ msgid "private key file \"%s\" has wrong permissions\n" -#~ msgstr "privata nyckelfilen \"%s\" har fel rättigheter\n" - -#~ msgid "invalid value of PGSSLKEY environment variable\n" -#~ msgstr "felaktigt värde på miljövariabeln PGSSLKEY\n" - -#~ msgid "could not get user information\n" -#~ msgstr "kunde inte hämta användarinformation\n" - -#~ msgid "server common name \"%s\" does not resolve to %ld.%ld.%ld.%ld\n" -#~ msgstr "värdens namn \"%s\" är inte %ld.%ld.%ld.%ld efter uppslagning\n" - -#~ msgid "unsupported protocol\n" -#~ msgstr "protokoll stöds inte\n" - -#~ msgid "could not get information about host \"%s\": %s\n" -#~ msgstr "kunde inte få information om värd \"%s\": %s\n" - -#~ msgid "error querying socket: %s\n" -#~ msgstr "fel vid förfrågan till uttag (socket): %s\n" - -#, fuzzy -#~ msgid "could not get home directory to locate client certificate files\n" -#~ msgstr "kunde inte hämta hemkatalogen: %s\n" - -#~ msgid "socket not open\n" -#~ msgstr "uttag (socket) ej öppen\n" - -#~ msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" -#~ msgstr "setsockopt(SO_KEEPALIVE) misslyckades: %s\n" - -#~ msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" -#~ msgstr "setsockopt(TCP_KEEPINTVL) misslyckades: %s\n" - -#~ msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" -#~ msgstr "setsockopt(TCP_KEEPALIVE) misslyckades: %s\n" - -#~ msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" -#~ msgstr "setsockopt(TCP_KEEPIDLE) misslyckades: %s\n" - -#~ msgid "could not restore non-blocking mode on socket: %s\n" -#~ msgstr "kunde inte återställa ickeblockerande läge för uttag (socket): %s\n" - -#~ msgid "Kerberos 5 authentication rejected: %*s\n" -#~ msgstr "Kerberos-5-autentisering vägras: %*s\n" - -#~ msgid "could not set socket to blocking mode: %s\n" -#~ msgstr "kunde inte ställa in uttag (socket) i blockerande läge: %s\n" diff -Nru postgresql-10-10.17/src/Makefile.global.in postgresql-10-10.19/src/Makefile.global.in --- postgresql-10-10.17/src/Makefile.global.in 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/Makefile.global.in 2021-11-08 22:05:38.000000000 +0000 @@ -382,14 +382,32 @@ ifeq ($(enable_tap_tests),yes) +ifndef PGXS define prove_installcheck rm -rf $(CURDIR)/tmp_check/log -cd $(srcdir) && TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' REGRESS_SHLIB='$(abs_top_builddir)/src/test/regress/regress$(DLSUFFIX)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl) +cd $(srcdir) && \ + TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' \ + top_builddir='$(CURDIR)/$(top_builddir)' \ + PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' \ + $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl) endef +else # PGXS case +define prove_installcheck +rm -rf $(CURDIR)/tmp_check/log +cd $(srcdir) && \ + TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' \ + top_builddir='$(top_builddir)' \ + PG_REGRESS='$(top_builddir)/src/test/regress/pg_regress' \ + $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl) +endef +endif # PGXS define prove_check rm -rf $(CURDIR)/tmp_check/log -cd $(srcdir) && TESTDIR='$(CURDIR)' $(with_temp_install) PGPORT='6$(DEF_PGPORT)' PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' REGRESS_SHLIB='$(abs_top_builddir)/src/test/regress/regress$(DLSUFFIX)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl) +cd $(srcdir) && \ + TESTDIR='$(CURDIR)' $(with_temp_install) PGPORT='6$(DEF_PGPORT)' \ + PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' \ + $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if $(PROVE_TESTS),$(PROVE_TESTS),t/*.pl) endef else diff -Nru postgresql-10-10.17/src/pl/plperl/po/fr.po postgresql-10-10.19/src/pl/plperl/po/fr.po --- postgresql-10-10.17/src/pl/plperl/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plperl/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -181,9 +181,7 @@ #: plperl.c:2357 #, c-format 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" +msgstr "la fonction renvoyant un ensemble a été appelée dans un contexte qui n'accepte pas un ensemble" #: plperl.c:2401 #, c-format diff -Nru postgresql-10-10.17/src/pl/plperl/po/sv.po postgresql-10-10.19/src/pl/plperl/po/sv.po --- postgresql-10-10.17/src/pl/plperl/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plperl/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -2,223 +2,221 @@ # Copyright (C) 2014 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # Mats Erik Andersson , 2014. -# Dennis Björklund 2017. +# Dennis Björklund 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-07-20 20:37+0000\n" -"PO-Revision-Date: 2017-08-05 08:26+0200\n" +"POT-Creation-Date: 2021-11-07 09:38+0000\n" +"PO-Revision-Date: 2021-11-07 10:37+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" -#: plperl.c:390 +#: plperl.c:407 msgid "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "Om sant, tillförlitlig och otillförlitlig Perl-kod kommer kompileras i strikt läge." -#: plperl.c:404 +#: plperl.c:421 msgid "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "Perl-kod för initialisering, utföres när perl-tolken förbereds." -#: plperl.c:426 +#: plperl.c:443 msgid "Perl initialization code to execute once when plperl is first used." msgstr "Perl-kod för engångs-initialisering då plperl används första gången." -#: plperl.c:434 +#: plperl.c:451 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "Perl-kod för engångs-initialisering då plperlu används första gången." -#: plperl.c:631 +#: plperl.c:648 #, c-format msgid "cannot allocate multiple Perl interpreters on this platform" msgstr "kan inte utnyttja flera Perl-interpretorer på denna plattform" -#: plperl.c:651 plperl.c:826 plperl.c:832 plperl.c:946 plperl.c:958 -#: plperl.c:1001 plperl.c:1022 plperl.c:2074 plperl.c:2183 plperl.c:2250 -#: plperl.c:2312 +#: plperl.c:671 plperl.c:855 plperl.c:861 plperl.c:978 plperl.c:990 +#: plperl.c:1033 plperl.c:1056 plperl.c:2120 plperl.c:2230 plperl.c:2298 +#: plperl.c:2361 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:652 +#: plperl.c:672 #, c-format msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "vid utförande av PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:827 +#: plperl.c:856 #, c-format msgid "while parsing Perl initialization" msgstr "vid tolkning av perls initieringssteg" -#: plperl.c:833 +#: plperl.c:862 #, c-format msgid "while running Perl initialization" msgstr "vid utförande av perls initieringssteg" -#: plperl.c:947 +#: plperl.c:979 #, c-format msgid "while executing PLC_TRUSTED" msgstr "vid utförande av PLC_TRUSTED" -#: plperl.c:959 +#: plperl.c:991 #, c-format msgid "while executing utf8fix" msgstr "vid utförande av utf8fix" -#: plperl.c:1002 +#: plperl.c:1034 #, c-format msgid "while executing plperl.on_plperl_init" msgstr "vid utförande av plperl.on_plperl_init" -#: plperl.c:1023 +#: plperl.c:1057 #, c-format msgid "while executing plperl.on_plperlu_init" msgstr "vid utförande av plperl.on_plperlu_init" -#: plperl.c:1067 plperl.c:1719 +#: plperl.c:1102 plperl.c:1764 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Perlhash innehåller en okänd kolumn \"%s\"." -#: plperl.c:1072 plperl.c:1724 +#: plperl.c:1107 plperl.c:1769 #, c-format msgid "cannot set system attribute \"%s\"" msgstr "kan inte sätta systemattribut \"%s\"" -#: plperl.c:1157 +#: plperl.c:1195 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "antalet array-dimensioner (%d) överskrider det maximalt tillåtna (%d)" -#: plperl.c:1169 plperl.c:1186 +#: plperl.c:1207 plperl.c:1224 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "flerdimensionella vektorer måste ha array-uttryck av passande dimensioner" -#: plperl.c:1221 +#: plperl.c:1260 #, c-format msgid "cannot convert Perl array to non-array type %s" msgstr "kan inte omvandla perlvektor till icke-array av typ \"%s\"." -#: plperl.c:1323 +#: plperl.c:1362 #, c-format msgid "cannot convert Perl hash to non-composite type %s" msgstr "kan inte omvandla en perlhash till icke-composite-typ \"%s\"." -#: plperl.c:1334 +#: plperl.c:1373 #, c-format msgid "function returning record called in context that cannot accept type record" msgstr "en funktion med post som värde anropades i sammanhang där poster inte kan godtagas." -#: plperl.c:1349 +#: plperl.c:1388 #, c-format msgid "PL/Perl function must return reference to hash or array" msgstr "Funktioner i PL/Perl måste svara med referens till hash eller array." -#: plperl.c:1386 +#: plperl.c:1425 #, c-format msgid "lookup failed for type %s" msgstr "uppslag misslyckades för typen \"%s\"" -#: plperl.c:1695 +#: plperl.c:1740 #, c-format msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} finns inte." -#: plperl.c:1699 +#: plperl.c:1744 #, c-format msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} är inte en hash-referens." -#: plperl.c:1950 plperl.c:2785 +#: plperl.c:1995 plperl.c:2833 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "Funktioner i PL/Perl kan inte svara med typ \"%s\"." -#: plperl.c:1963 plperl.c:2827 +#: plperl.c:2008 plperl.c:2875 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "Funktioner i PL/Perl kan inte hantera typ \"%s\"." -#: plperl.c:2079 +#: plperl.c:2125 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "fick inte en CODE-referens vid kompilering av funktionen \"%s\"." -#: plperl.c:2171 +#: plperl.c:2218 #, c-format msgid "didn't get a return item from function" msgstr "fick inget returnvärde från funktion" -#: plperl.c:2214 plperl.c:2280 +#: plperl.c:2262 plperl.c:2329 #, c-format msgid "couldn't fetch $_TD" msgstr "kunde inte hämta $_TD" -#: plperl.c:2238 plperl.c:2300 +#: plperl.c:2286 plperl.c:2349 #, c-format msgid "didn't get a return item from trigger function" msgstr "fick inget returvärde från utlösarfunktion" -#: plperl.c:2357 +#: plperl.c:2406 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "en funktion som returnerar en mängd anropades i kontext som inte godtar en mängd" -#: plperl.c:2401 +#: plperl.c:2451 #, c-format msgid "set-returning PL/Perl function must return reference to array or use return_next" msgstr "En mängd-returnerande funktion i PL/Perl måste göra det som referens eller med return_next." -#: plperl.c:2522 +#: plperl.c:2572 #, c-format msgid "ignoring modified row in DELETE trigger" msgstr "Lämnar ändrad rad orörd i en DELETE-triggning" -#: plperl.c:2530 +#: plperl.c:2580 #, c-format msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "resultat av en triggningsfunktion i PL/Perl måste vara undef, \"SKIP\" eller \"MODIFY\"." -#: plperl.c:2780 +#: plperl.c:2828 #, c-format msgid "trigger functions can only be called as triggers" msgstr "Triggningsfunktioner kan bara anropas vid triggning." -#: plperl.c:3120 +#: plperl.c:3170 #, c-format msgid "query result has too many rows to fit in a Perl array" msgstr "frågeresultatet har för många rader för att få plats i en Perl-array" -#: plperl.c:3165 +#: plperl.c:3240 #, c-format msgid "cannot use return_next in a non-SETOF function" msgstr "får inte nyttja return_next i funktion som ej är SETOF" -#: plperl.c:3219 +#: plperl.c:3300 #, c-format msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash" msgstr "En funktion i PL/Perl med värderetur som SETOF måste anropa return_next med en hashreferens" -#: plperl.c:3882 +#: plperl.c:4009 #, c-format msgid "PL/Perl function \"%s\"" msgstr "PL/Perl-funktion \"%s\"." -#: plperl.c:3894 +#: plperl.c:4021 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "kompilering av PL/Perl-funktion \"%s\"" -#: plperl.c:3903 +#: plperl.c:4030 #, c-format msgid "PL/Perl anonymous code block" msgstr "Anonymt kodblock i PL/Perl." - -#~ msgid "out of memory" -#~ msgstr "slut på minne" diff -Nru postgresql-10-10.17/src/pl/plpgsql/src/pl_comp.c postgresql-10-10.19/src/pl/plpgsql/src/pl_comp.c --- postgresql-10-10.17/src/pl/plpgsql/src/pl_comp.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpgsql/src/pl_comp.c 2021-11-08 22:05:38.000000000 +0000 @@ -979,9 +979,11 @@ /* * If the outer block has an EXCEPTION clause, we need to make a new outer * block, since the added RETURN shouldn't act like it is inside the - * EXCEPTION clause. + * EXCEPTION clause. Likewise, if it has a label, wrap it in a new outer + * block so that EXIT doesn't skip the RETURN. */ - if (function->action->exceptions != NULL) + if (function->action->exceptions != NULL || + function->action->label != NULL) { PLpgSQL_stmt_block *new; diff -Nru postgresql-10-10.17/src/pl/plpgsql/src/pl_exec.c postgresql-10-10.19/src/pl/plpgsql/src/pl_exec.c --- postgresql-10-10.17/src/pl/plpgsql/src/pl_exec.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpgsql/src/pl_exec.c 2021-11-08 22:05:38.000000000 +0000 @@ -3551,6 +3551,22 @@ /* ---------- * Generate a prepared plan + * + * CAUTION: it is possible for this function to throw an error after it has + * built a SPIPlan and saved it in expr->plan. Therefore, be wary of doing + * additional things contingent on expr->plan being NULL. That is, given + * code like + * + * if (query->plan == NULL) + * { + * // okay to put setup code here + * exec_prepare_plan(estate, query, ...); + * // NOT okay to put more logic here + * } + * + * extra steps at the end are unsafe because they will not be executed when + * re-executing the calling statement, if exec_prepare_plan failed the first + * time. This is annoyingly error-prone, but the alternatives are worse. * ---------- */ static void @@ -3594,15 +3610,15 @@ SPI_keepplan(plan); expr->plan = plan; - /* Check to see if it's a simple expression */ - exec_simple_check_plan(estate, expr); - /* * Mark expression as not using a read-write param. exec_assign_value has * to take steps to override this if appropriate; that seems cleaner than * adding parameters to all other callers. */ expr->rwparam = -1; + + /* Check to see if it's a simple expression */ + exec_simple_check_plan(estate, expr); } @@ -3627,10 +3643,12 @@ * whether the statement is INSERT/UPDATE/DELETE */ if (expr->plan == NULL) + exec_prepare_plan(estate, expr, CURSOR_OPT_PARALLEL_OK); + + if (!stmt->mod_stmt_set) { ListCell *l; - exec_prepare_plan(estate, expr, CURSOR_OPT_PARALLEL_OK); stmt->mod_stmt = false; foreach(l, SPI_plan_get_plan_sources(expr->plan)) { @@ -3651,6 +3669,7 @@ break; } } + stmt->mod_stmt_set = true; } /* @@ -4368,6 +4387,14 @@ * if we can pass the target variable as a read-write parameter to the * expression. (This is a bit messy, but it seems cleaner than modifying * the API of exec_eval_expr for the purpose.) + * + * NOTE: this coding ignores the advice given in exec_prepare_plan's + * comments, that one should not do additional setup contingent on + * expr->plan being NULL. This means that if we get an error while trying + * to check for the expression being simple, we won't check for a + * read-write parameter either, so that neither optimization will be + * applied in future executions. Nothing will fail though, so we live + * with that bit of messiness too. */ if (expr->plan == NULL) { @@ -6715,6 +6742,10 @@ * exec_simple_check_plan - Check if a plan is simple enough to * be evaluated by ExecEvalExpr() instead * of SPI. + * + * Note: the refcount manipulations in this function assume that expr->plan + * is a "saved" SPI plan. That's a bit annoying from the caller's standpoint, + * but it's otherwise difficult to avoid leaking the plan on failure. * ---------- */ static void @@ -6798,7 +6829,8 @@ * OK, it seems worth constructing a plan for more careful checking. * * Get the generic plan for the query. If replanning is needed, do that - * work in the eval_mcontext. + * work in the eval_mcontext. (Note that replanning could throw an error, + * in which case the expr is left marked "not simple", which is fine.) */ oldcontext = MemoryContextSwitchTo(get_eval_mcontext(estate)); cplan = SPI_plan_get_cached_plan(expr->plan); diff -Nru postgresql-10-10.17/src/pl/plpgsql/src/pl_gram.c postgresql-10-10.19/src/pl/plpgsql/src/pl_gram.c --- postgresql-10-10.17/src/pl/plpgsql/src/pl_gram.c 2021-05-10 20:59:01.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpgsql/src/pl_gram.c 2021-11-08 22:25:44.000000000 +0000 @@ -5216,7 +5216,7 @@ check_sql_expr(expr->query, location, 0); - execsql = palloc(sizeof(PLpgSQL_stmt_execsql)); + execsql = palloc0(sizeof(PLpgSQL_stmt_execsql)); execsql->cmd_type = PLPGSQL_STMT_EXECSQL; execsql->lineno = plpgsql_location_to_lineno(location); execsql->sqlstmt = expr; diff -Nru postgresql-10-10.17/src/pl/plpgsql/src/pl_gram.y postgresql-10-10.19/src/pl/plpgsql/src/pl_gram.y --- postgresql-10-10.17/src/pl/plpgsql/src/pl_gram.y 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpgsql/src/pl_gram.y 2021-11-08 22:05:38.000000000 +0000 @@ -2943,7 +2943,7 @@ check_sql_expr(expr->query, location, 0); - execsql = palloc(sizeof(PLpgSQL_stmt_execsql)); + execsql = palloc0(sizeof(PLpgSQL_stmt_execsql)); execsql->cmd_type = PLPGSQL_STMT_EXECSQL; execsql->lineno = plpgsql_location_to_lineno(location); execsql->sqlstmt = expr; diff -Nru postgresql-10-10.17/src/pl/plpgsql/src/plpgsql.h postgresql-10-10.19/src/pl/plpgsql/src/plpgsql.h --- postgresql-10-10.17/src/pl/plpgsql/src/plpgsql.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpgsql/src/plpgsql.h 2021-11-08 22:05:38.000000000 +0000 @@ -746,10 +746,10 @@ PLpgSQL_stmt_type cmd_type; int lineno; PLpgSQL_expr *sqlstmt; - bool mod_stmt; /* is the stmt INSERT/UPDATE/DELETE? Note: - * mod_stmt is set when we plan the query */ + bool mod_stmt; /* is the stmt INSERT/UPDATE/DELETE? */ bool into; /* INTO supplied? */ bool strict; /* INTO STRICT flag */ + bool mod_stmt_set; /* is mod_stmt valid yet? */ PLpgSQL_rec *rec; /* INTO target, if record */ PLpgSQL_row *row; /* INTO target, if row */ } PLpgSQL_stmt_execsql; diff -Nru postgresql-10-10.17/src/pl/plpgsql/src/po/fr.po postgresql-10-10.19/src/pl/plpgsql/src/po/fr.po --- postgresql-10-10.17/src/pl/plpgsql/src/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpgsql/src/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -34,7 +34,7 @@ #: pl_comp.c:543 #, c-format msgid "trigger functions can only be called as triggers" -msgstr "les fonctions triggers peuvent seulement être appelées par des triggers" +msgstr "les fonctions trigger peuvent seulement être appelées par des triggers" #: pl_comp.c:547 pl_handler.c:433 #, c-format diff -Nru postgresql-10-10.17/src/pl/plpgsql/src/po/ru.po postgresql-10-10.19/src/pl/plpgsql/src/po/ru.po --- postgresql-10-10.17/src/pl/plpgsql/src/po/ru.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpgsql/src/po/ru.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,13 +1,13 @@ # Russian message translation file for plpgsql # Copyright (C) 2012-2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2012-2017, 2018, 2019, 2020. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: plpgsql (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2020-05-02 06:53+0300\n" -"PO-Revision-Date: 2019-08-28 08:55+0300\n" +"POT-Creation-Date: 2021-09-16 21:50+0300\n" +"PO-Revision-Date: 2021-08-14 07:18+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -51,7 +51,7 @@ "instead." msgstr "" "При необходимости к аргументам триггера можно обращаться через переменные " -"TG_NARGS and TG_ARGV." +"TG_NARGS и TG_ARGV." #: pl_comp.c:692 #, c-format @@ -68,48 +68,48 @@ msgid "parameter name \"%s\" used more than once" msgstr "имя параметра \"%s\" указано неоднократно" -#: pl_comp.c:1076 +#: pl_comp.c:1078 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "неоднозначная ссылка на столбец \"%s\"" -#: pl_comp.c:1078 +#: pl_comp.c:1080 #, c-format msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "Подразумевается ссылка на переменную PL/pgSQL или столбец таблицы." -#: pl_comp.c:1258 pl_comp.c:1286 pl_exec.c:4585 pl_exec.c:4914 pl_exec.c:4999 -#: pl_exec.c:5090 +#: pl_comp.c:1260 pl_comp.c:1288 pl_exec.c:4612 pl_exec.c:4941 pl_exec.c:5026 +#: pl_exec.c:5117 #, c-format msgid "record \"%s\" has no field \"%s\"" msgstr "в записи \"%s\" нет поля \"%s\"" -#: pl_comp.c:1818 +#: pl_comp.c:1820 #, c-format msgid "relation \"%s\" does not exist" msgstr "отношение \"%s\" не существует" -#: pl_comp.c:1927 +#: pl_comp.c:1929 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "переменная \"%s\" имеет псевдотип %s" -#: pl_comp.c:1995 +#: pl_comp.c:1997 #, c-format msgid "relation \"%s\" is not a table" msgstr "отношение \"%s\" не является таблицей" -#: pl_comp.c:2155 +#: pl_comp.c:2157 #, c-format msgid "type \"%s\" is only a shell" -msgstr "тип \"%s\" — лишь пустышка" +msgstr "тип \"%s\" является пустышкой" -#: pl_comp.c:2249 pl_comp.c:2302 +#: pl_comp.c:2251 pl_comp.c:2304 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "нераспознанное условие исключения \"%s\"" -#: pl_comp.c:2517 +#: pl_comp.c:2519 #, c-format msgid "" "could not determine actual argument type for polymorphic function \"%s\"" @@ -255,17 +255,17 @@ msgid "BY value of FOR loop must be greater than zero" msgstr "значение BY в цикле FOR должно быть больше нуля" -#: pl_exec.c:2294 pl_exec.c:4086 +#: pl_exec.c:2294 pl_exec.c:4105 #, c-format msgid "cursor \"%s\" already in use" msgstr "курсор \"%s\" уже используется" -#: pl_exec.c:2317 pl_exec.c:4151 +#: pl_exec.c:2317 pl_exec.c:4170 #, c-format msgid "arguments given for cursor without arguments" msgstr "курсору без аргументов были переданы аргументы" -#: pl_exec.c:2336 pl_exec.c:4170 +#: pl_exec.c:2336 pl_exec.c:4189 #, c-format msgid "arguments required for cursor" msgstr "курсору требуются аргументы" @@ -313,14 +313,14 @@ msgid "wrong result type supplied in RETURN NEXT" msgstr "в RETURN NEXT передан неправильный тип результата" -#: pl_exec.c:2878 pl_exec.c:4573 pl_exec.c:4881 pl_exec.c:4907 pl_exec.c:4973 -#: pl_exec.c:4992 pl_exec.c:5060 pl_exec.c:5083 +#: pl_exec.c:2878 pl_exec.c:4600 pl_exec.c:4908 pl_exec.c:4934 pl_exec.c:5000 +#: pl_exec.c:5019 pl_exec.c:5087 pl_exec.c:5110 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "записи \"%s\" не присвоено значение" -#: pl_exec.c:2880 pl_exec.c:4575 pl_exec.c:4883 pl_exec.c:4909 pl_exec.c:4975 -#: pl_exec.c:4994 pl_exec.c:5062 pl_exec.c:5085 +#: pl_exec.c:2880 pl_exec.c:4602 pl_exec.c:4910 pl_exec.c:4936 pl_exec.c:5002 +#: pl_exec.c:5021 pl_exec.c:5089 pl_exec.c:5112 #, c-format msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "" @@ -372,58 +372,58 @@ msgid "assertion failed" msgstr "нарушение истинности" -#: pl_exec.c:3583 pl_exec.c:3730 pl_exec.c:3920 +#: pl_exec.c:3599 pl_exec.c:3749 pl_exec.c:3939 #, c-format msgid "cannot COPY to/from client in PL/pgSQL" msgstr "в PL/pgSQL нельзя выполнить COPY с участием клиента" -#: pl_exec.c:3587 pl_exec.c:3734 pl_exec.c:3924 +#: pl_exec.c:3603 pl_exec.c:3753 pl_exec.c:3943 #, c-format msgid "cannot begin/end transactions in PL/pgSQL" msgstr "в PL/pgSQL нельзя начинать/заканчивать транзакции" -#: pl_exec.c:3588 pl_exec.c:3735 pl_exec.c:3925 +#: pl_exec.c:3604 pl_exec.c:3754 pl_exec.c:3944 #, c-format msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "Используйте блок BEGIN с предложением EXCEPTION." -#: pl_exec.c:3758 pl_exec.c:3949 +#: pl_exec.c:3777 pl_exec.c:3968 #, c-format msgid "INTO used with a command that cannot return data" msgstr "INTO с командой не может возвращать данные" -#: pl_exec.c:3786 pl_exec.c:3977 +#: pl_exec.c:3805 pl_exec.c:3996 #, c-format msgid "query returned no rows" msgstr "запрос не вернул строк" -#: pl_exec.c:3805 pl_exec.c:3996 +#: pl_exec.c:3824 pl_exec.c:4015 #, c-format msgid "query returned more than one row" msgstr "запрос вернул несколько строк" -#: pl_exec.c:3822 +#: pl_exec.c:3841 #, c-format msgid "query has no destination for result data" msgstr "в запросе нет назначения для данных результата" -#: pl_exec.c:3823 +#: pl_exec.c:3842 #, c-format msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "Если вам нужно отбросить результаты SELECT, используйте PERFORM." -#: pl_exec.c:3856 pl_exec.c:7321 +#: pl_exec.c:3875 pl_exec.c:7353 #, c-format msgid "query string argument of EXECUTE is null" msgstr "в качестве текста запроса в EXECUTE передан NULL" -#: pl_exec.c:3912 +#: pl_exec.c:3931 #, c-format msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "возможность выполнения SELECT ... INTO в EXECUTE не реализована" # skip-rule: space-before-ellipsis -#: pl_exec.c:3913 +#: pl_exec.c:3932 #, c-format msgid "" "You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS " @@ -432,57 +432,57 @@ "Альтернативой может стать EXECUTE ... INTO или EXECUTE CREATE TABLE ... " "AS ..." -#: pl_exec.c:4234 pl_exec.c:4330 +#: pl_exec.c:4253 pl_exec.c:4349 #, c-format msgid "cursor variable \"%s\" is null" msgstr "переменная курсора \"%s\" равна NULL" -#: pl_exec.c:4245 pl_exec.c:4341 +#: pl_exec.c:4264 pl_exec.c:4360 #, c-format msgid "cursor \"%s\" does not exist" msgstr "курсор \"%s\" не существует" -#: pl_exec.c:4258 +#: pl_exec.c:4277 #, c-format msgid "relative or absolute cursor position is null" msgstr "относительная или абсолютная позиция курсора равна NULL" -#: pl_exec.c:4449 +#: pl_exec.c:4476 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "значение NULL нельзя присвоить переменной \"%s\", объявленной NOT NULL" -#: pl_exec.c:4518 +#: pl_exec.c:4545 #, c-format msgid "cannot assign non-composite value to a row variable" msgstr "переменной типа кортеж можно присвоить только составное значение" -#: pl_exec.c:4542 +#: pl_exec.c:4569 #, c-format msgid "cannot assign non-composite value to a record variable" msgstr "переменной типа запись можно присвоить только составное значение" -#: pl_exec.c:4662 +#: pl_exec.c:4689 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "число размерностей массива (%d) превышает предел (%d)" -#: pl_exec.c:4694 +#: pl_exec.c:4721 #, c-format msgid "subscripted object is not an array" msgstr "для объекта указан индекс, но этот объект - не массив" -#: pl_exec.c:4732 +#: pl_exec.c:4759 #, c-format msgid "array subscript in assignment must not be null" msgstr "индекс элемента массива в присваивании не может быть NULL" -#: pl_exec.c:5199 +#: pl_exec.c:5226 #, c-format msgid "query \"%s\" did not return data" msgstr "запрос \"%s\" не вернул данные" -#: pl_exec.c:5207 +#: pl_exec.c:5234 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" @@ -490,12 +490,12 @@ msgstr[1] "запрос \"%s\" вернул %d столбца" msgstr[2] "запрос \"%s\" вернул %d столбцов" -#: pl_exec.c:5234 +#: pl_exec.c:5261 #, c-format msgid "query \"%s\" returned more than one row" msgstr "запрос \"%s\" вернул несколько строк" -#: pl_exec.c:5302 +#: pl_exec.c:5329 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "запрос \"%s\" - не SELECT" diff -Nru postgresql-10-10.17/src/pl/plpgsql/src/po/sv.po postgresql-10-10.19/src/pl/plpgsql/src/po/sv.po --- postgresql-10-10.17/src/pl/plpgsql/src/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpgsql/src/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,16 +1,16 @@ # Swedish message translation file for plpgsql # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-08-02 18:08+0000\n" -"PO-Revision-Date: 2017-10-01 23:26+0200\n" +"POT-Creation-Date: 2021-11-07 09:39+0000\n" +"PO-Revision-Date: 2021-11-07 10:30+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -62,48 +62,48 @@ msgid "parameter name \"%s\" used more than once" msgstr "parameternamn \"%s\" angivet mer än en gång" -#: pl_comp.c:1076 +#: pl_comp.c:1078 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "kolumnreferens \"%s\" är tvetydig" -#: pl_comp.c:1078 +#: pl_comp.c:1080 #, c-format msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "Det kan referera till antingen en PL/pgSQL-variabel eller en tabellkolumn." -#: pl_comp.c:1258 pl_comp.c:1286 pl_exec.c:4584 pl_exec.c:4913 pl_exec.c:4998 -#: pl_exec.c:5089 +#: pl_comp.c:1260 pl_comp.c:1288 pl_exec.c:4612 pl_exec.c:4941 pl_exec.c:5026 +#: pl_exec.c:5117 #, c-format msgid "record \"%s\" has no field \"%s\"" msgstr "post \"%s\" saknar fält \"%s\"" -#: pl_comp.c:1818 +#: pl_comp.c:1820 #, c-format msgid "relation \"%s\" does not exist" msgstr "relationen \"%s\" existerar inte" -#: pl_comp.c:1927 +#: pl_comp.c:1929 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "variabel \"%s\" har pseudotyp %s" -#: pl_comp.c:1995 +#: pl_comp.c:1997 #, c-format msgid "relation \"%s\" is not a table" msgstr "relation \"%s\" är inte en tabell" -#: pl_comp.c:2155 +#: pl_comp.c:2157 #, c-format msgid "type \"%s\" is only a shell" msgstr "typ \"%s\" är bara ett skal" -#: pl_comp.c:2249 pl_comp.c:2302 +#: pl_comp.c:2251 pl_comp.c:2304 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "okänt avbrottsvillkor \"%s\"" -#: pl_comp.c:2510 +#: pl_comp.c:2519 #, c-format msgid "could not determine actual argument type for polymorphic function \"%s\"" msgstr "kunde inte bestämma argumenttyp för polymorfisk funktion function \"%s\"" @@ -239,17 +239,17 @@ msgid "BY value of FOR loop must be greater than zero" msgstr "BY-värde i FOR-loop måste vara större än noll" -#: pl_exec.c:2294 pl_exec.c:4085 +#: pl_exec.c:2294 pl_exec.c:4105 #, c-format msgid "cursor \"%s\" already in use" msgstr "markören \"%s\" används redan" -#: pl_exec.c:2317 pl_exec.c:4150 +#: pl_exec.c:2317 pl_exec.c:4170 #, c-format msgid "arguments given for cursor without arguments" msgstr "argument angivna till markör utan argumnet" -#: pl_exec.c:2336 pl_exec.c:4169 +#: pl_exec.c:2336 pl_exec.c:4189 #, c-format msgid "arguments required for cursor" msgstr "argument krävs för markör" @@ -294,14 +294,14 @@ msgid "wrong result type supplied in RETURN NEXT" msgstr "fel resultattyp given i RETURN NEXT" -#: pl_exec.c:2878 pl_exec.c:4572 pl_exec.c:4880 pl_exec.c:4906 pl_exec.c:4972 -#: pl_exec.c:4991 pl_exec.c:5059 pl_exec.c:5082 +#: pl_exec.c:2878 pl_exec.c:4600 pl_exec.c:4908 pl_exec.c:4934 pl_exec.c:5000 +#: pl_exec.c:5019 pl_exec.c:5087 pl_exec.c:5110 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "posten \"%s\" är inte tilldelad än" -#: pl_exec.c:2880 pl_exec.c:4574 pl_exec.c:4882 pl_exec.c:4908 pl_exec.c:4974 -#: pl_exec.c:4993 pl_exec.c:5061 pl_exec.c:5084 +#: pl_exec.c:2880 pl_exec.c:4602 pl_exec.c:4910 pl_exec.c:4936 pl_exec.c:5002 +#: pl_exec.c:5021 pl_exec.c:5089 pl_exec.c:5112 #, c-format msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "Tuple-strukturen av en ej-ännu-tilldelad post är obestämd." @@ -350,124 +350,124 @@ msgid "assertion failed" msgstr "assert misslyckades" -#: pl_exec.c:3583 pl_exec.c:3729 pl_exec.c:3919 +#: pl_exec.c:3599 pl_exec.c:3749 pl_exec.c:3939 #, c-format msgid "cannot COPY to/from client in PL/pgSQL" msgstr "kan inte COPY till/från klient i PL/pgSQL" -#: pl_exec.c:3587 pl_exec.c:3733 pl_exec.c:3923 +#: pl_exec.c:3603 pl_exec.c:3753 pl_exec.c:3943 #, c-format msgid "cannot begin/end transactions in PL/pgSQL" msgstr "kan inte starta/avsluta transaktioner i PL/pgSQL" -#: pl_exec.c:3588 pl_exec.c:3734 pl_exec.c:3924 +#: pl_exec.c:3604 pl_exec.c:3754 pl_exec.c:3944 #, c-format msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "Använd ett BEGIN-block men en EXCEPTION-klausul istället." -#: pl_exec.c:3757 pl_exec.c:3948 +#: pl_exec.c:3777 pl_exec.c:3968 #, c-format msgid "INTO used with a command that cannot return data" msgstr "INTO använd med ett kommando som inte returnerar data" -#: pl_exec.c:3785 pl_exec.c:3976 +#: pl_exec.c:3805 pl_exec.c:3996 #, c-format msgid "query returned no rows" msgstr "frågan returnerade inga rader" -#: pl_exec.c:3804 pl_exec.c:3995 +#: pl_exec.c:3824 pl_exec.c:4015 #, c-format msgid "query returned more than one row" msgstr "frågan returnerade mer än en rad" -#: pl_exec.c:3821 +#: pl_exec.c:3841 #, c-format msgid "query has no destination for result data" msgstr "frågan har ingen destination för resultatdatan" -#: pl_exec.c:3822 +#: pl_exec.c:3842 #, c-format msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "Om du vill slänga resultatet av en SELECT, använd PERFORM istället." -#: pl_exec.c:3855 pl_exec.c:7292 +#: pl_exec.c:3875 pl_exec.c:7353 #, c-format msgid "query string argument of EXECUTE is null" msgstr "frågesträngargumentet till EXECUTE är null" -#: pl_exec.c:3911 +#: pl_exec.c:3931 #, c-format msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "EXECUTE för SELECT ... INTO är inte implementerad" -#: pl_exec.c:3912 +#: pl_exec.c:3932 #, c-format msgid "You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS instead." msgstr "Du vill nog använda EXECUTE ... INTO eller EXECUTE CREATE TABLE ... AS istället." -#: pl_exec.c:4233 pl_exec.c:4329 +#: pl_exec.c:4253 pl_exec.c:4349 #, c-format msgid "cursor variable \"%s\" is null" msgstr "markörvariabel \"%s\" är null" -#: pl_exec.c:4244 pl_exec.c:4340 +#: pl_exec.c:4264 pl_exec.c:4360 #, c-format msgid "cursor \"%s\" does not exist" msgstr "markör \"%s\" existerar inte" -#: pl_exec.c:4257 +#: pl_exec.c:4277 #, c-format msgid "relative or absolute cursor position is null" msgstr "relativ eller absolut markörposition är null" -#: pl_exec.c:4448 +#: pl_exec.c:4476 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "null-value kan inte tilldelas till variabel \"%s\" som deklarerats NOT NULL" -#: pl_exec.c:4517 +#: pl_exec.c:4545 #, c-format msgid "cannot assign non-composite value to a row variable" msgstr "kan inte tilldela icke-composite-värde till radvariabel" -#: pl_exec.c:4541 +#: pl_exec.c:4569 #, c-format msgid "cannot assign non-composite value to a record variable" msgstr "kan inte tilldela icke-composite-värde till en post-variabel" -#: pl_exec.c:4661 +#: pl_exec.c:4689 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "antalet array-dimensioner (%d) överskrider det maximalt tillåtna (%d)" -#: pl_exec.c:4693 +#: pl_exec.c:4721 #, c-format msgid "subscripted object is not an array" msgstr "arrayindexobjekt är inte en array" -#: pl_exec.c:4731 +#: pl_exec.c:4759 #, c-format msgid "array subscript in assignment must not be null" msgstr "arrayindex i tilldelning kan inte vara null" -#: pl_exec.c:5198 +#: pl_exec.c:5226 #, c-format msgid "query \"%s\" did not return data" msgstr "frågan \"%s\" returnerade ingen data" -#: pl_exec.c:5206 +#: pl_exec.c:5234 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "frågan \"%s\" returnerade %d kolumn" msgstr[1] "frågan \"%s\" returnerade %d kolumner" -#: pl_exec.c:5233 +#: pl_exec.c:5261 #, c-format msgid "query \"%s\" returned more than one row" msgstr "frågan \"%s\" returnerade mer än en rad" -#: pl_exec.c:5301 +#: pl_exec.c:5329 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "frågan \"%s\" är inte en SELECT" diff -Nru postgresql-10-10.17/src/pl/plpython/expected/plpython_subtransaction_0.out postgresql-10-10.19/src/pl/plpython/expected/plpython_subtransaction_0.out --- postgresql-10-10.17/src/pl/plpython/expected/plpython_subtransaction_0.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpython/expected/plpython_subtransaction_0.out 2021-11-08 22:05:38.000000000 +0000 @@ -222,11 +222,14 @@ DETAIL: SyntaxError: invalid syntax (line 3) CREATE FUNCTION subtransaction_exit_subtransaction_in_with() RETURNS void AS $$ -with plpy.subtransaction() as s: - s.__exit__(None, None, None) +try: + with plpy.subtransaction() as s: + s.__exit__(None, None, None) +except ValueError, e: + raise ValueError(e) $$ LANGUAGE plpythonu; ERROR: could not compile PL/Python function "subtransaction_exit_subtransaction_in_with" -DETAIL: SyntaxError: invalid syntax (line 3) +DETAIL: SyntaxError: invalid syntax (line 4) SELECT subtransaction_exit_without_enter(); ERROR: ValueError: this subtransaction has not been entered CONTEXT: Traceback (most recent call last): diff -Nru postgresql-10-10.17/src/pl/plpython/expected/plpython_subtransaction_5.out postgresql-10-10.19/src/pl/plpython/expected/plpython_subtransaction_5.out --- postgresql-10-10.17/src/pl/plpython/expected/plpython_subtransaction_5.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpython/expected/plpython_subtransaction_5.out 2021-11-08 22:05:38.000000000 +0000 @@ -222,11 +222,14 @@ DETAIL: SyntaxError: invalid syntax (, line 3) CREATE FUNCTION subtransaction_exit_subtransaction_in_with() RETURNS void AS $$ -with plpy.subtransaction() as s: - s.__exit__(None, None, None) +try: + with plpy.subtransaction() as s: + s.__exit__(None, None, None) +except ValueError, e: + raise ValueError(e) $$ LANGUAGE plpythonu; ERROR: could not compile PL/Python function "subtransaction_exit_subtransaction_in_with" -DETAIL: SyntaxError: invalid syntax (, line 3) +DETAIL: SyntaxError: invalid syntax (, line 4) SELECT subtransaction_exit_without_enter(); ERROR: ValueError: this subtransaction has not been entered CONTEXT: Traceback (most recent call last): diff -Nru postgresql-10-10.17/src/pl/plpython/expected/plpython_subtransaction.out postgresql-10-10.19/src/pl/plpython/expected/plpython_subtransaction.out --- postgresql-10-10.17/src/pl/plpython/expected/plpython_subtransaction.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpython/expected/plpython_subtransaction.out 2021-11-08 22:05:38.000000000 +0000 @@ -236,8 +236,11 @@ $$ LANGUAGE plpythonu; CREATE FUNCTION subtransaction_exit_subtransaction_in_with() RETURNS void AS $$ -with plpy.subtransaction() as s: - s.__exit__(None, None, None) +try: + with plpy.subtransaction() as s: + s.__exit__(None, None, None) +except ValueError, e: + raise ValueError(e) $$ LANGUAGE plpythonu; SELECT subtransaction_exit_without_enter(); ERROR: ValueError: this subtransaction has not been entered @@ -289,8 +292,8 @@ SELECT subtransaction_exit_subtransaction_in_with(); ERROR: ValueError: this subtransaction has already been exited CONTEXT: Traceback (most recent call last): - PL/Python function "subtransaction_exit_subtransaction_in_with", line 3, in - s.__exit__(None, None, None) + PL/Python function "subtransaction_exit_subtransaction_in_with", line 6, in + raise ValueError(e) PL/Python function "subtransaction_exit_subtransaction_in_with" -- Make sure we don't get a "current transaction is aborted" error SELECT 1 as test; diff -Nru postgresql-10-10.17/src/pl/plpython/po/fr.po postgresql-10-10.19/src/pl/plpython/po/fr.po --- postgresql-10-10.17/src/pl/plpython/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpython/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -405,7 +405,7 @@ #: plpy_typeio.c:951 #, c-format msgid "Missing left parenthesis." -msgstr "Parenthèse gauche manquante" +msgstr "Parenthèse gauche manquante." #: plpy_typeio.c:952 plpy_typeio.c:1390 #, c-format diff -Nru postgresql-10-10.17/src/pl/plpython/po/sv.po postgresql-10-10.19/src/pl/plpython/po/sv.po --- postgresql-10-10.17/src/pl/plpython/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpython/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,16 +1,16 @@ # Swedish message translation file for plpython # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-08-05 14:07+0000\n" -"PO-Revision-Date: 2017-08-06 08:32+0200\n" +"POT-Creation-Date: 2021-11-07 09:38+0000\n" +"PO-Revision-Date: 2021-11-07 10:38+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -268,27 +268,27 @@ msgid "invalid SQLSTATE code" msgstr "ogiltig SQLSTATE-kod" -#: plpy_procedure.c:230 +#: plpy_procedure.c:228 #, c-format msgid "trigger functions can only be called as triggers" msgstr "Triggningsfunktioner kan bara anropas vid triggning." -#: plpy_procedure.c:235 +#: plpy_procedure.c:233 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "PL/Python-funktioner kan inte returnera typ %s" -#: plpy_procedure.c:316 +#: plpy_procedure.c:314 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "PL/Python-funktioner kan inte ta emot typ %s" -#: plpy_procedure.c:412 +#: plpy_procedure.c:410 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "kunde inte kompilera PL/Python-funktion \"%s\"" -#: plpy_procedure.c:415 +#: plpy_procedure.c:413 #, c-format msgid "could not compile anonymous PL/Python code block" msgstr "kunde inte kompilera anonymt PL/Python-kodblock" diff -Nru postgresql-10-10.17/src/pl/plpython/sql/plpython_subtransaction.sql postgresql-10-10.19/src/pl/plpython/sql/plpython_subtransaction.sql --- postgresql-10-10.17/src/pl/plpython/sql/plpython_subtransaction.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/plpython/sql/plpython_subtransaction.sql 2021-11-08 22:05:38.000000000 +0000 @@ -158,8 +158,11 @@ CREATE FUNCTION subtransaction_exit_subtransaction_in_with() RETURNS void AS $$ -with plpy.subtransaction() as s: - s.__exit__(None, None, None) +try: + with plpy.subtransaction() as s: + s.__exit__(None, None, None) +except ValueError, e: + raise ValueError(e) $$ LANGUAGE plpythonu; SELECT subtransaction_exit_without_enter(); diff -Nru postgresql-10-10.17/src/pl/tcl/po/fr.po postgresql-10-10.19/src/pl/tcl/po/fr.po --- postgresql-10-10.17/src/pl/tcl/po/fr.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/tcl/po/fr.po 2021-11-08 22:05:38.000000000 +0000 @@ -50,7 +50,7 @@ #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "" -"la fonction avec set-value a été appelé dans un contexte qui n'accepte pas\n" +"la fonction renvoyant un ensemble a été appelée dans un contexte qui n'accepte pas\n" "un ensemble" #: pltcl.c:994 diff -Nru postgresql-10-10.17/src/pl/tcl/po/sv.po postgresql-10-10.19/src/pl/tcl/po/sv.po --- postgresql-10-10.17/src/pl/tcl/po/sv.po 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/pl/tcl/po/sv.po 2021-11-08 22:05:38.000000000 +0000 @@ -1,20 +1,21 @@ # Swedish message translation file for pltcl # Copyright (C) 2017 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Dennis Björklund , 2017. +# Dennis Björklund , 2017, 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 10\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2017-07-20 21:07+0000\n" -"PO-Revision-Date: 2017-07-21 06:04+0200\n" +"POT-Creation-Date: 2021-11-07 09:38+0000\n" +"PO-Revision-Date: 2021-11-07 10:38+0100\n" "Last-Translator: Dennis Björklund \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" #: pltcl.c:459 msgid "PL/Tcl function to call once when pltcl is first used." diff -Nru postgresql-10-10.17/src/port/snprintf.c postgresql-10-10.19/src/port/snprintf.c --- postgresql-10-10.17/src/port/snprintf.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/port/snprintf.c 2021-11-08 22:05:38.000000000 +0000 @@ -775,6 +775,9 @@ strvalue = argvalues[fmtpos].cptr; else strvalue = va_arg(args, char *); + /* If string is NULL, silently substitute "(null)" */ + if (strvalue == NULL) + strvalue = "(null)"; fmtstr(strvalue, leftjust, fieldwidth, precision, pointflag, target); break; diff -Nru postgresql-10-10.17/src/port/strnlen.c postgresql-10-10.19/src/port/strnlen.c --- postgresql-10-10.17/src/port/strnlen.c 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/src/port/strnlen.c 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,33 @@ +/*------------------------------------------------------------------------- + * + * strnlen.c + * Fallback implementation of strnlen(). + * + * + * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * src/port/strnlen.c + * + *------------------------------------------------------------------------- + */ + +#include "c.h" + +/* + * Implementation of posix' strnlen for systems where it's not available. + * + * Returns the number of characters before a null-byte in the string pointed + * to by str, unless there's no null-byte before maxlen. In the latter case + * maxlen is returned. + */ +size_t +strnlen(const char *str, size_t maxlen) +{ + const char *p = str; + + while (maxlen-- > 0 && *p) + p++; + return p - str; +} diff -Nru postgresql-10-10.17/src/port/win32ver.rc postgresql-10-10.19/src/port/win32ver.rc --- postgresql-10-10.17/src/port/win32ver.rc 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/port/win32ver.rc 2021-11-08 22:05:38.000000000 +0000 @@ -2,8 +2,8 @@ #include "pg_config.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 10,0,17,0 - PRODUCTVERSION 10,0,17,0 + FILEVERSION 10,0,19,0 + PRODUCTVERSION 10,0,19,0 FILEFLAGSMASK 0x17L FILEFLAGS 0x0L FILEOS VOS_NT_WINDOWS32 diff -Nru postgresql-10-10.17/src/test/isolation/expected/aborted-keyrevoke.out postgresql-10-10.19/src/test/isolation/expected/aborted-keyrevoke.out --- postgresql-10-10.17/src/test/isolation/expected/aborted-keyrevoke.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/aborted-keyrevoke.out 2021-11-08 22:05:38.000000000 +0000 @@ -5,14 +5,18 @@ step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1s s1u s1r s1l s2l s1c s2c @@ -20,13 +24,17 @@ step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; @@ -35,13 +43,17 @@ step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1c: COMMIT; @@ -50,13 +62,17 @@ step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; @@ -65,13 +81,17 @@ step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1c: COMMIT; @@ -80,14 +100,18 @@ step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s1s s1u s2l s1r s1l s1c s2c @@ -96,13 +120,17 @@ step s2l: SELECT * FROM foo FOR KEY SHARE; step s1r: ROLLBACK TO f; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; @@ -112,13 +140,17 @@ step s2l: SELECT * FROM foo FOR KEY SHARE; step s1r: ROLLBACK TO f; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1c: COMMIT; @@ -128,89 +160,113 @@ step s2l: SELECT * FROM foo FOR KEY SHARE; step s1r: ROLLBACK TO f; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s1s s2l s1u s2c s1r s1l s1c step s1s: SAVEPOINT f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1u: UPDATE foo SET key = 2; step s2c: COMMIT; step s1u: <... completed> step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s1s s2l s2c s1u s1r s1l s1c step s1s: SAVEPOINT f; step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s2l s1s s1u s2c s1r s1l s1c step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s2c: COMMIT; step s1u: <... completed> step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s2l s1s s2c s1u s1r s1l s1c step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1s: SAVEPOINT f; step s2c: COMMIT; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; starting permutation: s2l s2c s1s s1u s1r s1l s1c step s2l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1s: SAVEPOINT f; step s1u: UPDATE foo SET key = 2; step s1r: ROLLBACK TO f; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/alter-table-1.out postgresql-10-10.19/src/test/isolation/expected/alter-table-1.out --- postgresql-10-10.17/src/test/isolation/expected/alter-table-1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/alter-table-1.out 2021-11-08 22:05:38.000000000 +0000 @@ -8,16 +8,20 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 at2 rx1 sc2 wx rx3 c2 @@ -27,17 +31,21 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 at2 rx1 wx sc2 rx3 c2 @@ -47,17 +55,21 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 at2 rx1 wx rx3 sc2 c2 @@ -67,16 +79,20 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -87,16 +103,20 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -106,18 +126,22 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 rx1 at2 wx sc2 rx3 c2 @@ -126,18 +150,22 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 rx1 at2 wx rx3 sc2 c2 @@ -146,17 +174,21 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -166,17 +198,21 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -186,18 +222,22 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 s2 rx1 wx at2 rx3 sc2 c2 @@ -206,17 +246,21 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -226,17 +270,21 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -246,16 +294,20 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -266,16 +318,20 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -286,16 +342,20 @@ step sc1: COMMIT; step s2: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -305,19 +365,23 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 rx1 s2 at2 wx sc2 rx3 c2 @@ -325,19 +389,23 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 rx1 s2 at2 wx rx3 sc2 c2 @@ -345,18 +413,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -365,18 +437,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -385,19 +461,23 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 rx1 s2 wx at2 rx3 sc2 c2 @@ -405,18 +485,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -425,18 +509,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -445,17 +533,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -465,17 +557,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -485,17 +581,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -505,19 +605,23 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 sc1 rx1 wx s2 at2 rx3 sc2 c2 @@ -525,18 +629,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -545,18 +653,22 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -565,17 +677,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -585,17 +701,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -605,17 +725,21 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -625,16 +749,20 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -645,16 +773,20 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -665,16 +797,20 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -685,16 +821,20 @@ step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -704,59 +844,71 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 at2 wx sc2 rx3 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 at2 wx rx3 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -764,19 +916,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -784,39 +940,47 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 s2 wx at2 rx3 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -824,19 +988,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -844,18 +1012,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -864,18 +1036,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -884,18 +1060,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -904,39 +1084,47 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 sc1 wx s2 at2 rx3 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -944,19 +1132,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -964,18 +1156,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -984,18 +1180,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1004,18 +1204,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1024,17 +1228,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1044,17 +1252,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -1064,17 +1276,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1084,17 +1300,21 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1104,9 +1324,11 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> @@ -1114,31 +1336,37 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 at1 rx1 wx sc1 s2 at2 rx3 sc2 c2 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; @@ -1146,20 +1374,24 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; @@ -1167,19 +1399,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -1188,19 +1424,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1209,19 +1449,23 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1230,18 +1474,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1251,18 +1499,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -1272,18 +1524,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1293,18 +1549,22 @@ step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1313,9 +1573,11 @@ starting permutation: s1 rx1 at1 sc1 s2 at2 sc2 wx rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; @@ -1323,19 +1585,23 @@ step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 at2 wx sc2 rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; @@ -1343,59 +1609,71 @@ step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 at2 wx rx3 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 at2 wx rx3 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx at2 sc2 rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; @@ -1403,69 +1681,83 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx at2 rx3 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx at2 rx3 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 s2 wx rx3 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -1473,19 +1765,23 @@ starting permutation: s1 rx1 at1 sc1 s2 wx rx3 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1493,19 +1789,23 @@ starting permutation: s1 rx1 at1 sc1 s2 wx rx3 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1513,9 +1813,11 @@ starting permutation: s1 rx1 at1 sc1 wx s2 at2 sc2 rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); @@ -1523,69 +1825,83 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 at2 rx3 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 at2 rx3 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: s1 rx1 at1 sc1 wx s2 rx3 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -1593,19 +1909,23 @@ starting permutation: s1 rx1 at1 sc1 wx s2 rx3 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1613,19 +1933,23 @@ starting permutation: s1 rx1 at1 sc1 wx s2 rx3 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1633,18 +1957,22 @@ starting permutation: s1 rx1 at1 sc1 wx rx3 s2 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1653,18 +1981,22 @@ starting permutation: s1 rx1 at1 sc1 wx rx3 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -1673,18 +2005,22 @@ starting permutation: s1 rx1 at1 sc1 wx rx3 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1693,18 +2029,22 @@ starting permutation: s1 rx1 at1 sc1 wx rx3 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1713,9 +2053,11 @@ starting permutation: s1 rx1 at1 wx sc1 s2 at2 sc2 rx3 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; @@ -1724,19 +2066,23 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 at2 rx3 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; @@ -1744,20 +2090,24 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 at2 rx3 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; @@ -1765,31 +2115,37 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: s1 rx1 at1 wx sc1 s2 rx3 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; @@ -1797,20 +2153,24 @@ starting permutation: s1 rx1 at1 wx sc1 s2 rx3 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; @@ -1818,20 +2178,24 @@ starting permutation: s1 rx1 at1 wx sc1 s2 rx3 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1839,19 +2203,23 @@ starting permutation: s1 rx1 at1 wx sc1 rx3 s2 at2 sc2 c2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -1860,19 +2228,23 @@ starting permutation: s1 rx1 at1 wx sc1 rx3 s2 at2 c2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -1881,19 +2253,23 @@ starting permutation: s1 rx1 at1 wx sc1 rx3 s2 c2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1902,19 +2278,23 @@ starting permutation: s1 rx1 at1 wx sc1 rx3 c2 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -1923,17 +2303,21 @@ starting permutation: s1 rx1 wx at1 rx3 c2 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: <... completed> step sc1: COMMIT; @@ -1944,16 +2328,20 @@ starting permutation: s1 rx1 wx rx3 at1 c2 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step c2: COMMIT; step at1: <... completed> @@ -1965,16 +2353,20 @@ starting permutation: s1 rx1 wx rx3 c2 at1 sc1 s2 at2 sc2 step s1: BEGIN; step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -1984,9 +2376,11 @@ starting permutation: rx1 s1 at1 sc1 s2 at2 sc2 wx rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -1995,18 +2389,22 @@ step sc2: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 at2 wx sc2 rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2015,18 +2413,22 @@ step wx: INSERT INTO b VALUES (0); step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 at2 wx rx3 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2034,19 +2436,23 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 at2 wx rx3 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2054,19 +2460,23 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx at2 sc2 rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2075,18 +2485,22 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx at2 rx3 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2094,19 +2508,23 @@ step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx at2 rx3 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2114,79 +2532,95 @@ step wx: INSERT INTO b VALUES (0); step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx rx3 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx rx3 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 s2 wx rx3 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step s2: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 at2 sc2 rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2195,18 +2629,22 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 at2 rx3 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2214,19 +2652,23 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 at2 rx3 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2234,89 +2676,107 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 rx3 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 rx3 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx s2 rx3 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; starting permutation: rx1 s1 at1 sc1 wx rx3 s2 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -2324,19 +2784,23 @@ starting permutation: rx1 s1 at1 sc1 wx rx3 s2 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -2344,19 +2808,23 @@ starting permutation: rx1 s1 at1 sc1 wx rx3 s2 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -2364,19 +2832,23 @@ starting permutation: rx1 s1 at1 sc1 wx rx3 c2 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -2384,9 +2856,11 @@ starting permutation: rx1 s1 at1 wx sc1 s2 at2 sc2 rx3 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); @@ -2396,18 +2870,22 @@ step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 at2 rx3 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); @@ -2416,19 +2894,23 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 at2 rx3 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); @@ -2437,19 +2919,23 @@ step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 rx3 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); @@ -2457,20 +2943,24 @@ step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; step c2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 rx3 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); @@ -2478,20 +2968,24 @@ step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 s2 rx3 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); @@ -2499,31 +2993,37 @@ step wx: <... completed> step s2: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; starting permutation: rx1 s1 at1 wx sc1 rx3 s2 at2 sc2 c2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step sc2: COMMIT; @@ -2531,20 +3031,24 @@ starting permutation: rx1 s1 at1 wx sc1 rx3 s2 at2 c2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; step c2: COMMIT; @@ -2552,20 +3056,24 @@ starting permutation: rx1 s1 at1 wx sc1 rx3 s2 c2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s2: BEGIN; step c2: COMMIT; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -2573,20 +3081,24 @@ starting permutation: rx1 s1 at1 wx sc1 rx3 c2 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step wx: INSERT INTO b VALUES (0); step sc1: COMMIT; step wx: <... completed> step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s2: BEGIN; step at2: ALTER TABLE b VALIDATE CONSTRAINT bfk; @@ -2594,18 +3106,22 @@ starting permutation: rx1 s1 wx at1 rx3 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step wx: INSERT INTO b VALUES (0); step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: <... completed> step sc1: COMMIT; @@ -2615,17 +3131,21 @@ starting permutation: rx1 s1 wx rx3 at1 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step c2: COMMIT; step at1: <... completed> @@ -2636,17 +3156,21 @@ starting permutation: rx1 s1 wx rx3 c2 at1 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step s1: BEGIN; step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2656,18 +3180,22 @@ starting permutation: rx1 wx s1 at1 rx3 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: <... completed> step sc1: COMMIT; @@ -2677,17 +3205,21 @@ starting permutation: rx1 wx s1 rx3 at1 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s1: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step c2: COMMIT; step at1: <... completed> @@ -2698,17 +3230,21 @@ starting permutation: rx1 wx s1 rx3 c2 at1 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step s1: BEGIN; step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step sc1: COMMIT; @@ -2718,16 +3254,20 @@ starting permutation: rx1 wx rx3 s1 at1 c2 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step c2: COMMIT; @@ -2739,16 +3279,20 @@ starting permutation: rx1 wx rx3 s1 c2 at1 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step s1: BEGIN; step c2: COMMIT; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; @@ -2759,16 +3303,20 @@ starting permutation: rx1 wx rx3 c2 s1 at1 sc1 s2 at2 sc2 step rx1: SELECT * FROM b WHERE a_id = 1 LIMIT 1; -a_id +a_id +---- + 1 +(1 row) -1 step wx: INSERT INTO b VALUES (0); step rx3: SELECT * FROM b WHERE a_id = 3 LIMIT 3; -a_id +a_id +---- + 3 + 3 + 3 +(3 rows) -3 -3 -3 step c2: COMMIT; step s1: BEGIN; step at1: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; diff -Nru postgresql-10-10.17/src/test/isolation/expected/alter-table-2.out postgresql-10-10.19/src/test/isolation/expected/alter-table-2.out --- postgresql-10-10.17/src/test/isolation/expected/alter-table-2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/alter-table-2.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,13 +6,17 @@ step s1c: COMMIT; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -23,13 +27,17 @@ step s2a: BEGIN; step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -39,14 +47,18 @@ step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -56,13 +68,17 @@ step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -73,13 +89,17 @@ step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; step s2d: <... completed> @@ -92,13 +112,17 @@ step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -108,14 +132,18 @@ step s2a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -125,13 +153,17 @@ step s2a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -142,13 +174,17 @@ step s2a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; step s2d: <... completed> @@ -159,15 +195,19 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -176,14 +216,18 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -193,14 +237,18 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; step s2d: <... completed> @@ -211,13 +259,17 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); @@ -228,13 +280,17 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; @@ -246,13 +302,17 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2e: INSERT INTO a VALUES (4); @@ -264,13 +324,17 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; @@ -282,13 +346,17 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -301,13 +369,17 @@ step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -317,14 +389,18 @@ step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -334,13 +410,17 @@ step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -351,13 +431,17 @@ step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; step s2d: <... completed> @@ -368,15 +452,19 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -385,14 +473,18 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -402,14 +494,18 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; step s2d: <... completed> @@ -420,13 +516,17 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); @@ -437,13 +537,17 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; @@ -455,13 +559,17 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2e: INSERT INTO a VALUES (4); @@ -473,13 +581,17 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; @@ -491,13 +603,17 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -507,16 +623,20 @@ starting permutation: s2a s2b s1a s1b s1c s2c s2d s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -524,15 +644,19 @@ starting permutation: s2a s2b s1a s1b s2c s1c s2d s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -541,15 +665,19 @@ starting permutation: s2a s2b s1a s1b s2c s2d s1c s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; step s2d: <... completed> @@ -559,14 +687,18 @@ starting permutation: s2a s2b s1a s2c s1b s1c s2d s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; step s2d: INSERT INTO b VALUES (0); @@ -576,14 +708,18 @@ starting permutation: s2a s2b s1a s2c s1b s2d s1c s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2d: INSERT INTO b VALUES (0); step s1c: COMMIT; @@ -594,14 +730,18 @@ starting permutation: s2a s2b s1a s2c s2d s1b s2e s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2e: INSERT INTO a VALUES (4); @@ -612,14 +752,18 @@ starting permutation: s2a s2b s1a s2c s2d s2e s1b s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; @@ -630,14 +774,18 @@ starting permutation: s2a s2b s1a s2c s2d s2e s2f s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; @@ -647,13 +795,17 @@ starting permutation: s2a s2b s2c s1a s1b s1c s2d s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s1c: COMMIT; @@ -664,13 +816,17 @@ starting permutation: s2a s2b s2c s1a s1b s2d s1c s2e s2f step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; step s2d: INSERT INTO b VALUES (0); @@ -682,13 +838,17 @@ starting permutation: s2a s2b s2c s1a s2d s1b s2e s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s2d: INSERT INTO b VALUES (0); step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; @@ -700,13 +860,17 @@ starting permutation: s2a s2b s2c s1a s2d s2e s1b s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -718,13 +882,17 @@ starting permutation: s2a s2b s2c s1a s2d s2e s2f s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s1a: BEGIN; step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); @@ -735,13 +903,17 @@ starting permutation: s2a s2b s2c s2d s1a s1b s2e s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1a: BEGIN; step s1b: ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; @@ -753,13 +925,17 @@ starting permutation: s2a s2b s2c s2d s1a s2e s1b s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1a: BEGIN; step s2e: INSERT INTO a VALUES (4); @@ -771,13 +947,17 @@ starting permutation: s2a s2b s2c s2d s1a s2e s2f s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s1a: BEGIN; step s2e: INSERT INTO a VALUES (4); @@ -788,13 +968,17 @@ starting permutation: s2a s2b s2c s2d s2e s1a s1b s2f s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1a: BEGIN; @@ -806,13 +990,17 @@ starting permutation: s2a s2b s2c s2d s2e s1a s2f s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s1a: BEGIN; @@ -823,13 +1011,17 @@ starting permutation: s2a s2b s2c s2d s2e s2f s1a s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; -a_id +a_id +---- + 3 +(1 row) -3 step s2d: INSERT INTO b VALUES (0); step s2e: INSERT INTO a VALUES (4); step s2f: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/alter-table-3.out postgresql-10-10.19/src/test/isolation/expected/alter-table-3.out --- postgresql-10-10.17/src/test/isolation/expected/alter-table-3.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/alter-table-3.out 2021-11-08 22:05:38.000000000 +0000 @@ -7,9 +7,11 @@ step s1d: COMMIT; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -21,9 +23,11 @@ step s2a: BEGIN; step s1d: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -34,9 +38,11 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -48,13 +54,15 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s1b s2a s1c s1d s2b s2c s2d @@ -64,9 +72,11 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -77,9 +87,11 @@ step s2a: BEGIN; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -91,13 +103,15 @@ step s2a: BEGIN; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s1b s2a s2b s1c s1d s2c s2d @@ -105,9 +119,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); @@ -119,14 +135,16 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s1b s2a s2b s2c s1c s1d s2d @@ -134,14 +152,16 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s2a s1b s1c s1d s2b s2c s2d @@ -151,9 +171,11 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -164,9 +186,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -178,13 +202,15 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s2a s1b s2b s1c s1d s2c s2d @@ -192,9 +218,11 @@ step s2a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); @@ -206,14 +234,16 @@ step s2a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s2a s1b s2b s2c s1c s1d s2d @@ -221,23 +251,27 @@ step s2a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s2a s2b s1b s1c s1d s2c s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; @@ -249,39 +283,45 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s2a s2b s1b s2c s1c s1d s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s1a s2a s2b s2c s1b s1c s1d s2d step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -293,9 +333,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -307,9 +349,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -321,9 +365,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -338,9 +384,11 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -351,9 +399,11 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -365,13 +415,15 @@ step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s2a s1a s1b s2b s1c s1d s2c s2d @@ -379,9 +431,11 @@ step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: INSERT INTO a VALUES (0); @@ -393,14 +447,16 @@ step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s2a s1a s1b s2b s2c s1c s1d s2d @@ -408,23 +464,27 @@ step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s2a s1a s2b s1b s1c s1d s2c s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; @@ -436,39 +496,45 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s2a s1a s2b s1b s2c s1c s1d s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s2a s1a s2b s2c s1b s1c s1d s2d step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -480,9 +546,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -494,9 +562,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1b: ALTER TABLE a DISABLE TRIGGER t; @@ -508,9 +578,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; @@ -521,9 +593,11 @@ starting permutation: s2a s2b s1a s1b s1c s1d s2c s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; @@ -535,39 +609,45 @@ starting permutation: s2a s2b s1a s1b s1c s2c s1d s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s1c: ALTER TABLE a ENABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s2a s2b s1a s1b s2c s1c s1d s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: ALTER TABLE a DISABLE TRIGGER t; step s2c: INSERT INTO a VALUES (0); step s1c: ALTER TABLE a ENABLE TRIGGER t; step s1d: COMMIT; step s2c: <... completed> -error in steps s1d s2c: ERROR: duplicate key value violates unique constraint "a_pkey" +ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; starting permutation: s2a s2b s1a s2c s1b s1c s1d s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -579,9 +659,11 @@ starting permutation: s2a s2b s1a s2c s1b s1c s2d s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -593,9 +675,11 @@ starting permutation: s2a s2b s1a s2c s1b s2d s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -607,9 +691,11 @@ starting permutation: s2a s2b s1a s2c s2d s1b s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" @@ -621,9 +707,11 @@ starting permutation: s2a s2b s2c s1a s1b s1c s1d s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1a: BEGIN; @@ -635,9 +723,11 @@ starting permutation: s2a s2b s2c s1a s1b s1c s2d s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1a: BEGIN; @@ -649,9 +739,11 @@ starting permutation: s2a s2b s2c s1a s1b s2d s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1a: BEGIN; @@ -663,9 +755,11 @@ starting permutation: s2a s2b s2c s1a s2d s1b s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s1a: BEGIN; @@ -677,9 +771,11 @@ starting permutation: s2a s2b s2c s2d s1a s1b s1c s1d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: INSERT INTO a VALUES (0); ERROR: duplicate key value violates unique constraint "a_pkey" step s2d: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/alter-table-4.out postgresql-10-10.19/src/test/isolation/expected/alter-table-4.out --- postgresql-10-10.17/src/test/isolation/expected/alter-table-4.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/alter-table-4.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,13 +6,17 @@ step s2sel: SELECT SUM(a) FROM p; step s1c: COMMIT; step s2sel: <... completed> -sum +sum +--- + 11 +(1 row) -11 step s2sel: SELECT SUM(a) FROM p; -sum +sum +--- + 1 +(1 row) -1 starting permutation: s1b s1delc1 s1addc2 s2sel s1c s2sel step s1b: BEGIN; @@ -21,13 +25,17 @@ step s2sel: SELECT SUM(a) FROM p; step s1c: COMMIT; step s2sel: <... completed> -sum +sum +--- + 11 +(1 row) -11 step s2sel: SELECT SUM(a) FROM p; -sum +sum +--- +101 +(1 row) -101 starting permutation: s1b s1dropc1 s2sel s1c s2sel step s1b: BEGIN; @@ -35,13 +43,17 @@ step s2sel: SELECT SUM(a) FROM p; step s1c: COMMIT; step s2sel: <... completed> -sum +sum +--- + 1 +(1 row) -1 step s2sel: SELECT SUM(a) FROM p; -sum +sum +--- + 1 +(1 row) -1 starting permutation: s1b s1delc1 s1modc1a s2sel s1c s2sel step s1b: BEGIN; @@ -50,8 +62,10 @@ step s2sel: SELECT SUM(a) FROM p; step s1c: COMMIT; step s2sel: <... completed> -error in steps s1c s2sel: ERROR: attribute "a" of relation "c1" does not match parent's type +ERROR: attribute "a" of relation "c1" does not match parent's type step s2sel: SELECT SUM(a) FROM p; -sum +sum +--- + 1 +(1 row) -1 diff -Nru postgresql-10-10.17/src/test/isolation/expected/async-notify.out postgresql-10-10.19/src/test/isolation/expected/async-notify.out --- postgresql-10-10.17/src/test/isolation/expected/async-notify.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/async-notify.out 2021-11-08 22:05:38.000000000 +0000 @@ -8,9 +8,11 @@ notifier: NOTIFY "c2" with payload "payload" from notifier step notify3: NOTIFY c3, 'payload3'; step notifyf: SELECT pg_notify('c2', NULL); -pg_notify +pg_notify +--------- + +(1 row) - notifier: NOTIFY "c2" with payload "" from notifier starting permutation: listenc notifyd1 notifyd2 notifys1 @@ -53,13 +55,17 @@ step notify2: NOTIFY c2, 'payload'; step notify3: NOTIFY c3, 'payload3'; step notifyf: SELECT pg_notify('c2', NULL); -pg_notify +pg_notify +--------- + +(1 row) - step lcheck: SELECT 1 AS x; -x +x +- +1 +(1 row) -1 listener: NOTIFY "c1" with payload "" from notifier listener: NOTIFY "c2" with payload "payload" from notifier listener: NOTIFY "c2" with payload "" from notifier @@ -73,14 +79,18 @@ notifier: NOTIFY "c2" with payload "payload" from notifier step notify3: NOTIFY c3, 'payload3'; step notifyf: SELECT pg_notify('c2', NULL); -pg_notify +pg_notify +--------- + +(1 row) - notifier: NOTIFY "c2" with payload "" from notifier step lcheck: SELECT 1 AS x; -x +x +- +1 +(1 row) -1 listener: NOTIFY "c1" with payload "" from notifier listener: NOTIFY "c2" with payload "payload" from notifier listener: NOTIFY "c2" with payload "" from notifier @@ -100,14 +110,20 @@ step llisten: LISTEN c1; LISTEN c2; step lbegin: BEGIN; step usage: SELECT pg_notification_queue_usage() > 0 AS nonzero; -nonzero +nonzero +------- +f +(1 row) -f step bignotify: SELECT count(pg_notify('c1', s::text)) FROM generate_series(1, 1000) s; -count +count +----- + 1000 +(1 row) -1000 step usage: SELECT pg_notification_queue_usage() > 0 AS nonzero; -nonzero +nonzero +------- +t +(1 row) -t diff -Nru postgresql-10-10.17/src/test/isolation/expected/classroom-scheduling.out postgresql-10-10.19/src/test/isolation/expected/classroom-scheduling.out --- postgresql-10-10.17/src/test/isolation/expected/classroom-scheduling.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/classroom-scheduling.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,28 +2,36 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 1 +(1 row) -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; 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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'; ERROR: could not serialize access due to read/write dependencies among transactions @@ -31,14 +39,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -46,14 +58,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -61,13 +77,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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'; @@ -76,13 +96,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -91,13 +115,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -106,13 +134,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -121,13 +153,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -136,13 +172,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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'); @@ -151,13 +191,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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'; @@ -166,13 +210,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -181,13 +229,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -196,13 +248,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -211,13 +267,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -226,13 +286,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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'); @@ -241,14 +305,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -256,14 +324,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -271,14 +343,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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'); ERROR: could not serialize access due to read/write dependencies among transactions @@ -286,14 +362,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'; -count +count +----- + 1 +(1 row) -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; diff -Nru postgresql-10-10.17/src/test/isolation/expected/create-trigger.out postgresql-10-10.19/src/test/isolation/expected/create-trigger.out --- postgresql-10-10.17/src/test/isolation/expected/create-trigger.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/create-trigger.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,9 +6,11 @@ step s1c: COMMIT; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -18,9 +20,11 @@ step s2a: BEGIN; step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -29,9 +33,11 @@ step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -41,9 +47,11 @@ step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1c: COMMIT; step s2c: <... completed> @@ -55,9 +63,11 @@ step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -66,9 +76,11 @@ step s2a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -78,9 +90,11 @@ step s2a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1c: COMMIT; step s2c: <... completed> @@ -90,9 +104,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; @@ -102,9 +118,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1c: COMMIT; @@ -115,9 +133,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2d: COMMIT; @@ -128,9 +148,11 @@ step s1a: BEGIN; step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); @@ -142,9 +164,11 @@ step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -153,9 +177,11 @@ step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -165,9 +191,11 @@ step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1c: COMMIT; step s2c: <... completed> @@ -177,9 +205,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; step s2c: UPDATE a SET i = 4 WHERE i = 3; @@ -189,9 +219,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1c: COMMIT; @@ -202,9 +234,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2d: COMMIT; @@ -215,9 +249,11 @@ step s2a: BEGIN; step s1a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); @@ -226,9 +262,11 @@ starting permutation: s2a s2b s1a s1b s1c s2c s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s1c: COMMIT; @@ -238,9 +276,11 @@ starting permutation: s2a s2b s1a s1b s2c s1c s2d step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); step s2c: UPDATE a SET i = 4 WHERE i = 3; @@ -251,9 +291,11 @@ starting permutation: s2a s2b s1a s2c s1b s2d s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); @@ -264,9 +306,11 @@ starting permutation: s2a s2b s1a s2c s2d s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s1a: BEGIN; step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; @@ -276,9 +320,11 @@ starting permutation: s2a s2b s2c s1a s1b s2d s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1a: BEGIN; step s1b: CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); @@ -289,9 +335,11 @@ starting permutation: s2a s2b s2c s1a s2d s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s1a: BEGIN; step s2d: COMMIT; @@ -301,9 +349,11 @@ starting permutation: s2a s2b s2c s2d s1a s1b s1c step s2a: BEGIN; step s2b: SELECT * FROM a WHERE i = 1 FOR UPDATE; -i +i +- +1 +(1 row) -1 step s2c: UPDATE a SET i = 4 WHERE i = 3; step s2d: COMMIT; step s1a: BEGIN; diff -Nru postgresql-10-10.17/src/test/isolation/expected/deadlock-hard.out postgresql-10-10.19/src/test/isolation/expected/deadlock-hard.out --- postgresql-10-10.17/src/test/isolation/expected/deadlock-hard.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/deadlock-hard.out 2021-11-08 22:05:38.000000000 +0000 @@ -18,8 +18,8 @@ step s7a8: LOCK TABLE a8; step s8a1: LOCK TABLE a1; step s8a1: <... completed> +ERROR: deadlock detected step s7a8: <... completed> -error in steps s8a1 s7a8: ERROR: deadlock detected step s8c: COMMIT; step s7c: COMMIT; step s6a7: <... completed> diff -Nru postgresql-10-10.17/src/test/isolation/expected/deadlock-simple.out postgresql-10-10.19/src/test/isolation/expected/deadlock-simple.out --- postgresql-10-10.17/src/test/isolation/expected/deadlock-simple.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/deadlock-simple.out 2021-11-08 22:05:38.000000000 +0000 @@ -5,7 +5,7 @@ step s2as: LOCK TABLE a1 IN ACCESS SHARE MODE; step s1ae: LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; step s2ae: LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; +ERROR: deadlock detected step s1ae: <... completed> -error in steps s2ae s1ae: ERROR: deadlock detected step s1c: COMMIT; step s2c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/delete-abort-savept-2.out postgresql-10-10.19/src/test/isolation/expected/delete-abort-savept-2.out --- postgresql-10-10.17/src/test/isolation/expected/delete-abort-savept-2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/delete-abort-savept-2.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,75 +2,99 @@ starting permutation: s1l s1svp s1d s1r s2l s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR UPDATE; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s1d s2l s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l: SELECT * FROM foo FOR UPDATE; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s1d s1r s2l2 s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1r: ROLLBACK TO f; step s2l2: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; starting permutation: s1l s1svp s1d s2l2 s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l2: SELECT * FROM foo FOR NO KEY UPDATE; step s1r: ROLLBACK TO f; step s2l2: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1c: COMMIT; step s2c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/delete-abort-savept.out postgresql-10-10.19/src/test/isolation/expected/delete-abort-savept.out --- postgresql-10-10.17/src/test/isolation/expected/delete-abort-savept.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/delete-abort-savept.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,94 +2,118 @@ starting permutation: s1l s1svp s1d s1r s1c s2l s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: SELECT * FROM foo FOR UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s1d s1r s2l s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR UPDATE; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s1d s2l s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s2l: SELECT * FROM foo FOR UPDATE; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s1svp s2l s1d s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s2l: SELECT * FROM foo FOR UPDATE; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s1l s2l s1svp s1d s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2l: SELECT * FROM foo FOR UPDATE; step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s2l s1l s2c s1svp s1d s1r s1c step s2l: SELECT * FROM foo FOR UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1l: SELECT * FROM foo FOR KEY SHARE; step s2c: COMMIT; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; @@ -97,14 +121,18 @@ starting permutation: s2l s2c s1l s1svp s1d s1r s1c step s2l: SELECT * FROM foo FOR UPDATE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s1svp: SAVEPOINT f; step s1d: DELETE FROM foo; step s1r: ROLLBACK TO f; diff -Nru postgresql-10-10.17/src/test/isolation/expected/drop-index-concurrently-1_2.out postgresql-10-10.19/src/test/isolation/expected/drop-index-concurrently-1_2.out --- postgresql-10-10.17/src/test/isolation/expected/drop-index-concurrently-1_2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/drop-index-concurrently-1_2.out 2021-11-08 22:05:38.000000000 +0000 @@ -4,39 +4,51 @@ step noseq: SET enable_seqscan = false; step chkiso: SELECT (setting in ('read committed','read uncommitted')) AS is_read_committed FROM pg_settings WHERE name = 'default_transaction_isolation'; is_read_committed +----------------- +f +(1 row) -f step prepi: PREPARE getrow_idx AS SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; step preps: PREPARE getrow_seq AS SELECT * FROM test_dc WHERE data::text=34::text ORDER BY id,data; step begin: BEGIN; step explaini: EXPLAIN (COSTS OFF) EXECUTE getrow_idx; -QUERY PLAN - -Sort - Sort Key: id +QUERY PLAN +---------------------------------------------- +Sort + Sort Key: id -> Index Scan using test_dc_data on test_dc - Index Cond: (data = 34) -step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq; -QUERY PLAN + Index Cond: (data = 34) +(4 rows) -Sort - Sort Key: id, data - -> Seq Scan on test_dc +step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq; +QUERY PLAN +------------------------------------------- +Sort + Sort Key: id, data + -> Seq Scan on test_dc Filter: ((data)::text = '34'::text) +(4 rows) + step select2: SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; -id data +id|data +--+---- +34| 34 +(1 row) -34 34 step drop: DROP INDEX CONCURRENTLY test_dc_data; step insert2: INSERT INTO test_dc(data) SELECT * FROM generate_series(1, 100); step end2: COMMIT; step selecti: EXECUTE getrow_idx; -id data +id|data +--+---- +34| 34 +(1 row) -34 34 step selects: EXECUTE getrow_seq; -id data +id|data +--+---- +34| 34 +(1 row) -34 34 step end: COMMIT; step drop: <... completed> diff -Nru postgresql-10-10.17/src/test/isolation/expected/drop-index-concurrently-1.out postgresql-10-10.19/src/test/isolation/expected/drop-index-concurrently-1.out --- postgresql-10-10.17/src/test/isolation/expected/drop-index-concurrently-1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/drop-index-concurrently-1.out 2021-11-08 22:05:38.000000000 +0000 @@ -4,41 +4,53 @@ step noseq: SET enable_seqscan = false; step chkiso: SELECT (setting in ('read committed','read uncommitted')) AS is_read_committed FROM pg_settings WHERE name = 'default_transaction_isolation'; is_read_committed +----------------- +t +(1 row) -t step prepi: PREPARE getrow_idx AS SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; step preps: PREPARE getrow_seq AS SELECT * FROM test_dc WHERE data::text=34::text ORDER BY id,data; step begin: BEGIN; step explaini: EXPLAIN (COSTS OFF) EXECUTE getrow_idx; -QUERY PLAN - -Sort - Sort Key: id +QUERY PLAN +---------------------------------------------- +Sort + Sort Key: id -> Index Scan using test_dc_data on test_dc - Index Cond: (data = 34) -step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq; -QUERY PLAN + Index Cond: (data = 34) +(4 rows) -Sort - Sort Key: id, data - -> Seq Scan on test_dc +step explains: EXPLAIN (COSTS OFF) EXECUTE getrow_seq; +QUERY PLAN +------------------------------------------- +Sort + Sort Key: id, data + -> Seq Scan on test_dc Filter: ((data)::text = '34'::text) +(4 rows) + step select2: SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; -id data +id|data +--+---- +34| 34 +(1 row) -34 34 step drop: DROP INDEX CONCURRENTLY test_dc_data; step insert2: INSERT INTO test_dc(data) SELECT * FROM generate_series(1, 100); step end2: COMMIT; step selecti: EXECUTE getrow_idx; -id data + id|data +---+---- + 34| 34 +134| 34 +(2 rows) -34 34 -134 34 step selects: EXECUTE getrow_seq; -id data + id|data +---+---- + 34| 34 +134| 34 +(2 rows) -34 34 -134 34 step end: COMMIT; step drop: <... completed> diff -Nru postgresql-10-10.17/src/test/isolation/expected/eval-plan-qual.out postgresql-10-10.19/src/test/isolation/expected/eval-plan-qual.out --- postgresql-10-10.17/src/test/isolation/expected/eval-plan-qual.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/eval-plan-qual.out 2021-11-08 22:05:38.000000000 +0000 @@ -7,10 +7,12 @@ step wx2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 850 +savings | 600 +(2 rows) -checking 850 -savings 600 starting permutation: wy1 wy2 c1 c2 read step wy1: UPDATE accounts SET balance = balance + 500 WHERE accountid = 'checking'; @@ -19,10 +21,12 @@ step wy2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1100 +savings | 600 +(2 rows) -checking 1100 -savings 600 starting permutation: upsert1 upsert2 c1 c2 read step upsert1: @@ -45,32 +49,38 @@ step upsert2: <... completed> step c2: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 600 +savings | 2334 +(2 rows) -checking 600 -savings 2334 starting permutation: readp1 writep1 readp2 c1 c2 step readp1: SELECT tableoid::regclass, ctid, * FROM p WHERE b IN (0, 1) AND c = 0 FOR UPDATE; -tableoid ctid a b c +tableoid|ctid |a|b|c +--------+-----+-+-+- +c1 |(0,1)|0|0|0 +c1 |(0,4)|0|1|0 +c2 |(0,1)|1|0|0 +c2 |(0,4)|1|1|0 +c3 |(0,1)|2|0|0 +c3 |(0,4)|2|1|0 +(6 rows) -c1 (0,1) 0 0 0 -c1 (0,4) 0 1 0 -c2 (0,1) 1 0 0 -c2 (0,4) 1 1 0 -c3 (0,1) 2 0 0 -c3 (0,4) 2 1 0 step writep1: UPDATE p SET b = -1 WHERE a = 1 AND b = 1 AND c = 0; step readp2: SELECT tableoid::regclass, ctid, * FROM p WHERE b IN (0, 1) AND c = 0 FOR UPDATE; step c1: COMMIT; step readp2: <... completed> -tableoid ctid a b c +tableoid|ctid |a|b|c +--------+-----+-+-+- +c1 |(0,1)|0|0|0 +c1 |(0,4)|0|1|0 +c2 |(0,1)|1|0|0 +c3 |(0,1)|2|0|0 +c3 |(0,4)|2|1|0 +(5 rows) -c1 (0,1) 0 0 0 -c1 (0,4) 0 1 0 -c2 (0,1) 1 0 0 -c3 (0,1) 2 0 0 -c3 (0,4) 2 1 0 step c2: COMMIT; starting permutation: writep2 returningp1 c1 c2 @@ -81,28 +91,30 @@ step c1: COMMIT; step returningp1: <... completed> -a b c +a| b|c +-+--+- +1| 0|0 +1| 0|1 +1| 0|2 +1|-1|0 +1| 1|1 +1| 1|2 +1|-2|0 +1| 2|1 +1| 2|2 +1|-3|0 +2| 0|0 +2| 0|1 +2| 0|2 +2| 1|0 +2| 1|1 +2| 1|2 +2| 2|0 +2| 2|1 +2| 2|2 +2| 3|0 +(20 rows) -1 0 0 -1 0 1 -1 0 2 -1 -1 0 -1 1 1 -1 1 2 -1 -2 0 -1 2 1 -1 2 2 -1 -3 0 -2 0 0 -2 0 1 -2 0 2 -2 1 0 -2 1 1 -2 1 2 -2 2 0 -2 2 1 -2 2 2 -2 3 0 step c2: COMMIT; starting permutation: wx2 partiallock c2 c1 read @@ -114,16 +126,20 @@ step c2: COMMIT; step partiallock: <... completed> -accountid balance accountid balance +accountid|balance|accountid|balance +---------+-------+---------+------- +checking | 1050|checking | 600 +savings | 600|savings | 600 +(2 rows) -checking 1050 checking 600 -savings 600 savings 600 step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1050 +savings | 600 +(2 rows) -checking 1050 -savings 600 starting permutation: wx2 lockwithvalues c2 c1 read step wx2: UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking'; @@ -134,16 +150,20 @@ step c2: COMMIT; step lockwithvalues: <... completed> -accountid balance id +accountid|balance|id +---------+-------+-------- +checking | 1050|checking +savings | 600|savings +(2 rows) -checking 1050 checking -savings 600 savings step c1: COMMIT; step read: SELECT * FROM accounts ORDER BY accountid; -accountid balance +accountid|balance +---------+------- +checking | 1050 +savings | 600 +(2 rows) -checking 1050 -savings 600 starting permutation: updateforss readforss c1 c2 step updateforss: @@ -159,9 +179,11 @@ step c1: COMMIT; step readforss: <... completed> -ta_id ta_value tb_row +ta_id|ta_value |tb_row +-----+--------------+--------------- + 1|newTableAValue|(1,tableBValue) +(1 row) -1 newTableAValue (1,tableBValue) step c2: COMMIT; starting permutation: updateforcip updateforcip2 c1 c2 read_a @@ -175,9 +197,11 @@ step updateforcip2: <... completed> step c2: COMMIT; step read_a: SELECT * FROM table_a ORDER BY id; -id value +id|value +--+-------- + 1|newValue +(1 row) -1 newValue starting permutation: updateforcip updateforcip3 c1 c2 read_a step updateforcip: @@ -191,9 +215,11 @@ step updateforcip3: <... completed> step c2: COMMIT; step read_a: SELECT * FROM table_a ORDER BY id; -id value +id|value +--+-------- + 1|newValue +(1 row) -1 newValue starting permutation: wrtwcte readwcte c1 c2 step wrtwcte: UPDATE table_a SET value = 'tableAValue2' WHERE id = 1; @@ -212,9 +238,11 @@ step c1: COMMIT; step c2: COMMIT; step readwcte: <... completed> -id value +id|value +--+------------ + 1|tableAValue2 +(1 row) -1 tableAValue2 starting permutation: wrjt selectjoinforupdate c2 c1 step wrjt: UPDATE jointest SET data = 42 WHERE id = 7; @@ -228,25 +256,29 @@ step c2: COMMIT; step selectjoinforupdate: <... completed> -QUERY PLAN - -LockRows - -> Merge Join - Merge Cond: (a.id = b.id) +QUERY PLAN +---------------------------------------------------------- +LockRows + -> Merge Join + Merge Cond: (a.id = b.id) -> Index Scan using jointest_id_idx on jointest a -> Index Scan using jointest_id_idx on jointest b -id data id data +(5 rows) + +id|data|id|data +--+----+--+---- + 1| 0| 1| 0 + 2| 0| 2| 0 + 3| 0| 3| 0 + 4| 0| 4| 0 + 5| 0| 5| 0 + 6| 0| 6| 0 + 7| 42| 7| 42 + 8| 0| 8| 0 + 9| 0| 9| 0 +10| 0|10| 0 +(10 rows) -1 0 1 0 -2 0 2 0 -3 0 3 0 -4 0 4 0 -5 0 5 0 -6 0 6 0 -7 42 7 42 -8 0 8 0 -9 0 9 0 -10 0 10 0 step c1: COMMIT; starting permutation: wrtwcte multireadwcte c1 c2 @@ -260,9 +292,11 @@ step c1: COMMIT; step c2: COMMIT; step multireadwcte: <... completed> -subid id +subid|id +-----+-- + 1| 1 +(1 row) -1 1 starting permutation: simplepartupdate complexpartupdate c1 c2 step simplepartupdate: diff -Nru postgresql-10-10.17/src/test/isolation/expected/eval-plan-qual-trigger.out postgresql-10-10.19/src/test/isolation/expected/eval-plan-qual-trigger.out --- postgresql-10-10.17/src/test/isolation/expected/eval-plan-qual-trigger.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/eval-plan-qual-trigger.out 2021-11-08 22:05:38.000000000 +0000 @@ -1,24 +1,32 @@ -Parsed test spec with 4 sessions +Parsed test spec with 3 sessions starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s1_c s2_upd_a_data s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -31,9 +39,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: upd: text key-a = text key-a: t @@ -47,35 +57,47 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +(1 row) -key-a val-a-s1-ups1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s1_r s2_upd_a_data s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -88,9 +110,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s1_r: ROLLBACK; s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t @@ -104,15 +128,19 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s1_c s2_del_a s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -120,21 +148,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -147,9 +183,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: upd: text key-a = text key-a: t @@ -163,14 +201,18 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s1_r s2_del_a s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -178,21 +220,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -205,9 +255,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s1_r: ROLLBACK; s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t @@ -221,34 +273,46 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -261,9 +325,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -280,35 +346,47 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +(1 row) -key-a val-a-s1-ups1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -321,9 +399,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -338,15 +418,19 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -354,21 +438,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -381,9 +473,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -400,15 +494,19 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +(1 row) -key-a val-a-s1-ups1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -416,21 +514,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -443,9 +549,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -460,15 +568,19 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -476,21 +588,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: @@ -503,9 +623,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -518,13 +640,17 @@ step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f step s2_upd_a_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -532,21 +658,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: @@ -559,9 +693,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -576,15 +712,19 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_a_i s1_trig_rep_a_d s1_b_rc s2_b_rc s1_ins_a s2_ins_a s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -592,29 +732,37 @@ step s1_trig_rep_a_i: CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s2) step s2_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s2') RETURNING *; step s1_c: COMMIT; step s2_ins_a: <... completed> -error in steps s1_c s2_ins_a: ERROR: duplicate key value violates unique constraint "trigtest_pkey" +ERROR: duplicate key value violates unique constraint "trigtest_pkey" step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_a_i s1_trig_rep_a_d s1_b_rc s2_b_rc s1_ins_a s2_ins_a s1_r s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -622,32 +770,42 @@ step s1_trig_rep_a_i: CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s2) step s2_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s2') RETURNING *; step s1_r: ROLLBACK; s2: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s2) step s2_ins_a: <... completed> -key data +key |data +-----+-------- +key-a|val-a-s2 +(1 row) -key-a val-a-s2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-a|val-a-s2 +(1 row) -key-a val-a-s2 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upsert_a_data s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -659,23 +817,31 @@ s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-b,val-b-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-b,val-b-s1) step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -key-b val-b-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -688,9 +854,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -707,15 +875,19 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +(1 row) -key-a val-a-s1-ups1-upserts2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-upserts2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upsert_a_data s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -727,23 +899,31 @@ s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-b,val-b-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-b,val-b-s1) step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data - -key-b val-b-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +key |data +-----+-------- +key-b|val-b-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -756,9 +936,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -775,15 +957,19 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +(1 row) -key-a val-a-s1-ups1-upserts2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-upserts2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_b_rc s2_b_rc s1_ins_a s2_upsert_a_data s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -793,19 +979,25 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -822,14 +1014,18 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-upserts2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-upserts2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+----------------- +key-a|val-a-s1-upserts2 +(1 row) -key-a val-a-s1-upserts2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+----------------- +key-a|val-a-s1-upserts2 +(1 row) -key-a val-a-s1-upserts2 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_b_rc s2_b_rc s1_ins_a s2_upsert_a_data s1_r s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -839,19 +1035,25 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -865,14 +1067,18 @@ step s1_r: ROLLBACK; s2: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-upss2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+----------- +key-a|val-a-upss2 +(1 row) -key-a val-a-upss2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+----------- +key-a|val-a-upss2 +(1 row) -key-a val-a-upss2 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_b_rc s2_b_rc s1_ins_a s1_upd_a_data s2_upsert_a_data s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -882,19 +1088,25 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -906,9 +1118,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -925,14 +1139,18 @@ s2: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-upserts2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +(1 row) -key-a val-a-s1-ups1-upserts2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+---------------------- +key-a|val-a-s1-ups1-upserts2 +(1 row) -key-a val-a-s1-ups1-upserts2 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_b_rc s2_b_rc s1_ins_a s1_upd_a_data s2_upsert_a_data s1_r s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -942,19 +1160,25 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -966,9 +1190,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-upss2) step s2_upsert_a_data: INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') @@ -982,33 +1208,45 @@ step s1_r: ROLLBACK; s2: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-upss2) step s2_upsert_a_data: <... completed> -key data +key |data +-----+----------- +key-a|val-a-upss2 +(1 row) -key-a val-a-upss2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+----------- +key-a|val-a-upss2 +(1 row) -key-a val-a-upss2 starting permutation: s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1020,9 +1258,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1038,34 +1278,46 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1-ups1) new: (key-a,val-a-s1-ups1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +(1 row) -key-a val-a-s1-ups1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------ +key-a|val-a-s1-ups1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1077,9 +1329,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1093,35 +1347,47 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_del_a s1_c s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1133,9 +1399,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1151,34 +1419,46 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_d; when: AFTER; lev: ROWs; op: DELETE; old: (key-a,val-a-s1-ups1) new: step s2_del_a: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_upd_a_data s2_del_a s1_r s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1190,9 +1470,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1206,34 +1488,46 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_d; when: AFTER; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: step s2_del_a: <... completed> -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1245,9 +1539,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1260,33 +1556,45 @@ step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f step s2_upd_a_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1298,9 +1606,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1314,34 +1624,46 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_del_a s1_c s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1353,9 +1675,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1368,32 +1692,44 @@ step s1_c: COMMIT; s2: NOTICE: upd: text key-b = text key-a: f step s2_del_a: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_a_d s1_ins_a s1_ins_b s1_b_rc s2_b_rc s1_del_a s2_del_a s1_r s2_c s0_rep step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: upd: text key-b = text key-a: f @@ -1405,9 +1741,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1421,34 +1759,46 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_d; when: AFTER; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: step s2_del_a: <... completed> -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_upd_a_tob s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data - -key-c val-c-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +key |data +-----+-------- +key-c|val-c-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1461,9 +1811,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1477,34 +1829,46 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: upd: text key-c = text key-a: f step s2_upd_a_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +key-c|val-c-s1 +(2 rows) -key-b val-a-s1-tobs1 -key-c val-c-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_upd_a_tob s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data - -key-c val-c-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +key |data +-----+-------- +key-c|val-c-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1517,9 +1881,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1534,35 +1900,47 @@ s2: NOTICE: upd: text key-c = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-c|val-c-s1 +(2 rows) -key-a val-a-s1-ups2 -key-c val-c-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_upd_a_tob s2_upd_b_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -key-c val-c-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1575,9 +1953,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 s2: NOTICE: upd: text key-a = text key-b: f s2: NOTICE: upd: text key-c = text key-b: f step s2_upd_b_data: @@ -1587,35 +1967,47 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key|data +---+---- +(0 rows) step s1_c: COMMIT; step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +key-c|val-c-s1 +(2 rows) -key-b val-a-s1-tobs1 -key-c val-c-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_upd_a_tob s2_upd_all_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data - -key-c val-c-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +key |data +-----+-------- +key-c|val-c-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1628,9 +2020,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 s2: NOTICE: upd: text key-a <> text mismatch: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_all_data: @@ -1650,16 +2044,20 @@ s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-b,val-a-s1-tobs1) new: (key-b,val-a-s1-tobs1-ups2) s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-c,val-c-s1) new: (key-c,val-c-s1-ups2) step s2_upd_all_data: <... completed> -key data +key |data +-----+------------------- +key-b|val-a-s1-tobs1-ups2 +key-c|val-c-s1-ups2 +(2 rows) -key-b val-a-s1-tobs1-ups2 -key-c val-c-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------------- +key-b|val-a-s1-tobs1-ups2 +key-c|val-c-s1-ups2 +(2 rows) -key-b val-a-s1-tobs1-ups2 -key-c val-c-s1-ups2 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -1667,21 +2065,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data - -key-c val-c-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +key |data +-----+-------- +key-c|val-c-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: @@ -1694,9 +2100,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1709,13 +2117,17 @@ step s1_c: COMMIT; s2: NOTICE: upd: text key-c = text key-a: f step s2_upd_a_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_del_a s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -1723,21 +2135,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -key-c val-c-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: @@ -1750,9 +2170,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -1767,35 +2189,47 @@ s2: NOTICE: upd: text key-c = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-c|val-c-s1 +(2 rows) -key-a val-a-s1-ups2 -key-c val-c-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_a_d s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_del_a s2_del_a s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data - -key-c val-c-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +key |data +-----+-------- +key-c|val-c-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: @@ -1808,9 +2242,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1823,33 +2259,45 @@ step s1_c: COMMIT; s2: NOTICE: upd: text key-c = text key-a: f step s2_del_a: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_a_d s1_ins_a s1_ins_c s1_b_rc s2_b_rc s1_del_a s2_del_a s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_c: INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -key-c val-c-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: @@ -1862,9 +2310,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_del_a: @@ -1879,14 +2329,18 @@ s2: NOTICE: upd: text key-c = text key-a: f s2: NOTICE: trigger: name rep_a_d; when: AFTER; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: step s2_del_a: <... completed> -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-c|val-c-s1 +(1 row) -key-c val-c-s1 starting permutation: s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_b s1_b_rc s2_b_rc s1_ins_a s1_upd_b_data s2_upd_b_data s1_del_b s1_upd_a_tob s1_c s2_c s0_rep step s1_trig_rep_b_i: CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -1898,23 +2352,31 @@ s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-b,val-b-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-b,val-b-s1) step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data - -key-b val-b-s1 -step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? - -1 -step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; -?column? +key |data +-----+-------- +key-b|val-b-s1 +(1 row) + +step s1_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) + +step s2_b_rc: BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: trigger: name rep_b_i; when: BEFORE; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) s1: NOTICE: trigger: name rep_a_i; when: AFTER; lev: ROWs; op: INSERT; old: new: (key-a,val-a-s1) step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s1: NOTICE: upd: text key-b = text key-b: t s1: NOTICE: upk: text val-b-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-b,val-b-s1) new: (key-b,val-b-s1-ups1) @@ -1927,9 +2389,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-b|val-b-s1-ups1 +(1 row) -key-b val-b-s1-ups1 s2: NOTICE: upd: text key-b = text key-b: t s2: NOTICE: upk: text val-b-s1 <> text mismatch: t step s2_upd_b_data: @@ -1951,9 +2415,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+------------- +key-b|val-b-s1-ups1 +(1 row) -key-b val-b-s1-ups1 s1: NOTICE: upk: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-b,val-a-s1-tobs1) @@ -1965,38 +2431,52 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 step s1_c: COMMIT; step s2_upd_b_data: <... completed> -key data +key|data +---+---- +(0 rows) step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------------- +key-b|val-a-s1-tobs1 +(1 row) -key-b val-a-s1-tobs1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rr s2_b_rr s1_upd_a_data s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -2009,9 +2489,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -2023,33 +2505,43 @@ step s1_c: COMMIT; step s2_upd_a_data: <... completed> -error in steps s1_c s2_upd_a_data: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups1 -key-b val-b-s1 starting permutation: s1_trig_rep_b_u s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rr s2_b_rr s1_upd_a_data s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_u: CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_u; when: BEFORE; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups1) @@ -2062,9 +2554,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; -key data +key |data +-----+------------- +key-a|val-a-s1-ups1 +(1 row) -key-a val-a-s1-ups1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -2079,15 +2573,19 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rr s2_b_rr s1_del_a s2_upd_a_data s1_c s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -2095,21 +2593,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: @@ -2122,9 +2628,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -2136,12 +2644,14 @@ step s1_c: COMMIT; step s2_upd_a_data: <... completed> -error in steps s1_c s2_upd_a_data: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 starting permutation: s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u s1_ins_a s1_ins_b s1_b_rr s2_b_rr s1_del_a s2_upd_a_data s1_r s2_c s0_rep step s1_trig_rep_b_d: CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); @@ -2149,21 +2659,29 @@ step s1_trig_rep_a_d: CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_trig_rep_a_u: CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); step s1_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 step s1_ins_b: INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; -key data +key |data +-----+-------- +key-b|val-b-s1 +(1 row) -key-b val-b-s1 step s1_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s2_b_rr: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 s1: NOTICE: upd: text key-a = text key-a: t s1: NOTICE: upk: text val-a-s1 <> text mismatch: t s1: NOTICE: trigger: name rep_b_d; when: BEFORE; lev: ROWs; op: DELETE; old: (key-a,val-a-s1) new: @@ -2176,9 +2694,11 @@ noisy_oper('upk', data, '<>', 'mismatch') RETURNING * -key data +key |data +-----+-------- +key-a|val-a-s1 +(1 row) -key-a val-a-s1 s2: NOTICE: upd: text key-a = text key-a: t s2: NOTICE: upk: text val-a-s1 <> text mismatch: t step s2_upd_a_data: @@ -2193,12 +2713,16 @@ s2: NOTICE: upd: text key-b = text key-a: f s2: NOTICE: trigger: name rep_a_u; when: AFTER; lev: ROWs; op: UPDATE; old: (key-a,val-a-s1) new: (key-a,val-a-s1-ups2) step s2_upd_a_data: <... completed> -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +(1 row) -key-a val-a-s1-ups2 step s2_c: COMMIT; step s0_rep: SELECT * FROM trigtest ORDER BY key, data -key data +key |data +-----+------------- +key-a|val-a-s1-ups2 +key-b|val-b-s1 +(2 rows) -key-a val-a-s1-ups2 -key-b val-b-s1 diff -Nru postgresql-10-10.17/src/test/isolation/expected/fk-deadlock_1.out postgresql-10-10.19/src/test/isolation/expected/fk-deadlock_1.out --- postgresql-10-10.17/src/test/isolation/expected/fk-deadlock_1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/fk-deadlock_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -24,7 +24,7 @@ step s2u: UPDATE parent SET aux = 'baz'; step s1c: COMMIT; step s2u: <... completed> -error in steps s1c s2u: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; starting permutation: s1i s2i s1u s1c s2u s2c @@ -43,7 +43,7 @@ step s2u: UPDATE parent SET aux = 'baz'; step s1c: COMMIT; step s2u: <... completed> -error in steps s1c s2u: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; starting permutation: s1i s2i s2u s1u s2c s1c @@ -53,7 +53,7 @@ step s1u: UPDATE parent SET aux = 'bar'; step s2c: COMMIT; step s1u: <... completed> -error in steps s2c s1u: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s1i s2i s2u s2c s1u s1c @@ -81,7 +81,7 @@ step s2u: UPDATE parent SET aux = 'baz'; step s1c: COMMIT; step s2u: <... completed> -error in steps s1c s2u: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; starting permutation: s2i s1i s2u s1u s2c s1c @@ -91,7 +91,7 @@ step s1u: UPDATE parent SET aux = 'bar'; step s2c: COMMIT; step s1u: <... completed> -error in steps s2c s1u: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s2i s1i s2u s2c s1u s1c @@ -110,7 +110,7 @@ step s1u: UPDATE parent SET aux = 'bar'; step s2c: COMMIT; step s1u: <... completed> -error in steps s2c s1u: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s2i s2u s1i s2c s1u s1c diff -Nru postgresql-10-10.17/src/test/isolation/expected/fk-deadlock2_1.out postgresql-10-10.19/src/test/isolation/expected/fk-deadlock2_1.out --- postgresql-10-10.17/src/test/isolation/expected/fk-deadlock2_1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/fk-deadlock2_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -14,7 +14,7 @@ step s2u1: UPDATE B SET Col2 = 1 WHERE BID = 2; step s1c: COMMIT; step s2u1: <... completed> -error in steps s1c s2u1: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2u2: UPDATE B SET Col2 = 1 WHERE BID = 2; ERROR: current transaction is aborted, commands ignored until end of transaction block step s2c: COMMIT; @@ -26,7 +26,7 @@ step s2u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s1u1 s2u1 s2u2 s1u2 s2c s1c @@ -36,7 +36,7 @@ step s1u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s1u1 s2u1 s2u2 s2c s1u2 s1c @@ -55,7 +55,7 @@ step s2u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s2u1 s1u1 s2u2 s1u2 s2c s1c @@ -65,7 +65,7 @@ step s1u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s2u1 s1u1 s2u2 s2c s1u2 s1c @@ -84,7 +84,7 @@ step s1u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s2u1 s2u2 s1u1 s2c s1u2 s1c diff -Nru postgresql-10-10.17/src/test/isolation/expected/fk-deadlock2_2.out postgresql-10-10.19/src/test/isolation/expected/fk-deadlock2_2.out --- postgresql-10-10.17/src/test/isolation/expected/fk-deadlock2_2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/fk-deadlock2_2.out 2021-11-08 22:05:38.000000000 +0000 @@ -14,7 +14,7 @@ step s2u1: UPDATE B SET Col2 = 1 WHERE BID = 2; step s1c: COMMIT; step s2u1: <... completed> -error in steps s1c s2u1: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2u2: UPDATE B SET Col2 = 1 WHERE BID = 2; ERROR: current transaction is aborted, commands ignored until end of transaction block step s2c: COMMIT; @@ -26,7 +26,7 @@ step s2u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s1u1 s2u1 s2u2 s1u2 s2c s1c @@ -36,7 +36,7 @@ step s1u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s1u1 s2u1 s2u2 s2c s1u2 s1c @@ -55,7 +55,7 @@ step s2u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s2u1 s1u1 s2u2 s1u2 s2c s1c @@ -65,7 +65,7 @@ step s1u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s2u1 s1u1 s2u2 s2c s1u2 s1c @@ -84,7 +84,7 @@ step s1u2: UPDATE B SET Col2 = 1 WHERE BID = 2; step s2c: COMMIT; step s1u2: <... completed> -error in steps s2c s1u2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1c: COMMIT; starting permutation: s2u1 s2u2 s1u1 s2c s1u2 s1c diff -Nru postgresql-10-10.17/src/test/isolation/expected/freeze-the-dead.out postgresql-10-10.19/src/test/isolation/expected/freeze-the-dead.out --- postgresql-10-10.17/src/test/isolation/expected/freeze-the-dead.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/freeze-the-dead.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,13 +6,17 @@ step s3_begin: BEGIN; step s1_update: UPDATE tab_freeze SET x = x + 1 WHERE id = 3; step s2_key_share: SELECT id FROM tab_freeze WHERE id = 3 FOR KEY SHARE; -id +id +-- + 3 +(1 row) -3 step s3_key_share: SELECT id FROM tab_freeze WHERE id = 3 FOR KEY SHARE; -id +id +-- + 3 +(1 row) -3 step s1_update: UPDATE tab_freeze SET x = x + 1 WHERE id = 3; step s1_commit: COMMIT; step s2_commit: COMMIT; @@ -24,13 +28,17 @@ SELECT * FROM tab_freeze WHERE id = 3; COMMIT; -id name x +id|name|x +--+----+- + 3| 333|2 +(1 row) -3 333 2 step s3_commit: COMMIT; step s2_vacuum: VACUUM FREEZE tab_freeze; step s1_selectall: SELECT * FROM tab_freeze ORDER BY name, id; -id name x +id|name|x +--+----+- + 1| 111|0 + 3| 333|2 +(2 rows) -1 111 0 -3 333 2 diff -Nru postgresql-10-10.17/src/test/isolation/expected/inherit-temp.out postgresql-10-10.19/src/test/isolation/expected/inherit-temp.out --- postgresql-10-10.17/src/test/isolation/expected/inherit-temp.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/inherit-temp.out 2021-11-08 22:05:38.000000000 +0000 @@ -5,29 +5,37 @@ step s1_insert_c: INSERT INTO inh_temp_child_s1 VALUES (3), (4); step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s1_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +3 +4 +(4 rows) -1 -2 -3 -4 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +4 +(2 rows) -3 -4 step s2_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +5 +6 +(4 rows) -1 -2 -5 -6 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_update_p s1_update_c s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -36,29 +44,37 @@ step s1_update_p: UPDATE inh_parent SET a = 11 WHERE a = 1; step s1_update_c: UPDATE inh_parent SET a = 13 WHERE a IN (3, 5); step s1_select_p: SELECT a FROM inh_parent; -a + a +-- + 2 +11 + 4 +13 +(4 rows) -2 -11 -4 -13 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a + a +-- + 4 +13 +(2 rows) -4 -13 step s2_select_p: SELECT a FROM inh_parent; -a + a +-- + 2 +11 + 5 + 6 +(4 rows) -2 -11 -5 -6 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_update_c s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -66,29 +82,37 @@ step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s2_update_c: UPDATE inh_parent SET a = 15 WHERE a IN (3, 5); step s1_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +3 +4 +(4 rows) -1 -2 -3 -4 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +4 +(2 rows) -3 -4 step s2_select_p: SELECT a FROM inh_parent; -a + a +-- + 1 + 2 + 6 +15 +(4 rows) -1 -2 -6 -15 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a + a +-- + 6 +15 +(2 rows) -6 -15 starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_delete_p s1_delete_c s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -97,25 +121,33 @@ step s1_delete_p: DELETE FROM inh_parent WHERE a = 2; step s1_delete_c: DELETE FROM inh_parent WHERE a IN (4, 6); step s1_select_p: SELECT a FROM inh_parent; -a +a +- +1 +3 +(2 rows) -1 -3 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +(1 row) -3 step s2_select_p: SELECT a FROM inh_parent; -a +a +- +1 +5 +6 +(3 rows) -1 -5 -6 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_delete_c s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -123,27 +155,35 @@ step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s2_delete_c: DELETE FROM inh_parent WHERE a IN (4, 6); step s1_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +3 +4 +(4 rows) -1 -2 -3 -4 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +4 +(2 rows) -3 -4 step s2_select_p: SELECT a FROM inh_parent; -a +a +- +1 +2 +5 +(3 rows) -1 -2 -5 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +(1 row) -5 starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_truncate_p s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -151,21 +191,29 @@ step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s1_truncate_p: TRUNCATE inh_parent; step s1_select_p: SELECT a FROM inh_parent; -a +a +- +(0 rows) step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +(0 rows) step s2_select_p: SELECT a FROM inh_parent; -a +a +- +5 +6 +(2 rows) -5 -6 step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s2_truncate_p s1_select_p s1_select_c s2_select_p s2_select_c step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -173,20 +221,28 @@ step s2_insert_c: INSERT INTO inh_temp_child_s2 VALUES (5), (6); step s2_truncate_p: TRUNCATE inh_parent; step s1_select_p: SELECT a FROM inh_parent; -a +a +- +3 +4 +(2 rows) -3 -4 step s1_select_c: SELECT a FROM inh_temp_child_s1; -a +a +- +3 +4 +(2 rows) -3 -4 step s2_select_p: SELECT a FROM inh_parent; -a +a +- +(0 rows) step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +(0 rows) starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_begin s1_truncate_p s2_select_p s1_commit @@ -198,10 +254,12 @@ step s2_select_p: SELECT a FROM inh_parent; step s1_commit: COMMIT; step s2_select_p: <... completed> -a +a +- +5 +6 +(2 rows) -5 -6 starting permutation: s1_insert_p s1_insert_c s2_insert_c s1_begin s1_truncate_p s2_select_c s1_commit step s1_insert_p: INSERT INTO inh_parent VALUES (1), (2); @@ -210,8 +268,10 @@ step s1_begin: BEGIN; step s1_truncate_p: TRUNCATE inh_parent; step s2_select_c: SELECT a FROM inh_temp_child_s2; -a +a +- +5 +6 +(2 rows) -5 -6 step s1_commit: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-nothing-2.out postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-nothing-2.out --- postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-nothing-2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-nothing-2.out 2021-11-08 22:05:38.000000000 +0000 @@ -8,9 +8,11 @@ step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donothing3') ON CONFLICT DO NOTHING; step c2: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 starting permutation: beginrr1 beginrr2 donothing2 c2 donothing1 c1 show step beginrr1: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -20,9 +22,11 @@ step donothing1: INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; step c1: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 starting permutation: beginrr1 beginrr2 donothing1 donothing2 c1 c2 show step beginrr1: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -31,12 +35,14 @@ step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donothing3') ON CONFLICT DO NOTHING; step c1: COMMIT; step donothing2: <... completed> -error in steps c1 donothing2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step c2: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 starting permutation: beginrr1 beginrr2 donothing2 donothing1 c2 c1 show step beginrr1: BEGIN ISOLATION LEVEL REPEATABLE READ; @@ -45,12 +51,14 @@ step donothing1: INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; step c2: COMMIT; step donothing1: <... completed> -error in steps c2 donothing1: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step c1: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 starting permutation: begins1 begins2 donothing1 c1 donothing2 c2 show step begins1: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -60,9 +68,11 @@ step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donothing3') ON CONFLICT DO NOTHING; step c2: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 starting permutation: begins1 begins2 donothing2 c2 donothing1 c1 show step begins1: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -72,9 +82,11 @@ step donothing1: INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; step c1: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 starting permutation: begins1 begins2 donothing1 donothing2 c1 c2 show step begins1: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -83,12 +95,14 @@ step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donothing3') ON CONFLICT DO NOTHING; step c1: COMMIT; step donothing2: <... completed> -error in steps c1 donothing2: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step c2: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 starting permutation: begins1 begins2 donothing2 donothing1 c2 c1 show step begins1: BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -97,9 +111,11 @@ step donothing1: INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; step c2: COMMIT; step donothing1: <... completed> -error in steps c2 donothing1: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step c1: COMMIT; step show: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 diff -Nru postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-nothing.out postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-nothing.out --- postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-nothing.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-nothing.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,9 +6,11 @@ step c1: COMMIT; step donothing2: <... completed> step select2: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing1 +(1 row) -1 donothing1 step c2: COMMIT; starting permutation: donothing1 donothing2 a1 select2 c2 @@ -17,7 +19,9 @@ step a1: ABORT; step donothing2: <... completed> step select2: SELECT * FROM ints; -key val +key|val +---+---------- + 1|donothing2 +(1 row) -1 donothing2 step c2: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-update-2.out postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-update-2.out --- postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-update-2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-update-2.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,9 +6,11 @@ step c1: COMMIT; step insert2: <... completed> step select2: SELECT * FROM upsert; -key payload +key |payload +------+-------------------------- +FOOFOO|insert1 updated by insert2 +(1 row) -FOOFOO insert1 updated by insert2 step c2: COMMIT; starting permutation: insert1 insert2 a1 select2 c2 @@ -17,7 +19,9 @@ step a1: ABORT; step insert2: <... completed> step select2: SELECT * FROM upsert; -key payload +key |payload +------+------- +FOOFOO|insert2 +(1 row) -FOOFOO insert2 step c2: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-update-3.out postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-update-3.out --- postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-update-3.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-update-3.out 2021-11-08 22:05:38.000000000 +0000 @@ -12,15 +12,19 @@ SELECT * FROM colors ORDER BY key; step c2: COMMIT; step insert1: <... completed> -key color is_active +key|color|is_active +---+-----+--------- + 1|Red |f + 2|Green|f + 3|Blue |f +(3 rows) -1 Red f -2 Green f -3 Blue f step select1surprise: SELECT * FROM colors ORDER BY key; -key color is_active +key|color|is_active +---+-----+--------- + 1|Brown|t + 2|Green|f + 3|Blue |f +(3 rows) -1 Brown t -2 Green f -3 Blue f step c1: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-update.out postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-update.out --- postgresql-10-10.17/src/test/isolation/expected/insert-conflict-do-update.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/insert-conflict-do-update.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,9 +6,11 @@ step c1: COMMIT; step insert2: <... completed> step select2: SELECT * FROM upsert; -key val +key|val +---+-------------------------- + 1|insert1 updated by insert2 +(1 row) -1 insert1 updated by insert2 step c2: COMMIT; starting permutation: insert1 insert2 a1 select2 c2 @@ -17,7 +19,9 @@ step a1: ABORT; step insert2: <... completed> step select2: SELECT * FROM upsert; -key val +key|val +---+------- + 1|insert2 +(1 row) -1 insert2 step c2: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/insert-conflict-specconflict.out postgresql-10-10.19/src/test/isolation/expected/insert-conflict-specconflict.out --- postgresql-10-10.17/src/test/isolation/expected/insert-conflict-specconflict.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/insert-conflict-specconflict.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,16 +2,20 @@ starting permutation: controller_locks controller_show s1_upsert s2_upsert controller_show controller_unlock_1_1 controller_unlock_2_1 controller_unlock_1_3 controller_unlock_2_3 controller_show controller_unlock_2_2 controller_show controller_unlock_1_2 controller_show step controller_locks: SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock); -pg_advisory_locksess lock +pg_advisory_lock|sess|lock +----------------+----+---- + | 1| 1 + | 1| 2 + | 1| 3 + | 2| 1 + | 2| 2 + | 2| 3 +(6 rows) - 1 1 - 1 2 - 1 3 - 2 1 - 2 2 - 2 3 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) s1: NOTICE: called for k1 s1: NOTICE: blocking 3 @@ -20,66 +24,90 @@ s2: NOTICE: blocking 3 step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_1: SELECT pg_advisory_unlock(1, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_2_1: SELECT pg_advisory_unlock(2, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_1_3: SELECT pg_advisory_unlock(1, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: called for k1 s1: NOTICE: blocking 2 step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: called for k1 s2: NOTICE: blocking 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_2_2: SELECT pg_advisory_unlock(2, 2); pg_advisory_unlock +------------------ +t +(1 row) -t step s2_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------- +k1 |inserted s2 +(1 row) -k1 inserted s2 step controller_unlock_1_2: SELECT pg_advisory_unlock(1, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: called for k1 s1: NOTICE: blocking 2 s1: NOTICE: called for k1 s1: NOTICE: blocking 2 step s1_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------------------------------- +k1 |inserted s2 with conflict update s1 +(1 row) -k1 inserted s2 with conflict update s1 starting permutation: controller_locks controller_show s1_upsert s2_upsert controller_show controller_unlock_1_1 controller_unlock_2_1 controller_unlock_1_3 controller_unlock_2_3 controller_show controller_unlock_1_2 controller_show controller_unlock_2_2 controller_show step controller_locks: SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock); -pg_advisory_locksess lock +pg_advisory_lock|sess|lock +----------------+----+---- + | 1| 1 + | 1| 2 + | 1| 3 + | 2| 1 + | 2| 2 + | 2| 3 +(6 rows) - 1 1 - 1 2 - 1 3 - 2 1 - 2 2 - 2 3 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) s1: NOTICE: called for k1 s1: NOTICE: blocking 3 @@ -88,66 +116,90 @@ s2: NOTICE: blocking 3 step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_1: SELECT pg_advisory_unlock(1, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_2_1: SELECT pg_advisory_unlock(2, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_1_3: SELECT pg_advisory_unlock(1, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: called for k1 s1: NOTICE: blocking 2 step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: called for k1 s2: NOTICE: blocking 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_2: SELECT pg_advisory_unlock(1, 2); pg_advisory_unlock +------------------ +t +(1 row) -t step s1_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------- +k1 |inserted s1 +(1 row) -k1 inserted s1 step controller_unlock_2_2: SELECT pg_advisory_unlock(2, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: called for k1 s2: NOTICE: blocking 2 s2: NOTICE: called for k1 s2: NOTICE: blocking 2 step s2_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------------------------------- +k1 |inserted s1 with conflict update s2 +(1 row) -k1 inserted s1 with conflict update s2 starting permutation: controller_locks controller_show s1_begin s2_begin s1_upsert s2_upsert controller_show controller_unlock_1_1 controller_unlock_2_1 controller_unlock_1_3 controller_unlock_2_3 controller_show controller_unlock_1_2 controller_show controller_unlock_2_2 controller_show s1_commit controller_show s2_commit controller_show step controller_locks: SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock); -pg_advisory_locksess lock +pg_advisory_lock|sess|lock +----------------+----+---- + | 1| 1 + | 1| 2 + | 1| 3 + | 2| 1 + | 2| 2 + | 2| 3 +(6 rows) - 1 1 - 1 2 - 1 3 - 2 1 - 2 2 - 2 3 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step s1_begin: BEGIN; step s2_begin: BEGIN; @@ -158,60 +210,84 @@ s2: NOTICE: blocking 3 step s2_upsert: INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_1: SELECT pg_advisory_unlock(1, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_2_1: SELECT pg_advisory_unlock(2, 1); pg_advisory_unlock +------------------ +t +(1 row) -t step controller_unlock_1_3: SELECT pg_advisory_unlock(1, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s1: NOTICE: called for k1 s1: NOTICE: blocking 2 step controller_unlock_2_3: SELECT pg_advisory_unlock(2, 3); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: called for k1 s2: NOTICE: blocking 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_1_2: SELECT pg_advisory_unlock(1, 2); pg_advisory_unlock +------------------ +t +(1 row) -t step s1_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step controller_unlock_2_2: SELECT pg_advisory_unlock(2, 2); pg_advisory_unlock +------------------ +t +(1 row) -t s2: NOTICE: called for k1 s2: NOTICE: blocking 2 s2: NOTICE: called for k1 s2: NOTICE: blocking 2 step controller_show: SELECT * FROM upserttest; -key data +key|data +---+---- +(0 rows) step s1_commit: COMMIT; s2: NOTICE: called for k1 s2: NOTICE: blocking 2 step s2_upsert: <... completed> step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------- +k1 |inserted s1 +(1 row) -k1 inserted s1 step s2_commit: COMMIT; step controller_show: SELECT * FROM upserttest; -key data +key|data +---+----------------------------------- +k1 |inserted s1 with conflict update s2 +(1 row) -k1 inserted s1 with conflict update s2 diff -Nru postgresql-10-10.17/src/test/isolation/expected/insert-conflict-toast.out postgresql-10-10.19/src/test/isolation/expected/insert-conflict-toast.out --- postgresql-10-10.17/src/test/isolation/expected/insert-conflict-toast.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/insert-conflict-toast.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,8 +2,10 @@ starting permutation: s2insert s3insert s1commit pg_advisory_xact_lock +--------------------- + +(1 row) - step s2insert: INSERT INTO ctoast (key, val) VALUES (1, ctoast_large_val()) ON CONFLICT DO NOTHING; diff -Nru postgresql-10-10.17/src/test/isolation/expected/lock-committed-keyupdate.out postgresql-10-10.19/src/test/isolation/expected/lock-committed-keyupdate.out --- postgresql-10-10.17/src/test/isolation/expected/lock-committed-keyupdate.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/lock-committed-keyupdate.out 2021-11-08 22:05:38.000000000 +0000 @@ -5,492 +5,666 @@ step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s2l: <... completed> -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1u s1c s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -error in steps s1ul s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -error in steps s1ul s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s2l: <... completed> -error in steps s1c s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -error in steps s1ul s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -error in steps s1ul s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s2l: <... completed> -error in steps s1c s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1u s1c s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -error in steps s1ul s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -error in steps s1ul s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s2l: <... completed> -error in steps s1c s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -error in steps s1ul s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -error in steps s1ul s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(578902068); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcku_table SET id = 2 WHERE id = 3; step s1ul: SELECT pg_advisory_unlock(578902068); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s2l: <... completed> -error in steps s1c s2l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1hint: SELECT * FROM lcku_table; -id value +id|value +--+----- + 1|one + 2|two +(2 rows) -1 one -2 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - diff -Nru postgresql-10-10.17/src/test/isolation/expected/lock-committed-update.out postgresql-10-10.19/src/test/isolation/expected/lock-committed-update.out --- postgresql-10-10.17/src/test/isolation/expected/lock-committed-update.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/lock-committed-update.out 2021-11-08 22:05:38.000000000 +0000 @@ -5,663 +5,927 @@ step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s2l s1ul s1u s1c s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s2l s1ul s1u s1c s1hint s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b1 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b1: BEGIN ISOLATION LEVEL READ COMMITTED; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1u s1c s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1ul s1u s1c s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s2l s1ul s1u s1c s1hint s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b2 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b2: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1u s1c s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s2l s1c s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1ul s1u s1c s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s1ul s2l s1c s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1u s1c s1hint s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s2l s1c s1hint s1ul s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s2l s1ul s1u s1c s1hint s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: <... completed> -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - starting permutation: s1b s2b3 s1l s1u s1ul s2l s1c s1hint s2c step s1b: BEGIN; step s2b3: BEGIN ISOLATION LEVEL SERIALIZABLE; step s1l: SELECT pg_advisory_lock(380170116); pg_advisory_lock +---------------- + +(1 row) - step s1u: UPDATE lcu_table SET value = 'two' WHERE id = 1; step s1ul: SELECT pg_advisory_unlock(380170116); pg_advisory_unlock +------------------ +t +(1 row) -t step s2l: SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; -id value +id|value +--+----- + 1|one +(1 row) -1 one step s1c: COMMIT; step s1hint: SELECT * FROM lcu_table; -id value +id|value +--+----- + 1|two +(1 row) -1 two step s2c: COMMIT; pg_advisory_unlock_all +---------------------- + +(1 row) - pg_advisory_unlock_all +---------------------- + +(1 row) - diff -Nru postgresql-10-10.17/src/test/isolation/expected/lock-update-delete_1.out postgresql-10-10.19/src/test/isolation/expected/lock-update-delete_1.out --- postgresql-10-10.17/src/test/isolation/expected/lock-update-delete_1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/lock-update-delete_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,112 +2,146 @@ starting permutation: s2b s1l s2u s2_blocker1 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker1: DELETE FROM foo; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2c: COMMIT; step s1l: <... completed> -error in steps s2c s1l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update starting permutation: s2b s1l s2u s2_blocker2 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2c: COMMIT; step s1l: <... completed> -error in steps s2c s1l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update starting permutation: s2b s1l s2u s2_blocker3 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s2b s1l s2u s2_blocker1 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker1: DELETE FROM foo; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2r: ROLLBACK; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker2 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2r: ROLLBACK; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker3 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2r: ROLLBACK; starting permutation: s2b s1l s2u s2_blocker1 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -115,15 +149,19 @@ step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -error in steps s2_unlock s1l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update starting permutation: s2b s1l s2u s2_blocker2 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -131,15 +169,19 @@ step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -error in steps s2_unlock s1l: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update starting permutation: s2b s1l s2u s2_blocker3 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -147,15 +189,23 @@ step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -error in steps s2_unlock s1l: ERROR: could not serialize access due to concurrent update +key|value +---+----- + 1| 1 +(1 row) + starting permutation: s2b s1l s2u s2_blocker1 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -163,17 +213,23 @@ step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker2 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -181,17 +237,23 @@ step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker3 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -199,9 +261,13 @@ step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 diff -Nru postgresql-10-10.17/src/test/isolation/expected/lock-update-delete.out postgresql-10-10.19/src/test/isolation/expected/lock-update-delete.out --- postgresql-10-10.17/src/test/isolation/expected/lock-update-delete.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/lock-update-delete.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,114 +2,152 @@ starting permutation: s2b s1l s2u s2_blocker1 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker1: DELETE FROM foo; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2c: COMMIT; step s1l: <... completed> -key value +key|value +---+----- +(0 rows) starting permutation: s2b s1l s2u s2_blocker2 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2c: COMMIT; step s1l: <... completed> -key value +key|value +---+----- +(0 rows) starting permutation: s2b s1l s2u s2_blocker3 s2_unlock s2c pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; starting permutation: s2b s1l s2u s2_blocker1 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker1: DELETE FROM foo; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2r: ROLLBACK; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker2 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker2: UPDATE foo SET key = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s2r: ROLLBACK; step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker3 s2_unlock s2r pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s2_blocker3: UPDATE foo SET value = 2 WHERE key = 1; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2r: ROLLBACK; starting permutation: s2b s1l s2u s2_blocker1 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -117,16 +155,22 @@ step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- +(0 rows) starting permutation: s2b s1l s2u s2_blocker2 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -134,16 +178,22 @@ step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- +(0 rows) starting permutation: s2b s1l s2u s2_blocker3 s2c s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -151,17 +201,23 @@ step s2c: COMMIT; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker1 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -169,17 +225,23 @@ step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker2 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -187,17 +249,23 @@ step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 starting permutation: s2b s1l s2u s2_blocker3 s2r s2_unlock pg_advisory_lock +---------------- + +(1 row) - step s2b: BEGIN; step s1l: SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; step s2u: UPDATE foo SET value = 2 WHERE key = 1; @@ -205,9 +273,13 @@ step s2r: ROLLBACK; step s2_unlock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1l: <... completed> -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 diff -Nru postgresql-10-10.17/src/test/isolation/expected/lock-update-traversal.out postgresql-10-10.19/src/test/isolation/expected/lock-update-traversal.out --- postgresql-10-10.17/src/test/isolation/expected/lock-update-traversal.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/lock-update-traversal.out 2021-11-08 22:05:38.000000000 +0000 @@ -4,14 +4,18 @@ step s1b: BEGIN ISOLATION LEVEL REPEATABLE READ; step s2b: BEGIN; step s1s: SELECT * FROM foo; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s2d1: DELETE FROM foo WHERE key = 1; step s1c: COMMIT; @@ -21,14 +25,18 @@ step s1b: BEGIN ISOLATION LEVEL REPEATABLE READ; step s2b: BEGIN; step s1s: SELECT * FROM foo; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s2d2: UPDATE foo SET key = 3 WHERE key = 1; step s1c: COMMIT; @@ -38,14 +46,18 @@ step s1b: BEGIN ISOLATION LEVEL REPEATABLE READ; step s2b: BEGIN; step s1s: SELECT * FROM foo; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2u: UPDATE foo SET value = 2 WHERE key = 1; step s1l: SELECT * FROM foo FOR KEY SHARE; -key value +key|value +---+----- + 1| 1 +(1 row) -1 1 step s2c: COMMIT; step s2d3: UPDATE foo SET value = 3 WHERE key = 1; step s1c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/multiple-cic_1.out postgresql-10-10.19/src/test/isolation/expected/multiple-cic_1.out --- postgresql-10-10.17/src/test/isolation/expected/multiple-cic_1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/multiple-cic_1.out 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -Parsed test spec with 2 sessions - -starting permutation: s2l s1i s2i -step s2l: SELECT pg_advisory_lock(281457); -pg_advisory_lock - - -step s1i: - CREATE INDEX CONCURRENTLY mcic_one_pkey ON mcic_one (id) - WHERE lck_shr(281457); - -step s2i: - CREATE INDEX CONCURRENTLY mcic_two_pkey ON mcic_two (id) - WHERE unlck(); - -step s1i: <... completed> -step s2i: <... completed> -unlck - -t diff -Nru postgresql-10-10.17/src/test/isolation/expected/multiple-cic.out postgresql-10-10.19/src/test/isolation/expected/multiple-cic.out --- postgresql-10-10.17/src/test/isolation/expected/multiple-cic.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/multiple-cic.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,8 +3,10 @@ starting permutation: s2l s1i s2i step s2l: SELECT pg_advisory_lock(281457); pg_advisory_lock +---------------- + +(1 row) - step s1i: CREATE INDEX CONCURRENTLY mcic_one_pkey ON mcic_one (id) WHERE lck_shr(281457); @@ -12,8 +14,11 @@ step s2i: CREATE INDEX CONCURRENTLY mcic_two_pkey ON mcic_two (id) WHERE unlck(); - + step s1i: <... completed> -unlck +step s2i: <... completed> +unlck +----- +t +(1 row) -t diff -Nru postgresql-10-10.17/src/test/isolation/expected/multiple-row-versions.out postgresql-10-10.19/src/test/isolation/expected/multiple-row-versions.out --- postgresql-10-10.17/src/test/isolation/expected/multiple-row-versions.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/multiple-row-versions.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,21 +2,27 @@ starting permutation: rx1 wx2 c2 wx3 ry3 wy4 rz4 c4 c3 wz1 c1 step rx1: SELECT * FROM t WHERE id = 1000000; -id txt + id|txt +-------+--- +1000000| +(1 row) -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; -id txt + id|txt +------+--- +500000| +(1 row) -500000 step wy4: UPDATE t SET txt = 'd' WHERE id = 500000; step rz4: SELECT * FROM t WHERE id = 1; -id txt +id|txt +--+--- + 1| +(1 row) -1 step c4: COMMIT; step c3: COMMIT; step wz1: UPDATE t SET txt = 'a' WHERE id = 1; diff -Nru postgresql-10-10.17/src/test/isolation/expected/multixact-no-deadlock.out postgresql-10-10.19/src/test/isolation/expected/multixact-no-deadlock.out --- postgresql-10-10.17/src/test/isolation/expected/multixact-no-deadlock.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/multixact-no-deadlock.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,23 +2,31 @@ starting permutation: s1lock s2lock s1svpt s3lock s1lock2 s2c s1c s3c step s1lock: SELECT * FROM justthis FOR SHARE; -value +value +----- + 1 +(1 row) -1 step s2lock: SELECT * FROM justthis FOR SHARE; -value +value +----- + 1 +(1 row) -1 step s1svpt: SAVEPOINT foo; step s3lock: SELECT * FROM justthis FOR UPDATE; step s1lock2: SELECT * FROM justthis FOR SHARE; -value +value +----- + 1 +(1 row) -1 step s2c: COMMIT; step s1c: COMMIT; step s3lock: <... completed> -value +value +----- + 1 +(1 row) -1 step s3c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/multixact-no-forget_1.out postgresql-10-10.19/src/test/isolation/expected/multixact-no-forget_1.out --- postgresql-10-10.17/src/test/isolation/expected/multixact-no-forget_1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/multixact-no-forget_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,125 +2,159 @@ starting permutation: s1_show s1_commit s2_commit step s1_show: SELECT current_setting('default_transaction_isolation') <> 'read committed'; -?column? +?column? +-------- +t +(1 row) -t step s1_commit: COMMIT; step s2_commit: COMMIT; starting permutation: s1_lock s2_update s2_abort s3_forkeyshr s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s2_commit s3_forkeyshr s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 2 +(1 row) -2 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s1_commit s3_forkeyshr s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_commit: COMMIT; starting permutation: s1_lock s2_update s2_abort s3_fornokeyupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; -value +value +----- + 1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s2_commit s3_fornokeyupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; -value +value +----- + 2 +(1 row) -2 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s1_commit s3_fornokeyupd s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; step s2_commit: COMMIT; step s3_fornokeyupd: <... completed> -error in steps s2_commit s3_fornokeyupd: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update starting permutation: s1_lock s2_update s2_abort s3_forupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; step s1_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 1 +(1 row) -1 starting permutation: s1_lock s2_update s2_commit s3_forupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; step s1_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 2 +(1 row) -2 starting permutation: s1_lock s2_update s1_commit s3_forupd s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; step s2_commit: COMMIT; step s3_forupd: <... completed> -error in steps s2_commit s3_forupd: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update diff -Nru postgresql-10-10.17/src/test/isolation/expected/multixact-no-forget.out postgresql-10-10.19/src/test/isolation/expected/multixact-no-forget.out --- postgresql-10-10.17/src/test/isolation/expected/multixact-no-forget.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/multixact-no-forget.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,129 +2,167 @@ starting permutation: s1_show s1_commit s2_commit step s1_show: SELECT current_setting('default_transaction_isolation') <> 'read committed'; -?column? +?column? +-------- +f +(1 row) -f step s1_commit: COMMIT; step s2_commit: COMMIT; starting permutation: s1_lock s2_update s2_abort s3_forkeyshr s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s2_commit s3_forkeyshr s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 2 +(1 row) -2 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s1_commit s3_forkeyshr s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_commit: COMMIT; starting permutation: s1_lock s2_update s2_abort s3_fornokeyupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; -value +value +----- + 1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s2_commit s3_fornokeyupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; -value +value +----- + 2 +(1 row) -2 step s1_commit: COMMIT; starting permutation: s1_lock s2_update s1_commit s3_fornokeyupd s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; step s2_commit: COMMIT; step s3_fornokeyupd: <... completed> -value +value +----- + 2 +(1 row) -2 starting permutation: s1_lock s2_update s2_abort s3_forupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_abort: ROLLBACK; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; step s1_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 1 +(1 row) -1 starting permutation: s1_lock s2_update s2_commit s3_forupd s1_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s2_commit: COMMIT; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; step s1_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 2 +(1 row) -2 starting permutation: s1_lock s2_update s1_commit s3_forupd s2_commit step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; -value +value +----- + 1 +(1 row) -1 step s2_update: UPDATE dont_forget SET value = 2; step s1_commit: COMMIT; step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; step s2_commit: COMMIT; step s3_forupd: <... completed> -value +value +----- + 2 +(1 row) -2 diff -Nru postgresql-10-10.17/src/test/isolation/expected/nowait-2.out postgresql-10-10.19/src/test/isolation/expected/nowait-2.out --- postgresql-10-10.17/src/test/isolation/expected/nowait-2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/nowait-2.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,13 +2,17 @@ starting permutation: s1a s2a s2b s1b s2c step s1a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; @@ -16,13 +20,17 @@ starting permutation: s2a s1a s2b s1b s2c step s2a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; @@ -30,13 +38,17 @@ starting permutation: s2a s2b s1a s1b s2c step s2a: SELECT * FROM foo FOR SHARE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1a: SELECT * FROM foo FOR SHARE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/nowait-3.out postgresql-10-10.19/src/test/isolation/expected/nowait-3.out --- postgresql-10-10.17/src/test/isolation/expected/nowait-3.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/nowait-3.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,16 +2,20 @@ starting permutation: s1a s2a s3a s1b s2b s3b step s1a: SELECT * FROM foo FOR UPDATE; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2a: SELECT * FROM foo FOR UPDATE; step s3a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; step s2a: <... completed> -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: COMMIT; step s3b: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/nowait-4_1.out postgresql-10-10.19/src/test/isolation/expected/nowait-4_1.out --- postgresql-10-10.17/src/test/isolation/expected/nowait-4_1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/nowait-4_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,17 +3,21 @@ starting permutation: s2a s1a s2b s2c s2d s2e s1b s2f step s2a: SELECT pg_advisory_lock(0); pg_advisory_lock +---------------- + +(1 row) - step s1a: SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL FOR UPDATE NOWAIT; step s2b: UPDATE foo SET data = data; step s2c: BEGIN; step s2d: UPDATE foo SET data = data; step s2e: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1a: <... completed> -error in steps s2e s1a: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1b: COMMIT; step s2f: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/nowait-4.out postgresql-10-10.19/src/test/isolation/expected/nowait-4.out --- postgresql-10-10.17/src/test/isolation/expected/nowait-4.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/nowait-4.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,17 +3,21 @@ starting permutation: s2a s1a s2b s2c s2d s2e s1b s2f step s2a: SELECT pg_advisory_lock(0); pg_advisory_lock +---------------- + +(1 row) - step s1a: SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL FOR UPDATE NOWAIT; step s2b: UPDATE foo SET data = data; step s2c: BEGIN; step s2d: UPDATE foo SET data = data; step s2e: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1a: <... completed> -error in steps s2e s1a: ERROR: could not obtain lock on row in relation "foo" +ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; step s2f: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/nowait-5.out postgresql-10-10.19/src/test/isolation/expected/nowait-5.out --- postgresql-10-10.17/src/test/isolation/expected/nowait-5.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/nowait-5.out 2021-11-08 22:05:38.000000000 +0000 @@ -8,8 +8,10 @@ SELECT pg_advisory_lock(0); pg_advisory_lock +---------------- + +(1 row) - step sl1_exec: BEGIN ISOLATION LEVEL READ COMMITTED; EXECUTE sl1_run; @@ -24,14 +26,18 @@ BEGIN ISOLATION LEVEL READ COMMITTED; SELECT id FROM test_nowait WHERE id % 2 = 0 FOR SHARE; -id +id +-- + 2 +(1 row) -2 step upd_releaselock: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step sl1_exec: <... completed> -error in steps upd_releaselock sl1_exec: ERROR: could not obtain lock on row in relation "test_nowait" +ERROR: could not obtain lock on row in relation "test_nowait" diff -Nru postgresql-10-10.17/src/test/isolation/expected/nowait.out postgresql-10-10.19/src/test/isolation/expected/nowait.out --- postgresql-10-10.17/src/test/isolation/expected/nowait.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/nowait.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,21 +2,27 @@ starting permutation: s1a s1b s2a s2b step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1b: COMMIT; step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: COMMIT; starting permutation: s1a s2a s1b s2b step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; @@ -24,9 +30,11 @@ starting permutation: s1a s2a s2b s1b step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s2b: COMMIT; @@ -34,9 +42,11 @@ starting permutation: s2a s1a s1b s2b step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s1b: COMMIT; @@ -44,9 +54,11 @@ starting permutation: s2a s1a s2b s1b step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "foo" step s2b: COMMIT; @@ -54,12 +66,16 @@ starting permutation: s2a s2b s1a s1b step s2a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s2b: COMMIT; step s1a: SELECT * FROM foo FOR UPDATE NOWAIT; -id data +id|data +--+---- + 1|x +(1 row) -1 x step s1b: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/partial-index.out postgresql-10-10.19/src/test/isolation/expected/partial-index.out --- postgresql-10-10.17/src/test/isolation/expected/partial-index.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/partial-index.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,51 +2,57 @@ starting permutation: rxy1 wx1 c1 wy2 rxy2 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +(9 rows) + step c2: COMMIT; starting permutation: rxy1 wx1 wy2 c1 rxy2 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; @@ -56,87 +62,97 @@ starting permutation: rxy1 wx1 wy2 rxy2 c1 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; @@ -146,101 +162,113 @@ starting permutation: rxy1 wy2 wx1 rxy2 c1 c2 step rxy1: select * from test_t where val2 = 1; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + +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 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -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; @@ -248,33 +276,37 @@ starting permutation: rxy1 wy2 rxy2 wx1 c2 c1 step rxy1: select * from test_t where val2 = 1; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + +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 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -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; @@ -282,33 +314,37 @@ starting permutation: rxy1 wy2 rxy2 c2 wx1 c1 step rxy1: select * from test_t where val2 = 1; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + +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 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -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; ERROR: could not serialize access due to read/write dependencies among transactions @@ -317,19 +353,21 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; @@ -339,33 +377,37 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + +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 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -373,33 +415,37 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + +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 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -407,32 +453,36 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + +step rxy2: select * from test_t where val2 = 1; +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 -step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -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; @@ -441,32 +491,36 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + +step rxy2: select * from test_t where val2 = 1; +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 -step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -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; @@ -475,32 +529,36 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) + +step rxy2: select * from test_t where val2 = 1; +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -9 a 1 -10 a 1 -step rxy2: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -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; ERROR: could not serialize access due to read/write dependencies among transactions @@ -509,32 +567,36 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + +step rxy1: select * from test_t where val2 = 1; +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 -step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; @@ -543,32 +605,36 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + +step rxy1: select * from test_t where val2 = 1; +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 -step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; @@ -577,32 +643,36 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + +step rxy1: select * from test_t where val2 = 1; +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 + 9|a | 1 +10|a | 1 +(11 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 -step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -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; ERROR: could not serialize access due to read/write dependencies among transactions @@ -611,31 +681,35 @@ 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; -id val1 val2 +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) + +step c2: COMMIT; +step rxy1: select * from test_t where val2 = 1; +id|val1|val2 +--+----+---- + 0|a | 1 + 1|a | 1 + 2|a | 1 + 3|a | 1 + 4|a | 1 + 5|a | 1 + 6|a | 1 + 7|a | 1 + 8|a | 1 +10|a | 1 +(10 rows) -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -7 a 1 -8 a 1 -10 a 1 -step c2: COMMIT; -step rxy1: select * from test_t where val2 = 1; -id val1 val2 - -0 a 1 -1 a 1 -2 a 1 -3 a 1 -4 a 1 -5 a 1 -6 a 1 -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; diff -Nru postgresql-10-10.17/src/test/isolation/expected/predicate-lock-hot-tuple.out postgresql-10-10.19/src/test/isolation/expected/predicate-lock-hot-tuple.out --- postgresql-10-10.17/src/test/isolation/expected/predicate-lock-hot-tuple.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/predicate-lock-hot-tuple.out 2021-11-08 22:05:38.000000000 +0000 @@ -4,15 +4,19 @@ step b1: BEGIN ISOLATION LEVEL SERIALIZABLE; step b2: BEGIN ISOLATION LEVEL SERIALIZABLE; step r1: SELECT * FROM test WHERE i IN (5, 7) -i t +i|t +-+---------------- +5|apple +7|pear_hot_updated +(2 rows) -5 apple -7 pear_hot_updated step r2: SELECT * FROM test WHERE i IN (5, 7) -i t +i|t +-+---------------- +5|apple +7|pear_hot_updated +(2 rows) -5 apple -7 pear_hot_updated step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7 step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5 step c1: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/prepared-transactions-cic.out postgresql-10-10.19/src/test/isolation/expected/prepared-transactions-cic.out --- postgresql-10-10.17/src/test/isolation/expected/prepared-transactions-cic.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/prepared-transactions-cic.out 2021-11-08 22:05:38.000000000 +0000 @@ -13,6 +13,8 @@ SET enable_bitmapscan to off; SELECT * FROM cic_test WHERE a = 1; -a +a +- +1 +(1 row) -1 diff -Nru postgresql-10-10.17/src/test/isolation/expected/prepared-transactions.out postgresql-10-10.19/src/test/isolation/expected/prepared-transactions.out --- postgresql-10-10.17/src/test/isolation/expected/prepared-transactions.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/prepared-transactions.out 2021-11-08 22:05:38.000000000 +0000 @@ -1,15 +1,23 @@ Parsed test spec with 4 sessions starting permutation: r1 r2 w2 w3 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -22,19 +30,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -47,19 +65,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -72,19 +100,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -97,19 +135,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -122,19 +170,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -147,19 +205,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -172,19 +240,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -197,19 +275,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -222,19 +310,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -247,19 +345,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -272,19 +380,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -297,19 +415,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -322,19 +450,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -347,19 +485,29 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -372,19 +520,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -397,19 +555,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -422,19 +590,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -447,19 +625,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -472,19 +660,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -497,19 +695,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -522,19 +730,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -547,19 +765,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -572,19 +800,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -597,19 +835,29 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -622,19 +870,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -647,19 +905,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -672,19 +940,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -697,19 +975,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -722,19 +1010,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 w3 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -747,19 +1045,29 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 w3 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -772,19 +1080,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 w3 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -797,19 +1115,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 w3 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -822,19 +1150,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 w3 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -847,19 +1185,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 w3 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -872,19 +1220,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 w3 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -897,19 +1255,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 w3 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -922,19 +1290,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 p2 w3 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -947,19 +1325,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p1 p2 w3 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -972,19 +1360,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 w3 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -997,19 +1395,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 w3 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -1022,19 +1430,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 w3 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -1047,19 +1465,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 w3 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -1072,19 +1500,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 w3 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -1097,19 +1535,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 w3 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -1122,19 +1570,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 w3 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -1147,19 +1605,29 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 p1 w3 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -1172,19 +1640,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 w2 p2 p1 w3 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -1197,19 +1675,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 w3 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1222,19 +1710,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 w3 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1247,19 +1745,29 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 w3 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1272,19 +1780,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 w3 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1297,19 +1815,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 w3 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1322,19 +1850,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 w3 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1347,19 +1885,29 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 w3 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1372,19 +1920,29 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 p2 w3 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1397,19 +1955,29 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 r2 p1 w2 p2 w3 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -1422,21 +1990,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -1447,21 +2025,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -1472,21 +2060,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -1497,21 +2095,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -1522,21 +2130,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -1547,21 +2165,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -1572,21 +2200,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -1597,21 +2235,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -1622,21 +2270,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -1647,21 +2305,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -1672,21 +2340,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -1697,21 +2375,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -1722,21 +2410,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -1747,21 +2445,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -1772,21 +2480,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -1797,21 +2515,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -1822,21 +2550,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -1847,21 +2585,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -1872,21 +2620,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -1897,21 +2655,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -1922,21 +2690,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -1947,21 +2725,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -1972,21 +2760,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -1997,21 +2795,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -2022,21 +2830,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2047,21 +2865,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2072,21 +2900,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2097,21 +2935,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2122,21 +2970,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2147,21 +3005,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 r2 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2172,22 +3040,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -2197,22 +3075,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -2222,22 +3110,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -2247,22 +3145,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -2272,22 +3180,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2297,22 +3215,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2322,22 +3250,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -2347,16 +3285,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2370,16 +3316,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2393,16 +3347,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2416,16 +3378,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2439,16 +3409,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2462,16 +3440,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2485,16 +3471,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2508,16 +3502,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2531,16 +3533,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p1 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2554,16 +3564,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2577,16 +3595,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2600,16 +3626,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2623,16 +3657,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2646,16 +3688,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2669,16 +3719,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2692,16 +3750,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2715,16 +3781,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2738,16 +3812,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2761,16 +3843,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2784,16 +3874,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2807,16 +3905,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2830,16 +3936,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2853,16 +3967,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2876,16 +3998,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2899,16 +4029,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 r2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2922,16 +4060,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2945,16 +4091,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2968,16 +4122,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -2991,16 +4153,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3014,16 +4184,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3037,16 +4215,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3060,16 +4246,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3083,16 +4277,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3106,16 +4308,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 p1 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3129,16 +4339,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3152,16 +4370,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3175,16 +4401,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3198,16 +4432,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3221,16 +4463,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3244,16 +4494,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3267,16 +4525,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3290,16 +4556,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3313,16 +4587,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3336,16 +4618,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 w3 p3 c3 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -3359,22 +4649,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -3384,22 +4684,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -3409,22 +4719,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -3434,22 +4754,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -3459,22 +4789,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -3484,22 +4824,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -3509,22 +4859,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -3534,16 +4894,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3557,16 +4925,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3580,16 +4956,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3603,16 +4987,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3626,16 +5018,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3649,16 +5049,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3672,16 +5080,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3695,16 +5111,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3718,16 +5142,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w2 p1 w3 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3741,20 +5173,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3766,20 +5208,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3791,20 +5243,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3816,20 +5278,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3841,20 +5313,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3866,20 +5348,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3891,20 +5383,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -3916,20 +5418,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -3941,20 +5453,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -3966,20 +5488,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -3991,20 +5523,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -4016,20 +5558,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -4041,20 +5593,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -4066,20 +5628,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -4091,20 +5663,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4116,20 +5698,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4141,20 +5733,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4166,20 +5768,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4191,20 +5803,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4216,20 +5838,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4241,20 +5873,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4266,20 +5908,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4291,20 +5943,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4316,20 +5978,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4341,20 +6013,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4366,20 +6048,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4391,20 +6083,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4416,20 +6118,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4441,20 +6153,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4466,20 +6188,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 w2 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -4491,20 +6223,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 w2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -4516,20 +6258,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 w2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -4541,20 +6293,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 w2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -4566,20 +6328,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 w2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -4591,20 +6363,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 w2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -4616,20 +6398,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 w2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -4641,20 +6433,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 w2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -4666,20 +6468,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4691,20 +6503,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4716,20 +6538,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4741,20 +6573,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4766,20 +6608,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4791,20 +6643,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4816,20 +6678,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4841,20 +6713,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4866,20 +6748,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p1 p3 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -4891,20 +6783,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -4916,20 +6818,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -4941,20 +6853,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -4966,20 +6888,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -4991,20 +6923,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5016,20 +6958,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5041,20 +6993,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5066,20 +7028,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5091,20 +7063,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5116,20 +7098,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5141,20 +7133,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5166,20 +7168,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5191,20 +7203,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5216,20 +7238,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5241,20 +7273,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5266,20 +7308,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 w2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -5291,20 +7343,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5316,20 +7378,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5341,20 +7413,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5366,20 +7448,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5391,20 +7483,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5416,20 +7518,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5441,20 +7553,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5466,20 +7588,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5491,20 +7623,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 p1 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -5516,20 +7658,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5541,20 +7693,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5566,20 +7728,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5591,20 +7763,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5616,20 +7798,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5641,20 +7833,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5666,20 +7868,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5691,20 +7903,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5716,20 +7938,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5741,20 +7973,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 r2 p3 c3 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -5766,21 +8008,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -5791,21 +8043,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -5816,21 +8078,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -5841,21 +8113,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -5866,21 +8148,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -5891,21 +8183,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -5916,21 +8218,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -5941,21 +8253,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -5966,21 +8288,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -5991,21 +8323,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -6016,21 +8358,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -6041,21 +8393,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -6066,21 +8428,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -6091,21 +8463,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -6116,21 +8498,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -6141,21 +8533,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -6166,21 +8568,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -6191,21 +8603,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -6216,21 +8638,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -6241,21 +8673,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -6266,21 +8708,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -6291,21 +8743,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -6316,21 +8778,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -6341,21 +8813,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -6366,21 +8848,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6391,21 +8883,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6416,21 +8918,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6441,21 +8953,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6466,21 +8988,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6491,21 +9023,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 r2 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6516,22 +9058,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -6541,22 +9093,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -6566,22 +9128,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -6591,22 +9163,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -6616,22 +9198,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6641,22 +9233,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6666,22 +9268,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -6691,16 +9303,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6714,16 +9334,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6737,16 +9365,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6760,16 +9396,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6783,16 +9427,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6806,16 +9458,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6829,16 +9489,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6852,16 +9520,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6875,16 +9551,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p1 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6898,16 +9582,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6921,16 +9613,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6944,16 +9644,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6967,16 +9675,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -6990,16 +9706,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7013,16 +9737,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7036,16 +9768,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7059,16 +9799,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7082,16 +9830,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7105,16 +9861,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7128,16 +9892,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7151,16 +9923,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7174,16 +9954,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7197,16 +9985,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7220,16 +10016,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7243,16 +10047,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 r2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7266,16 +10078,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7289,16 +10109,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7312,16 +10140,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7335,16 +10171,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7358,16 +10202,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7381,16 +10233,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7404,16 +10264,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7427,16 +10295,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7450,16 +10326,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 p1 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7473,16 +10357,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7496,16 +10388,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7519,16 +10419,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7542,16 +10450,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7565,16 +10481,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7588,16 +10512,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7611,16 +10543,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7634,16 +10574,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7657,16 +10605,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7680,16 +10636,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 w2 p3 c3 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step w2: INSERT INTO test2 VALUES (2); @@ -7703,21 +10667,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 w2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -7728,21 +10702,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 w2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -7753,21 +10737,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 w2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -7778,21 +10772,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 w2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -7803,21 +10807,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 w2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -7828,21 +10842,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 w2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -7853,21 +10877,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 w2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -7878,21 +10912,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -7903,21 +10947,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -7928,21 +10982,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -7953,21 +11017,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -7978,21 +11052,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -8003,21 +11087,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -8028,21 +11122,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -8053,21 +11157,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -8078,21 +11192,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 r2 p3 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -8103,22 +11227,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -8128,22 +11262,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -8153,22 +11297,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -8178,22 +11332,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -8203,22 +11367,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -8228,22 +11402,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -8253,22 +11437,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -8278,16 +11472,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8301,16 +11503,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8324,16 +11534,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8347,16 +11565,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8370,16 +11596,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8393,16 +11627,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8416,16 +11658,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8439,16 +11689,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8462,16 +11720,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 w2 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8485,22 +11751,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -8510,22 +11786,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -8535,22 +11821,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -8560,22 +11856,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -8585,22 +11891,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -8610,22 +11926,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -8635,22 +11961,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -8660,22 +11996,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -8685,22 +12031,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 r2 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; @@ -8710,16 +12066,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8733,16 +12097,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8756,16 +12128,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8779,16 +12159,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8802,16 +12190,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8825,16 +12221,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8848,16 +12252,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8871,16 +12283,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8894,16 +12314,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 w2 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -8917,23 +12345,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -8942,23 +12380,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -8967,23 +12415,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -8992,23 +12450,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -9017,16 +12485,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -9040,16 +12516,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -9063,16 +12547,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -9086,16 +12578,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -9109,16 +12609,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -9126,7 +12634,9 @@ step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9134,16 +12644,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p1 p3 c3 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -9157,21 +12675,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9182,21 +12710,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9207,21 +12745,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9232,21 +12780,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9257,21 +12815,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9282,21 +12850,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9307,21 +12885,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9332,21 +12920,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9357,21 +12955,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9382,21 +12990,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9407,21 +13025,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9432,21 +13060,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9457,21 +13095,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9482,21 +13130,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9507,21 +13165,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9532,21 +13200,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 w2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -9557,21 +13235,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -9582,21 +13270,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -9607,21 +13305,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -9632,21 +13340,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -9657,21 +13375,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -9682,21 +13410,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -9707,21 +13445,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -9732,21 +13480,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -9757,21 +13515,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 p1 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -9782,21 +13550,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -9807,21 +13585,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -9832,21 +13620,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -9857,21 +13655,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -9882,21 +13690,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -9907,21 +13725,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -9932,21 +13760,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -9957,21 +13795,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -9982,21 +13830,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -10007,21 +13865,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 r2 c3 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -10032,16 +13900,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10055,16 +13931,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10078,16 +13962,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10101,16 +13993,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10124,16 +14024,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10147,16 +14055,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10170,16 +14086,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10193,16 +14117,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10216,16 +14148,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10239,16 +14179,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10262,16 +14210,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10285,16 +14241,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10308,16 +14272,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10331,16 +14303,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10354,16 +14334,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10377,16 +14365,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 r2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10400,16 +14396,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10423,16 +14427,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10446,16 +14458,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10469,16 +14489,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10492,16 +14520,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10515,16 +14551,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10538,16 +14582,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10561,16 +14613,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10584,16 +14644,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 p1 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10607,16 +14675,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10630,16 +14706,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10653,16 +14737,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10676,16 +14768,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10699,16 +14799,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10722,16 +14830,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10745,16 +14861,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10768,16 +14892,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10791,16 +14923,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10814,16 +14954,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 w2 c3 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -10837,22 +14985,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -10862,22 +15020,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -10887,22 +15055,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -10912,22 +15090,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -10937,22 +15125,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -10962,22 +15160,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -10987,22 +15195,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -11012,22 +15230,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -11037,22 +15265,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 r2 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; @@ -11062,16 +15300,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11085,16 +15331,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11108,16 +15362,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11131,16 +15393,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11154,16 +15424,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11177,16 +15455,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11200,16 +15486,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11223,16 +15517,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11246,16 +15548,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 w2 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11269,23 +15579,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11294,23 +15614,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11319,23 +15649,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11344,23 +15684,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -11369,16 +15719,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11392,16 +15750,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11415,16 +15781,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11438,16 +15812,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11461,16 +15843,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11478,7 +15868,9 @@ step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11486,16 +15878,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 p1 c3 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11509,22 +15909,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11534,22 +15944,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11559,22 +15979,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11584,22 +16014,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11609,22 +16049,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11634,22 +16084,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -11659,22 +16119,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -11684,22 +16154,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -11709,22 +16189,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -11734,22 +16224,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 r2 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; @@ -11759,16 +16259,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11782,16 +16290,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11805,16 +16321,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11828,16 +16352,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11851,16 +16383,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11874,16 +16414,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11897,16 +16445,24 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11920,16 +16476,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11943,16 +16507,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11966,16 +16538,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 w2 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -11989,23 +16569,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -12014,23 +16604,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -12039,23 +16639,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -12064,23 +16674,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12089,16 +16709,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -12112,16 +16740,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -12135,16 +16771,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -12158,16 +16802,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -12181,16 +16833,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -12198,7 +16858,9 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -12206,16 +16868,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 w3 p3 c3 p1 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -12229,20 +16899,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 w3 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -12254,20 +16934,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 w3 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -12279,20 +16969,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 w3 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -12304,20 +17004,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 w3 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -12329,20 +17039,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 w3 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -12354,20 +17074,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 w3 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -12379,20 +17109,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 w3 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step w3: INSERT INTO test3 VALUES (3); @@ -12404,20 +17144,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 p2 w3 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -12429,20 +17179,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 r2 w2 p2 w3 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -12454,22 +17214,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -12479,22 +17249,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -12504,22 +17284,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -12529,22 +17319,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -12554,22 +17354,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -12579,22 +17389,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -12604,22 +17424,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -12629,16 +17459,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12652,16 +17490,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12675,16 +17521,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12698,16 +17552,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12721,16 +17583,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12744,16 +17614,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12767,16 +17645,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12790,16 +17676,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12813,16 +17707,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w2 w3 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -12836,21 +17738,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 w2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -12861,21 +17773,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 w2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -12886,21 +17808,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 w2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -12911,21 +17843,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 w2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -12936,21 +17878,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 w2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -12961,21 +17913,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 w2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -12986,21 +17948,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 w2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -13011,21 +17983,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -13036,21 +18018,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -13061,21 +18053,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -13086,21 +18088,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -13111,21 +18123,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -13136,21 +18158,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -13161,21 +18193,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -13186,21 +18228,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -13211,21 +18263,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 r2 p3 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -13236,22 +18298,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -13261,22 +18333,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -13286,22 +18368,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -13311,22 +18403,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -13336,22 +18438,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -13361,22 +18473,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -13386,22 +18508,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -13411,16 +18543,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13434,16 +18574,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13457,16 +18605,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13480,16 +18636,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13503,16 +18667,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13526,16 +18698,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13549,16 +18729,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13572,16 +18760,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13595,16 +18791,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 w2 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13618,22 +18822,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -13643,22 +18857,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -13668,22 +18892,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -13693,22 +18927,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -13718,22 +18962,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -13743,22 +18997,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -13768,22 +19032,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -13793,22 +19067,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -13818,22 +19102,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 r2 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; @@ -13843,16 +19137,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13866,16 +19168,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13889,16 +19199,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13912,16 +19230,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13935,16 +19261,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13958,16 +19292,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -13981,16 +19323,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14004,16 +19354,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14027,16 +19385,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 w2 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14050,23 +19416,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -14075,23 +19451,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -14100,23 +19486,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -14125,23 +19521,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -14150,16 +19556,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14173,16 +19587,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14196,16 +19618,24 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14219,16 +19649,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14242,16 +19680,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14259,7 +19705,9 @@ step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -14267,16 +19715,24 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: r1 p1 w3 p3 c3 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -14290,20 +19746,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -14315,20 +19781,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -14340,20 +19816,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -14365,20 +19851,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -14390,20 +19886,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -14415,20 +19921,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -14440,20 +19956,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -14465,20 +19991,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -14490,20 +20026,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -14515,20 +20061,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -14540,20 +20096,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -14565,20 +20131,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -14590,20 +20166,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -14615,20 +20201,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -14640,20 +20236,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14665,20 +20271,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14690,20 +20306,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14715,20 +20341,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14740,20 +20376,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14765,20 +20411,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14790,20 +20446,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14815,20 +20481,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14840,20 +20516,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14865,20 +20551,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14890,20 +20586,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14915,20 +20621,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14940,20 +20656,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14965,20 +20691,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -14990,20 +20726,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -15015,20 +20761,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 w3 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -15040,20 +20796,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 w3 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -15065,20 +20831,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 w3 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -15090,20 +20866,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 w3 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -15115,20 +20901,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 w3 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -15140,20 +20936,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 w3 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -15165,20 +20971,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 w3 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -15190,20 +21006,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 w3 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -15215,20 +21041,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 p2 w3 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -15240,20 +21076,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p1 p2 w3 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -15265,20 +21111,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 w3 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -15290,20 +21146,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 w3 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -15315,20 +21181,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 w3 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -15340,20 +21216,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 w3 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -15365,20 +21251,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 w3 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -15390,20 +21286,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 w3 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -15415,20 +21321,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 w3 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -15440,20 +21356,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 p1 w3 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -15465,20 +21391,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 r2 p2 p1 w3 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -15490,21 +21426,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -15515,21 +21461,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -15540,21 +21496,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -15565,21 +21531,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -15590,21 +21566,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -15615,21 +21601,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -15640,21 +21636,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -15665,21 +21671,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -15690,21 +21706,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -15715,21 +21741,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -15740,21 +21776,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -15765,21 +21811,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -15790,21 +21846,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -15815,21 +21881,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -15840,21 +21916,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -15865,21 +21951,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -15890,21 +21986,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -15915,21 +22021,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -15940,21 +22056,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -15965,21 +22091,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -15990,21 +22126,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -16015,21 +22161,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -16040,21 +22196,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -16065,21 +22231,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -16090,21 +22266,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16115,21 +22301,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16140,21 +22336,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16165,21 +22371,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16190,21 +22406,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16215,21 +22441,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 r2 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16240,22 +22476,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -16265,22 +22511,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -16290,22 +22546,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -16315,22 +22581,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -16340,22 +22616,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16365,22 +22651,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16390,22 +22686,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -16415,17 +22721,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16438,17 +22752,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16461,17 +22783,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16484,17 +22814,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16507,17 +22845,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16530,17 +22876,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16553,17 +22907,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16576,17 +22938,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16599,17 +22969,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p1 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p1: PREPARE TRANSACTION 's1'; @@ -16622,17 +23000,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16645,17 +23031,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16668,17 +23062,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16691,17 +23093,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16714,17 +23124,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16737,17 +23155,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16760,17 +23186,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16783,17 +23217,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16806,17 +23248,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16829,17 +23279,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16852,17 +23310,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16875,17 +23341,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16898,17 +23372,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16921,17 +23403,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16944,17 +23434,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16967,17 +23465,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 r2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -16990,17 +23496,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17013,17 +23527,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17036,17 +23558,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17059,17 +23589,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17082,17 +23620,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17105,17 +23651,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17128,17 +23682,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17151,17 +23713,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17174,17 +23744,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 p1 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17197,17 +23775,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17220,17 +23806,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17243,17 +23837,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17266,17 +23868,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17289,17 +23899,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17312,17 +23930,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17335,17 +23961,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17358,17 +23992,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17381,17 +24023,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17404,17 +24054,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 w3 p3 c3 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17427,21 +24085,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 w3 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -17452,21 +24120,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 w3 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p2: PREPARE TRANSACTION 's2'; @@ -17477,21 +24155,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 w3 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17502,21 +24190,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 w3 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17527,21 +24225,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 w3 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17552,21 +24260,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 w3 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17577,21 +24295,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 w3 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; @@ -17602,21 +24330,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 p2 w3 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -17627,21 +24365,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 r2 p2 w3 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step w3: INSERT INTO test3 VALUES (3); @@ -17652,22 +24400,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -17677,22 +24435,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -17702,22 +24470,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -17727,22 +24505,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -17752,22 +24540,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -17777,22 +24575,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -17802,22 +24610,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -17827,17 +24645,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -17850,17 +24676,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -17873,17 +24707,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -17896,17 +24738,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -17919,17 +24769,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -17942,17 +24800,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -17965,17 +24831,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -17988,17 +24862,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -18011,17 +24893,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w2 r1 p1 w3 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w3: INSERT INTO test3 VALUES (3); @@ -18034,20 +24924,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -18059,20 +24959,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -18084,20 +24994,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -18109,20 +25029,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -18134,20 +25064,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -18159,20 +25099,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -18184,20 +25134,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -18209,20 +25169,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -18234,20 +25204,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -18259,20 +25239,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -18284,20 +25274,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -18309,20 +25309,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -18334,20 +25344,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -18359,20 +25379,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -18384,20 +25414,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18409,20 +25449,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18434,20 +25484,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18459,20 +25519,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18484,20 +25554,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18509,20 +25589,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18534,20 +25624,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18559,20 +25659,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18584,20 +25694,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18609,20 +25729,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18634,20 +25764,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18659,20 +25799,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18684,20 +25834,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18709,20 +25869,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18734,20 +25904,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18759,20 +25939,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 w2 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -18784,20 +25974,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 w2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -18809,20 +26009,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 w2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -18834,20 +26044,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 w2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -18859,20 +26079,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 w2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -18884,20 +26114,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 w2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -18909,20 +26149,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 w2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -18934,20 +26184,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 w2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -18959,20 +26219,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -18984,20 +26254,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -19009,20 +26289,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -19034,20 +26324,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -19059,20 +26359,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -19084,20 +26394,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -19109,20 +26429,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -19134,20 +26464,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -19159,20 +26499,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p1 p3 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -19184,20 +26534,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19209,20 +26569,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19234,20 +26604,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19259,20 +26639,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19284,20 +26674,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19309,20 +26709,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19334,20 +26744,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19359,20 +26779,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19384,20 +26814,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19409,20 +26849,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19434,20 +26884,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19459,20 +26919,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19484,20 +26954,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19509,20 +26989,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19534,20 +27024,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19559,20 +27059,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 w2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -19584,20 +27094,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19609,20 +27129,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19634,20 +27164,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19659,20 +27199,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19684,20 +27234,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19709,20 +27269,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19734,20 +27304,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19759,20 +27339,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19784,20 +27374,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 p1 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -19809,20 +27409,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -19834,20 +27444,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -19859,20 +27479,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -19884,20 +27514,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -19909,20 +27549,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -19934,20 +27584,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -19959,20 +27619,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -19984,20 +27654,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20009,20 +27689,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20034,20 +27724,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 r2 p3 c3 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20059,21 +27759,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -20084,21 +27794,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p2: PREPARE TRANSACTION 's2'; @@ -20109,21 +27829,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -20134,21 +27864,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -20159,21 +27899,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -20184,21 +27934,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -20209,21 +27969,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -20234,21 +28004,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -20259,21 +28039,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p1: PREPARE TRANSACTION 's1'; @@ -20284,21 +28074,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -20309,21 +28109,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -20334,21 +28144,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -20359,21 +28179,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -20384,21 +28214,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -20409,21 +28249,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -20434,21 +28284,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -20459,21 +28319,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -20484,21 +28354,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -20509,21 +28389,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -20534,21 +28424,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -20559,21 +28459,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -20584,21 +28494,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -20609,21 +28529,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -20634,21 +28564,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -20659,21 +28599,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20684,21 +28634,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20709,21 +28669,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20734,21 +28704,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20759,21 +28739,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20784,21 +28774,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 r2 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20809,22 +28809,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -20834,22 +28844,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -20859,22 +28879,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -20884,22 +28914,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -20909,22 +28949,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20934,22 +28984,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20959,22 +29019,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -20984,17 +29054,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21007,17 +29085,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21030,17 +29116,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21053,17 +29147,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21076,17 +29178,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21099,17 +29209,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21122,17 +29240,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21145,17 +29271,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21168,17 +29302,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p1 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -21191,17 +29333,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21214,17 +29364,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21237,17 +29395,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21260,17 +29426,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21283,17 +29457,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21306,17 +29488,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21329,17 +29519,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21352,17 +29550,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21375,17 +29581,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21398,17 +29612,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21421,17 +29643,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21444,17 +29674,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21467,17 +29705,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21490,17 +29736,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21513,17 +29767,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21536,17 +29798,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 r2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21559,17 +29829,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21582,17 +29860,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21605,17 +29891,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21628,17 +29922,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21651,17 +29953,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21674,17 +29984,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21697,17 +30015,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21720,17 +30046,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21743,17 +30077,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 p1 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21766,17 +30108,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21789,17 +30139,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21812,17 +30170,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21835,17 +30201,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21858,17 +30232,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21881,17 +30263,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21904,17 +30294,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21927,17 +30325,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21950,17 +30356,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21973,17 +30387,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 w2 p3 c3 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -21996,21 +30418,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 w2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -22021,21 +30453,31 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 w2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -22046,21 +30488,31 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 w2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -22071,21 +30523,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 w2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -22096,21 +30558,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 w2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -22121,21 +30593,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 w2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -22146,21 +30628,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 w2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -22171,21 +30663,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -22196,21 +30698,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -22221,21 +30733,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -22246,21 +30768,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -22271,21 +30803,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -22296,21 +30838,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -22321,21 +30873,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -22346,21 +30908,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -22371,21 +30943,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 r2 p3 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -22396,22 +30978,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 r2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -22421,22 +31013,32 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 r2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p2: PREPARE TRANSACTION 's2'; step p3: PREPARE TRANSACTION 's3'; @@ -22446,22 +31048,32 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 r2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -22471,22 +31083,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 r2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p2: PREPARE TRANSACTION 's2'; @@ -22496,22 +31118,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 r2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -22521,22 +31153,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 r2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -22546,22 +31188,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 r2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -22571,17 +31223,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22594,17 +31254,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22617,17 +31285,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22640,17 +31316,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22663,17 +31347,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22686,17 +31378,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22709,17 +31409,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22732,17 +31440,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22755,17 +31471,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 w2 p3 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -22778,22 +31502,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -22803,22 +31537,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -22828,22 +31572,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -22853,22 +31607,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -22878,22 +31642,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -22903,22 +31677,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -22928,22 +31712,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -22953,22 +31747,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -22978,22 +31782,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 r2 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; @@ -23003,17 +31817,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23026,17 +31848,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23049,17 +31879,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23072,17 +31910,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23095,17 +31941,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23118,17 +31972,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23141,17 +32003,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23164,17 +32034,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23187,17 +32065,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 w2 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23210,23 +32096,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23235,23 +32131,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23260,23 +32166,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23285,23 +32201,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -23310,17 +32236,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23333,17 +32267,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23356,17 +32298,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23379,17 +32329,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23402,24 +32360,34 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23427,17 +32395,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p1 p3 c3 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -23450,21 +32426,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23475,21 +32461,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23500,21 +32496,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23525,21 +32531,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23550,21 +32566,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23575,21 +32601,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23600,21 +32636,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23625,21 +32671,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23650,21 +32706,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23675,21 +32741,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23700,21 +32776,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23725,21 +32811,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23750,21 +32846,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23775,21 +32881,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23800,21 +32916,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23825,21 +32951,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 w2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -23850,21 +32986,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -23875,21 +33021,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -23900,21 +33056,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -23925,21 +33091,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -23950,21 +33126,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -23975,21 +33161,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -24000,21 +33196,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -24025,21 +33231,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -24050,21 +33266,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 p1 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -24075,21 +33301,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24100,21 +33336,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24125,21 +33371,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24150,21 +33406,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24175,21 +33441,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24200,21 +33476,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24225,21 +33511,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -24250,21 +33546,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -24275,21 +33581,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -24300,21 +33616,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 r2 c3 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -24325,17 +33651,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24348,17 +33682,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24371,17 +33713,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24394,17 +33744,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24417,17 +33775,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24440,17 +33806,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24463,17 +33837,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24486,17 +33868,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24509,17 +33899,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24532,17 +33930,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24555,17 +33961,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24578,17 +33992,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24601,17 +34023,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24624,17 +34054,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24647,17 +34085,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24670,17 +34116,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 r2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24693,17 +34147,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24716,17 +34178,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24739,17 +34209,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24762,17 +34240,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24785,17 +34271,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24808,17 +34302,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24831,17 +34333,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24854,17 +34364,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24877,17 +34395,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 p1 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24900,17 +34426,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24923,17 +34457,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24946,17 +34488,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24969,17 +34519,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -24992,17 +34550,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25015,17 +34581,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25038,17 +34612,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25061,17 +34643,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25084,17 +34674,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25107,17 +34705,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 w2 c3 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25130,22 +34736,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25155,22 +34771,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25180,22 +34806,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25205,22 +34841,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25230,22 +34876,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25255,22 +34911,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25280,22 +34946,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25305,22 +34981,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -25330,22 +35016,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 r2 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; @@ -25355,17 +35051,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25378,17 +35082,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25401,17 +35113,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25424,17 +35144,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25447,17 +35175,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25470,17 +35206,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25493,17 +35237,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25516,17 +35268,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25539,17 +35299,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 w2 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25562,23 +35330,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25587,23 +35365,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25612,23 +35400,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25637,23 +35435,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -25662,17 +35470,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25685,17 +35501,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25708,17 +35532,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25731,17 +35563,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25754,24 +35594,34 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25779,17 +35629,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 p1 c3 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -25802,22 +35660,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25827,22 +35695,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25852,22 +35730,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25877,22 +35765,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25902,22 +35800,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25927,22 +35835,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -25952,22 +35870,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -25977,22 +35905,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -26002,22 +35940,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -26027,22 +35975,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 r2 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; @@ -26052,17 +36010,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26075,17 +36041,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26098,17 +36072,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26121,17 +36103,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26144,17 +36134,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26167,17 +36165,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26190,17 +36196,25 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26213,17 +36227,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26236,17 +36258,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26259,17 +36289,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 w2 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26282,23 +36320,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -26307,23 +36355,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -26332,23 +36390,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -26357,23 +36425,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -26382,17 +36460,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26405,17 +36491,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26428,17 +36522,25 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26451,17 +36553,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26474,24 +36584,34 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) 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 +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -26499,17 +36619,25 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r1 p3 c3 p1 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -26522,20 +36650,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p1 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -26547,20 +36685,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p1 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -26572,20 +36720,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p1 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -26597,20 +36755,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p1 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -26622,20 +36790,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p1 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -26647,20 +36825,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p1 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -26672,20 +36860,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p1 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -26697,20 +36895,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p2 p1 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -26722,20 +36930,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p2 p1 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -26747,20 +36965,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p2 p3 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -26772,20 +37000,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p2 p3 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -26797,20 +37035,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p2 p3 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -26822,20 +37070,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p2 p3 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -26847,20 +37105,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p2 p3 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p2: PREPARE TRANSACTION 's2'; @@ -26872,20 +37140,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -26897,20 +37175,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -26922,20 +37210,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -26947,20 +37245,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -26972,20 +37280,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -26997,20 +37315,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27022,20 +37350,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27047,20 +37385,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27072,20 +37420,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27097,20 +37455,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27122,20 +37490,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27147,20 +37525,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27172,20 +37560,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27197,20 +37595,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27222,20 +37630,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27247,20 +37665,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 w2 p3 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p3: PREPARE TRANSACTION 's3'; @@ -27272,20 +37700,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 w2 p2 p3 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -27297,20 +37735,30 @@ step c1: COMMIT PREPARED 's1'; step c2: COMMIT PREPARED 's2'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 w2 p2 p3 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -27322,20 +37770,30 @@ step c2: COMMIT PREPARED 's2'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 w2 p3 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -27347,20 +37805,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 w2 p3 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -27372,20 +37840,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 w2 p3 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -27397,20 +37875,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 w2 p3 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -27422,20 +37910,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 w2 p3 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -27447,20 +37945,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27472,20 +37980,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27497,20 +38015,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27522,20 +38050,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27547,20 +38085,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27572,20 +38120,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27597,20 +38155,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27622,20 +38190,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27647,20 +38225,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p1 p3 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step p3: PREPARE TRANSACTION 's3'; @@ -27672,20 +38260,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27697,20 +38295,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27722,20 +38330,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27747,20 +38365,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27772,20 +38400,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27797,20 +38435,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27822,20 +38470,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27847,20 +38505,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27872,20 +38540,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27897,20 +38575,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27922,20 +38610,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27947,20 +38645,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27972,20 +38680,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -27997,20 +38715,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -28022,20 +38750,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -28047,20 +38785,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 w2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -28072,20 +38820,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28097,20 +38855,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28122,20 +38890,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28147,20 +38925,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28172,20 +38960,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28197,20 +38995,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28222,20 +39030,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28247,20 +39065,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28272,20 +39100,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 p1 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -28297,20 +39135,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28322,20 +39170,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28347,20 +39205,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28372,20 +39240,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28397,20 +39275,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28422,20 +39310,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28447,20 +39345,30 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28472,20 +39380,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28497,20 +39415,30 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28522,20 +39450,30 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 r1 p3 c3 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; @@ -28547,21 +39485,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28572,21 +39520,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28597,21 +39555,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28622,21 +39590,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28647,21 +39625,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28672,21 +39660,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28697,21 +39695,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28722,21 +39730,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28747,21 +39765,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28772,21 +39800,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28797,21 +39835,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28822,21 +39870,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28847,21 +39905,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28872,21 +39940,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28897,21 +39975,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28922,21 +40010,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 w2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -28947,21 +40045,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -28972,21 +40080,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -28997,21 +40115,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -29022,21 +40150,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -29047,21 +40185,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -29072,21 +40220,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -29097,21 +40255,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -29122,21 +40290,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -29147,21 +40325,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 p1 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -29172,21 +40360,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -29197,21 +40395,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -29222,21 +40430,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -29247,21 +40465,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -29272,21 +40500,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -29297,21 +40535,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -29322,21 +40570,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -29347,21 +40605,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -29372,21 +40640,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -29397,21 +40675,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 r1 c3 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -29422,22 +40710,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29447,22 +40745,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29472,22 +40780,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29497,22 +40815,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29522,22 +40850,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29547,22 +40885,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29572,22 +40920,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -29597,22 +40955,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -29622,22 +40990,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -29647,22 +41025,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 r2 p3 c3 r1 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; @@ -29672,21 +41060,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29697,21 +41095,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29722,21 +41130,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29747,21 +41165,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29772,21 +41200,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29797,21 +41235,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29822,21 +41270,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29847,21 +41305,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29872,21 +41340,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29897,21 +41375,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29922,21 +41410,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29947,21 +41445,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29972,21 +41480,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -29997,21 +41515,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -30022,21 +41550,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -30047,21 +41585,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 w2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -30072,21 +41620,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -30097,21 +41655,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -30122,21 +41690,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -30147,21 +41725,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -30172,21 +41760,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -30197,21 +41795,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -30222,21 +41830,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -30247,21 +41865,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -30272,21 +41900,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 p1 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -30297,21 +41935,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -30322,21 +41970,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -30347,21 +42005,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -30372,21 +42040,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -30397,21 +42075,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -30422,21 +42110,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -30447,21 +42145,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -30472,21 +42180,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -30497,21 +42215,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -30522,21 +42250,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 r2 c3 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -30547,18 +42285,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30570,18 +42316,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30593,18 +42347,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30616,18 +42378,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30639,18 +42409,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30662,18 +42440,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30685,18 +42471,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30708,18 +42502,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30731,18 +42533,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30754,18 +42564,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30777,18 +42595,26 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30800,18 +42626,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30823,18 +42657,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30846,18 +42688,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30869,18 +42719,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30892,18 +42750,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 r2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -30915,18 +42781,26 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -30938,18 +42812,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -30961,18 +42843,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -30984,18 +42874,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -31007,18 +42905,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -31030,18 +42936,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -31053,18 +42967,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -31076,18 +42998,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -31099,18 +43029,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 p1 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -31122,18 +43060,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31145,18 +43091,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31168,18 +43122,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31191,18 +43153,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31214,18 +43184,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31237,18 +43215,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31260,18 +43246,26 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31283,18 +43277,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31306,18 +43308,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31329,18 +43339,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 w2 c3 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step c3: COMMIT PREPARED 's3'; @@ -31352,22 +43370,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -31377,22 +43405,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -31402,22 +43440,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -31427,22 +43475,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -31452,22 +43510,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -31477,22 +43545,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -31502,22 +43580,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -31527,22 +43615,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -31552,22 +43650,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 r2 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; @@ -31577,18 +43685,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 r2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31600,18 +43716,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 r2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31623,18 +43747,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 r2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31646,18 +43778,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 r2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31669,18 +43809,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 r2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31692,18 +43840,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 c3 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31715,18 +43871,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 c3 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31738,18 +43902,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 c3 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31761,18 +43933,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 w2 c3 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31784,23 +43964,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -31809,23 +43999,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -31834,23 +44034,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -31859,23 +44069,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -31884,18 +44104,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -31907,18 +44135,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -31930,18 +44166,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -31953,18 +44197,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -31976,24 +44228,34 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; step c1: COMMIT PREPARED 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32001,18 +44263,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 p1 c3 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -32024,22 +44294,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32049,22 +44329,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32074,22 +44364,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32099,22 +44399,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32124,22 +44434,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32149,22 +44469,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32174,22 +44504,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -32199,22 +44539,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -32224,22 +44574,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -32249,22 +44609,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 r2 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; @@ -32274,18 +44644,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32297,18 +44675,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32320,18 +44706,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32343,18 +44737,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32366,18 +44768,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32389,18 +44799,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32412,18 +44830,26 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32435,18 +44861,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32458,18 +44892,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32481,18 +44923,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 w2 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -32504,23 +44954,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32529,23 +44989,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32554,23 +45024,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32579,23 +45059,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -32604,18 +45094,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -32627,18 +45125,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -32650,18 +45156,26 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -32673,18 +45187,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -32696,24 +45218,34 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32721,18 +45253,26 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r1 c3 p1 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -32744,21 +45284,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p1 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32769,21 +45319,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p1 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32794,21 +45354,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p1 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32819,21 +45389,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p1 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32844,21 +45424,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p1 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32869,21 +45459,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p2 p1 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32894,21 +45494,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p2 p1 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32919,21 +45529,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p2 c3 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32944,21 +45564,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p2 c3 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32969,21 +45599,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 p2 c3 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -32994,21 +45634,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 c3 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33019,21 +45669,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 c3 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33044,21 +45704,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 c3 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33069,21 +45739,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 c3 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33094,21 +45774,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 c3 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33119,21 +45809,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 w2 c3 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33144,21 +45844,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 w2 p2 c3 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -33169,21 +45879,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 w2 p2 c3 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -33194,21 +45914,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 w2 c3 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -33219,21 +45949,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 w2 c3 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -33244,21 +45984,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 w2 c3 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -33269,21 +46019,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 c3 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -33294,21 +46054,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 c3 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -33319,21 +46089,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 c3 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -33344,21 +46124,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 p1 c3 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c3: COMMIT PREPARED 's3'; @@ -33369,21 +46159,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -33394,21 +46194,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -33419,21 +46229,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -33444,21 +46264,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -33469,21 +46299,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -33494,21 +46334,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step w2: INSERT INTO test2 VALUES (2); @@ -33519,21 +46369,31 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -33544,21 +46404,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -33569,21 +46439,31 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -33594,21 +46474,31 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 r1 c3 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step c3: COMMIT PREPARED 's3'; step p1: PREPARE TRANSACTION 's1'; @@ -33619,22 +46509,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33644,22 +46544,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33669,22 +46579,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33694,22 +46614,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33719,22 +46649,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33744,22 +46684,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33769,22 +46719,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -33794,22 +46754,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -33819,22 +46789,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -33844,22 +46824,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 r2 c3 r1 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; @@ -33869,22 +46859,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33894,22 +46894,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33919,22 +46929,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33944,22 +46964,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33969,22 +46999,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -33994,22 +47034,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34019,22 +47069,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34044,22 +47104,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34069,22 +47139,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34094,22 +47174,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 r2 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step r2: SELECT * FROM test3; -c +c +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; @@ -34119,19 +47209,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 r2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -34142,19 +47240,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 r2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -34165,19 +47271,27 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 r2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -34188,19 +47302,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 r2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -34211,19 +47333,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 r2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -34234,19 +47364,27 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 r2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step r2: SELECT * FROM test3; @@ -34257,19 +47395,27 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 p1 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -34280,19 +47426,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 p1 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -34303,19 +47457,27 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 p1 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -34326,19 +47488,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 w2 p1 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); step p1: PREPARE TRANSACTION 's1'; @@ -34349,23 +47519,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 r2 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34374,23 +47554,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 r2 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34399,23 +47589,33 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 r2 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34424,23 +47624,33 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 r2 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step c1: COMMIT PREPARED 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34449,19 +47659,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 w2 r2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34472,19 +47690,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 w2 r2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34495,19 +47721,27 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 w2 r2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34518,19 +47752,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 w2 c1 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34541,24 +47783,34 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 c1 r2 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34566,19 +47818,27 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r1 p1 c1 w2 r2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; @@ -34589,22 +47849,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 w2 p1 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34614,22 +47884,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 w2 p1 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34639,22 +47919,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 w2 p1 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34664,22 +47954,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 w2 p2 p1 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34689,22 +47989,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 w2 p2 p1 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34714,22 +48024,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 w2 p2 c2 p1 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step w2: INSERT INTO test2 VALUES (2); ERROR: could not serialize access due to read/write dependencies among transactions @@ -34739,22 +48059,32 @@ step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 p1 w2 p2 c1 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34764,22 +48094,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 p1 w2 p2 c2 c1 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34789,22 +48129,32 @@ ERROR: prepared transaction with identifier "s2" does not exist step c1: COMMIT PREPARED 's1'; step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 p1 w2 c1 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step w2: INSERT INTO test2 VALUES (2); @@ -34814,22 +48164,32 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) starting permutation: w3 p3 c3 r2 r1 p1 c1 w2 p2 c2 check -a +a +- +(0 rows) -a +a +- +(0 rows) step w3: INSERT INTO test3 VALUES (3); step p3: PREPARE TRANSACTION 's3'; step c3: COMMIT PREPARED 's3'; step r2: SELECT * FROM test3; -c +c +- +(0 rows) step r1: SELECT * FROM test2; -b +b +- +(0 rows) step p1: PREPARE TRANSACTION 's1'; step c1: COMMIT PREPARED 's1'; @@ -34839,5 +48199,7 @@ step c2: COMMIT PREPARED 's2'; ERROR: prepared transaction with identifier "s2" does not exist step check: SELECT * FROM test1,test2,test3; -a b c +a|b|c +-+-+- +(0 rows) diff -Nru postgresql-10-10.17/src/test/isolation/expected/project-manager.out postgresql-10-10.19/src/test/isolation/expected/project-manager.out --- postgresql-10-10.17/src/test/isolation/expected/project-manager.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/project-manager.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,28 +2,36 @@ starting permutation: rx1 wy1 c1 ry2 wx2 c2 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -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 +count +----- + 1 +(1 row) -1 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; -count +count +----- + 1 +(1 row) -1 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 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 @@ -31,14 +39,18 @@ starting permutation: rx1 wy1 ry2 wx2 c1 c2 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -1 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; step c1: COMMIT; step c2: COMMIT; @@ -46,14 +58,18 @@ starting permutation: rx1 wy1 ry2 wx2 c2 c1 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -1 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; step c2: COMMIT; step c1: COMMIT; @@ -61,13 +77,17 @@ starting permutation: rx1 ry2 wy1 c1 wx2 c2 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; @@ -76,13 +96,17 @@ starting permutation: rx1 ry2 wy1 wx2 c1 c2 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; @@ -91,13 +115,17 @@ starting permutation: rx1 ry2 wy1 wx2 c2 c1 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; @@ -106,13 +134,17 @@ starting permutation: rx1 ry2 wx2 wy1 c1 c2 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; @@ -121,13 +153,17 @@ starting permutation: rx1 ry2 wx2 wy1 c2 c1 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; @@ -136,13 +172,17 @@ starting permutation: rx1 ry2 wx2 c2 wy1 c1 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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); @@ -151,13 +191,17 @@ starting permutation: ry2 rx1 wy1 c1 wx2 c2 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -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; @@ -166,13 +210,17 @@ starting permutation: ry2 rx1 wy1 wx2 c1 c2 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -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; @@ -181,13 +229,17 @@ starting permutation: ry2 rx1 wy1 wx2 c2 c1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -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; @@ -196,13 +248,17 @@ starting permutation: ry2 rx1 wx2 wy1 c1 c2 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -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; @@ -211,13 +267,17 @@ starting permutation: ry2 rx1 wx2 wy1 c2 c1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -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; @@ -226,13 +286,17 @@ starting permutation: ry2 rx1 wx2 c2 wy1 c1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -0 step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; -count +count +----- + 1 +(1 row) -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); @@ -241,14 +305,18 @@ starting permutation: ry2 wx2 rx1 wy1 c1 c2 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; -count +count +----- + 1 +(1 row) -1 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); step c1: COMMIT; step c2: COMMIT; @@ -256,14 +324,18 @@ starting permutation: ry2 wx2 rx1 wy1 c2 c1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; -count +count +----- + 1 +(1 row) -1 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); step c2: COMMIT; step c1: COMMIT; @@ -271,14 +343,18 @@ starting permutation: ry2 wx2 rx1 c2 wy1 c1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; -count +count +----- + 1 +(1 row) -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 @@ -286,14 +362,18 @@ starting permutation: ry2 wx2 c2 rx1 wy1 c1 step ry2: SELECT count(*) FROM project WHERE project_manager = 1; -count +count +----- + 0 +(1 row) -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; -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); step c1: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/propagate-lock-delete.out postgresql-10-10.19/src/test/isolation/expected/propagate-lock-delete.out --- postgresql-10-10.17/src/test/isolation/expected/propagate-lock-delete.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/propagate-lock-delete.out 2021-11-08 22:05:38.000000000 +0000 @@ -11,7 +11,7 @@ step s1c: COMMIT; step s2c: COMMIT; step s3d: <... completed> -error in steps s2c s3d: ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" +ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" step s3c: COMMIT; starting permutation: s1b s1l s2b s2l s3b s3u s3svu s3d s1c s2c s3c @@ -26,7 +26,7 @@ step s1c: COMMIT; step s2c: COMMIT; step s3d: <... completed> -error in steps s2c s3d: ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" +ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" step s3c: COMMIT; starting permutation: s1b s1l s2b s2l s3b s3u2 s3d s1c s2c s3c @@ -40,7 +40,7 @@ step s1c: COMMIT; step s2c: COMMIT; step s3d: <... completed> -error in steps s2c s3d: ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" +ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" step s3c: COMMIT; starting permutation: s1b s1l s2b s2l s3b s3u2 s3svu s3d s1c s2c s3c @@ -55,7 +55,7 @@ step s1c: COMMIT; step s2c: COMMIT; step s3d: <... completed> -error in steps s2c s3d: ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" +ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" step s3c: COMMIT; starting permutation: s1b s1l s3b s3u s3d s1c s3c @@ -66,7 +66,7 @@ step s3d: DELETE FROM parent; step s1c: COMMIT; step s3d: <... completed> -error in steps s1c s3d: ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" +ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" step s3c: COMMIT; starting permutation: s1b s1l s3b s3u s3svu s3d s1c s3c @@ -78,7 +78,7 @@ step s3d: DELETE FROM parent; step s1c: COMMIT; step s3d: <... completed> -error in steps s1c s3d: ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" +ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" step s3c: COMMIT; starting permutation: s1b s1l s3b s3u2 s3d s1c s3c @@ -89,7 +89,7 @@ step s3d: DELETE FROM parent; step s1c: COMMIT; step s3d: <... completed> -error in steps s1c s3d: ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" +ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" step s3c: COMMIT; starting permutation: s1b s1l s3b s3u2 s3svu s3d s1c s3c @@ -101,5 +101,5 @@ step s3d: DELETE FROM parent; step s1c: COMMIT; step s3d: <... completed> -error in steps s1c s3d: ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" +ERROR: update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child" step s3c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/read-only-anomaly-2.out postgresql-10-10.19/src/test/isolation/expected/read-only-anomaly-2.out --- postgresql-10-10.17/src/test/isolation/expected/read-only-anomaly-2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/read-only-anomaly-2.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,17 +2,23 @@ starting permutation: s2rx s2ry s1ry s1wy s1c s2wx s2c s3c step s2rx: SELECT balance FROM bank_account WHERE id = 'X'; -balance +balance +------- + 0 +(1 row) -0 step s2ry: SELECT balance FROM bank_account WHERE id = 'Y'; -balance +balance +------- + 0 +(1 row) -0 step s1ry: SELECT balance FROM bank_account WHERE id = 'Y'; -balance +balance +------- + 0 +(1 row) -0 step s1wy: UPDATE bank_account SET balance = 20 WHERE id = 'Y'; step s1c: COMMIT; step s2wx: UPDATE bank_account SET balance = -11 WHERE id = 'X'; @@ -21,24 +27,32 @@ starting permutation: s2rx s2ry s1ry s1wy s1c s3r s3c s2wx step s2rx: SELECT balance FROM bank_account WHERE id = 'X'; -balance +balance +------- + 0 +(1 row) -0 step s2ry: SELECT balance FROM bank_account WHERE id = 'Y'; -balance +balance +------- + 0 +(1 row) -0 step s1ry: SELECT balance FROM bank_account WHERE id = 'Y'; -balance +balance +------- + 0 +(1 row) -0 step s1wy: UPDATE bank_account SET balance = 20 WHERE id = 'Y'; step s1c: COMMIT; step s3r: SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; -id balance +id|balance +--+------- +X | 0 +Y | 20 +(2 rows) -X 0 -Y 20 step s3c: COMMIT; step s2wx: UPDATE bank_account SET balance = -11 WHERE id = 'X'; ERROR: could not serialize access due to read/write dependencies among transactions diff -Nru postgresql-10-10.17/src/test/isolation/expected/read-only-anomaly-3.out postgresql-10-10.19/src/test/isolation/expected/read-only-anomaly-3.out --- postgresql-10-10.17/src/test/isolation/expected/read-only-anomaly-3.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/read-only-anomaly-3.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,25 +2,33 @@ starting permutation: s2rx s2ry s1ry s1wy s1c s3r s2wx s2c s3c step s2rx: SELECT balance FROM bank_account WHERE id = 'X'; -balance +balance +------- + 0 +(1 row) -0 step s2ry: SELECT balance FROM bank_account WHERE id = 'Y'; -balance +balance +------- + 0 +(1 row) -0 step s1ry: SELECT balance FROM bank_account WHERE id = 'Y'; -balance +balance +------- + 0 +(1 row) -0 step s1wy: UPDATE bank_account SET balance = 20 WHERE id = 'Y'; step s1c: COMMIT; step s3r: SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; step s2wx: UPDATE bank_account SET balance = -11 WHERE id = 'X'; step s2c: COMMIT; step s3r: <... completed> -id balance +id|balance +--+------- +X | -11 +Y | 20 +(2 rows) -X -11 -Y 20 step s3c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/read-only-anomaly.out postgresql-10-10.19/src/test/isolation/expected/read-only-anomaly.out --- postgresql-10-10.17/src/test/isolation/expected/read-only-anomaly.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/read-only-anomaly.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,24 +2,32 @@ starting permutation: s2rx s2ry s1ry s1wy s1c s3r s2wx s2c s3c step s2rx: SELECT balance FROM bank_account WHERE id = 'X'; -balance +balance +------- + 0 +(1 row) -0 step s2ry: SELECT balance FROM bank_account WHERE id = 'Y'; -balance +balance +------- + 0 +(1 row) -0 step s1ry: SELECT balance FROM bank_account WHERE id = 'Y'; -balance +balance +------- + 0 +(1 row) -0 step s1wy: UPDATE bank_account SET balance = 20 WHERE id = 'Y'; step s1c: COMMIT; step s3r: SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; -id balance +id|balance +--+------- +X | 0 +Y | 20 +(2 rows) -X 0 -Y 20 step s2wx: UPDATE bank_account SET balance = -11 WHERE id = 'X'; step s2c: COMMIT; step s3c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/read-write-unique-2.out postgresql-10-10.19/src/test/isolation/expected/read-write-unique-2.out --- postgresql-10-10.17/src/test/isolation/expected/read-write-unique-2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/read-write-unique-2.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,28 +2,36 @@ starting permutation: r1 r2 w1 w2 c1 c2 step r1: SELECT * FROM test WHERE i = 42; -i +i +- +(0 rows) step r2: SELECT * FROM test WHERE i = 42; -i +i +- +(0 rows) step w1: INSERT INTO test VALUES (42); step w2: INSERT INTO test VALUES (42); step c1: COMMIT; step w2: <... completed> -error in steps c1 w2: ERROR: could not serialize access due to read/write dependencies among transactions +ERROR: could not serialize access due to read/write dependencies among transactions step c2: COMMIT; starting permutation: r1 w1 c1 r2 w2 c2 step r1: SELECT * FROM test WHERE i = 42; -i +i +- +(0 rows) step w1: INSERT INTO test VALUES (42); step c1: COMMIT; step r2: SELECT * FROM test WHERE i = 42; -i + i +-- +42 +(1 row) -42 step w2: INSERT INTO test VALUES (42); ERROR: duplicate key value violates unique constraint "test_pkey" step c2: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/read-write-unique-3.out postgresql-10-10.19/src/test/isolation/expected/read-write-unique-3.out --- postgresql-10-10.17/src/test/isolation/expected/read-write-unique-3.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/read-write-unique-3.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,11 +2,13 @@ starting permutation: rw1 rw2 c1 c2 step rw1: SELECT insert_unique(1, '1'); -insert_unique +insert_unique +------------- + +(1 row) - step rw2: SELECT insert_unique(1, '2'); step c1: COMMIT; step rw2: <... completed> -error in steps c1 rw2: ERROR: could not serialize access due to read/write dependencies among transactions +ERROR: could not serialize access due to read/write dependencies among transactions step c2: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/read-write-unique-4.out postgresql-10-10.19/src/test/isolation/expected/read-write-unique-4.out --- postgresql-10-10.17/src/test/isolation/expected/read-write-unique-4.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/read-write-unique-4.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,40 +2,48 @@ starting permutation: r1 r2 w1 w2 c1 c2 step r1: SELECT COALESCE(MAX(invoice_number) + 1, 1) FROM invoice WHERE year = 2016; -coalesce +coalesce +-------- + 3 +(1 row) -3 step r2: SELECT COALESCE(MAX(invoice_number) + 1, 1) FROM invoice WHERE year = 2016; -coalesce +coalesce +-------- + 3 +(1 row) -3 step w1: INSERT INTO invoice VALUES (2016, 3); step w2: INSERT INTO invoice VALUES (2016, 3); step c1: COMMIT; step w2: <... completed> -error in steps c1 w2: ERROR: could not serialize access due to read/write dependencies among transactions +ERROR: could not serialize access due to read/write dependencies among transactions step c2: COMMIT; starting permutation: r1 w1 w2 c1 c2 step r1: SELECT COALESCE(MAX(invoice_number) + 1, 1) FROM invoice WHERE year = 2016; -coalesce +coalesce +-------- + 3 +(1 row) -3 step w1: INSERT INTO invoice VALUES (2016, 3); step w2: INSERT INTO invoice VALUES (2016, 3); step c1: COMMIT; step w2: <... completed> -error in steps c1 w2: ERROR: duplicate key value violates unique constraint "invoice_pkey" +ERROR: duplicate key value violates unique constraint "invoice_pkey" step c2: COMMIT; starting permutation: r2 w1 w2 c1 c2 step r2: SELECT COALESCE(MAX(invoice_number) + 1, 1) FROM invoice WHERE year = 2016; -coalesce +coalesce +-------- + 3 +(1 row) -3 step w1: INSERT INTO invoice VALUES (2016, 3); step w2: INSERT INTO invoice VALUES (2016, 3); step c1: COMMIT; step w2: <... completed> -error in steps c1 w2: ERROR: duplicate key value violates unique constraint "invoice_pkey" +ERROR: duplicate key value violates unique constraint "invoice_pkey" step c2: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/read-write-unique.out postgresql-10-10.19/src/test/isolation/expected/read-write-unique.out --- postgresql-10-10.17/src/test/isolation/expected/read-write-unique.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/read-write-unique.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,28 +2,36 @@ starting permutation: r1 r2 w1 w2 c1 c2 step r1: SELECT * FROM test; -i +i +- +(0 rows) step r2: SELECT * FROM test; -i +i +- +(0 rows) step w1: INSERT INTO test VALUES (42); step w2: INSERT INTO test VALUES (42); step c1: COMMIT; step w2: <... completed> -error in steps c1 w2: ERROR: could not serialize access due to read/write dependencies among transactions +ERROR: could not serialize access due to read/write dependencies among transactions step c2: COMMIT; starting permutation: r1 w1 c1 r2 w2 c2 step r1: SELECT * FROM test; -i +i +- +(0 rows) step w1: INSERT INTO test VALUES (42); step c1: COMMIT; step r2: SELECT * FROM test; -i + i +-- +42 +(1 row) -42 step w2: INSERT INTO test VALUES (42); ERROR: duplicate key value violates unique constraint "test_pkey" step c2: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/receipt-report.out postgresql-10-10.19/src/test/isolation/expected/receipt-report.out --- postgresql-10-10.17/src/test/isolation/expected/receipt-report.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/receipt-report.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,15 +6,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; starting permutation: rxwy1 c1 wx2 rx3 c2 ry3 c3 @@ -22,16 +26,20 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; starting permutation: rxwy1 c1 wx2 rx3 ry3 c2 c3 @@ -39,15 +47,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c2: COMMIT; step c3: COMMIT; @@ -56,15 +68,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; step c2: COMMIT; @@ -72,33 +88,41 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c2: COMMIT; step c3: COMMIT; @@ -106,16 +130,20 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; step c2: COMMIT; @@ -123,15 +151,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -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; @@ -140,15 +172,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -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; @@ -157,15 +193,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -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; @@ -176,15 +216,19 @@ step c1: COMMIT; step c2: COMMIT; step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; starting permutation: rxwy1 wx2 c1 rx3 c2 ry3 c3 @@ -192,16 +236,20 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; starting permutation: rxwy1 wx2 c1 rx3 ry3 c2 c3 @@ -209,15 +257,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c2: COMMIT; step c3: COMMIT; @@ -226,15 +278,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; step c2: COMMIT; @@ -244,15 +300,19 @@ step c2: COMMIT; step c1: COMMIT; step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; starting permutation: rxwy1 wx2 c2 rx3 c1 ry3 c3 @@ -260,9 +320,11 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 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 @@ -273,14 +335,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions step c3: COMMIT; @@ -290,14 +356,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -306,31 +376,39 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; @@ -338,15 +416,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; @@ -354,31 +436,39 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; @@ -386,15 +476,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; @@ -402,14 +496,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c2: COMMIT; step c3: COMMIT; @@ -418,14 +516,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; step c2: COMMIT; @@ -434,14 +536,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c1: COMMIT; step c3: COMMIT; @@ -450,14 +556,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; step c1: COMMIT; @@ -466,14 +576,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; step c2: COMMIT; @@ -482,14 +596,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; step c1: COMMIT; @@ -497,63 +615,79 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -561,15 +695,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -577,15 +715,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -593,111 +735,139 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c2: COMMIT; step c3: COMMIT; @@ -705,15 +875,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; step c2: COMMIT; @@ -721,15 +895,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c1: COMMIT; step c3: COMMIT; @@ -737,15 +915,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; step c1: COMMIT; @@ -753,15 +935,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; step c2: COMMIT; @@ -769,15 +955,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; step c1: COMMIT; @@ -785,14 +975,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -801,14 +995,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -817,14 +1015,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -833,14 +1035,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -849,14 +1055,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -865,14 +1075,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -881,14 +1095,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -897,14 +1115,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -913,14 +1135,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -929,14 +1155,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -945,14 +1175,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -961,14 +1195,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -980,15 +1218,19 @@ step c1: COMMIT; step c2: COMMIT; step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; starting permutation: wx2 rxwy1 c1 rx3 c2 ry3 c3 @@ -996,16 +1238,20 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; starting permutation: wx2 rxwy1 c1 rx3 ry3 c2 c3 @@ -1013,15 +1259,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c2: COMMIT; step c3: COMMIT; @@ -1030,15 +1280,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; step c2: COMMIT; @@ -1048,15 +1302,19 @@ step c2: COMMIT; step c1: COMMIT; step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 + 3| 12-22-2008| 4.00 +(3 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 -3 12-22-2008 4.00 step c3: COMMIT; starting permutation: wx2 rxwy1 c2 rx3 c1 ry3 c3 @@ -1064,9 +1322,11 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 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 @@ -1077,14 +1337,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions step c3: COMMIT; @@ -1094,14 +1358,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -1110,31 +1378,39 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; @@ -1142,15 +1418,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; @@ -1158,31 +1438,39 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; @@ -1190,15 +1478,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; @@ -1206,14 +1498,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c2: COMMIT; step c3: COMMIT; @@ -1222,14 +1518,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; step c2: COMMIT; @@ -1238,14 +1538,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c1: COMMIT; step c3: COMMIT; @@ -1254,14 +1558,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; step c1: COMMIT; @@ -1270,14 +1578,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; step c2: COMMIT; @@ -1286,14 +1598,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; step c1: COMMIT; @@ -1304,14 +1620,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; starting permutation: wx2 c2 rxwy1 rx3 c1 ry3 c3 @@ -1319,15 +1639,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step c1: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; starting permutation: wx2 c2 rxwy1 rx3 ry3 c1 c3 @@ -1335,14 +1659,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; @@ -1351,14 +1679,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; @@ -1366,31 +1698,39 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; @@ -1398,15 +1738,19 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; @@ -1414,14 +1758,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1430,14 +1778,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1446,14 +1798,18 @@ 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 +k |deposit_date +-------+------------ +receipt| 12-23-2008 +(1 row) -receipt 12-23-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1461,111 +1817,139 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c2: COMMIT; step c3: COMMIT; @@ -1573,15 +1957,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; step c2: COMMIT; @@ -1589,15 +1977,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c1: COMMIT; step c3: COMMIT; @@ -1605,15 +1997,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; step c1: COMMIT; @@ -1621,15 +2017,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; step c2: COMMIT; @@ -1637,15 +2037,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; step c1: COMMIT; @@ -1653,63 +2057,79 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1717,15 +2137,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1733,15 +2157,19 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step c2: COMMIT; step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1749,14 +2177,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1765,14 +2197,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1781,14 +2217,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1797,14 +2237,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1813,14 +2257,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1829,14 +2277,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1845,14 +2297,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1861,14 +2317,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1877,14 +2337,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -1893,14 +2357,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1909,14 +2377,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -1925,14 +2397,18 @@ 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -1940,303 +2416,379 @@ starting permutation: rx3 rxwy1 c1 wx2 c2 ry3 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; starting permutation: rx3 rxwy1 c1 wx2 ry3 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; starting permutation: rx3 rxwy1 c1 wx2 ry3 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; starting permutation: rx3 rxwy1 c1 ry3 wx2 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; starting permutation: rx3 rxwy1 c1 ry3 wx2 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; starting permutation: rx3 rxwy1 c1 ry3 c3 wx2 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; starting permutation: rx3 rxwy1 wx2 c1 c2 ry3 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 c1 ry3 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 c1 ry3 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; starting permutation: rx3 rxwy1 wx2 c2 c1 ry3 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 c2 ry3 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 c2 ry3 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; starting permutation: rx3 rxwy1 wx2 ry3 c1 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2244,15 +2796,19 @@ starting permutation: rx3 rxwy1 ry3 c1 wx2 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2260,15 +2816,19 @@ starting permutation: rx3 rxwy1 ry3 c1 c3 wx2 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -2276,15 +2836,19 @@ starting permutation: rx3 rxwy1 ry3 wx2 c1 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2292,15 +2856,19 @@ starting permutation: rx3 rxwy1 ry3 wx2 c1 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2308,15 +2876,19 @@ starting permutation: rx3 rxwy1 ry3 wx2 c2 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2324,15 +2896,19 @@ starting permutation: rx3 rxwy1 ry3 wx2 c2 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2340,15 +2916,19 @@ starting permutation: rx3 rxwy1 ry3 wx2 c3 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2356,15 +2936,19 @@ starting permutation: rx3 rxwy1 ry3 wx2 c3 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2372,15 +2956,19 @@ starting permutation: rx3 rxwy1 ry3 c3 c1 wx2 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -2388,15 +2976,19 @@ starting permutation: rx3 rxwy1 ry3 c3 wx2 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2404,15 +2996,19 @@ starting permutation: rx3 rxwy1 ry3 c3 wx2 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2420,303 +3016,379 @@ starting permutation: rx3 wx2 rxwy1 c1 c2 ry3 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 c1 ry3 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c2: COMMIT; step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 c1 ry3 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c2: COMMIT; starting permutation: rx3 wx2 rxwy1 c2 c1 ry3 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 c2 ry3 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 c2 ry3 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; starting permutation: rx3 wx2 rxwy1 ry3 c1 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 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'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; starting permutation: rx3 wx2 c2 rxwy1 ry3 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c1: COMMIT; step c3: COMMIT; starting permutation: rx3 wx2 c2 rxwy1 ry3 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -1 12-22-2008 1.00 -2 12-22-2008 2.00 step c3: COMMIT; step c1: COMMIT; starting permutation: rx3 wx2 c2 ry3 rxwy1 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; starting permutation: rx3 wx2 c2 ry3 rxwy1 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; starting permutation: rx3 wx2 c2 ry3 c3 rxwy1 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; starting permutation: rx3 wx2 ry3 rxwy1 c1 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2724,15 +3396,19 @@ starting permutation: rx3 wx2 ry3 rxwy1 c1 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2740,15 +3416,19 @@ starting permutation: rx3 wx2 ry3 rxwy1 c2 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2756,15 +3436,19 @@ starting permutation: rx3 wx2 ry3 rxwy1 c2 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2772,15 +3456,19 @@ starting permutation: rx3 wx2 ry3 rxwy1 c3 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2788,15 +3476,19 @@ starting permutation: rx3 wx2 ry3 rxwy1 c3 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2804,15 +3496,19 @@ starting permutation: rx3 wx2 ry3 c2 rxwy1 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2820,15 +3516,19 @@ starting permutation: rx3 wx2 ry3 c2 rxwy1 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2836,15 +3536,19 @@ starting permutation: rx3 wx2 ry3 c2 c3 rxwy1 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -2852,15 +3556,19 @@ starting permutation: rx3 wx2 ry3 c3 rxwy1 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2868,15 +3576,19 @@ starting permutation: rx3 wx2 ry3 c3 rxwy1 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2884,15 +3596,19 @@ starting permutation: rx3 wx2 ry3 c3 c2 rxwy1 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -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'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -2900,14 +3616,18 @@ starting permutation: rx3 ry3 rxwy1 c1 wx2 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -2916,14 +3636,18 @@ starting permutation: rx3 ry3 rxwy1 c1 wx2 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -2932,14 +3656,18 @@ starting permutation: rx3 ry3 rxwy1 c1 c3 wx2 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2948,14 +3676,18 @@ starting permutation: rx3 ry3 rxwy1 wx2 c1 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2964,14 +3696,18 @@ starting permutation: rx3 ry3 rxwy1 wx2 c1 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2980,14 +3716,18 @@ starting permutation: rx3 ry3 rxwy1 wx2 c2 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -2996,14 +3736,18 @@ starting permutation: rx3 ry3 rxwy1 wx2 c2 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3012,14 +3756,18 @@ starting permutation: rx3 ry3 rxwy1 wx2 c3 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3028,14 +3776,18 @@ starting permutation: rx3 ry3 rxwy1 wx2 c3 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3044,14 +3796,18 @@ starting permutation: rx3 ry3 rxwy1 c3 c1 wx2 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3060,14 +3816,18 @@ starting permutation: rx3 ry3 rxwy1 c3 wx2 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -3076,14 +3836,18 @@ starting permutation: rx3 ry3 rxwy1 c3 wx2 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -3092,14 +3856,18 @@ starting permutation: rx3 ry3 wx2 rxwy1 c1 c2 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3108,14 +3876,18 @@ starting permutation: rx3 ry3 wx2 rxwy1 c1 c3 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3124,14 +3896,18 @@ starting permutation: rx3 ry3 wx2 rxwy1 c2 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3140,14 +3916,18 @@ starting permutation: rx3 ry3 wx2 rxwy1 c2 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3156,14 +3936,18 @@ starting permutation: rx3 ry3 wx2 rxwy1 c3 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3172,14 +3956,18 @@ starting permutation: rx3 ry3 wx2 rxwy1 c3 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3188,14 +3976,18 @@ starting permutation: rx3 ry3 wx2 c2 rxwy1 c1 c3 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -3204,14 +3996,18 @@ starting permutation: rx3 ry3 wx2 c2 rxwy1 c3 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -3220,14 +4016,18 @@ starting permutation: rx3 ry3 wx2 c2 c3 rxwy1 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3236,14 +4036,18 @@ starting permutation: rx3 ry3 wx2 c3 rxwy1 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -3252,14 +4056,18 @@ starting permutation: rx3 ry3 wx2 c3 rxwy1 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -3268,14 +4076,18 @@ starting permutation: rx3 ry3 wx2 c3 c2 rxwy1 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3284,14 +4096,18 @@ starting permutation: rx3 ry3 c3 rxwy1 c1 wx2 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; @@ -3300,14 +4116,18 @@ starting permutation: rx3 ry3 c3 rxwy1 wx2 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -3316,14 +4136,18 @@ starting permutation: rx3 ry3 c3 rxwy1 wx2 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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'; @@ -3332,14 +4156,18 @@ starting permutation: rx3 ry3 c3 wx2 rxwy1 c1 c2 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -3348,14 +4176,18 @@ starting permutation: rx3 ry3 c3 wx2 rxwy1 c2 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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); @@ -3364,14 +4196,18 @@ starting permutation: rx3 ry3 c3 wx2 c2 rxwy1 c1 step rx3: SELECT * FROM ctl WHERE k = 'receipt'; -k deposit_date +k |deposit_date +-------+------------ +receipt| 12-22-2008 +(1 row) -receipt 12-22-2008 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; -receipt_no deposit_date amount +receipt_no|deposit_date|amount +----------+------------+------ + 1| 12-22-2008| 1.00 + 2| 12-22-2008| 2.00 +(2 rows) -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; diff -Nru postgresql-10-10.17/src/test/isolation/expected/referential-integrity.out postgresql-10-10.19/src/test/isolation/expected/referential-integrity.out --- postgresql-10-10.17/src/test/isolation/expected/referential-integrity.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/referential-integrity.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,35 +2,47 @@ starting permutation: rx1 wy1 c1 rx2 ry2 wx2 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- + 1 +(1 row) -1 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; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step c1: COMMIT; step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions @@ -38,16 +50,22 @@ starting permutation: rx1 wy1 rx2 ry2 c1 wx2 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step c1: COMMIT; step wx2: DELETE FROM a WHERE i = 1; @@ -56,16 +74,22 @@ starting permutation: rx1 wy1 rx2 ry2 wx2 c1 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c1: COMMIT; @@ -74,16 +98,22 @@ starting permutation: rx1 wy1 rx2 ry2 wx2 c2 c1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c2: COMMIT; @@ -92,17 +122,23 @@ starting permutation: rx1 rx2 wy1 c1 ry2 wx2 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions @@ -110,16 +146,22 @@ starting permutation: rx1 rx2 wy1 ry2 c1 wx2 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step c1: COMMIT; step wx2: DELETE FROM a WHERE i = 1; @@ -128,16 +170,22 @@ starting permutation: rx1 rx2 wy1 ry2 wx2 c1 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c1: COMMIT; @@ -146,16 +194,22 @@ starting permutation: rx1 rx2 wy1 ry2 wx2 c2 c1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c2: COMMIT; @@ -164,15 +218,21 @@ starting permutation: rx1 rx2 ry2 wy1 c1 wx2 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; @@ -182,15 +242,21 @@ starting permutation: rx1 rx2 ry2 wy1 wx2 c1 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wy1: INSERT INTO b VALUES (1); step wx2: DELETE FROM a WHERE i = 1; @@ -200,15 +266,21 @@ starting permutation: rx1 rx2 ry2 wy1 wx2 c2 c1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wy1: INSERT INTO b VALUES (1); step wx2: DELETE FROM a WHERE i = 1; @@ -218,15 +290,21 @@ starting permutation: rx1 rx2 ry2 wx2 wy1 c1 c2 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step wy1: INSERT INTO b VALUES (1); @@ -236,15 +314,21 @@ starting permutation: rx1 rx2 ry2 wx2 wy1 c2 c1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step wy1: INSERT INTO b VALUES (1); @@ -254,15 +338,21 @@ starting permutation: rx1 rx2 ry2 wx2 c2 wy1 c1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c2: COMMIT; @@ -272,17 +362,23 @@ starting permutation: rx2 rx1 wy1 c1 ry2 wx2 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions @@ -290,16 +386,22 @@ starting permutation: rx2 rx1 wy1 ry2 c1 wx2 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step c1: COMMIT; step wx2: DELETE FROM a WHERE i = 1; @@ -308,16 +410,22 @@ starting permutation: rx2 rx1 wy1 ry2 wx2 c1 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c1: COMMIT; @@ -326,16 +434,22 @@ starting permutation: rx2 rx1 wy1 ry2 wx2 c2 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c2: COMMIT; @@ -344,15 +458,21 @@ starting permutation: rx2 rx1 ry2 wy1 c1 wx2 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; @@ -362,15 +482,21 @@ starting permutation: rx2 rx1 ry2 wy1 wx2 c1 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wy1: INSERT INTO b VALUES (1); step wx2: DELETE FROM a WHERE i = 1; @@ -380,15 +506,21 @@ starting permutation: rx2 rx1 ry2 wy1 wx2 c2 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wy1: INSERT INTO b VALUES (1); step wx2: DELETE FROM a WHERE i = 1; @@ -398,15 +530,21 @@ starting permutation: rx2 rx1 ry2 wx2 wy1 c1 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step wy1: INSERT INTO b VALUES (1); @@ -416,15 +554,21 @@ starting permutation: rx2 rx1 ry2 wx2 wy1 c2 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step wy1: INSERT INTO b VALUES (1); @@ -434,15 +578,21 @@ starting permutation: rx2 rx1 ry2 wx2 c2 wy1 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c2: COMMIT; @@ -452,16 +602,22 @@ starting permutation: rx2 ry2 rx1 wy1 c1 wx2 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; step wx2: DELETE FROM a WHERE i = 1; @@ -470,16 +626,22 @@ starting permutation: rx2 ry2 rx1 wy1 wx2 c1 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step wx2: DELETE FROM a WHERE i = 1; step c1: COMMIT; @@ -488,16 +650,22 @@ starting permutation: rx2 ry2 rx1 wy1 wx2 c2 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step wx2: DELETE FROM a WHERE i = 1; step c2: COMMIT; @@ -506,16 +674,22 @@ starting permutation: rx2 ry2 rx1 wx2 wy1 c1 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wx2: DELETE FROM a WHERE i = 1; step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; @@ -524,16 +698,22 @@ starting permutation: rx2 ry2 rx1 wx2 wy1 c2 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wx2: DELETE FROM a WHERE i = 1; step wy1: INSERT INTO b VALUES (1); step c2: COMMIT; @@ -542,16 +722,22 @@ starting permutation: rx2 ry2 rx1 wx2 c2 wy1 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wx2: DELETE FROM a WHERE i = 1; step c2: COMMIT; step wy1: INSERT INTO b VALUES (1); @@ -560,17 +746,23 @@ starting permutation: rx2 ry2 wx2 rx1 wy1 c1 c2 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; step c2: COMMIT; @@ -578,17 +770,23 @@ starting permutation: rx2 ry2 wx2 rx1 wy1 c2 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step wy1: INSERT INTO b VALUES (1); step c2: COMMIT; step c1: COMMIT; @@ -596,17 +794,23 @@ starting permutation: rx2 ry2 wx2 rx1 c2 wy1 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step c2: COMMIT; step wy1: INSERT INTO b VALUES (1); ERROR: could not serialize access due to read/write dependencies among transactions @@ -614,16 +818,22 @@ starting permutation: rx2 ry2 wx2 c2 rx1 wy1 c1 step rx2: SELECT i FROM a WHERE i = 1; -i +i +- +1 +(1 row) -1 step ry2: SELECT a_id FROM b WHERE a_id = 1; -a_id +a_id +---- +(0 rows) step wx2: DELETE FROM a WHERE i = 1; step c2: COMMIT; step rx1: SELECT i FROM a WHERE i = 1; -i +i +- +(0 rows) step wy1: INSERT INTO b VALUES (1); step c1: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/ri-trigger.out postgresql-10-10.19/src/test/isolation/expected/ri-trigger.out --- postgresql-10-10.17/src/test/isolation/expected/ri-trigger.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/ri-trigger.out 2021-11-08 22:05:38.000000000 +0000 @@ -4,9 +4,11 @@ step wxry1: INSERT INTO child (parent_id) VALUES (0); step c1: COMMIT; step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wyrx2: DELETE FROM parent WHERE parent_id = 0; ERROR: child row exists step c2: COMMIT; @@ -14,9 +16,11 @@ starting permutation: wxry1 r2 c1 wyrx2 c2 step wxry1: INSERT INTO child (parent_id) VALUES (0); step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step c1: COMMIT; step wyrx2: DELETE FROM parent WHERE parent_id = 0; ERROR: could not serialize access due to read/write dependencies among transactions @@ -25,9 +29,11 @@ starting permutation: wxry1 r2 wyrx2 c1 c2 step wxry1: INSERT INTO child (parent_id) VALUES (0); step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wyrx2: DELETE FROM parent WHERE parent_id = 0; step c1: COMMIT; step c2: COMMIT; @@ -36,9 +42,11 @@ starting permutation: wxry1 r2 wyrx2 c2 c1 step wxry1: INSERT INTO child (parent_id) VALUES (0); step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wyrx2: DELETE FROM parent WHERE parent_id = 0; step c2: COMMIT; step c1: COMMIT; @@ -46,9 +54,11 @@ starting permutation: r2 wxry1 c1 wyrx2 c2 step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wxry1: INSERT INTO child (parent_id) VALUES (0); step c1: COMMIT; step wyrx2: DELETE FROM parent WHERE parent_id = 0; @@ -57,9 +67,11 @@ starting permutation: r2 wxry1 wyrx2 c1 c2 step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wxry1: INSERT INTO child (parent_id) VALUES (0); step wyrx2: DELETE FROM parent WHERE parent_id = 0; step c1: COMMIT; @@ -68,9 +80,11 @@ starting permutation: r2 wxry1 wyrx2 c2 c1 step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wxry1: INSERT INTO child (parent_id) VALUES (0); step wyrx2: DELETE FROM parent WHERE parent_id = 0; step c2: COMMIT; @@ -79,9 +93,11 @@ starting permutation: r2 wyrx2 wxry1 c1 c2 step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wyrx2: DELETE FROM parent WHERE parent_id = 0; step wxry1: INSERT INTO child (parent_id) VALUES (0); step c1: COMMIT; @@ -90,9 +106,11 @@ starting permutation: r2 wyrx2 wxry1 c2 c1 step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wyrx2: DELETE FROM parent WHERE parent_id = 0; step wxry1: INSERT INTO child (parent_id) VALUES (0); step c2: COMMIT; @@ -101,9 +119,11 @@ starting permutation: r2 wyrx2 c2 wxry1 c1 step r2: SELECT TRUE; -bool +bool +---- +t +(1 row) -t step wyrx2: DELETE FROM parent WHERE parent_id = 0; step c2: COMMIT; step wxry1: INSERT INTO child (parent_id) VALUES (0); diff -Nru postgresql-10-10.17/src/test/isolation/expected/sequence-ddl.out postgresql-10-10.19/src/test/isolation/expected/sequence-ddl.out --- postgresql-10-10.17/src/test/isolation/expected/sequence-ddl.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/sequence-ddl.out 2021-11-08 22:05:38.000000000 +0000 @@ -11,74 +11,80 @@ step s2nv: SELECT nextval('seq1') FROM generate_series(1, 15); step s1commit: COMMIT; step s2nv: <... completed> -error in steps s1commit s2nv: ERROR: nextval: reached maximum value of sequence "seq1" (10) +ERROR: nextval: reached maximum value of sequence "seq1" (10) starting permutation: s1restart s2nv s1commit step s1restart: ALTER SEQUENCE seq1 RESTART WITH 5; step s2nv: SELECT nextval('seq1') FROM generate_series(1, 15); step s1commit: COMMIT; step s2nv: <... completed> -nextval +nextval +------- + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 +(15 rows) -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 starting permutation: s1restart s2nv s1commit step s1restart: ALTER SEQUENCE seq1 RESTART WITH 5; step s2nv: SELECT nextval('seq1') FROM generate_series(1, 15); step s1commit: COMMIT; step s2nv: <... completed> -nextval +nextval +------- + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 +(15 rows) -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 starting permutation: s2begin s2nv s1alter2 s2commit s1commit step s2begin: BEGIN; step s2nv: SELECT nextval('seq1') FROM generate_series(1, 15); -nextval +nextval +------- + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 +(15 rows) -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 step s1alter2: ALTER SEQUENCE seq1 MAXVALUE 20; step s2commit: COMMIT; step s1alter2: <... completed> diff -Nru postgresql-10-10.17/src/test/isolation/expected/skip-locked-2.out postgresql-10-10.19/src/test/isolation/expected/skip-locked-2.out --- postgresql-10-10.17/src/test/isolation/expected/skip-locked-2.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/skip-locked-2.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,48 +2,66 @@ starting permutation: s1a s2a s2b s1b s2c step s1a: SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: COMMIT; step s2c: COMMIT; starting permutation: s2a s1a s2b s1b s2c step s2a: SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: COMMIT; step s2c: COMMIT; starting permutation: s2a s2b s1a s1b s2c step s2a: SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: COMMIT; step s2c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/skip-locked-3.out postgresql-10-10.19/src/test/isolation/expected/skip-locked-3.out --- postgresql-10-10.17/src/test/isolation/expected/skip-locked-3.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/skip-locked-3.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,18 +2,24 @@ starting permutation: s1a s2a s3a s1b s2b s3b step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE LIMIT 1; step s3a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: COMMIT; step s2a: <... completed> -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: COMMIT; step s3b: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/skip-locked-4_1.out postgresql-10-10.19/src/test/isolation/expected/skip-locked-4_1.out --- postgresql-10-10.17/src/test/isolation/expected/skip-locked-4_1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/skip-locked-4_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,17 +3,21 @@ starting permutation: s2a s1a s2b s2c s2d s2e s1b s2f step s2a: SELECT pg_advisory_lock(0); pg_advisory_lock +---------------- + +(1 row) - step s1a: SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED; step s2b: UPDATE foo SET data = data WHERE id = 1; step s2c: BEGIN; step s2d: UPDATE foo SET data = data WHERE id = 1; step s2e: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1a: <... completed> -error in steps s2e s1a: ERROR: could not serialize access due to concurrent update +ERROR: could not serialize access due to concurrent update step s1b: COMMIT; step s2f: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/skip-locked-4.out postgresql-10-10.19/src/test/isolation/expected/skip-locked-4.out --- postgresql-10-10.17/src/test/isolation/expected/skip-locked-4.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/skip-locked-4.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,19 +3,25 @@ starting permutation: s2a s1a s2b s2c s2d s2e s1b s2f step s2a: SELECT pg_advisory_lock(0); pg_advisory_lock +---------------- + +(1 row) - step s1a: SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED; step s2b: UPDATE foo SET data = data WHERE id = 1; step s2c: BEGIN; step s2d: UPDATE foo SET data = data WHERE id = 1; step s2e: SELECT pg_advisory_unlock(0); pg_advisory_unlock +------------------ +t +(1 row) -t step s1a: <... completed> -id data +id|data +--+---- + 2|x +(1 row) -2 x step s1b: COMMIT; step s2f: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/skip-locked.out postgresql-10-10.19/src/test/isolation/expected/skip-locked.out --- postgresql-10-10.17/src/test/isolation/expected/skip-locked.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/skip-locked.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,400 +2,560 @@ starting permutation: s1a s1b s1c s2a s2b s2c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1c: COMMIT; step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2c: COMMIT; starting permutation: s1a s1b s2a s1c s2b s2c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1c: COMMIT; step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2c: COMMIT; starting permutation: s1a s1b s2a s2b s1c s2c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1c: COMMIT; step s2c: COMMIT; starting permutation: s1a s1b s2a s2b s2c s1c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2c: COMMIT; step s1c: COMMIT; starting permutation: s1a s2a s1b s1c s2b s2c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1c: COMMIT; step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2c: COMMIT; starting permutation: s1a s2a s1b s2b s1c s2c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1c: COMMIT; step s2c: COMMIT; starting permutation: s1a s2a s1b s2b s2c s1c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2c: COMMIT; step s1c: COMMIT; starting permutation: s1a s2a s2b s1b s1c s2c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1c: COMMIT; step s2c: COMMIT; starting permutation: s1a s2a s2b s1b s2c s1c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2c: COMMIT; step s1c: COMMIT; starting permutation: s1a s2a s2b s2c s1b s1c step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2c: COMMIT; step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1c: COMMIT; starting permutation: s2a s1a s1b s1c s2b s2c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1c: COMMIT; step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2c: COMMIT; starting permutation: s2a s1a s1b s2b s1c s2c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1c: COMMIT; step s2c: COMMIT; starting permutation: s2a s1a s1b s2b s2c s1c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2c: COMMIT; step s1c: COMMIT; starting permutation: s2a s1a s2b s1b s1c s2c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1c: COMMIT; step s2c: COMMIT; starting permutation: s2a s1a s2b s1b s2c s1c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2c: COMMIT; step s1c: COMMIT; starting permutation: s2a s1a s2b s2c s1b s1c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2c: COMMIT; step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1c: COMMIT; starting permutation: s2a s2b s1a s1b s1c s2c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1c: COMMIT; step s2c: COMMIT; starting permutation: s2a s2b s1a s1b s2c s1c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2c: COMMIT; step s1c: COMMIT; starting permutation: s2a s2b s1a s2c s1b s1c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 2|bar |NEW +(1 row) -2 bar NEW step s2c: COMMIT; step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1c: COMMIT; starting permutation: s2a s2b s2c s1a s1b s1c step s2a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s2c: COMMIT; step s1a: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1b: SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; -id data status +id|data|status +--+----+------ + 1|foo |NEW +(1 row) -1 foo NEW step s1c: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/temporal-range-integrity.out postgresql-10-10.19/src/test/isolation/expected/temporal-range-integrity.out --- postgresql-10-10.17/src/test/isolation/expected/temporal-range-integrity.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/temporal-range-integrity.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,28 +2,36 @@ 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'); -count +count +----- + 1 +(1 row) -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'; -count +count +----- + 1 +(1 row) -1 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'); -count +count +----- + 1 +(1 row) -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'; -count +count +----- + 0 +(1 row) -0 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 @@ -31,14 +39,18 @@ 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'); -count +count +----- + 1 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -46,14 +58,18 @@ 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'); -count +count +----- + 1 +(1 row) -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'; -count +count +----- + 0 +(1 row) -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; @@ -61,13 +77,17 @@ 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'); -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; -count +count +----- + 0 +(1 row) -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'; @@ -76,13 +96,17 @@ 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'); -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; -count +count +----- + 0 +(1 row) -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; @@ -91,13 +115,17 @@ 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'); -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; -count +count +----- + 0 +(1 row) -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; @@ -106,13 +134,17 @@ 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'); -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; -count +count +----- + 0 +(1 row) -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; @@ -121,13 +153,17 @@ 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'); -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; -count +count +----- + 0 +(1 row) -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; @@ -136,13 +172,17 @@ 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'); -count +count +----- + 1 +(1 row) -1 step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; -count +count +----- + 0 +(1 row) -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'); @@ -151,13 +191,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -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'; @@ -166,13 +210,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -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; @@ -181,13 +229,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -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; @@ -196,13 +248,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -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; @@ -211,13 +267,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -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; @@ -226,13 +286,17 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -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'); @@ -241,14 +305,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -1 step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); step c1: COMMIT; step c2: COMMIT; @@ -256,14 +324,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -1 step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); step c2: COMMIT; step c1: COMMIT; @@ -271,14 +343,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 1 +(1 row) -1 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 @@ -286,14 +362,18 @@ 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'; -count +count +----- + 0 +(1 row) -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'); -count +count +----- + 0 +(1 row) -0 step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); step c1: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/timeouts.out postgresql-10-10.19/src/test/isolation/expected/timeouts.out --- postgresql-10-10.17/src/test/isolation/expected/timeouts.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/timeouts.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,72 +2,80 @@ starting permutation: rdtbl sto locktbl step rdtbl: SELECT * FROM accounts; -accountid balance +accountid|balance +---------+------- +checking | 600 +savings | 600 +(2 rows) -checking 600 -savings 600 -step sto: SET statement_timeout = 5000; +step sto: SET statement_timeout = '10ms'; step locktbl: LOCK TABLE accounts; step locktbl: <... completed> ERROR: canceling statement due to statement timeout starting permutation: rdtbl lto locktbl step rdtbl: SELECT * FROM accounts; -accountid balance +accountid|balance +---------+------- +checking | 600 +savings | 600 +(2 rows) -checking 600 -savings 600 -step lto: SET lock_timeout = 5000; +step lto: SET lock_timeout = '10ms'; step locktbl: LOCK TABLE accounts; step locktbl: <... completed> ERROR: canceling statement due to lock timeout starting permutation: rdtbl lsto locktbl step rdtbl: SELECT * FROM accounts; -accountid balance +accountid|balance +---------+------- +checking | 600 +savings | 600 +(2 rows) -checking 600 -savings 600 -step lsto: SET lock_timeout = 5000; SET statement_timeout = 6000; +step lsto: SET lock_timeout = '10ms'; SET statement_timeout = '10s'; step locktbl: LOCK TABLE accounts; step locktbl: <... completed> ERROR: canceling statement due to lock timeout starting permutation: rdtbl slto locktbl step rdtbl: SELECT * FROM accounts; -accountid balance +accountid|balance +---------+------- +checking | 600 +savings | 600 +(2 rows) -checking 600 -savings 600 -step slto: SET lock_timeout = 6000; SET statement_timeout = 5000; +step slto: SET lock_timeout = '10s'; SET statement_timeout = '10ms'; step locktbl: LOCK TABLE accounts; step locktbl: <... completed> ERROR: canceling statement due to statement timeout starting permutation: wrtbl sto update step wrtbl: UPDATE accounts SET balance = balance + 100; -step sto: SET statement_timeout = 5000; +step sto: SET statement_timeout = '10ms'; step update: DELETE FROM accounts WHERE accountid = 'checking'; step update: <... completed> ERROR: canceling statement due to statement timeout starting permutation: wrtbl lto update step wrtbl: UPDATE accounts SET balance = balance + 100; -step lto: SET lock_timeout = 5000; +step lto: SET lock_timeout = '10ms'; step update: DELETE FROM accounts WHERE accountid = 'checking'; step update: <... completed> ERROR: canceling statement due to lock timeout starting permutation: wrtbl lsto update step wrtbl: UPDATE accounts SET balance = balance + 100; -step lsto: SET lock_timeout = 5000; SET statement_timeout = 6000; +step lsto: SET lock_timeout = '10ms'; SET statement_timeout = '10s'; step update: DELETE FROM accounts WHERE accountid = 'checking'; step update: <... completed> ERROR: canceling statement due to lock timeout starting permutation: wrtbl slto update step wrtbl: UPDATE accounts SET balance = balance + 100; -step slto: SET lock_timeout = 6000; SET statement_timeout = 5000; +step slto: SET lock_timeout = '10s'; SET statement_timeout = '10ms'; step update: DELETE FROM accounts WHERE accountid = 'checking'; step update: <... completed> ERROR: canceling statement due to statement timeout diff -Nru postgresql-10-10.17/src/test/isolation/expected/total-cash.out postgresql-10-10.19/src/test/isolation/expected/total-cash.out --- postgresql-10-10.17/src/test/isolation/expected/total-cash.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/total-cash.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,23 +3,29 @@ 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; -sum + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; step rxy2: SELECT SUM(balance) FROM accounts; -sum +sum +--- +800 +(1 row) -800 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; -sum + sum +---- +1000 +(1 row) -1000 step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; step c1: COMMIT; step rxy2: SELECT SUM(balance) FROM accounts; @@ -29,14 +35,18 @@ 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; -sum + sum +---- +1000 +(1 row) -1000 step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; step rxy2: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -44,14 +54,18 @@ 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; -sum + sum +---- +1000 +(1 row) -1000 step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; step rxy2: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -60,9 +74,11 @@ 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 + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step rxy2: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions @@ -72,13 +88,17 @@ 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 + sum +---- +1000 +(1 row) -1000 step rxy2: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -87,13 +107,17 @@ 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 + sum +---- +1000 +(1 row) -1000 step rxy2: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -102,13 +126,17 @@ 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 + sum +---- +1000 +(1 row) -1000 step rxy1: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -117,13 +145,17 @@ 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 + sum +---- +1000 +(1 row) -1000 step rxy1: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -132,9 +164,11 @@ 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 + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step rxy1: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions @@ -144,9 +178,11 @@ 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 + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step rxy2: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions @@ -156,13 +192,17 @@ 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 + sum +---- +1000 +(1 row) -1000 step rxy2: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -171,13 +211,17 @@ 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 + sum +---- +1000 +(1 row) -1000 step rxy2: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -186,13 +230,17 @@ 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 + sum +---- +1000 +(1 row) -1000 step rxy1: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -201,13 +249,17 @@ 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 + sum +---- +1000 +(1 row) -1000 step rxy1: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -216,9 +268,11 @@ 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 + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step rxy1: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions @@ -227,14 +281,18 @@ 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; -sum + sum +---- +1000 +(1 row) -1000 step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; step rxy1: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -242,14 +300,18 @@ 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; -sum + sum +---- +1000 +(1 row) -1000 step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; step rxy1: SELECT SUM(balance) FROM accounts; -sum + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -257,9 +319,11 @@ 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; -sum + sum +---- +1000 +(1 row) -1000 step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; step c2: COMMIT; step rxy1: SELECT SUM(balance) FROM accounts; @@ -269,13 +333,17 @@ 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; -sum + sum +---- +1000 +(1 row) -1000 step c2: COMMIT; step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; step rxy1: SELECT SUM(balance) FROM accounts; -sum +sum +--- +800 +(1 row) -800 step c1: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/tuplelock-conflict.out postgresql-10-10.19/src/test/isolation/expected/tuplelock-conflict.out --- postgresql-10-10.17/src/test/isolation/expected/tuplelock-conflict.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/tuplelock-conflict.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,467 +3,627 @@ starting permutation: s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock1 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock2 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock3 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock4 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; step s1_commit: COMMIT; step s2_tuplock4: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock1 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock2 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock3 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; step s1_commit: COMMIT; step s2_tuplock3: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock4 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; step s1_commit: COMMIT; step s2_tuplock4: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock1 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock2 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; step s1_commit: COMMIT; step s2_tuplock2: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock3 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; step s1_commit: COMMIT; step s2_tuplock3: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock4 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; step s1_commit: COMMIT; step s2_tuplock4: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock1 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; step s1_commit: COMMIT; step s2_tuplock1: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock2 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; step s1_commit: COMMIT; step s2_tuplock2: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock3 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; step s1_commit: COMMIT; step s2_tuplock3: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock4 s1_commit step s1_begin: BEGIN; step s1_lcksvpt: SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; -a +a +- +1 +(1 row) -1 step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; step s1_commit: COMMIT; step s2_tuplock4: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock1 s2_tuplock1 s1_commit step s1_begin: BEGIN; step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_tuplock1 s2_tuplock2 s1_commit step s1_begin: BEGIN; step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_tuplock1 s2_tuplock3 s1_commit step s1_begin: BEGIN; step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_tuplock1 s2_tuplock4 s1_commit step s1_begin: BEGIN; step s1_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; step s1_commit: COMMIT; step s2_tuplock4: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock2 s2_tuplock1 s1_commit step s1_begin: BEGIN; step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_tuplock2 s2_tuplock2 s1_commit step s1_begin: BEGIN; step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_tuplock2 s2_tuplock3 s1_commit step s1_begin: BEGIN; step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; step s1_commit: COMMIT; step s2_tuplock3: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock2 s2_tuplock4 s1_commit step s1_begin: BEGIN; step s1_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; -a +a +- +1 +(1 row) -1 step s2_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; step s1_commit: COMMIT; step s2_tuplock4: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock3 s2_tuplock1 s1_commit step s1_begin: BEGIN; step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; -a +a +- +1 +(1 row) -1 step s1_commit: COMMIT; starting permutation: s1_begin s1_tuplock3 s2_tuplock2 s1_commit step s1_begin: BEGIN; step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; step s1_commit: COMMIT; step s2_tuplock2: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock3 s2_tuplock3 s1_commit step s1_begin: BEGIN; step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; step s1_commit: COMMIT; step s2_tuplock3: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock3 s2_tuplock4 s1_commit step s1_begin: BEGIN; step s1_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; step s1_commit: COMMIT; step s2_tuplock4: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock4 s2_tuplock1 s1_commit step s1_begin: BEGIN; step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock1: SELECT * FROM multixact_conflict FOR KEY SHARE; step s1_commit: COMMIT; step s2_tuplock1: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock4 s2_tuplock2 s1_commit step s1_begin: BEGIN; step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock2: SELECT * FROM multixact_conflict FOR SHARE; step s1_commit: COMMIT; step s2_tuplock2: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock4 s2_tuplock3 s1_commit step s1_begin: BEGIN; step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock3: SELECT * FROM multixact_conflict FOR NO KEY UPDATE; step s1_commit: COMMIT; step s2_tuplock3: <... completed> -a +a +- +1 +(1 row) -1 starting permutation: s1_begin s1_tuplock4 s2_tuplock4 s1_commit step s1_begin: BEGIN; step s1_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; -a +a +- +1 +(1 row) -1 step s2_tuplock4: SELECT * FROM multixact_conflict FOR UPDATE; step s1_commit: COMMIT; step s2_tuplock4: <... completed> -a +a +- +1 +(1 row) -1 diff -Nru postgresql-10-10.17/src/test/isolation/expected/tuplelock-update.out postgresql-10-10.19/src/test/isolation/expected/tuplelock-update.out --- postgresql-10-10.17/src/test/isolation/expected/tuplelock-update.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/tuplelock-update.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,31 +6,44 @@ pg_advisory_lock(285714), pg_advisory_lock(571428); -pg_advisory_lockpg_advisory_lockpg_advisory_lock +pg_advisory_lock|pg_advisory_lock|pg_advisory_lock +----------------+----------------+---------------- + | | +(1 row) - step s2_update: UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; step s3_update: UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(285714) IS NOT NULL; step s4_update: UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(571428) IS NOT NULL; step s1_chain: UPDATE pktab SET data = DEFAULT; step s1_begin: BEGIN; step s1_grablock: SELECT * FROM pktab FOR KEY SHARE; -id data +id|data +--+---- + 1| 2 +(1 row) -1 2 -step s1_advunlock1: SELECT pg_advisory_unlock(142857); -pg_advisory_unlock - -t +step s1_advunlock1: SELECT pg_advisory_unlock(142857); step s2_update: <... completed> -step s1_advunlock2: SELECT pg_sleep(5), pg_advisory_unlock(285714); -pg_sleep pg_advisory_unlock +step s1_advunlock1: <... completed> +pg_advisory_unlock +------------------ +t +(1 row) - t +step s1_advunlock2: SELECT pg_advisory_unlock(285714); step s3_update: <... completed> -step s1_advunlock3: SELECT pg_sleep(5), pg_advisory_unlock(571428); -pg_sleep pg_advisory_unlock +step s1_advunlock2: <... completed> +pg_advisory_unlock +------------------ +t +(1 row) - t +step s1_advunlock3: SELECT pg_advisory_unlock(571428); step s4_update: <... completed> +step s1_advunlock3: <... completed> +pg_advisory_unlock +------------------ +t +(1 row) + step s1_commit: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/tuplelock-upgrade-no-deadlock.out postgresql-10-10.19/src/test/isolation/expected/tuplelock-upgrade-no-deadlock.out --- postgresql-10-10.17/src/test/isolation/expected/tuplelock-upgrade-no-deadlock.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/tuplelock-upgrade-no-deadlock.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,132 +2,172 @@ starting permutation: s1_share s2_for_update s3_share s3_for_update s1_rollback s3_rollback s2_rollback step s1_share: select id from tlu_job where id = 1 for share; -id +id +-- + 1 +(1 row) -1 step s2_for_update: select id from tlu_job where id = 1 for update; step s3_share: select id from tlu_job where id = 1 for share; -id +id +-- + 1 +(1 row) -1 step s3_for_update: select id from tlu_job where id = 1 for update; step s1_rollback: rollback; step s3_for_update: <... completed> -id +id +-- + 1 +(1 row) -1 step s3_rollback: rollback; step s2_for_update: <... completed> -id +id +-- + 1 +(1 row) -1 step s2_rollback: rollback; starting permutation: s1_keyshare s2_for_update s3_keyshare s1_update s3_update s1_rollback s3_rollback s2_rollback step s1_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s2_for_update: select id from tlu_job where id = 1 for update; step s3_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s1_update: update tlu_job set name = 'b' where id = 1; step s3_update: update tlu_job set name = 'c' where id = 1; step s1_rollback: rollback; step s3_update: <... completed> step s3_rollback: rollback; step s2_for_update: <... completed> -id +id +-- + 1 +(1 row) -1 step s2_rollback: rollback; starting permutation: s1_keyshare s2_for_update s3_keyshare s1_update s3_update s1_commit s3_rollback s2_rollback step s1_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s2_for_update: select id from tlu_job where id = 1 for update; step s3_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s1_update: update tlu_job set name = 'b' where id = 1; step s3_update: update tlu_job set name = 'c' where id = 1; step s1_commit: commit; step s3_update: <... completed> step s3_rollback: rollback; step s2_for_update: <... completed> -id +id +-- + 1 +(1 row) -1 step s2_rollback: rollback; starting permutation: s1_keyshare s2_for_update s3_keyshare s3_delete s1_rollback s3_rollback s2_rollback step s1_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s2_for_update: select id from tlu_job where id = 1 for update; step s3_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s3_delete: delete from tlu_job where id = 1; step s1_rollback: rollback; step s3_delete: <... completed> step s3_rollback: rollback; step s2_for_update: <... completed> -id +id +-- + 1 +(1 row) -1 step s2_rollback: rollback; starting permutation: s1_keyshare s2_for_update s3_keyshare s3_delete s1_rollback s3_commit s2_rollback step s1_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s2_for_update: select id from tlu_job where id = 1 for update; step s3_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s3_delete: delete from tlu_job where id = 1; step s1_rollback: rollback; step s3_delete: <... completed> step s3_commit: commit; step s2_for_update: <... completed> -id +id +-- +(0 rows) step s2_rollback: rollback; starting permutation: s1_share s2_for_update s3_for_update s1_rollback s2_rollback s3_rollback step s1_share: select id from tlu_job where id = 1 for share; -id +id +-- + 1 +(1 row) -1 step s2_for_update: select id from tlu_job where id = 1 for update; step s3_for_update: select id from tlu_job where id = 1 for update; step s1_rollback: rollback; step s2_for_update: <... completed> -id +id +-- + 1 +(1 row) -1 step s2_rollback: rollback; step s3_for_update: <... completed> -id +id +-- + 1 +(1 row) -1 step s3_rollback: rollback; starting permutation: s1_share s2_update s3_update s1_rollback s2_rollback s3_rollback step s1_share: select id from tlu_job where id = 1 for share; -id +id +-- + 1 +(1 row) -1 step s2_update: update tlu_job set name = 'b' where id = 1; step s3_update: update tlu_job set name = 'c' where id = 1; step s1_rollback: rollback; @@ -138,9 +178,11 @@ starting permutation: s1_share s2_delete s3_delete s1_rollback s2_rollback s3_rollback step s1_share: select id from tlu_job where id = 1 for share; -id +id +-- + 1 +(1 row) -1 step s2_delete: delete from tlu_job where id = 1; step s3_delete: delete from tlu_job where id = 1; step s1_rollback: rollback; @@ -151,45 +193,61 @@ starting permutation: s1_keyshare s3_for_update s2_for_keyshare s1_savept_e s1_share s1_savept_f s1_fornokeyupd s2_fornokeyupd s0_begin s0_keyshare s1_rollback_f s0_keyshare s1_rollback_e s1_rollback s2_rollback s0_rollback s3_rollback step s1_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s3_for_update: select id from tlu_job where id = 1 for update; step s2_for_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s1_savept_e: savepoint s1_e; step s1_share: select id from tlu_job where id = 1 for share; -id +id +-- + 1 +(1 row) -1 step s1_savept_f: savepoint s1_f; step s1_fornokeyupd: select id from tlu_job where id = 1 for no key update; -id +id +-- + 1 +(1 row) -1 step s2_fornokeyupd: select id from tlu_job where id = 1 for no key update; step s0_begin: begin; step s0_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s1_rollback_f: rollback to s1_f; step s0_keyshare: select id from tlu_job where id = 1 for key share; -id +id +-- + 1 +(1 row) -1 step s1_rollback_e: rollback to s1_e; step s2_fornokeyupd: <... completed> -id +id +-- + 1 +(1 row) -1 step s1_rollback: rollback; step s2_rollback: rollback; step s0_rollback: rollback; step s3_for_update: <... completed> -id +id +-- + 1 +(1 row) -1 step s3_rollback: rollback; diff -Nru postgresql-10-10.17/src/test/isolation/expected/two-ids.out postgresql-10-10.19/src/test/isolation/expected/two-ids.out --- postgresql-10-10.17/src/test/isolation/expected/two-ids.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/two-ids.out 2021-11-08 22:05:38.000000000 +0000 @@ -6,9 +6,11 @@ step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 3 +(1 row) -3 step c3: COMMIT; starting permutation: wx1 c1 rxwy2 ry3 c2 c3 @@ -16,9 +18,11 @@ step c1: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c2: COMMIT; step c3: COMMIT; @@ -27,9 +31,11 @@ step c1: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c2: COMMIT; @@ -37,9 +43,11 @@ step wx1: update D1 set id = id + 1; step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step c3: COMMIT; @@ -48,9 +56,11 @@ step wx1: update D1 set id = id + 1; step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; step c2: COMMIT; @@ -59,9 +69,11 @@ step wx1: update D1 set id = id + 1; step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; @@ -72,9 +84,11 @@ step c1: COMMIT; step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; starting permutation: wx1 rxwy2 c1 ry3 c2 c3 @@ -82,9 +96,11 @@ step rxwy2: update D2 set id = (select id+1 from D1); step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions step c3: COMMIT; @@ -94,9 +110,11 @@ step rxwy2: update D2 set id = (select id+1 from D1); step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -107,9 +125,11 @@ step c2: COMMIT; step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; starting permutation: wx1 rxwy2 c2 ry3 c1 c3 @@ -117,9 +137,11 @@ step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c1: COMMIT; step c3: COMMIT; @@ -128,9 +150,11 @@ step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; step c1: COMMIT; @@ -138,9 +162,11 @@ 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 +id +-- + 1 +(1 row) -1 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -150,9 +176,11 @@ 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 +id +-- + 1 +(1 row) -1 step c1: COMMIT; step c3: COMMIT; step c2: COMMIT; @@ -162,9 +190,11 @@ 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 +id +-- + 1 +(1 row) -1 step c2: COMMIT; step c1: COMMIT; step c3: COMMIT; @@ -173,9 +203,11 @@ 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 +id +-- + 1 +(1 row) -1 step c2: COMMIT; step c3: COMMIT; step c1: COMMIT; @@ -184,9 +216,11 @@ 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 +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c1: COMMIT; step c2: COMMIT; @@ -195,9 +229,11 @@ 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 +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c2: COMMIT; step c1: COMMIT; @@ -205,9 +241,11 @@ starting permutation: wx1 ry3 c1 rxwy2 c2 c3 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c1: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; @@ -216,9 +254,11 @@ starting permutation: wx1 ry3 c1 rxwy2 c3 c2 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c1: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; @@ -227,9 +267,11 @@ starting permutation: wx1 ry3 c1 c3 rxwy2 c2 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c1: COMMIT; step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); @@ -238,9 +280,11 @@ starting permutation: wx1 ry3 rxwy2 c1 c2 c3 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c1: COMMIT; step c2: COMMIT; @@ -250,9 +294,11 @@ starting permutation: wx1 ry3 rxwy2 c1 c3 c2 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c1: COMMIT; step c3: COMMIT; @@ -262,9 +308,11 @@ starting permutation: wx1 ry3 rxwy2 c2 c1 c3 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step c1: COMMIT; @@ -273,9 +321,11 @@ starting permutation: wx1 ry3 rxwy2 c2 c3 c1 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step c3: COMMIT; @@ -284,9 +334,11 @@ starting permutation: wx1 ry3 rxwy2 c3 c1 c2 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; step c1: COMMIT; @@ -295,9 +347,11 @@ starting permutation: wx1 ry3 rxwy2 c3 c2 c1 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; step c2: COMMIT; @@ -306,9 +360,11 @@ starting permutation: wx1 ry3 c3 c1 rxwy2 c2 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c1: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); @@ -317,9 +373,11 @@ starting permutation: wx1 ry3 c3 rxwy2 c1 c2 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step c1: COMMIT; @@ -328,9 +386,11 @@ starting permutation: wx1 ry3 c3 rxwy2 c2 c1 step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; @@ -342,9 +402,11 @@ step c1: COMMIT; step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; starting permutation: rxwy2 wx1 c1 ry3 c2 c3 @@ -352,9 +414,11 @@ step wx1: update D1 set id = id + 1; step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions step c3: COMMIT; @@ -364,9 +428,11 @@ step wx1: update D1 set id = id + 1; step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -377,9 +443,11 @@ step c2: COMMIT; step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; starting permutation: rxwy2 wx1 c2 ry3 c1 c3 @@ -387,9 +455,11 @@ step wx1: update D1 set id = id + 1; step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c1: COMMIT; step c3: COMMIT; @@ -398,9 +468,11 @@ step wx1: update D1 set id = id + 1; step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; step c1: COMMIT; @@ -408,9 +480,11 @@ 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 +id +-- + 1 +(1 row) -1 step c1: COMMIT; step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions @@ -420,9 +494,11 @@ 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 +id +-- + 1 +(1 row) -1 step c1: COMMIT; step c3: COMMIT; step c2: COMMIT; @@ -432,9 +508,11 @@ 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 +id +-- + 1 +(1 row) -1 step c2: COMMIT; step c1: COMMIT; step c3: COMMIT; @@ -443,9 +521,11 @@ 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 +id +-- + 1 +(1 row) -1 step c2: COMMIT; step c3: COMMIT; step c1: COMMIT; @@ -454,9 +534,11 @@ 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 +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c1: COMMIT; step c2: COMMIT; @@ -465,9 +547,11 @@ 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 +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c2: COMMIT; step c1: COMMIT; @@ -478,9 +562,11 @@ step wx1: update D1 set id = id + 1; step c1: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; starting permutation: rxwy2 c2 wx1 ry3 c1 c3 @@ -488,9 +574,11 @@ step c2: COMMIT; step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c1: COMMIT; step c3: COMMIT; @@ -499,9 +587,11 @@ step c2: COMMIT; step wx1: update D1 set id = id + 1; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; step c1: COMMIT; @@ -509,9 +599,11 @@ step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step wx1: update D1 set id = id + 1; step c1: COMMIT; step c3: COMMIT; @@ -520,9 +612,11 @@ step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step wx1: update D1 set id = id + 1; step c3: COMMIT; step c1: COMMIT; @@ -531,9 +625,11 @@ step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step ry3: select id from D2; -id +id +-- + 2 +(1 row) -2 step c3: COMMIT; step wx1: update D1 set id = id + 1; step c1: COMMIT; @@ -541,9 +637,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c1: COMMIT; step c2: COMMIT; @@ -553,9 +651,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c1: COMMIT; step c3: COMMIT; @@ -565,9 +665,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c2: COMMIT; step c1: COMMIT; @@ -576,9 +678,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c2: COMMIT; step c3: COMMIT; @@ -587,9 +691,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c3: COMMIT; step c1: COMMIT; @@ -598,9 +704,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c3: COMMIT; step c2: COMMIT; @@ -609,9 +717,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step c2: COMMIT; step wx1: update D1 set id = id + 1; step c1: COMMIT; @@ -620,9 +730,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step c2: COMMIT; step wx1: update D1 set id = id + 1; step c3: COMMIT; @@ -631,9 +743,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step c2: COMMIT; step c3: COMMIT; step wx1: update D1 set id = id + 1; @@ -642,9 +756,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step wx1: update D1 set id = id + 1; step c1: COMMIT; @@ -653,9 +769,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step wx1: update D1 set id = id + 1; step c2: COMMIT; @@ -664,9 +782,11 @@ 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; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step c2: COMMIT; step wx1: update D1 set id = id + 1; @@ -674,9 +794,11 @@ starting permutation: ry3 wx1 c1 rxwy2 c2 c3 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c1: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); @@ -685,9 +807,11 @@ starting permutation: ry3 wx1 c1 rxwy2 c3 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c1: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); @@ -696,9 +820,11 @@ starting permutation: ry3 wx1 c1 c3 rxwy2 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c1: COMMIT; step c3: COMMIT; @@ -707,9 +833,11 @@ starting permutation: ry3 wx1 rxwy2 c1 c2 c3 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step rxwy2: update D2 set id = (select id+1 from D1); step c1: COMMIT; @@ -719,9 +847,11 @@ starting permutation: ry3 wx1 rxwy2 c1 c3 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step rxwy2: update D2 set id = (select id+1 from D1); step c1: COMMIT; @@ -731,9 +861,11 @@ starting permutation: ry3 wx1 rxwy2 c2 c1 c3 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; @@ -742,9 +874,11 @@ starting permutation: ry3 wx1 rxwy2 c2 c3 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; @@ -753,9 +887,11 @@ starting permutation: ry3 wx1 rxwy2 c3 c1 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; @@ -764,9 +900,11 @@ starting permutation: ry3 wx1 rxwy2 c3 c2 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; @@ -775,9 +913,11 @@ starting permutation: ry3 wx1 c3 c1 rxwy2 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c3: COMMIT; step c1: COMMIT; @@ -786,9 +926,11 @@ starting permutation: ry3 wx1 c3 rxwy2 c1 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); @@ -797,9 +939,11 @@ starting permutation: ry3 wx1 c3 rxwy2 c2 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step wx1: update D1 set id = id + 1; step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); @@ -808,9 +952,11 @@ starting permutation: ry3 rxwy2 wx1 c1 c2 c3 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step wx1: update D1 set id = id + 1; step c1: COMMIT; @@ -820,9 +966,11 @@ starting permutation: ry3 rxwy2 wx1 c1 c3 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step wx1: update D1 set id = id + 1; step c1: COMMIT; @@ -832,9 +980,11 @@ starting permutation: ry3 rxwy2 wx1 c2 c1 c3 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step wx1: update D1 set id = id + 1; step c2: COMMIT; @@ -843,9 +993,11 @@ starting permutation: ry3 rxwy2 wx1 c2 c3 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step wx1: update D1 set id = id + 1; step c2: COMMIT; @@ -854,9 +1006,11 @@ starting permutation: ry3 rxwy2 wx1 c3 c1 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step wx1: update D1 set id = id + 1; step c3: COMMIT; @@ -865,9 +1019,11 @@ starting permutation: ry3 rxwy2 wx1 c3 c2 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step wx1: update D1 set id = id + 1; step c3: COMMIT; @@ -876,9 +1032,11 @@ starting permutation: ry3 rxwy2 c2 wx1 c1 c3 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step wx1: update D1 set id = id + 1; @@ -887,9 +1045,11 @@ starting permutation: ry3 rxwy2 c2 wx1 c3 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step wx1: update D1 set id = id + 1; @@ -898,9 +1058,11 @@ starting permutation: ry3 rxwy2 c2 c3 wx1 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; step c3: COMMIT; @@ -909,9 +1071,11 @@ starting permutation: ry3 rxwy2 c3 wx1 c1 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; step wx1: update D1 set id = id + 1; @@ -920,9 +1084,11 @@ starting permutation: ry3 rxwy2 c3 wx1 c2 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; step wx1: update D1 set id = id + 1; @@ -931,9 +1097,11 @@ starting permutation: ry3 rxwy2 c3 c2 wx1 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step rxwy2: update D2 set id = (select id+1 from D1); step c3: COMMIT; step c2: COMMIT; @@ -942,9 +1110,11 @@ starting permutation: ry3 c3 wx1 c1 rxwy2 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step wx1: update D1 set id = id + 1; step c1: COMMIT; @@ -953,9 +1123,11 @@ starting permutation: ry3 c3 wx1 rxwy2 c1 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step wx1: update D1 set id = id + 1; step rxwy2: update D2 set id = (select id+1 from D1); @@ -964,9 +1136,11 @@ starting permutation: ry3 c3 wx1 rxwy2 c2 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step wx1: update D1 set id = id + 1; step rxwy2: update D2 set id = (select id+1 from D1); @@ -975,9 +1149,11 @@ starting permutation: ry3 c3 rxwy2 wx1 c1 c2 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step wx1: update D1 set id = id + 1; @@ -986,9 +1162,11 @@ starting permutation: ry3 c3 rxwy2 wx1 c2 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step wx1: update D1 set id = id + 1; @@ -997,9 +1175,11 @@ starting permutation: ry3 c3 rxwy2 c2 wx1 c1 step ry3: select id from D2; -id +id +-- + 1 +(1 row) -1 step c3: COMMIT; step rxwy2: update D2 set id = (select id+1 from D1); step c2: COMMIT; diff -Nru postgresql-10-10.17/src/test/isolation/expected/update-conflict-out.out postgresql-10-10.19/src/test/isolation/expected/update-conflict-out.out --- postgresql-10-10.17/src/test/isolation/expected/update-conflict-out.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/update-conflict-out.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,7 +2,9 @@ starting permutation: foo_select bar_insert foo_insert foo_commit trouble_update bar_select bar_commit trouble_abort step foo_select: SELECT * FROM txn0 WHERE id = 42; -id val +id|val +--+--- +(0 rows) step bar_insert: INSERT INTO txn0 SELECT 42, 'bar_insert'; step foo_insert: INSERT INTO txn1 SELECT 7, 'foo_insert'; @@ -15,7 +17,9 @@ starting permutation: foo_select bar_insert foo_insert foo_commit trouble_delete bar_select bar_commit trouble_abort step foo_select: SELECT * FROM txn0 WHERE id = 42; -id val +id|val +--+--- +(0 rows) step bar_insert: INSERT INTO txn0 SELECT 42, 'bar_insert'; step foo_insert: INSERT INTO txn1 SELECT 7, 'foo_insert'; diff -Nru postgresql-10-10.17/src/test/isolation/expected/vacuum-reltuples.out postgresql-10-10.19/src/test/isolation/expected/vacuum-reltuples.out --- postgresql-10-10.17/src/test/isolation/expected/vacuum-reltuples.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/expected/vacuum-reltuples.out 2021-11-08 22:05:38.000000000 +0000 @@ -11,9 +11,11 @@ select relpages, reltuples from pg_class where oid='smalltbl'::regclass; -relpages reltuples +relpages|reltuples +--------+--------- + 1| 21 +(1 row) -1 21 starting permutation: modify open fetch1 vac close stats step modify: @@ -26,9 +28,11 @@ step fetch1: fetch next from c1; -dummy +dummy +----- + 1 +(1 row) -1 step vac: vacuum smalltbl; @@ -39,9 +43,11 @@ select relpages, reltuples from pg_class where oid='smalltbl'::regclass; -relpages reltuples +relpages|reltuples +--------+--------- + 1| 20 +(1 row) -1 20 starting permutation: modify vac stats step modify: @@ -54,6 +60,8 @@ select relpages, reltuples from pg_class where oid='smalltbl'::regclass; -relpages reltuples +relpages|reltuples +--------+--------- + 1| 21 +(1 row) -1 21 diff -Nru postgresql-10-10.17/src/test/isolation/isolationtester.c postgresql-10-10.19/src/test/isolation/isolationtester.c --- postgresql-10-10.17/src/test/isolation/isolationtester.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/isolationtester.c 2021-11-08 22:05:38.000000000 +0000 @@ -23,35 +23,55 @@ /* * conns[0] is the global setup, teardown, and watchdog connection. Additional - * connections represent spec-defined sessions. We also track the backend - * PID, in numeric and string formats, for each connection. + * connections represent spec-defined sessions. */ -static PGconn **conns = NULL; -static int *backend_pids = NULL; -static const char **backend_pid_strs = NULL; +typedef struct IsoConnInfo +{ + /* The libpq connection object for this connection. */ + PGconn *conn; + /* The backend PID, in numeric and string formats. */ + int backend_pid; + const char *backend_pid_str; + /* Name of the associated session. */ + const char *sessionname; + /* Active step on this connection, or NULL if idle. */ + PermutationStep *active_step; + /* Number of NOTICE messages received from connection. */ + int total_notices; +} IsoConnInfo; + +static IsoConnInfo *conns = NULL; static int nconns = 0; -/* In dry run only output permutations to be run by the tester. */ -static int dry_run = false; +/* Flag indicating some new NOTICE has arrived */ +static bool any_new_notice = false; /* Maximum time to wait before giving up on a step (in usec) */ static int64 max_step_wait = 300 * USECS_PER_SEC; +static void check_testspec(TestSpec *testspec); static void run_testspec(TestSpec *testspec); static void run_all_permutations(TestSpec *testspec); -static void run_all_permutations_recurse(TestSpec *testspec, int nsteps, - Step **steps); +static void run_all_permutations_recurse(TestSpec *testspec, int *piles, + int nsteps, PermutationStep **steps); static void run_named_permutations(TestSpec *testspec); -static void run_permutation(TestSpec *testspec, int nsteps, Step **steps); +static void run_permutation(TestSpec *testspec, int nsteps, + PermutationStep **steps); -#define STEP_NONBLOCK 0x1 /* return 0 as soon as cmd waits for a lock */ +/* Flag bits for try_complete_step(s) */ +#define STEP_NONBLOCK 0x1 /* return as soon as cmd waits for a lock */ #define STEP_RETRY 0x2 /* this is a retry of a previously-waiting cmd */ -static bool try_complete_step(TestSpec *testspec, Step *step, int flags); + +static int try_complete_steps(TestSpec *testspec, PermutationStep **waiting, + int nwaiting, int flags); +static bool try_complete_step(TestSpec *testspec, PermutationStep *pstep, + int flags); static int step_qsort_cmp(const void *a, const void *b); static int step_bsearch_cmp(const void *a, const void *b); +static bool step_has_blocker(PermutationStep *pstep); static void printResultSet(PGresult *res); static void isotesterNoticeProcessor(void *arg, const char *message); static void blackholeNoticeProcessor(void *arg, const char *message); @@ -63,7 +83,8 @@ int i; for (i = 0; i < nconns; i++) - PQfinish(conns[i]); + if (conns[i].conn) + PQfinish(conns[i].conn); exit(1); } @@ -73,27 +94,20 @@ const char *conninfo; const char *env_wait; TestSpec *testspec; - int i, - j; - int n; PGresult *res; PQExpBufferData wait_query; int opt; - int nallsteps; - Step **allsteps; + int i; - while ((opt = getopt(argc, argv, "nV")) != -1) + while ((opt = getopt(argc, argv, "V")) != -1) { switch (opt) { - case 'n': - dry_run = true; - break; case 'V': puts("isolationtester (PostgreSQL) " PG_VERSION); exit(0); default: - fprintf(stderr, "Usage: isolationtester [-n] [CONNINFO]\n"); + fprintf(stderr, "Usage: isolationtester [CONNINFO]\n"); return EXIT_FAILURE; } } @@ -128,45 +142,8 @@ spec_yyparse(); testspec = &parseresult; - /* Create a lookup table of all steps. */ - nallsteps = 0; - for (i = 0; i < testspec->nsessions; i++) - nallsteps += testspec->sessions[i]->nsteps; - - allsteps = pg_malloc(nallsteps * sizeof(Step *)); - - n = 0; - for (i = 0; i < testspec->nsessions; i++) - { - for (j = 0; j < testspec->sessions[i]->nsteps; j++) - allsteps[n++] = testspec->sessions[i]->steps[j]; - } - - qsort(allsteps, nallsteps, sizeof(Step *), &step_qsort_cmp); - testspec->nallsteps = nallsteps; - testspec->allsteps = allsteps; - - /* Verify that all step names are unique */ - for (i = 1; i < testspec->nallsteps; i++) - { - if (strcmp(testspec->allsteps[i - 1]->name, - testspec->allsteps[i]->name) == 0) - { - fprintf(stderr, "duplicate step name: %s\n", - testspec->allsteps[i]->name); - exit_nicely(); - } - } - - /* - * In dry-run mode, just print the permutations that would be run, and - * exit. - */ - if (dry_run) - { - run_testspec(testspec); - return 0; - } + /* Perform post-parse checking, and fill in linking fields */ + check_testspec(testspec); printf("Parsed test spec with %d sessions\n", testspec->nsessions); @@ -175,17 +152,20 @@ * extra for lock wait detection and global work. */ nconns = 1 + testspec->nsessions; - conns = (PGconn **) pg_malloc0(nconns * sizeof(PGconn *)); - backend_pids = pg_malloc0(nconns * sizeof(*backend_pids)); - backend_pid_strs = pg_malloc0(nconns * sizeof(*backend_pid_strs)); + conns = (IsoConnInfo *) pg_malloc0(nconns * sizeof(IsoConnInfo)); for (i = 0; i < nconns; i++) { - conns[i] = PQconnectdb(conninfo); - if (PQstatus(conns[i]) != CONNECTION_OK) + if (i == 0) + conns[i].sessionname = "control connection"; + else + conns[i].sessionname = testspec->sessions[i - 1]->name; + + conns[i].conn = PQconnectdb(conninfo); + if (PQstatus(conns[i].conn) != CONNECTION_OK) { - fprintf(stderr, "Connection %d to database failed: %s", - i, PQerrorMessage(conns[i])); + fprintf(stderr, "Connection %d failed: %s", + i, PQerrorMessage(conns[i].conn)); exit_nicely(); } @@ -196,27 +176,17 @@ * messages). */ if (i != 0) - PQsetNoticeProcessor(conns[i], + PQsetNoticeProcessor(conns[i].conn, isotesterNoticeProcessor, - (void *) (testspec->sessions[i - 1]->name)); + (void *) &conns[i]); else - PQsetNoticeProcessor(conns[i], + PQsetNoticeProcessor(conns[i].conn, blackholeNoticeProcessor, NULL); /* Save each connection's backend PID for subsequent use. */ - backend_pids[i] = PQbackendPID(conns[i]); - backend_pid_strs[i] = psprintf("%d", backend_pids[i]); - } - - /* Set the session index fields in steps. */ - for (i = 0; i < testspec->nsessions; i++) - { - Session *session = testspec->sessions[i]; - int stepindex; - - for (stepindex = 0; stepindex < session->nsteps; stepindex++) - session->steps[stepindex]->session = i; + conns[i].backend_pid = PQbackendPID(conns[i].conn); + conns[i].backend_pid_str = psprintf("%d", conns[i].backend_pid); } /* @@ -231,16 +201,16 @@ appendPQExpBufferStr(&wait_query, "SELECT pg_catalog.pg_isolation_test_session_is_blocked($1, '{"); /* The spec syntax requires at least one session; assume that here. */ - appendPQExpBufferStr(&wait_query, backend_pid_strs[1]); + appendPQExpBufferStr(&wait_query, conns[1].backend_pid_str); for (i = 2; i < nconns; i++) - appendPQExpBuffer(&wait_query, ",%s", backend_pid_strs[i]); + appendPQExpBuffer(&wait_query, ",%s", conns[i].backend_pid_str); appendPQExpBufferStr(&wait_query, "}')"); - res = PQprepare(conns[0], PREP_WAITING, wait_query.data, 0, NULL); + res = PQprepare(conns[0].conn, PREP_WAITING, wait_query.data, 0, NULL); if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "prepare of lock wait query failed: %s", - PQerrorMessage(conns[0])); + PQerrorMessage(conns[0].conn)); exit_nicely(); } PQclear(res); @@ -254,11 +224,150 @@ /* Clean up and exit */ for (i = 0; i < nconns; i++) - PQfinish(conns[i]); + PQfinish(conns[i].conn); return 0; } -static int *piles; +/* + * Validity-check the test spec and fill in cross-links between nodes. + */ +static void +check_testspec(TestSpec *testspec) +{ + int nallsteps; + Step **allsteps; + int i, + j, + k; + + /* Create a sorted lookup table of all steps. */ + nallsteps = 0; + for (i = 0; i < testspec->nsessions; i++) + nallsteps += testspec->sessions[i]->nsteps; + + allsteps = pg_malloc(nallsteps * sizeof(Step *)); + + k = 0; + for (i = 0; i < testspec->nsessions; i++) + { + for (j = 0; j < testspec->sessions[i]->nsteps; j++) + allsteps[k++] = testspec->sessions[i]->steps[j]; + } + + qsort(allsteps, nallsteps, sizeof(Step *), step_qsort_cmp); + + /* Verify that all step names are unique. */ + for (i = 1; i < nallsteps; i++) + { + if (strcmp(allsteps[i - 1]->name, + allsteps[i]->name) == 0) + { + fprintf(stderr, "duplicate step name: %s\n", + allsteps[i]->name); + exit_nicely(); + } + } + + /* Set the session index fields in steps. */ + for (i = 0; i < testspec->nsessions; i++) + { + Session *session = testspec->sessions[i]; + + for (j = 0; j < session->nsteps; j++) + session->steps[j]->session = i; + } + + /* + * If we have manually-specified permutations, link PermutationSteps to + * Steps, and fill in blocker links. + */ + for (i = 0; i < testspec->npermutations; i++) + { + Permutation *p = testspec->permutations[i]; + + for (j = 0; j < p->nsteps; j++) + { + PermutationStep *pstep = p->steps[j]; + Step **this = (Step **) bsearch(pstep->name, + allsteps, + nallsteps, + sizeof(Step *), + step_bsearch_cmp); + + if (this == NULL) + { + fprintf(stderr, "undefined step \"%s\" specified in permutation\n", + pstep->name); + exit_nicely(); + } + pstep->step = *this; + + /* Mark the step used, for check below */ + pstep->step->used = true; + } + + /* + * Identify any blocker steps. We search only the current + * permutation, since steps not used there couldn't be concurrent. + * Note that it's OK to reference later permutation steps, so this + * can't be combined with the previous loop. + */ + for (j = 0; j < p->nsteps; j++) + { + PermutationStep *pstep = p->steps[j]; + + for (k = 0; k < pstep->nblockers; k++) + { + PermutationStepBlocker *blocker = pstep->blockers[k]; + int n; + + if (blocker->blocktype == PSB_ONCE) + continue; /* nothing to link to */ + + blocker->step = NULL; + for (n = 0; n < p->nsteps; n++) + { + PermutationStep *otherp = p->steps[n]; + + if (strcmp(otherp->name, blocker->stepname) == 0) + { + blocker->step = otherp->step; + break; + } + } + if (blocker->step == NULL) + { + fprintf(stderr, "undefined blocking step \"%s\" referenced in permutation step \"%s\"\n", + blocker->stepname, pstep->name); + exit_nicely(); + } + /* can't block on completion of step of own session */ + if (blocker->step->session == pstep->step->session) + { + fprintf(stderr, "permutation step \"%s\" cannot block on its own session\n", + pstep->name); + exit_nicely(); + } + } + } + } + + /* + * If we have manually-specified permutations, verify that all steps have + * been used, warning about anything defined but not used. We can skip + * this when using automatically-generated permutations. + */ + if (testspec->permutations) + { + for (i = 0; i < nallsteps; i++) + { + if (!allsteps[i]->used) + fprintf(stderr, "unused step name: %s\n", allsteps[i]->name); + } + } + + free(allsteps); +} /* * Run the permutations specified in the spec, or all if none were @@ -281,14 +390,20 @@ { int nsteps; int i; - Step **steps; + PermutationStep *steps; + PermutationStep **stepptrs; + int *piles; /* Count the total number of steps in all sessions */ nsteps = 0; for (i = 0; i < testspec->nsessions; i++) nsteps += testspec->sessions[i]->nsteps; - steps = pg_malloc(sizeof(Step *) * nsteps); + /* Create PermutationStep workspace array */ + steps = (PermutationStep *) pg_malloc0(sizeof(PermutationStep) * nsteps); + stepptrs = (PermutationStep **) pg_malloc(sizeof(PermutationStep *) * nsteps); + for (i = 0; i < nsteps; i++) + stepptrs[i] = steps + i; /* * To generate the permutations, we conceptually put the steps of each @@ -303,28 +418,42 @@ for (i = 0; i < testspec->nsessions; i++) piles[i] = 0; - run_all_permutations_recurse(testspec, 0, steps); + run_all_permutations_recurse(testspec, piles, 0, stepptrs); + + free(steps); + free(stepptrs); + free(piles); } static void -run_all_permutations_recurse(TestSpec *testspec, int nsteps, Step **steps) +run_all_permutations_recurse(TestSpec *testspec, int *piles, + int nsteps, PermutationStep **steps) { int i; - int found = 0; + bool found = false; for (i = 0; i < testspec->nsessions; i++) { /* If there's any more steps in this pile, pick it and recurse */ if (piles[i] < testspec->sessions[i]->nsteps) { - steps[nsteps] = testspec->sessions[i]->steps[piles[i]]; + Step *newstep = testspec->sessions[i]->steps[piles[i]]; + + /* + * These automatically-generated PermutationSteps never have + * blocker conditions. So we need only fill these fields, relying + * on run_all_permutations() to have zeroed the rest: + */ + steps[nsteps]->name = newstep->name; + steps[nsteps]->step = newstep; + piles[i]++; - run_all_permutations_recurse(testspec, nsteps + 1, steps); + run_all_permutations_recurse(testspec, piles, nsteps + 1, steps); piles[i]--; - found = 1; + found = true; } } @@ -339,38 +468,13 @@ static void run_named_permutations(TestSpec *testspec) { - int i, - j; + int i; for (i = 0; i < testspec->npermutations; i++) { Permutation *p = testspec->permutations[i]; - Step **steps; - - steps = pg_malloc(p->nsteps * sizeof(Step *)); - - /* Find all the named steps using the lookup table */ - for (j = 0; j < p->nsteps; j++) - { - Step **this = (Step **) bsearch(p->stepnames[j], - testspec->allsteps, - testspec->nallsteps, - sizeof(Step *), - &step_bsearch_cmp); - - if (this == NULL) - { - fprintf(stderr, "undefined step \"%s\" specified in permutation\n", - p->stepnames[j]); - exit_nicely(); - } - steps[j] = *this; - } - - /* And run them */ - run_permutation(testspec, p->nsteps, steps); - free(steps); + run_permutation(testspec, p->nsteps, p->steps); } } @@ -393,93 +497,17 @@ } /* - * If a step caused an error to be reported, print it out and clear it. - */ -static void -report_error_message(Step *step) -{ - if (step->errormsg) - { - fprintf(stdout, "%s\n", step->errormsg); - free(step->errormsg); - step->errormsg = NULL; - } -} - -/* - * As above, but reports messages possibly emitted by multiple steps. This is - * useful when we have a blocked command awakened by another one; we want to - * report all messages identically, for the case where we don't care which - * one fails due to a timeout such as deadlock timeout. - */ -static void -report_multiple_error_messages(Step *step, int nextra, Step **extrastep) -{ - PQExpBufferData buffer; - int n; - - if (nextra == 0) - { - report_error_message(step); - return; - } - - initPQExpBuffer(&buffer); - appendPQExpBufferStr(&buffer, step->name); - - for (n = 0; n < nextra; ++n) - appendPQExpBuffer(&buffer, " %s", extrastep[n]->name); - - if (step->errormsg) - { - fprintf(stdout, "error in steps %s: %s\n", buffer.data, - step->errormsg); - free(step->errormsg); - step->errormsg = NULL; - } - - for (n = 0; n < nextra; ++n) - { - if (extrastep[n]->errormsg == NULL) - continue; - fprintf(stdout, "error in steps %s: %s\n", - buffer.data, extrastep[n]->errormsg); - free(extrastep[n]->errormsg); - extrastep[n]->errormsg = NULL; - } - - termPQExpBuffer(&buffer); -} - -/* * Run one permutation */ static void -run_permutation(TestSpec *testspec, int nsteps, Step **steps) +run_permutation(TestSpec *testspec, int nsteps, PermutationStep **steps) { PGresult *res; int i; - int w; int nwaiting = 0; - int nerrorstep = 0; - Step **waiting; - Step **errorstep; - - /* - * In dry run mode, just display the permutation in the same format used - * by spec files, and return. - */ - if (dry_run) - { - printf("permutation"); - for (i = 0; i < nsteps; i++) - printf(" \"%s\"", steps[i]->name); - printf("\n"); - return; - } + PermutationStep **waiting; - waiting = pg_malloc(sizeof(Step *) * testspec->nsessions); - errorstep = pg_malloc(sizeof(Step *) * testspec->nsessions); + waiting = pg_malloc(sizeof(PermutationStep *) * testspec->nsessions); printf("\nstarting permutation:"); for (i = 0; i < nsteps; i++) @@ -489,14 +517,14 @@ /* Perform setup */ for (i = 0; i < testspec->nsetupsqls; i++) { - res = PQexec(conns[0], testspec->setupsqls[i]); + res = PQexec(conns[0].conn, testspec->setupsqls[i]); if (PQresultStatus(res) == PGRES_TUPLES_OK) { printResultSet(res); } else if (PQresultStatus(res) != PGRES_COMMAND_OK) { - fprintf(stderr, "setup failed: %s", PQerrorMessage(conns[0])); + fprintf(stderr, "setup failed: %s", PQerrorMessage(conns[0].conn)); exit_nicely(); } PQclear(res); @@ -507,7 +535,7 @@ { if (testspec->sessions[i]->setupsql) { - res = PQexec(conns[i + 1], testspec->sessions[i]->setupsql); + res = PQexec(conns[i + 1].conn, testspec->sessions[i]->setupsql); if (PQresultStatus(res) == PGRES_TUPLES_OK) { printResultSet(res); @@ -515,8 +543,8 @@ else if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "setup of session %s failed: %s", - testspec->sessions[i]->name, - PQerrorMessage(conns[i + 1])); + conns[i + 1].sessionname, + PQerrorMessage(conns[i + 1].conn)); exit_nicely(); } PQclear(res); @@ -526,73 +554,96 @@ /* Perform steps */ for (i = 0; i < nsteps; i++) { - Step *step = steps[i]; - PGconn *conn = conns[1 + step->session]; - Step *oldstep = NULL; + PermutationStep *pstep = steps[i]; + Step *step = pstep->step; + IsoConnInfo *iconn = &conns[1 + step->session]; + PGconn *conn = iconn->conn; bool mustwait; + int j; /* * Check whether the session that needs to perform the next step is * still blocked on an earlier step. If so, wait for it to finish. - * - * (In older versions of this tool, we allowed precisely one session - * to be waiting at a time. If we reached a step that required that - * session to execute the next command, we would declare the whole - * permutation invalid, cancel everything, and move on to the next - * one. Unfortunately, that made it impossible to test the deadlock - * detector using this framework, unless the number of processes - * involved in the deadlock was precisely two. We now assume that if - * we reach a step that is still blocked, we need to wait for it to - * unblock itself.) */ - for (w = 0; w < nwaiting; ++w) + if (iconn->active_step != NULL) { - if (step->session == waiting[w]->session) - { - oldstep = waiting[w]; + struct timeval start_time; - /* Wait for previous step on this connection. */ - try_complete_step(testspec, oldstep, STEP_RETRY); + gettimeofday(&start_time, NULL); - /* Remove that step from the waiting[] array. */ - if (w + 1 < nwaiting) - memmove(&waiting[w], &waiting[w + 1], - (nwaiting - (w + 1)) * sizeof(Step *)); - nwaiting--; - - break; - } - } - if (oldstep != NULL) - { - /* - * Check for completion of any steps that were previously waiting. - * Remove any that have completed from waiting[], and include them - * in the list for report_multiple_error_messages(). - */ - w = 0; - nerrorstep = 0; - while (w < nwaiting) + while (iconn->active_step != NULL) { - if (try_complete_step(testspec, waiting[w], - STEP_NONBLOCK | STEP_RETRY)) - { - /* Still blocked on a lock, leave it alone. */ - w++; - } - else + PermutationStep *oldstep = iconn->active_step; + + /* + * Wait for oldstep. But even though we don't use + * STEP_NONBLOCK, it might not complete because of blocker + * conditions. + */ + if (!try_complete_step(testspec, oldstep, STEP_RETRY)) { - /* This one finished, too! */ - errorstep[nerrorstep++] = waiting[w]; + /* Done, so remove oldstep from the waiting[] array. */ + int w; + + for (w = 0; w < nwaiting; w++) + { + if (oldstep == waiting[w]) + break; + } + if (w >= nwaiting) + abort(); /* can't happen */ if (w + 1 < nwaiting) memmove(&waiting[w], &waiting[w + 1], - (nwaiting - (w + 1)) * sizeof(Step *)); + (nwaiting - (w + 1)) * sizeof(PermutationStep *)); nwaiting--; } - } - /* Report all errors together. */ - report_multiple_error_messages(oldstep, nerrorstep, errorstep); + /* + * Check for other steps that have finished. We should do + * this if oldstep completed, as it might have unblocked + * something. On the other hand, if oldstep hasn't completed, + * we must poll all the active steps in hopes of unblocking + * oldstep. So either way, poll them. + */ + nwaiting = try_complete_steps(testspec, waiting, nwaiting, + STEP_NONBLOCK | STEP_RETRY); + + /* + * If the target session is still busy, apply a timeout to + * keep from hanging indefinitely, which could happen with + * incorrect blocker annotations. Use the same 2 * + * max_step_wait limit as try_complete_step does for deciding + * to die. (We don't bother with trying to cancel anything, + * since it's unclear what to cancel in this case.) + */ + if (iconn->active_step != NULL) + { + struct timeval current_time; + int64 td; + + gettimeofday(¤t_time, NULL); + td = (int64) current_time.tv_sec - (int64) start_time.tv_sec; + td *= USECS_PER_SEC; + td += (int64) current_time.tv_usec - (int64) start_time.tv_usec; + if (td > 2 * max_step_wait) + { + fprintf(stderr, "step %s timed out after %d seconds\n", + iconn->active_step->name, + (int) (td / USECS_PER_SEC)); + fprintf(stderr, "active steps are:"); + for (j = 1; j < nconns; j++) + { + IsoConnInfo *oconn = &conns[j]; + + if (oconn->active_step != NULL) + fprintf(stderr, " %s", + oconn->active_step->name); + } + fprintf(stderr, "\n"); + exit_nicely(); + } + } + } } /* Send the query for this step. */ @@ -603,40 +654,37 @@ exit_nicely(); } - /* Try to complete this step without blocking. */ - mustwait = try_complete_step(testspec, step, STEP_NONBLOCK); + /* Remember we launched a step. */ + iconn->active_step = pstep; - /* Check for completion of any steps that were previously waiting. */ - w = 0; - nerrorstep = 0; - while (w < nwaiting) + /* Remember target number of NOTICEs for any blocker conditions. */ + for (j = 0; j < pstep->nblockers; j++) { - if (try_complete_step(testspec, waiting[w], - STEP_NONBLOCK | STEP_RETRY)) - w++; - else - { - errorstep[nerrorstep++] = waiting[w]; - if (w + 1 < nwaiting) - memmove(&waiting[w], &waiting[w + 1], - (nwaiting - (w + 1)) * sizeof(Step *)); - nwaiting--; - } + PermutationStepBlocker *blocker = pstep->blockers[j]; + + if (blocker->blocktype == PSB_NUM_NOTICES) + blocker->target_notices = blocker->num_notices + + conns[blocker->step->session + 1].total_notices; } - /* Report any error from this step, and any steps that it unblocked. */ - report_multiple_error_messages(step, nerrorstep, errorstep); + /* Try to complete this step without blocking. */ + mustwait = try_complete_step(testspec, pstep, STEP_NONBLOCK); + + /* Check for completion of any steps that were previously waiting. */ + nwaiting = try_complete_steps(testspec, waiting, nwaiting, + STEP_NONBLOCK | STEP_RETRY); /* If this step is waiting, add it to the array of waiters. */ if (mustwait) - waiting[nwaiting++] = step; + waiting[nwaiting++] = pstep; } /* Wait for any remaining queries. */ - for (w = 0; w < nwaiting; ++w) + nwaiting = try_complete_steps(testspec, waiting, nwaiting, STEP_RETRY); + if (nwaiting != 0) { - try_complete_step(testspec, waiting[w], STEP_RETRY); - report_error_message(waiting[w]); + fprintf(stderr, "failed to complete permutation due to mutually-blocking steps\n"); + exit_nicely(); } /* Perform per-session teardown */ @@ -644,7 +692,7 @@ { if (testspec->sessions[i]->teardownsql) { - res = PQexec(conns[i + 1], testspec->sessions[i]->teardownsql); + res = PQexec(conns[i + 1].conn, testspec->sessions[i]->teardownsql); if (PQresultStatus(res) == PGRES_TUPLES_OK) { printResultSet(res); @@ -652,8 +700,8 @@ else if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "teardown of session %s failed: %s", - testspec->sessions[i]->name, - PQerrorMessage(conns[i + 1])); + conns[i + 1].sessionname, + PQerrorMessage(conns[i + 1].conn)); /* don't exit on teardown failure */ } PQclear(res); @@ -663,7 +711,7 @@ /* Perform teardown */ if (testspec->teardownsql) { - res = PQexec(conns[0], testspec->teardownsql); + res = PQexec(conns[0].conn, testspec->teardownsql); if (PQresultStatus(res) == PGRES_TUPLES_OK) { printResultSet(res); @@ -671,36 +719,90 @@ else if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "teardown failed: %s", - PQerrorMessage(conns[0])); + PQerrorMessage(conns[0].conn)); /* don't exit on teardown failure */ } PQclear(res); } free(waiting); - free(errorstep); +} + +/* + * Check for completion of any waiting step(s). + * Remove completed ones from the waiting[] array, + * and return the new value of nwaiting. + * See try_complete_step for the meaning of the flags. + */ +static int +try_complete_steps(TestSpec *testspec, PermutationStep **waiting, + int nwaiting, int flags) +{ + int old_nwaiting; + bool have_blocker; + + do + { + int w = 0; + + /* Reset latch; we only care about notices received within loop. */ + any_new_notice = false; + + /* Likewise, these variables reset for each retry. */ + old_nwaiting = nwaiting; + have_blocker = false; + + /* Scan the array, try to complete steps. */ + while (w < nwaiting) + { + if (try_complete_step(testspec, waiting[w], flags)) + { + /* Still blocked, leave it alone. */ + if (waiting[w]->nblockers > 0) + have_blocker = true; + w++; + } + else + { + /* Done, remove it from array. */ + if (w + 1 < nwaiting) + memmove(&waiting[w], &waiting[w + 1], + (nwaiting - (w + 1)) * sizeof(PermutationStep *)); + nwaiting--; + } + } + + /* + * If any of the still-waiting steps have blocker conditions attached, + * it's possible that one of the steps we examined afterwards has + * released them (either by completing, or by sending a NOTICE). If + * any step completions or NOTICEs happened, repeat the loop until + * none occurs. Without this provision, completion timing could vary + * depending on the order in which the steps appear in the array. + */ + } while (have_blocker && (nwaiting < old_nwaiting || any_new_notice)); + return nwaiting; } /* * Our caller already sent the query associated with this step. Wait for it - * to either complete or (if given the STEP_NONBLOCK flag) to block while - * waiting for a lock. We assume that any lock wait will persist until we - * have executed additional steps in the permutation. + * to either complete, or hit a blocking condition. * * When calling this function on behalf of a given step for a second or later - * time, pass the STEP_RETRY flag. This only affects the messages printed. - * - * If the query returns an error, the message is saved in step->errormsg. - * Caller should call report_error_message shortly after this, to have it - * printed and cleared. + * time, pass the STEP_RETRY flag. Do not pass it on the first call. * - * If the STEP_NONBLOCK flag was specified and the query is waiting to acquire - * a lock, returns true. Otherwise, returns false. + * Returns true if the step was *not* completed, false if it was completed. + * Reasons for non-completion are (a) the STEP_NONBLOCK flag was specified + * and the query is waiting to acquire a lock, or (b) the step has an + * unsatisfied blocker condition. When STEP_NONBLOCK is given, we assume + * that any lock wait will persist until we have executed additional steps. */ static bool -try_complete_step(TestSpec *testspec, Step *step, int flags) +try_complete_step(TestSpec *testspec, PermutationStep *pstep, int flags) { - PGconn *conn = conns[1 + step->session]; + Step *step = pstep->step; + IsoConnInfo *iconn = &conns[1 + step->session]; + PGconn *conn = iconn->conn; fd_set read_set; struct timeval start_time; struct timeval timeout; @@ -710,6 +812,28 @@ PGnotify *notify; bool canceled = false; + /* + * If the step is annotated with (*), then on the first call, force it to + * wait. This is useful for ensuring consistent output when the step + * might or might not complete so fast that we don't observe it waiting. + */ + if (!(flags & STEP_RETRY)) + { + int i; + + for (i = 0; i < pstep->nblockers; i++) + { + PermutationStepBlocker *blocker = pstep->blockers[i]; + + if (blocker->blocktype == PSB_ONCE) + { + printf("step %s: %s \n", + step->name, step->sql); + return true; + } + } + } + if (sock < 0) { fprintf(stderr, "invalid socket: %s", PQerrorMessage(conn)); @@ -743,14 +867,14 @@ { bool waiting; - res = PQexecPrepared(conns[0], PREP_WAITING, 1, - &backend_pid_strs[step->session + 1], + res = PQexecPrepared(conns[0].conn, PREP_WAITING, 1, + &conns[step->session + 1].backend_pid_str, NULL, NULL, 0); if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) { fprintf(stderr, "lock wait query failed: %s", - PQerrorMessage(conns[0])); + PQerrorMessage(conns[0].conn)); exit_nicely(); } waiting = ((PQgetvalue(res, 0, 0))[0] == 't'); @@ -771,7 +895,7 @@ { fprintf(stderr, "PQconsumeInput failed: %s\n", PQerrorMessage(conn)); - exit(1); + exit_nicely(); } if (!PQisBusy(conn)) break; @@ -849,6 +973,19 @@ } } + /* + * The step is done, but we won't report it as complete so long as there + * are blockers. + */ + if (step_has_blocker(pstep)) + { + if (!(flags & STEP_RETRY)) + printf("step %s: %s \n", + step->name, step->sql); + return true; + } + + /* Otherwise, go ahead and complete it. */ if (flags & STEP_RETRY) printf("step %s: <... completed>\n", step->name); else @@ -859,16 +996,12 @@ switch (PQresultStatus(res)) { case PGRES_COMMAND_OK: + case PGRES_EMPTY_QUERY: break; case PGRES_TUPLES_OK: printResultSet(res); break; case PGRES_FATAL_ERROR: - if (step->errormsg != NULL) - { - printf("WARNING: this step had a leftover error message\n"); - printf("%s\n", step->errormsg); - } /* * Detail may contain XID values, so we want to just show @@ -882,9 +1015,9 @@ PG_DIAG_MESSAGE_PRIMARY); if (sev && msg) - step->errormsg = psprintf("%s: %s", sev, msg); + printf("%s: %s\n", sev, msg); else - step->errormsg = pg_strdup(PQresultErrorMessage(res)); + printf("%s\n", PQresultErrorMessage(res)); } break; default: @@ -905,9 +1038,9 @@ for (i = 0; i < testspec->nsessions; i++) { - if (notify->be_pid == backend_pids[i + 1]) + if (notify->be_pid == conns[i + 1].backend_pid) { - sendername = testspec->sessions[i]->name; + sendername = conns[i + 1].sessionname; break; } } @@ -924,36 +1057,69 @@ PQconsumeInput(conn); } + /* Connection is now idle. */ + iconn->active_step = NULL; + return false; } -static void -printResultSet(PGresult *res) +/* Detect whether a step has any unsatisfied blocker conditions */ +static bool +step_has_blocker(PermutationStep *pstep) { - int nFields; - int i, - j; - - /* first, print out the attribute names */ - nFields = PQnfields(res); - for (i = 0; i < nFields; i++) - printf("%-15s", PQfname(res, i)); - printf("\n\n"); + int i; - /* next, print out the rows */ - for (i = 0; i < PQntuples(res); i++) + for (i = 0; i < pstep->nblockers; i++) { - for (j = 0; j < nFields; j++) - printf("%-15s", PQgetvalue(res, i, j)); - printf("\n"); + PermutationStepBlocker *blocker = pstep->blockers[i]; + IsoConnInfo *iconn; + + switch (blocker->blocktype) + { + case PSB_ONCE: + /* Ignore; try_complete_step handles this specially */ + break; + case PSB_OTHER_STEP: + /* Block if referenced step is active */ + iconn = &conns[1 + blocker->step->session]; + if (iconn->active_step && + iconn->active_step->step == blocker->step) + return true; + break; + case PSB_NUM_NOTICES: + /* Block if not enough notices received yet */ + iconn = &conns[1 + blocker->step->session]; + if (iconn->total_notices < blocker->target_notices) + return true; + break; + } } + return false; } -/* notice processor, prefixes each message with the session name */ +static void +printResultSet(PGresult *res) +{ + PQprintOpt popt; + + memset(&popt, 0, sizeof(popt)); + popt.header = true; + popt.align = true; + popt.fieldSep = "|"; + PQprint(stdout, res, &popt); +} + +/* notice processor for regular user sessions */ static void isotesterNoticeProcessor(void *arg, const char *message) { - printf("%s: %s", (char *) arg, message); + IsoConnInfo *myconn = (IsoConnInfo *) arg; + + /* Prefix the backend's message with the session name. */ + printf("%s: %s", myconn->sessionname, message); + /* Record notices, since we may need this to decide to unblock a step. */ + myconn->total_notices++; + any_new_notice = true; } /* notice processor, hides the message */ diff -Nru postgresql-10-10.17/src/test/isolation/isolationtester.h postgresql-10-10.19/src/test/isolation/isolationtester.h --- postgresql-10-10.17/src/test/isolation/isolationtester.h 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/isolationtester.h 2021-11-08 22:05:38.000000000 +0000 @@ -14,30 +14,62 @@ #ifndef ISOLATIONTESTER_H #define ISOLATIONTESTER_H -typedef struct Session Session; +/* + * The structs declared here are used in the output of specparse.y. + * Except where noted, all fields are set in the grammar and not + * changed thereafter. + */ typedef struct Step Step; -struct Session +typedef struct { char *name; char *setupsql; char *teardownsql; Step **steps; int nsteps; -}; +} Session; struct Step { - int session; char *name; char *sql; - char *errormsg; + /* These fields are filled by check_testspec(): */ + int session; /* identifies owning session */ + bool used; /* has step been used in a permutation? */ }; +typedef enum +{ + PSB_ONCE, /* force step to wait once */ + PSB_OTHER_STEP, /* wait for another step to complete first */ + PSB_NUM_NOTICES /* wait for N notices from another session */ +} PermutationStepBlockerType; + +typedef struct +{ + char *stepname; + PermutationStepBlockerType blocktype; + int num_notices; /* only used for PSB_NUM_NOTICES */ + /* These fields are filled by check_testspec(): */ + Step *step; /* link to referenced step (if any) */ + /* These fields are runtime workspace: */ + int target_notices; /* total notices needed from other session */ +} PermutationStepBlocker; + +typedef struct +{ + char *name; /* name of referenced Step */ + PermutationStepBlocker **blockers; + int nblockers; + /* These fields are filled by check_testspec(): */ + Step *step; /* link to referenced Step */ +} PermutationStep; + typedef struct { int nsteps; - char **stepnames; + PermutationStep **steps; } Permutation; typedef struct @@ -49,8 +81,6 @@ int nsessions; Permutation **permutations; int npermutations; - Step **allsteps; - int nallsteps; } TestSpec; extern TestSpec parseresult; diff -Nru postgresql-10-10.17/src/test/isolation/README postgresql-10-10.19/src/test/isolation/README --- postgresql-10-10.17/src/test/isolation/README 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/README 2021-11-08 22:05:38.000000000 +0000 @@ -57,11 +57,16 @@ ================== Each isolation test is defined by a specification file, stored in the specs -subdirectory. A test specification consists of four parts, in this order: +subdirectory. A test specification defines some SQL "steps", groups them +into "sessions" (where all the steps of one session will be run in the +same backend), and specifies the "permutations" or orderings of the steps +that are to be run. + +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 given SQL block is executed once (per permutation) before running the test. Create any test tables or other required objects here. This part is optional. Multiple setup blocks are allowed if needed; each is run separately, in the given order. (The reason for allowing multiple @@ -75,42 +80,54 @@ this to clean up in preparation for the next permutation, e.g dropping any test tables created by setup. This part is optional. -session "" +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 each session. 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 might, for example, contain a "BEGIN" command to begin a transaction. Each step has the syntax - step "" { } + step { } - where is a name identifying this step, and SQL is a SQL statement + where is a name identifying this step, and 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 "" ... +permutation ... A permutation line specifies a list of steps that are run in that order. Any number of permutation lines can appear. If no permutation lines are - given, the test program automatically generates all possible orderings + given, the test program automatically runs all possible interleavings 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. + or leave others out. Also, each step name can be annotated with some + parenthesized markers, which are described below. + +Session and step names are SQL identifiers, either plain or double-quoted. +A difference from standard SQL is that no case-folding occurs, so that +FOO and "FOO" are the same name while FOO and Foo are different, +whether you quote them or not. You must use quotes if you want to use +an isolation test keyword (such as "permutation") as a name. + +A # character begins a comment, which extends to the end of the line. +(This does not work inside blocks, however. Use the usual SQL +comment conventions there.) -Lines beginning with a # are considered comments. +There is no way to include a "}" character in an block. 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. +with its session. The main setup and teardown scripts are run in a +separate "control" session. Support for blocking commands @@ -129,3 +146,69 @@ 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. + + +Dealing with race conditions +============================ + +In some cases, the isolationtester's output for a test script may vary +due to timing issues. One way to deal with that is to create variant +expected-files, which follow the usual PG convention that variants for +foo.spec are named foo_1.out, foo_2.out, etc. However, this method is +discouraged since the extra files are a nuisance for maintenance. +Instead, it's usually possible to stabilize the test output by applying +special markers to some of the step names listed in a permutation line. + +The general form of a permutation entry is + + [ ( [ , ... ] ) ] + +where each marker defines a "blocking condition". The step will not be +reported as completed before all the blocking conditions are satisfied. +The possible markers are: + + * + + notices + +An asterisk marker, such as mystep(*), forces the isolationtester to +report the step as "waiting" as soon as it's been launched, regardless of +whether it would have been detected as waiting later. This is useful for +stabilizing cases that are sometimes reported as waiting and other times +reported as immediately completing, depending on the relative speeds of +the step and the isolationtester's status-monitoring queries. + +A marker consisting solely of a step name indicates that this step may +not be reported as completing until that other step has completed. +This allows stabilizing cases where two queries might be seen to complete +in either order. Note that this step can be *launched* before the other +step has completed. (If the other step is used more than once in the +current permutation, this step cannot complete while any of those +instances is active.) + +A marker of the form " notices " (where is a +positive integer) indicates that this step may not be reported as +completing until the other step's session has returned at least +NOTICE messages, counting from when this step is launched. This is useful +for stabilizing cases where a step can return NOTICE messages before it +actually completes, and those messages must be synchronized with the +completions of other steps. + +Notice that these markers can only delay reporting of the completion +of a step, not the launch of a step. The isolationtester will launch +the next step in a permutation as soon as (A) all prior steps of the +same session are done, and (B) the immediately preceding step in the +permutation is done or deemed blocked. For this purpose, "deemed +blocked" means that it has been seen to be waiting on a database lock, +or that it is complete but the report of its completion is delayed by +one of these markers. + +In some cases it is important not to launch a step until after the +completion of a step in another session that could have been deemed +blocked. An example is that if step s1 in session A is issuing a +cancel for step s2 in session B, we'd better not launch B's next step +till we're sure s1 is done. If s1 is blockable, trouble could ensue. +The best way to prevent that is to create an empty step in session A +and run it, without any markers, just before the next session B step. +The empty step cannot be launched until s1 is done, and in turn the +next session B step cannot be launched until the empty step finishes. diff -Nru postgresql-10-10.17/src/test/isolation/specparse.c postgresql-10-10.19/src/test/isolation/specparse.c --- postgresql-10-10.17/src/test/isolation/specparse.c 2021-05-10 20:59:01.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specparse.c 2021-11-08 22:25:45.000000000 +0000 @@ -131,13 +131,15 @@ enum yytokentype { sqlblock = 258, - string_literal = 259, - PERMUTATION = 260, - SESSION = 261, - SETUP = 262, - STEP = 263, - TEARDOWN = 264, - TEST = 265 + identifier = 259, + INTEGER = 260, + NOTICES = 261, + PERMUTATION = 262, + SESSION = 263, + SETUP = 264, + STEP = 265, + TEARDOWN = 266, + TEST = 267 }; #endif @@ -149,16 +151,19 @@ #line 26 "specparse.y" /* yacc.c:352 */ char *str; + int integer; Session *session; Step *step; Permutation *permutation; + PermutationStep *permutationstep; + PermutationStepBlocker *blocker; struct { void **elements; int nelements; } ptr_list; -#line 162 "specparse.c" /* yacc.c:352 */ +#line 167 "specparse.c" /* yacc.c:352 */ }; typedef union YYSTYPE YYSTYPE; @@ -406,19 +411,19 @@ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 30 +#define YYLAST 41 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 11 +#define YYNTOKENS 17 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 14 +#define YYNNTS 17 /* YYNRULES -- Number of rules. */ -#define YYNRULES 22 +#define YYNRULES 29 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 32 +#define YYNSTATES 43 #define YYUNDEFTOK 2 -#define YYMAXUTOK 265 +#define YYMAXUTOK 267 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -433,7 +438,7 @@ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 13, 14, 16, 2, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -455,16 +460,16 @@ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10 + 5, 6, 7, 8, 9, 10, 11, 12 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint8 yyrline[] = +static const yytype_uint16 yyrline[] = { - 0, 53, 53, 70, 74, 84, 85, 89, 93, 94, - 98, 105, 114, 126, 133, 143, 154, 159, 165, 172, - 182, 191, 198 + 0, 59, 59, 76, 80, 90, 91, 95, 99, 100, + 104, 111, 120, 132, 139, 149, 161, 166, 172, 179, + 189, 198, 205, 214, 222, 233, 240, 249, 258, 267 }; #endif @@ -473,11 +478,13 @@ First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "sqlblock", "string_literal", - "PERMUTATION", "SESSION", "SETUP", "STEP", "TEARDOWN", "TEST", "$accept", - "TestSpec", "setup_list", "opt_setup", "setup", "opt_teardown", - "session_list", "session", "step_list", "step", "opt_permutation_list", - "permutation_list", "permutation", "string_literal_list", YY_NULLPTR + "$end", "error", "$undefined", "sqlblock", "identifier", "INTEGER", + "NOTICES", "PERMUTATION", "SESSION", "SETUP", "STEP", "TEARDOWN", "TEST", + "'('", "')'", "','", "'*'", "$accept", "TestSpec", "setup_list", + "opt_setup", "setup", "opt_teardown", "session_list", "session", + "step_list", "step", "opt_permutation_list", "permutation_list", + "permutation", "permutation_step_list", "permutation_step", + "blocker_list", "blocker", YY_NULLPTR }; #endif @@ -487,14 +494,14 @@ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 + 265, 266, 267, 40, 41, 44, 42 }; # endif -#define YYPACT_NINF -15 +#define YYPACT_NINF -14 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-15))) + (!!((Yystate) == (-14))) #define YYTABLE_NINF -1 @@ -505,10 +512,11 @@ STATE-NUM. */ static const yytype_int8 yypact[] = { - -15, 1, -7, -15, 4, 5, -15, 3, -15, -15, - 6, -2, -15, 7, 8, -15, -15, 10, -15, 9, - -15, -15, 12, -15, 14, -3, -15, -15, 16, -15, - -15, -15 + -14, 2, -8, -14, 3, 4, -14, 7, -14, -14, + 6, -3, -14, 8, 12, -14, -14, 11, -14, 1, + -14, 9, 12, -14, -14, 15, -2, -14, -4, -14, + 17, -14, -14, 18, -14, -1, -14, -14, 16, -14, + -4, -14, -14 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -518,22 +526,23 @@ { 3, 0, 8, 1, 0, 0, 4, 0, 7, 9, 0, 17, 11, 5, 0, 10, 2, 16, 19, 0, - 6, 22, 20, 18, 0, 8, 14, 21, 0, 12, - 13, 15 + 6, 23, 20, 22, 18, 0, 8, 14, 0, 21, + 0, 12, 13, 27, 29, 0, 26, 15, 0, 24, + 0, 28, 25 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -15, -15, -15, -15, 0, -14, -15, 11, -15, -5, - -15, -15, 13, -15 + -14, -14, -14, -14, 10, 0, -14, 14, -14, 5, + -14, -14, 13, -14, 19, -14, -13 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 1, 2, 19, 6, 7, 11, 12, 25, 26, - 16, 17, 18, 22 + -1, 1, 2, 19, 6, 7, 11, 12, 26, 27, + 16, 17, 18, 22, 23, 35, 36 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -541,36 +550,39 @@ number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { - 4, 3, 5, 14, 10, 24, 5, 8, 9, 10, - 13, 29, 21, 20, 4, 14, 27, 24, 28, 31, - 30, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 23 + 33, 4, 3, 5, 14, 10, 8, 9, 25, 5, + 13, 25, 34, 39, 40, 10, 21, 4, 14, 30, + 37, 41, 28, 20, 38, 15, 31, 42, 0, 0, + 24, 32, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 29 }; static const yytype_int8 yycheck[] = { - 7, 0, 9, 5, 6, 8, 9, 3, 3, 6, - 4, 25, 4, 13, 7, 5, 4, 8, 4, 3, - 25, -1, 11, -1, -1, -1, -1, -1, -1, -1, - 17 + 4, 9, 0, 11, 7, 8, 3, 3, 10, 11, + 4, 10, 16, 14, 15, 8, 4, 9, 7, 4, + 3, 5, 13, 13, 6, 11, 26, 40, -1, -1, + 17, 26, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 22 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 12, 13, 0, 7, 9, 15, 16, 3, 3, - 6, 17, 18, 4, 5, 18, 21, 22, 23, 14, - 15, 4, 24, 23, 8, 19, 20, 4, 4, 16, - 20, 3 + 0, 18, 19, 0, 9, 11, 21, 22, 3, 3, + 8, 23, 24, 4, 7, 24, 27, 28, 29, 20, + 21, 4, 30, 31, 29, 10, 25, 26, 13, 31, + 4, 22, 26, 4, 16, 32, 33, 3, 6, 14, + 15, 5, 33 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 11, 12, 13, 13, 14, 14, 15, 16, 16, - 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, - 23, 24, 24 + 0, 17, 18, 19, 19, 20, 20, 21, 22, 22, + 23, 23, 24, 25, 25, 26, 27, 27, 28, 28, + 29, 30, 30, 31, 31, 32, 32, 33, 33, 33 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -578,7 +590,7 @@ { 0, 2, 4, 0, 2, 0, 1, 2, 0, 2, 2, 1, 5, 2, 1, 3, 1, 0, 2, 1, - 2, 2, 1 + 2, 2, 1, 1, 4, 3, 1, 1, 3, 1 }; @@ -1264,7 +1276,7 @@ switch (yyn) { case 2: -#line 57 "specparse.y" /* yacc.c:1652 */ +#line 63 "specparse.y" /* yacc.c:1652 */ { parseresult.setupsqls = (char **) (yyvsp[-3].ptr_list).elements; parseresult.nsetupsqls = (yyvsp[-3].ptr_list).nelements; @@ -1274,82 +1286,82 @@ parseresult.permutations = (Permutation **) (yyvsp[0].ptr_list).elements; parseresult.npermutations = (yyvsp[0].ptr_list).nelements; } -#line 1278 "specparse.c" /* yacc.c:1652 */ +#line 1290 "specparse.c" /* yacc.c:1652 */ break; case 3: -#line 70 "specparse.y" /* yacc.c:1652 */ +#line 76 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).elements = NULL; (yyval.ptr_list).nelements = 0; } -#line 1287 "specparse.c" /* yacc.c:1652 */ +#line 1299 "specparse.c" /* yacc.c:1652 */ break; case 4: -#line 75 "specparse.y" /* yacc.c:1652 */ +#line 81 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).elements = pg_realloc((yyvsp[-1].ptr_list).elements, ((yyvsp[-1].ptr_list).nelements + 1) * sizeof(void *)); (yyval.ptr_list).elements[(yyvsp[-1].ptr_list).nelements] = (yyvsp[0].str); (yyval.ptr_list).nelements = (yyvsp[-1].ptr_list).nelements + 1; } -#line 1298 "specparse.c" /* yacc.c:1652 */ +#line 1310 "specparse.c" /* yacc.c:1652 */ break; case 5: -#line 84 "specparse.y" /* yacc.c:1652 */ +#line 90 "specparse.y" /* yacc.c:1652 */ { (yyval.str) = NULL; } -#line 1304 "specparse.c" /* yacc.c:1652 */ +#line 1316 "specparse.c" /* yacc.c:1652 */ break; case 6: -#line 85 "specparse.y" /* yacc.c:1652 */ +#line 91 "specparse.y" /* yacc.c:1652 */ { (yyval.str) = (yyvsp[0].str); } -#line 1310 "specparse.c" /* yacc.c:1652 */ +#line 1322 "specparse.c" /* yacc.c:1652 */ break; case 7: -#line 89 "specparse.y" /* yacc.c:1652 */ +#line 95 "specparse.y" /* yacc.c:1652 */ { (yyval.str) = (yyvsp[0].str); } -#line 1316 "specparse.c" /* yacc.c:1652 */ +#line 1328 "specparse.c" /* yacc.c:1652 */ break; case 8: -#line 93 "specparse.y" /* yacc.c:1652 */ +#line 99 "specparse.y" /* yacc.c:1652 */ { (yyval.str) = NULL; } -#line 1322 "specparse.c" /* yacc.c:1652 */ +#line 1334 "specparse.c" /* yacc.c:1652 */ break; case 9: -#line 94 "specparse.y" /* yacc.c:1652 */ +#line 100 "specparse.y" /* yacc.c:1652 */ { (yyval.str) = (yyvsp[0].str); } -#line 1328 "specparse.c" /* yacc.c:1652 */ +#line 1340 "specparse.c" /* yacc.c:1652 */ break; case 10: -#line 99 "specparse.y" /* yacc.c:1652 */ +#line 105 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).elements = pg_realloc((yyvsp[-1].ptr_list).elements, ((yyvsp[-1].ptr_list).nelements + 1) * sizeof(void *)); (yyval.ptr_list).elements[(yyvsp[-1].ptr_list).nelements] = (yyvsp[0].session); (yyval.ptr_list).nelements = (yyvsp[-1].ptr_list).nelements + 1; } -#line 1339 "specparse.c" /* yacc.c:1652 */ +#line 1351 "specparse.c" /* yacc.c:1652 */ break; case 11: -#line 106 "specparse.y" /* yacc.c:1652 */ +#line 112 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).nelements = 1; (yyval.ptr_list).elements = pg_malloc(sizeof(void *)); (yyval.ptr_list).elements[0] = (yyvsp[0].session); } -#line 1349 "specparse.c" /* yacc.c:1652 */ +#line 1361 "specparse.c" /* yacc.c:1652 */ break; case 12: -#line 115 "specparse.y" /* yacc.c:1652 */ +#line 121 "specparse.y" /* yacc.c:1652 */ { (yyval.session) = pg_malloc(sizeof(Session)); (yyval.session)->name = (yyvsp[-3].str); @@ -1358,112 +1370,197 @@ (yyval.session)->nsteps = (yyvsp[-1].ptr_list).nelements; (yyval.session)->teardownsql = (yyvsp[0].str); } -#line 1362 "specparse.c" /* yacc.c:1652 */ +#line 1374 "specparse.c" /* yacc.c:1652 */ break; case 13: -#line 127 "specparse.y" /* yacc.c:1652 */ +#line 133 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).elements = pg_realloc((yyvsp[-1].ptr_list).elements, ((yyvsp[-1].ptr_list).nelements + 1) * sizeof(void *)); (yyval.ptr_list).elements[(yyvsp[-1].ptr_list).nelements] = (yyvsp[0].step); (yyval.ptr_list).nelements = (yyvsp[-1].ptr_list).nelements + 1; } -#line 1373 "specparse.c" /* yacc.c:1652 */ +#line 1385 "specparse.c" /* yacc.c:1652 */ break; case 14: -#line 134 "specparse.y" /* yacc.c:1652 */ +#line 140 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).nelements = 1; (yyval.ptr_list).elements = pg_malloc(sizeof(void *)); (yyval.ptr_list).elements[0] = (yyvsp[0].step); } -#line 1383 "specparse.c" /* yacc.c:1652 */ +#line 1395 "specparse.c" /* yacc.c:1652 */ break; case 15: -#line 144 "specparse.y" /* yacc.c:1652 */ +#line 150 "specparse.y" /* yacc.c:1652 */ { (yyval.step) = pg_malloc(sizeof(Step)); (yyval.step)->name = (yyvsp[-1].str); (yyval.step)->sql = (yyvsp[0].str); - (yyval.step)->errormsg = NULL; + (yyval.step)->session = -1; /* until filled */ + (yyval.step)->used = false; } -#line 1394 "specparse.c" /* yacc.c:1652 */ +#line 1407 "specparse.c" /* yacc.c:1652 */ break; case 16: -#line 155 "specparse.y" /* yacc.c:1652 */ +#line 162 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list) = (yyvsp[0].ptr_list); } -#line 1402 "specparse.c" /* yacc.c:1652 */ +#line 1415 "specparse.c" /* yacc.c:1652 */ break; case 17: -#line 159 "specparse.y" /* yacc.c:1652 */ +#line 166 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).elements = NULL; (yyval.ptr_list).nelements = 0; } -#line 1411 "specparse.c" /* yacc.c:1652 */ +#line 1424 "specparse.c" /* yacc.c:1652 */ break; case 18: -#line 166 "specparse.y" /* yacc.c:1652 */ +#line 173 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).elements = pg_realloc((yyvsp[-1].ptr_list).elements, ((yyvsp[-1].ptr_list).nelements + 1) * sizeof(void *)); (yyval.ptr_list).elements[(yyvsp[-1].ptr_list).nelements] = (yyvsp[0].permutation); (yyval.ptr_list).nelements = (yyvsp[-1].ptr_list).nelements + 1; } -#line 1422 "specparse.c" /* yacc.c:1652 */ +#line 1435 "specparse.c" /* yacc.c:1652 */ break; case 19: -#line 173 "specparse.y" /* yacc.c:1652 */ +#line 180 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).nelements = 1; (yyval.ptr_list).elements = pg_malloc(sizeof(void *)); (yyval.ptr_list).elements[0] = (yyvsp[0].permutation); } -#line 1432 "specparse.c" /* yacc.c:1652 */ +#line 1445 "specparse.c" /* yacc.c:1652 */ break; case 20: -#line 183 "specparse.y" /* yacc.c:1652 */ +#line 190 "specparse.y" /* yacc.c:1652 */ { (yyval.permutation) = pg_malloc(sizeof(Permutation)); - (yyval.permutation)->stepnames = (char **) (yyvsp[0].ptr_list).elements; (yyval.permutation)->nsteps = (yyvsp[0].ptr_list).nelements; + (yyval.permutation)->steps = (PermutationStep **) (yyvsp[0].ptr_list).elements; } -#line 1442 "specparse.c" /* yacc.c:1652 */ +#line 1455 "specparse.c" /* yacc.c:1652 */ break; case 21: -#line 192 "specparse.y" /* yacc.c:1652 */ +#line 199 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).elements = pg_realloc((yyvsp[-1].ptr_list).elements, ((yyvsp[-1].ptr_list).nelements + 1) * sizeof(void *)); - (yyval.ptr_list).elements[(yyvsp[-1].ptr_list).nelements] = (yyvsp[0].str); + (yyval.ptr_list).elements[(yyvsp[-1].ptr_list).nelements] = (yyvsp[0].permutationstep); (yyval.ptr_list).nelements = (yyvsp[-1].ptr_list).nelements + 1; } -#line 1453 "specparse.c" /* yacc.c:1652 */ +#line 1466 "specparse.c" /* yacc.c:1652 */ break; case 22: -#line 199 "specparse.y" /* yacc.c:1652 */ +#line 206 "specparse.y" /* yacc.c:1652 */ + { + (yyval.ptr_list).nelements = 1; + (yyval.ptr_list).elements = pg_malloc(sizeof(void *)); + (yyval.ptr_list).elements[0] = (yyvsp[0].permutationstep); + } +#line 1476 "specparse.c" /* yacc.c:1652 */ + break; + + case 23: +#line 215 "specparse.y" /* yacc.c:1652 */ + { + (yyval.permutationstep) = pg_malloc(sizeof(PermutationStep)); + (yyval.permutationstep)->name = (yyvsp[0].str); + (yyval.permutationstep)->blockers = NULL; + (yyval.permutationstep)->nblockers = 0; + (yyval.permutationstep)->step = NULL; + } +#line 1488 "specparse.c" /* yacc.c:1652 */ + break; + + case 24: +#line 223 "specparse.y" /* yacc.c:1652 */ + { + (yyval.permutationstep) = pg_malloc(sizeof(PermutationStep)); + (yyval.permutationstep)->name = (yyvsp[-3].str); + (yyval.permutationstep)->blockers = (PermutationStepBlocker **) (yyvsp[-1].ptr_list).elements; + (yyval.permutationstep)->nblockers = (yyvsp[-1].ptr_list).nelements; + (yyval.permutationstep)->step = NULL; + } +#line 1500 "specparse.c" /* yacc.c:1652 */ + break; + + case 25: +#line 234 "specparse.y" /* yacc.c:1652 */ + { + (yyval.ptr_list).elements = pg_realloc((yyvsp[-2].ptr_list).elements, + ((yyvsp[-2].ptr_list).nelements + 1) * sizeof(void *)); + (yyval.ptr_list).elements[(yyvsp[-2].ptr_list).nelements] = (yyvsp[0].blocker); + (yyval.ptr_list).nelements = (yyvsp[-2].ptr_list).nelements + 1; + } +#line 1511 "specparse.c" /* yacc.c:1652 */ + break; + + case 26: +#line 241 "specparse.y" /* yacc.c:1652 */ { (yyval.ptr_list).nelements = 1; (yyval.ptr_list).elements = pg_malloc(sizeof(void *)); - (yyval.ptr_list).elements[0] = (yyvsp[0].str); + (yyval.ptr_list).elements[0] = (yyvsp[0].blocker); + } +#line 1521 "specparse.c" /* yacc.c:1652 */ + break; + + case 27: +#line 250 "specparse.y" /* yacc.c:1652 */ + { + (yyval.blocker) = pg_malloc(sizeof(PermutationStepBlocker)); + (yyval.blocker)->stepname = (yyvsp[0].str); + (yyval.blocker)->blocktype = PSB_OTHER_STEP; + (yyval.blocker)->num_notices = -1; + (yyval.blocker)->step = NULL; + (yyval.blocker)->target_notices = -1; + } +#line 1534 "specparse.c" /* yacc.c:1652 */ + break; + + case 28: +#line 259 "specparse.y" /* yacc.c:1652 */ + { + (yyval.blocker) = pg_malloc(sizeof(PermutationStepBlocker)); + (yyval.blocker)->stepname = (yyvsp[-2].str); + (yyval.blocker)->blocktype = PSB_NUM_NOTICES; + (yyval.blocker)->num_notices = (yyvsp[0].integer); + (yyval.blocker)->step = NULL; + (yyval.blocker)->target_notices = -1; + } +#line 1547 "specparse.c" /* yacc.c:1652 */ + break; + + case 29: +#line 268 "specparse.y" /* yacc.c:1652 */ + { + (yyval.blocker) = pg_malloc(sizeof(PermutationStepBlocker)); + (yyval.blocker)->stepname = NULL; + (yyval.blocker)->blocktype = PSB_ONCE; + (yyval.blocker)->num_notices = -1; + (yyval.blocker)->step = NULL; + (yyval.blocker)->target_notices = -1; } -#line 1463 "specparse.c" /* yacc.c:1652 */ +#line 1560 "specparse.c" /* yacc.c:1652 */ break; -#line 1467 "specparse.c" /* yacc.c:1652 */ +#line 1564 "specparse.c" /* yacc.c:1652 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -1694,7 +1791,7 @@ #endif return yyresult; } -#line 206 "specparse.y" /* yacc.c:1918 */ +#line 278 "specparse.y" /* yacc.c:1918 */ #include "specscanner.c" diff -Nru postgresql-10-10.17/src/test/isolation/specparse.y postgresql-10-10.19/src/test/isolation/specparse.y --- postgresql-10-10.17/src/test/isolation/specparse.y 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specparse.y 2021-11-08 22:05:38.000000000 +0000 @@ -25,9 +25,12 @@ %union { char *str; + int integer; Session *session; Step *step; Permutation *permutation; + PermutationStep *permutationstep; + PermutationStepBlocker *blocker; struct { void **elements; @@ -39,13 +42,16 @@ %type opt_setup opt_teardown %type setup %type step_list session_list permutation_list opt_permutation_list -%type string_literal_list +%type permutation_step_list blocker_list %type session %type step %type permutation +%type permutation_step +%type blocker -%token sqlblock string_literal -%token PERMUTATION SESSION SETUP STEP TEARDOWN TEST +%token sqlblock identifier +%token INTEGER +%token NOTICES PERMUTATION SESSION SETUP STEP TEARDOWN TEST %% @@ -111,7 +117,7 @@ ; session: - SESSION string_literal opt_setup step_list opt_teardown + SESSION identifier opt_setup step_list opt_teardown { $$ = pg_malloc(sizeof(Session)); $$->name = $2; @@ -140,12 +146,13 @@ step: - STEP string_literal sqlblock + STEP identifier sqlblock { $$ = pg_malloc(sizeof(Step)); $$->name = $2; $$->sql = $3; - $$->errormsg = NULL; + $$->session = -1; /* until filled */ + $$->used = false; } ; @@ -179,23 +186,23 @@ permutation: - PERMUTATION string_literal_list + PERMUTATION permutation_step_list { $$ = pg_malloc(sizeof(Permutation)); - $$->stepnames = (char **) $2.elements; $$->nsteps = $2.nelements; + $$->steps = (PermutationStep **) $2.elements; } ; -string_literal_list: - string_literal_list string_literal +permutation_step_list: + permutation_step_list permutation_step { $$.elements = pg_realloc($1.elements, ($1.nelements + 1) * sizeof(void *)); $$.elements[$1.nelements] = $2; $$.nelements = $1.nelements + 1; } - | string_literal + | permutation_step { $$.nelements = 1; $$.elements = pg_malloc(sizeof(void *)); @@ -203,6 +210,71 @@ } ; +permutation_step: + identifier + { + $$ = pg_malloc(sizeof(PermutationStep)); + $$->name = $1; + $$->blockers = NULL; + $$->nblockers = 0; + $$->step = NULL; + } + | identifier '(' blocker_list ')' + { + $$ = pg_malloc(sizeof(PermutationStep)); + $$->name = $1; + $$->blockers = (PermutationStepBlocker **) $3.elements; + $$->nblockers = $3.nelements; + $$->step = NULL; + } + ; + +blocker_list: + blocker_list ',' blocker + { + $$.elements = pg_realloc($1.elements, + ($1.nelements + 1) * sizeof(void *)); + $$.elements[$1.nelements] = $3; + $$.nelements = $1.nelements + 1; + } + | blocker + { + $$.nelements = 1; + $$.elements = pg_malloc(sizeof(void *)); + $$.elements[0] = $1; + } + ; + +blocker: + identifier + { + $$ = pg_malloc(sizeof(PermutationStepBlocker)); + $$->stepname = $1; + $$->blocktype = PSB_OTHER_STEP; + $$->num_notices = -1; + $$->step = NULL; + $$->target_notices = -1; + } + | identifier NOTICES INTEGER + { + $$ = pg_malloc(sizeof(PermutationStepBlocker)); + $$->stepname = $1; + $$->blocktype = PSB_NUM_NOTICES; + $$->num_notices = $3; + $$->step = NULL; + $$->target_notices = -1; + } + | '*' + { + $$ = pg_malloc(sizeof(PermutationStepBlocker)); + $$->stepname = NULL; + $$->blocktype = PSB_ONCE; + $$->num_notices = -1; + $$->step = NULL; + $$->target_notices = -1; + } + ; + %% #include "specscanner.c" diff -Nru postgresql-10-10.17/src/test/isolation/specs/aborted-keyrevoke.spec postgresql-10-10.19/src/test/isolation/specs/aborted-keyrevoke.spec --- postgresql-10-10.17/src/test/isolation/specs/aborted-keyrevoke.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/aborted-keyrevoke.spec 2021-11-08 22:05:38.000000000 +0000 @@ -17,30 +17,30 @@ DROP TABLE foo; } -session "s1" +session s1 setup { BEGIN; } -step "s1s" { SAVEPOINT f; } -step "s1u" { UPDATE foo SET key = 2; } # obtain KEY REVOKE -step "s1r" { ROLLBACK TO f; } # lose KEY REVOKE -step "s1l" { SELECT * FROM foo FOR KEY SHARE; } -step "s1c" { COMMIT; } +step s1s { SAVEPOINT f; } +step s1u { UPDATE foo SET key = 2; } # obtain KEY REVOKE +step s1r { ROLLBACK TO f; } # lose KEY REVOKE +step s1l { SELECT * FROM foo FOR KEY SHARE; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2l" { SELECT * FROM foo FOR KEY SHARE; } -step "s2c" { COMMIT; } +step s2l { SELECT * FROM foo FOR KEY SHARE; } +step s2c { COMMIT; } -permutation "s1s" "s1u" "s1r" "s1l" "s1c" "s2l" "s2c" -permutation "s1s" "s1u" "s1r" "s1l" "s2l" "s1c" "s2c" -permutation "s1s" "s1u" "s1r" "s1l" "s2l" "s2c" "s1c" -permutation "s1s" "s1u" "s1r" "s2l" "s1l" "s1c" "s2c" -permutation "s1s" "s1u" "s1r" "s2l" "s1l" "s2c" "s1c" -permutation "s1s" "s1u" "s1r" "s2l" "s2c" "s1l" "s1c" -permutation "s1s" "s1u" "s2l" "s1r" "s1l" "s1c" "s2c" -permutation "s1s" "s1u" "s2l" "s1r" "s1l" "s2c" "s1c" -permutation "s1s" "s1u" "s2l" "s1r" "s2c" "s1l" "s1c" -permutation "s1s" "s2l" "s1u" "s2c" "s1r" "s1l" "s1c" -permutation "s1s" "s2l" "s2c" "s1u" "s1r" "s1l" "s1c" -permutation "s2l" "s1s" "s1u" "s2c" "s1r" "s1l" "s1c" -permutation "s2l" "s1s" "s2c" "s1u" "s1r" "s1l" "s1c" -permutation "s2l" "s2c" "s1s" "s1u" "s1r" "s1l" "s1c" +permutation s1s s1u s1r s1l s1c s2l s2c +permutation s1s s1u s1r s1l s2l s1c s2c +permutation s1s s1u s1r s1l s2l s2c s1c +permutation s1s s1u s1r s2l s1l s1c s2c +permutation s1s s1u s1r s2l s1l s2c s1c +permutation s1s s1u s1r s2l s2c s1l s1c +permutation s1s s1u s2l s1r s1l s1c s2c +permutation s1s s1u s2l s1r s1l s2c s1c +permutation s1s s1u s2l s1r s2c s1l s1c +permutation s1s s2l s1u s2c s1r s1l s1c +permutation s1s s2l s2c s1u s1r s1l s1c +permutation s2l s1s s1u s2c s1r s1l s1c +permutation s2l s1s s2c s1u s1r s1l s1c +permutation s2l s2c s1s s1u s1r s1l s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/alter-table-1.spec postgresql-10-10.19/src/test/isolation/specs/alter-table-1.spec --- postgresql-10-10.17/src/test/isolation/specs/alter-table-1.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/alter-table-1.spec 2021-11-08 22:05:38.000000000 +0000 @@ -16,155 +16,155 @@ DROP TABLE a, b; } -session "s1" -step "s1" { BEGIN; } -step "at1" { ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; } -step "sc1" { COMMIT; } -step "s2" { BEGIN; } -step "at2" { ALTER TABLE b VALIDATE CONSTRAINT bfk; } -step "sc2" { COMMIT; } +session s1 +step s1 { BEGIN; } +step at1 { ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; } +step sc1 { COMMIT; } +step s2 { BEGIN; } +step at2 { ALTER TABLE b VALIDATE CONSTRAINT bfk; } +step sc2 { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "rx1" { SELECT * FROM b WHERE a_id = 1 LIMIT 1; } -step "wx" { INSERT INTO b VALUES (0); } -step "rx3" { SELECT * FROM b WHERE a_id = 3 LIMIT 3; } -step "c2" { COMMIT; } +step rx1 { SELECT * FROM b WHERE a_id = 1 LIMIT 1; } +step wx { INSERT INTO b VALUES (0); } +step rx3 { SELECT * FROM b WHERE a_id = 3 LIMIT 3; } +step c2 { COMMIT; } -permutation "s1" "at1" "sc1" "s2" "at2" "sc2" "rx1" "wx" "rx3" "c2" -permutation "s1" "at1" "sc1" "s2" "at2" "rx1" "sc2" "wx" "rx3" "c2" -permutation "s1" "at1" "sc1" "s2" "at2" "rx1" "wx" "sc2" "rx3" "c2" -permutation "s1" "at1" "sc1" "s2" "at2" "rx1" "wx" "rx3" "sc2" "c2" -permutation "s1" "at1" "sc1" "s2" "at2" "rx1" "wx" "rx3" "c2" "sc2" -permutation "s1" "at1" "sc1" "s2" "rx1" "at2" "sc2" "wx" "rx3" "c2" -permutation "s1" "at1" "sc1" "s2" "rx1" "at2" "wx" "sc2" "rx3" "c2" -permutation "s1" "at1" "sc1" "s2" "rx1" "at2" "wx" "rx3" "sc2" "c2" -permutation "s1" "at1" "sc1" "s2" "rx1" "at2" "wx" "rx3" "c2" "sc2" -permutation "s1" "at1" "sc1" "s2" "rx1" "wx" "at2" "sc2" "rx3" "c2" -permutation "s1" "at1" "sc1" "s2" "rx1" "wx" "at2" "rx3" "sc2" "c2" -permutation "s1" "at1" "sc1" "s2" "rx1" "wx" "at2" "rx3" "c2" "sc2" -permutation "s1" "at1" "sc1" "s2" "rx1" "wx" "rx3" "at2" "sc2" "c2" -permutation "s1" "at1" "sc1" "s2" "rx1" "wx" "rx3" "at2" "c2" "sc2" -permutation "s1" "at1" "sc1" "s2" "rx1" "wx" "rx3" "c2" "at2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "s2" "at2" "sc2" "wx" "rx3" "c2" -permutation "s1" "at1" "sc1" "rx1" "s2" "at2" "wx" "sc2" "rx3" "c2" -permutation "s1" "at1" "sc1" "rx1" "s2" "at2" "wx" "rx3" "sc2" "c2" -permutation "s1" "at1" "sc1" "rx1" "s2" "at2" "wx" "rx3" "c2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "s2" "wx" "at2" "sc2" "rx3" "c2" -permutation "s1" "at1" "sc1" "rx1" "s2" "wx" "at2" "rx3" "sc2" "c2" -permutation "s1" "at1" "sc1" "rx1" "s2" "wx" "at2" "rx3" "c2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "s2" "wx" "rx3" "at2" "sc2" "c2" -permutation "s1" "at1" "sc1" "rx1" "s2" "wx" "rx3" "at2" "c2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "s2" "wx" "rx3" "c2" "at2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "wx" "s2" "at2" "sc2" "rx3" "c2" -permutation "s1" "at1" "sc1" "rx1" "wx" "s2" "at2" "rx3" "sc2" "c2" -permutation "s1" "at1" "sc1" "rx1" "wx" "s2" "at2" "rx3" "c2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "wx" "s2" "rx3" "at2" "sc2" "c2" -permutation "s1" "at1" "sc1" "rx1" "wx" "s2" "rx3" "at2" "c2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "wx" "s2" "rx3" "c2" "at2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "wx" "rx3" "s2" "at2" "sc2" "c2" -permutation "s1" "at1" "sc1" "rx1" "wx" "rx3" "s2" "at2" "c2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "wx" "rx3" "s2" "c2" "at2" "sc2" -permutation "s1" "at1" "sc1" "rx1" "wx" "rx3" "c2" "s2" "at2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "s2" "at2" "sc2" "wx" "rx3" "c2" -permutation "s1" "at1" "rx1" "sc1" "s2" "at2" "wx" "sc2" "rx3" "c2" -permutation "s1" "at1" "rx1" "sc1" "s2" "at2" "wx" "rx3" "sc2" "c2" -permutation "s1" "at1" "rx1" "sc1" "s2" "at2" "wx" "rx3" "c2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "s2" "wx" "at2" "sc2" "rx3" "c2" -permutation "s1" "at1" "rx1" "sc1" "s2" "wx" "at2" "rx3" "sc2" "c2" -permutation "s1" "at1" "rx1" "sc1" "s2" "wx" "at2" "rx3" "c2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "s2" "wx" "rx3" "at2" "sc2" "c2" -permutation "s1" "at1" "rx1" "sc1" "s2" "wx" "rx3" "at2" "c2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "s2" "wx" "rx3" "c2" "at2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "wx" "s2" "at2" "sc2" "rx3" "c2" -permutation "s1" "at1" "rx1" "sc1" "wx" "s2" "at2" "rx3" "sc2" "c2" -permutation "s1" "at1" "rx1" "sc1" "wx" "s2" "at2" "rx3" "c2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "wx" "s2" "rx3" "at2" "sc2" "c2" -permutation "s1" "at1" "rx1" "sc1" "wx" "s2" "rx3" "at2" "c2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "wx" "s2" "rx3" "c2" "at2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "wx" "rx3" "s2" "at2" "sc2" "c2" -permutation "s1" "at1" "rx1" "sc1" "wx" "rx3" "s2" "at2" "c2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "wx" "rx3" "s2" "c2" "at2" "sc2" -permutation "s1" "at1" "rx1" "sc1" "wx" "rx3" "c2" "s2" "at2" "sc2" -permutation "s1" "at1" "rx1" "wx" "sc1" "s2" "at2" "sc2" "rx3" "c2" -permutation "s1" "at1" "rx1" "wx" "sc1" "s2" "at2" "rx3" "sc2" "c2" -permutation "s1" "at1" "rx1" "wx" "sc1" "s2" "at2" "rx3" "c2" "sc2" -permutation "s1" "at1" "rx1" "wx" "sc1" "s2" "rx3" "at2" "sc2" "c2" -permutation "s1" "at1" "rx1" "wx" "sc1" "s2" "rx3" "at2" "c2" "sc2" -permutation "s1" "at1" "rx1" "wx" "sc1" "s2" "rx3" "c2" "at2" "sc2" -permutation "s1" "at1" "rx1" "wx" "sc1" "rx3" "s2" "at2" "sc2" "c2" -permutation "s1" "at1" "rx1" "wx" "sc1" "rx3" "s2" "at2" "c2" "sc2" -permutation "s1" "at1" "rx1" "wx" "sc1" "rx3" "s2" "c2" "at2" "sc2" -permutation "s1" "at1" "rx1" "wx" "sc1" "rx3" "c2" "s2" "at2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "s2" "at2" "sc2" "wx" "rx3" "c2" -permutation "s1" "rx1" "at1" "sc1" "s2" "at2" "wx" "sc2" "rx3" "c2" -permutation "s1" "rx1" "at1" "sc1" "s2" "at2" "wx" "rx3" "sc2" "c2" -permutation "s1" "rx1" "at1" "sc1" "s2" "at2" "wx" "rx3" "c2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "s2" "wx" "at2" "sc2" "rx3" "c2" -permutation "s1" "rx1" "at1" "sc1" "s2" "wx" "at2" "rx3" "sc2" "c2" -permutation "s1" "rx1" "at1" "sc1" "s2" "wx" "at2" "rx3" "c2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "s2" "wx" "rx3" "at2" "sc2" "c2" -permutation "s1" "rx1" "at1" "sc1" "s2" "wx" "rx3" "at2" "c2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "s2" "wx" "rx3" "c2" "at2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "wx" "s2" "at2" "sc2" "rx3" "c2" -permutation "s1" "rx1" "at1" "sc1" "wx" "s2" "at2" "rx3" "sc2" "c2" -permutation "s1" "rx1" "at1" "sc1" "wx" "s2" "at2" "rx3" "c2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "wx" "s2" "rx3" "at2" "sc2" "c2" -permutation "s1" "rx1" "at1" "sc1" "wx" "s2" "rx3" "at2" "c2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "wx" "s2" "rx3" "c2" "at2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "wx" "rx3" "s2" "at2" "sc2" "c2" -permutation "s1" "rx1" "at1" "sc1" "wx" "rx3" "s2" "at2" "c2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "wx" "rx3" "s2" "c2" "at2" "sc2" -permutation "s1" "rx1" "at1" "sc1" "wx" "rx3" "c2" "s2" "at2" "sc2" -permutation "s1" "rx1" "at1" "wx" "sc1" "s2" "at2" "sc2" "rx3" "c2" -permutation "s1" "rx1" "at1" "wx" "sc1" "s2" "at2" "rx3" "sc2" "c2" -permutation "s1" "rx1" "at1" "wx" "sc1" "s2" "at2" "rx3" "c2" "sc2" -permutation "s1" "rx1" "at1" "wx" "sc1" "s2" "rx3" "at2" "sc2" "c2" -permutation "s1" "rx1" "at1" "wx" "sc1" "s2" "rx3" "at2" "c2" "sc2" -permutation "s1" "rx1" "at1" "wx" "sc1" "s2" "rx3" "c2" "at2" "sc2" -permutation "s1" "rx1" "at1" "wx" "sc1" "rx3" "s2" "at2" "sc2" "c2" -permutation "s1" "rx1" "at1" "wx" "sc1" "rx3" "s2" "at2" "c2" "sc2" -permutation "s1" "rx1" "at1" "wx" "sc1" "rx3" "s2" "c2" "at2" "sc2" -permutation "s1" "rx1" "at1" "wx" "sc1" "rx3" "c2" "s2" "at2" "sc2" -permutation "s1" "rx1" "wx" "at1" "rx3" "c2" "sc1" "s2" "at2" "sc2" -permutation "s1" "rx1" "wx" "rx3" "at1" "c2" "sc1" "s2" "at2" "sc2" -permutation "s1" "rx1" "wx" "rx3" "c2" "at1" "sc1" "s2" "at2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "s2" "at2" "sc2" "wx" "rx3" "c2" -permutation "rx1" "s1" "at1" "sc1" "s2" "at2" "wx" "sc2" "rx3" "c2" -permutation "rx1" "s1" "at1" "sc1" "s2" "at2" "wx" "rx3" "sc2" "c2" -permutation "rx1" "s1" "at1" "sc1" "s2" "at2" "wx" "rx3" "c2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "s2" "wx" "at2" "sc2" "rx3" "c2" -permutation "rx1" "s1" "at1" "sc1" "s2" "wx" "at2" "rx3" "sc2" "c2" -permutation "rx1" "s1" "at1" "sc1" "s2" "wx" "at2" "rx3" "c2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "s2" "wx" "rx3" "at2" "sc2" "c2" -permutation "rx1" "s1" "at1" "sc1" "s2" "wx" "rx3" "at2" "c2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "s2" "wx" "rx3" "c2" "at2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "wx" "s2" "at2" "sc2" "rx3" "c2" -permutation "rx1" "s1" "at1" "sc1" "wx" "s2" "at2" "rx3" "sc2" "c2" -permutation "rx1" "s1" "at1" "sc1" "wx" "s2" "at2" "rx3" "c2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "wx" "s2" "rx3" "at2" "sc2" "c2" -permutation "rx1" "s1" "at1" "sc1" "wx" "s2" "rx3" "at2" "c2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "wx" "s2" "rx3" "c2" "at2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "wx" "rx3" "s2" "at2" "sc2" "c2" -permutation "rx1" "s1" "at1" "sc1" "wx" "rx3" "s2" "at2" "c2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "wx" "rx3" "s2" "c2" "at2" "sc2" -permutation "rx1" "s1" "at1" "sc1" "wx" "rx3" "c2" "s2" "at2" "sc2" -permutation "rx1" "s1" "at1" "wx" "sc1" "s2" "at2" "sc2" "rx3" "c2" -permutation "rx1" "s1" "at1" "wx" "sc1" "s2" "at2" "rx3" "sc2" "c2" -permutation "rx1" "s1" "at1" "wx" "sc1" "s2" "at2" "rx3" "c2" "sc2" -permutation "rx1" "s1" "at1" "wx" "sc1" "s2" "rx3" "at2" "sc2" "c2" -permutation "rx1" "s1" "at1" "wx" "sc1" "s2" "rx3" "at2" "c2" "sc2" -permutation "rx1" "s1" "at1" "wx" "sc1" "s2" "rx3" "c2" "at2" "sc2" -permutation "rx1" "s1" "at1" "wx" "sc1" "rx3" "s2" "at2" "sc2" "c2" -permutation "rx1" "s1" "at1" "wx" "sc1" "rx3" "s2" "at2" "c2" "sc2" -permutation "rx1" "s1" "at1" "wx" "sc1" "rx3" "s2" "c2" "at2" "sc2" -permutation "rx1" "s1" "at1" "wx" "sc1" "rx3" "c2" "s2" "at2" "sc2" -permutation "rx1" "s1" "wx" "at1" "rx3" "c2" "sc1" "s2" "at2" "sc2" -permutation "rx1" "s1" "wx" "rx3" "at1" "c2" "sc1" "s2" "at2" "sc2" -permutation "rx1" "s1" "wx" "rx3" "c2" "at1" "sc1" "s2" "at2" "sc2" -permutation "rx1" "wx" "s1" "at1" "rx3" "c2" "sc1" "s2" "at2" "sc2" -permutation "rx1" "wx" "s1" "rx3" "at1" "c2" "sc1" "s2" "at2" "sc2" -permutation "rx1" "wx" "s1" "rx3" "c2" "at1" "sc1" "s2" "at2" "sc2" -permutation "rx1" "wx" "rx3" "s1" "at1" "c2" "sc1" "s2" "at2" "sc2" -permutation "rx1" "wx" "rx3" "s1" "c2" "at1" "sc1" "s2" "at2" "sc2" -permutation "rx1" "wx" "rx3" "c2" "s1" "at1" "sc1" "s2" "at2" "sc2" +permutation s1 at1 sc1 s2 at2 sc2 rx1 wx rx3 c2 +permutation s1 at1 sc1 s2 at2 rx1 sc2 wx rx3 c2 +permutation s1 at1 sc1 s2 at2 rx1 wx sc2 rx3 c2 +permutation s1 at1 sc1 s2 at2 rx1 wx rx3 sc2 c2 +permutation s1 at1 sc1 s2 at2 rx1 wx rx3 c2 sc2 +permutation s1 at1 sc1 s2 rx1 at2 sc2 wx rx3 c2 +permutation s1 at1 sc1 s2 rx1 at2 wx sc2 rx3 c2 +permutation s1 at1 sc1 s2 rx1 at2 wx rx3 sc2 c2 +permutation s1 at1 sc1 s2 rx1 at2 wx rx3 c2 sc2 +permutation s1 at1 sc1 s2 rx1 wx at2 sc2 rx3 c2 +permutation s1 at1 sc1 s2 rx1 wx at2 rx3 sc2 c2 +permutation s1 at1 sc1 s2 rx1 wx at2 rx3 c2 sc2 +permutation s1 at1 sc1 s2 rx1 wx rx3 at2 sc2 c2 +permutation s1 at1 sc1 s2 rx1 wx rx3 at2 c2 sc2 +permutation s1 at1 sc1 s2 rx1 wx rx3 c2 at2 sc2 +permutation s1 at1 sc1 rx1 s2 at2 sc2 wx rx3 c2 +permutation s1 at1 sc1 rx1 s2 at2 wx sc2 rx3 c2 +permutation s1 at1 sc1 rx1 s2 at2 wx rx3 sc2 c2 +permutation s1 at1 sc1 rx1 s2 at2 wx rx3 c2 sc2 +permutation s1 at1 sc1 rx1 s2 wx at2 sc2 rx3 c2 +permutation s1 at1 sc1 rx1 s2 wx at2 rx3 sc2 c2 +permutation s1 at1 sc1 rx1 s2 wx at2 rx3 c2 sc2 +permutation s1 at1 sc1 rx1 s2 wx rx3 at2 sc2 c2 +permutation s1 at1 sc1 rx1 s2 wx rx3 at2 c2 sc2 +permutation s1 at1 sc1 rx1 s2 wx rx3 c2 at2 sc2 +permutation s1 at1 sc1 rx1 wx s2 at2 sc2 rx3 c2 +permutation s1 at1 sc1 rx1 wx s2 at2 rx3 sc2 c2 +permutation s1 at1 sc1 rx1 wx s2 at2 rx3 c2 sc2 +permutation s1 at1 sc1 rx1 wx s2 rx3 at2 sc2 c2 +permutation s1 at1 sc1 rx1 wx s2 rx3 at2 c2 sc2 +permutation s1 at1 sc1 rx1 wx s2 rx3 c2 at2 sc2 +permutation s1 at1 sc1 rx1 wx rx3 s2 at2 sc2 c2 +permutation s1 at1 sc1 rx1 wx rx3 s2 at2 c2 sc2 +permutation s1 at1 sc1 rx1 wx rx3 s2 c2 at2 sc2 +permutation s1 at1 sc1 rx1 wx rx3 c2 s2 at2 sc2 +permutation s1 at1 rx1 sc1 s2 at2 sc2 wx rx3 c2 +permutation s1 at1 rx1 sc1 s2 at2 wx sc2 rx3 c2 +permutation s1 at1 rx1 sc1 s2 at2 wx rx3 sc2 c2 +permutation s1 at1 rx1 sc1 s2 at2 wx rx3 c2 sc2 +permutation s1 at1 rx1 sc1 s2 wx at2 sc2 rx3 c2 +permutation s1 at1 rx1 sc1 s2 wx at2 rx3 sc2 c2 +permutation s1 at1 rx1 sc1 s2 wx at2 rx3 c2 sc2 +permutation s1 at1 rx1 sc1 s2 wx rx3 at2 sc2 c2 +permutation s1 at1 rx1 sc1 s2 wx rx3 at2 c2 sc2 +permutation s1 at1 rx1 sc1 s2 wx rx3 c2 at2 sc2 +permutation s1 at1 rx1 sc1 wx s2 at2 sc2 rx3 c2 +permutation s1 at1 rx1 sc1 wx s2 at2 rx3 sc2 c2 +permutation s1 at1 rx1 sc1 wx s2 at2 rx3 c2 sc2 +permutation s1 at1 rx1 sc1 wx s2 rx3 at2 sc2 c2 +permutation s1 at1 rx1 sc1 wx s2 rx3 at2 c2 sc2 +permutation s1 at1 rx1 sc1 wx s2 rx3 c2 at2 sc2 +permutation s1 at1 rx1 sc1 wx rx3 s2 at2 sc2 c2 +permutation s1 at1 rx1 sc1 wx rx3 s2 at2 c2 sc2 +permutation s1 at1 rx1 sc1 wx rx3 s2 c2 at2 sc2 +permutation s1 at1 rx1 sc1 wx rx3 c2 s2 at2 sc2 +permutation s1 at1 rx1 wx sc1 s2 at2 sc2 rx3 c2 +permutation s1 at1 rx1 wx sc1 s2 at2 rx3 sc2 c2 +permutation s1 at1 rx1 wx sc1 s2 at2 rx3 c2 sc2 +permutation s1 at1 rx1 wx sc1 s2 rx3 at2 sc2 c2 +permutation s1 at1 rx1 wx sc1 s2 rx3 at2 c2 sc2 +permutation s1 at1 rx1 wx sc1 s2 rx3 c2 at2 sc2 +permutation s1 at1 rx1 wx sc1 rx3 s2 at2 sc2 c2 +permutation s1 at1 rx1 wx sc1 rx3 s2 at2 c2 sc2 +permutation s1 at1 rx1 wx sc1 rx3 s2 c2 at2 sc2 +permutation s1 at1 rx1 wx sc1 rx3 c2 s2 at2 sc2 +permutation s1 rx1 at1 sc1 s2 at2 sc2 wx rx3 c2 +permutation s1 rx1 at1 sc1 s2 at2 wx sc2 rx3 c2 +permutation s1 rx1 at1 sc1 s2 at2 wx rx3 sc2 c2 +permutation s1 rx1 at1 sc1 s2 at2 wx rx3 c2 sc2 +permutation s1 rx1 at1 sc1 s2 wx at2 sc2 rx3 c2 +permutation s1 rx1 at1 sc1 s2 wx at2 rx3 sc2 c2 +permutation s1 rx1 at1 sc1 s2 wx at2 rx3 c2 sc2 +permutation s1 rx1 at1 sc1 s2 wx rx3 at2 sc2 c2 +permutation s1 rx1 at1 sc1 s2 wx rx3 at2 c2 sc2 +permutation s1 rx1 at1 sc1 s2 wx rx3 c2 at2 sc2 +permutation s1 rx1 at1 sc1 wx s2 at2 sc2 rx3 c2 +permutation s1 rx1 at1 sc1 wx s2 at2 rx3 sc2 c2 +permutation s1 rx1 at1 sc1 wx s2 at2 rx3 c2 sc2 +permutation s1 rx1 at1 sc1 wx s2 rx3 at2 sc2 c2 +permutation s1 rx1 at1 sc1 wx s2 rx3 at2 c2 sc2 +permutation s1 rx1 at1 sc1 wx s2 rx3 c2 at2 sc2 +permutation s1 rx1 at1 sc1 wx rx3 s2 at2 sc2 c2 +permutation s1 rx1 at1 sc1 wx rx3 s2 at2 c2 sc2 +permutation s1 rx1 at1 sc1 wx rx3 s2 c2 at2 sc2 +permutation s1 rx1 at1 sc1 wx rx3 c2 s2 at2 sc2 +permutation s1 rx1 at1 wx sc1 s2 at2 sc2 rx3 c2 +permutation s1 rx1 at1 wx sc1 s2 at2 rx3 sc2 c2 +permutation s1 rx1 at1 wx sc1 s2 at2 rx3 c2 sc2 +permutation s1 rx1 at1 wx sc1 s2 rx3 at2 sc2 c2 +permutation s1 rx1 at1 wx sc1 s2 rx3 at2 c2 sc2 +permutation s1 rx1 at1 wx sc1 s2 rx3 c2 at2 sc2 +permutation s1 rx1 at1 wx sc1 rx3 s2 at2 sc2 c2 +permutation s1 rx1 at1 wx sc1 rx3 s2 at2 c2 sc2 +permutation s1 rx1 at1 wx sc1 rx3 s2 c2 at2 sc2 +permutation s1 rx1 at1 wx sc1 rx3 c2 s2 at2 sc2 +permutation s1 rx1 wx at1 rx3 c2 sc1 s2 at2 sc2 +permutation s1 rx1 wx rx3 at1 c2 sc1 s2 at2 sc2 +permutation s1 rx1 wx rx3 c2 at1 sc1 s2 at2 sc2 +permutation rx1 s1 at1 sc1 s2 at2 sc2 wx rx3 c2 +permutation rx1 s1 at1 sc1 s2 at2 wx sc2 rx3 c2 +permutation rx1 s1 at1 sc1 s2 at2 wx rx3 sc2 c2 +permutation rx1 s1 at1 sc1 s2 at2 wx rx3 c2 sc2 +permutation rx1 s1 at1 sc1 s2 wx at2 sc2 rx3 c2 +permutation rx1 s1 at1 sc1 s2 wx at2 rx3 sc2 c2 +permutation rx1 s1 at1 sc1 s2 wx at2 rx3 c2 sc2 +permutation rx1 s1 at1 sc1 s2 wx rx3 at2 sc2 c2 +permutation rx1 s1 at1 sc1 s2 wx rx3 at2 c2 sc2 +permutation rx1 s1 at1 sc1 s2 wx rx3 c2 at2 sc2 +permutation rx1 s1 at1 sc1 wx s2 at2 sc2 rx3 c2 +permutation rx1 s1 at1 sc1 wx s2 at2 rx3 sc2 c2 +permutation rx1 s1 at1 sc1 wx s2 at2 rx3 c2 sc2 +permutation rx1 s1 at1 sc1 wx s2 rx3 at2 sc2 c2 +permutation rx1 s1 at1 sc1 wx s2 rx3 at2 c2 sc2 +permutation rx1 s1 at1 sc1 wx s2 rx3 c2 at2 sc2 +permutation rx1 s1 at1 sc1 wx rx3 s2 at2 sc2 c2 +permutation rx1 s1 at1 sc1 wx rx3 s2 at2 c2 sc2 +permutation rx1 s1 at1 sc1 wx rx3 s2 c2 at2 sc2 +permutation rx1 s1 at1 sc1 wx rx3 c2 s2 at2 sc2 +permutation rx1 s1 at1 wx sc1 s2 at2 sc2 rx3 c2 +permutation rx1 s1 at1 wx sc1 s2 at2 rx3 sc2 c2 +permutation rx1 s1 at1 wx sc1 s2 at2 rx3 c2 sc2 +permutation rx1 s1 at1 wx sc1 s2 rx3 at2 sc2 c2 +permutation rx1 s1 at1 wx sc1 s2 rx3 at2 c2 sc2 +permutation rx1 s1 at1 wx sc1 s2 rx3 c2 at2 sc2 +permutation rx1 s1 at1 wx sc1 rx3 s2 at2 sc2 c2 +permutation rx1 s1 at1 wx sc1 rx3 s2 at2 c2 sc2 +permutation rx1 s1 at1 wx sc1 rx3 s2 c2 at2 sc2 +permutation rx1 s1 at1 wx sc1 rx3 c2 s2 at2 sc2 +permutation rx1 s1 wx at1 rx3 c2 sc1 s2 at2 sc2 +permutation rx1 s1 wx rx3 at1 c2 sc1 s2 at2 sc2 +permutation rx1 s1 wx rx3 c2 at1 sc1 s2 at2 sc2 +permutation rx1 wx s1 at1 rx3 c2 sc1 s2 at2 sc2 +permutation rx1 wx s1 rx3 at1 c2 sc1 s2 at2 sc2 +permutation rx1 wx s1 rx3 c2 at1 sc1 s2 at2 sc2 +permutation rx1 wx rx3 s1 at1 c2 sc1 s2 at2 sc2 +permutation rx1 wx rx3 s1 c2 at1 sc1 s2 at2 sc2 +permutation rx1 wx rx3 c2 s1 at1 sc1 s2 at2 sc2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/alter-table-2.spec postgresql-10-10.19/src/test/isolation/specs/alter-table-2.spec --- postgresql-10-10.17/src/test/isolation/specs/alter-table-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/alter-table-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -16,64 +16,64 @@ DROP TABLE a, b; } -session "s1" -step "s1a" { BEGIN; } -step "s1b" { ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; } -step "s1c" { COMMIT; } +session s1 +step s1a { BEGIN; } +step s1b { ALTER TABLE b ADD CONSTRAINT bfk FOREIGN KEY (a_id) REFERENCES a (i) NOT VALID; } +step s1c { COMMIT; } -session "s2" -step "s2a" { BEGIN; } -step "s2b" { SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; } -step "s2c" { SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; } -step "s2d" { INSERT INTO b VALUES (0); } -step "s2e" { INSERT INTO a VALUES (4); } -step "s2f" { COMMIT; } +session s2 +step s2a { BEGIN; } +step s2b { SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; } +step s2c { SELECT * FROM b WHERE a_id = 3 LIMIT 1 FOR UPDATE; } +step s2d { INSERT INTO b VALUES (0); } +step s2e { INSERT INTO a VALUES (4); } +step s2f { COMMIT; } -permutation "s1a" "s1b" "s1c" "s2a" "s2b" "s2c" "s2d" "s2e" "s2f" -permutation "s1a" "s1b" "s2a" "s1c" "s2b" "s2c" "s2d" "s2e" "s2f" -permutation "s1a" "s1b" "s2a" "s2b" "s1c" "s2c" "s2d" "s2e" "s2f" -permutation "s1a" "s1b" "s2a" "s2b" "s2c" "s1c" "s2d" "s2e" "s2f" -permutation "s1a" "s1b" "s2a" "s2b" "s2c" "s2d" "s1c" "s2e" "s2f" -permutation "s1a" "s2a" "s1b" "s1c" "s2b" "s2c" "s2d" "s2e" "s2f" -permutation "s1a" "s2a" "s1b" "s2b" "s1c" "s2c" "s2d" "s2e" "s2f" -permutation "s1a" "s2a" "s1b" "s2b" "s2c" "s1c" "s2d" "s2e" "s2f" -permutation "s1a" "s2a" "s1b" "s2b" "s2c" "s2d" "s1c" "s2e" "s2f" -permutation "s1a" "s2a" "s2b" "s1b" "s1c" "s2c" "s2d" "s2e" "s2f" -permutation "s1a" "s2a" "s2b" "s1b" "s2c" "s1c" "s2d" "s2e" "s2f" -permutation "s1a" "s2a" "s2b" "s1b" "s2c" "s2d" "s1c" "s2e" "s2f" -permutation "s1a" "s2a" "s2b" "s2c" "s1b" "s1c" "s2d" "s2e" "s2f" -permutation "s1a" "s2a" "s2b" "s2c" "s1b" "s2d" "s1c" "s2e" "s2f" -permutation "s1a" "s2a" "s2b" "s2c" "s2d" "s1b" "s2e" "s2f" "s1c" -permutation "s1a" "s2a" "s2b" "s2c" "s2d" "s2e" "s1b" "s2f" "s1c" -permutation "s1a" "s2a" "s2b" "s2c" "s2d" "s2e" "s2f" "s1b" "s1c" -permutation "s2a" "s1a" "s1b" "s1c" "s2b" "s2c" "s2d" "s2e" "s2f" -permutation "s2a" "s1a" "s1b" "s2b" "s1c" "s2c" "s2d" "s2e" "s2f" -permutation "s2a" "s1a" "s1b" "s2b" "s2c" "s1c" "s2d" "s2e" "s2f" -permutation "s2a" "s1a" "s1b" "s2b" "s2c" "s2d" "s1c" "s2e" "s2f" -permutation "s2a" "s1a" "s2b" "s1b" "s1c" "s2c" "s2d" "s2e" "s2f" -permutation "s2a" "s1a" "s2b" "s1b" "s2c" "s1c" "s2d" "s2e" "s2f" -permutation "s2a" "s1a" "s2b" "s1b" "s2c" "s2d" "s1c" "s2e" "s2f" -permutation "s2a" "s1a" "s2b" "s2c" "s1b" "s1c" "s2d" "s2e" "s2f" -permutation "s2a" "s1a" "s2b" "s2c" "s1b" "s2d" "s1c" "s2e" "s2f" -permutation "s2a" "s1a" "s2b" "s2c" "s2d" "s1b" "s2e" "s2f" "s1c" -permutation "s2a" "s1a" "s2b" "s2c" "s2d" "s2e" "s1b" "s2f" "s1c" -permutation "s2a" "s1a" "s2b" "s2c" "s2d" "s2e" "s2f" "s1b" "s1c" -permutation "s2a" "s2b" "s1a" "s1b" "s1c" "s2c" "s2d" "s2e" "s2f" -permutation "s2a" "s2b" "s1a" "s1b" "s2c" "s1c" "s2d" "s2e" "s2f" -permutation "s2a" "s2b" "s1a" "s1b" "s2c" "s2d" "s1c" "s2e" "s2f" -permutation "s2a" "s2b" "s1a" "s2c" "s1b" "s1c" "s2d" "s2e" "s2f" -permutation "s2a" "s2b" "s1a" "s2c" "s1b" "s2d" "s1c" "s2e" "s2f" -permutation "s2a" "s2b" "s1a" "s2c" "s2d" "s1b" "s2e" "s2f" "s1c" -permutation "s2a" "s2b" "s1a" "s2c" "s2d" "s2e" "s1b" "s2f" "s1c" -permutation "s2a" "s2b" "s1a" "s2c" "s2d" "s2e" "s2f" "s1b" "s1c" -permutation "s2a" "s2b" "s2c" "s1a" "s1b" "s1c" "s2d" "s2e" "s2f" -permutation "s2a" "s2b" "s2c" "s1a" "s1b" "s2d" "s1c" "s2e" "s2f" -permutation "s2a" "s2b" "s2c" "s1a" "s2d" "s1b" "s2e" "s2f" "s1c" -permutation "s2a" "s2b" "s2c" "s1a" "s2d" "s2e" "s1b" "s2f" "s1c" -permutation "s2a" "s2b" "s2c" "s1a" "s2d" "s2e" "s2f" "s1b" "s1c" -permutation "s2a" "s2b" "s2c" "s2d" "s1a" "s1b" "s2e" "s2f" "s1c" -permutation "s2a" "s2b" "s2c" "s2d" "s1a" "s2e" "s1b" "s2f" "s1c" -permutation "s2a" "s2b" "s2c" "s2d" "s1a" "s2e" "s2f" "s1b" "s1c" -permutation "s2a" "s2b" "s2c" "s2d" "s2e" "s1a" "s1b" "s2f" "s1c" -permutation "s2a" "s2b" "s2c" "s2d" "s2e" "s1a" "s2f" "s1b" "s1c" -permutation "s2a" "s2b" "s2c" "s2d" "s2e" "s2f" "s1a" "s1b" "s1c" +permutation s1a s1b s1c s2a s2b s2c s2d s2e s2f +permutation s1a s1b s2a s1c s2b s2c s2d s2e s2f +permutation s1a s1b s2a s2b s1c s2c s2d s2e s2f +permutation s1a s1b s2a s2b s2c s1c s2d s2e s2f +permutation s1a s1b s2a s2b s2c s2d s1c s2e s2f +permutation s1a s2a s1b s1c s2b s2c s2d s2e s2f +permutation s1a s2a s1b s2b s1c s2c s2d s2e s2f +permutation s1a s2a s1b s2b s2c s1c s2d s2e s2f +permutation s1a s2a s1b s2b s2c s2d s1c s2e s2f +permutation s1a s2a s2b s1b s1c s2c s2d s2e s2f +permutation s1a s2a s2b s1b s2c s1c s2d s2e s2f +permutation s1a s2a s2b s1b s2c s2d s1c s2e s2f +permutation s1a s2a s2b s2c s1b s1c s2d s2e s2f +permutation s1a s2a s2b s2c s1b s2d s1c s2e s2f +permutation s1a s2a s2b s2c s2d s1b s2e s2f s1c +permutation s1a s2a s2b s2c s2d s2e s1b s2f s1c +permutation s1a s2a s2b s2c s2d s2e s2f s1b s1c +permutation s2a s1a s1b s1c s2b s2c s2d s2e s2f +permutation s2a s1a s1b s2b s1c s2c s2d s2e s2f +permutation s2a s1a s1b s2b s2c s1c s2d s2e s2f +permutation s2a s1a s1b s2b s2c s2d s1c s2e s2f +permutation s2a s1a s2b s1b s1c s2c s2d s2e s2f +permutation s2a s1a s2b s1b s2c s1c s2d s2e s2f +permutation s2a s1a s2b s1b s2c s2d s1c s2e s2f +permutation s2a s1a s2b s2c s1b s1c s2d s2e s2f +permutation s2a s1a s2b s2c s1b s2d s1c s2e s2f +permutation s2a s1a s2b s2c s2d s1b s2e s2f s1c +permutation s2a s1a s2b s2c s2d s2e s1b s2f s1c +permutation s2a s1a s2b s2c s2d s2e s2f s1b s1c +permutation s2a s2b s1a s1b s1c s2c s2d s2e s2f +permutation s2a s2b s1a s1b s2c s1c s2d s2e s2f +permutation s2a s2b s1a s1b s2c s2d s1c s2e s2f +permutation s2a s2b s1a s2c s1b s1c s2d s2e s2f +permutation s2a s2b s1a s2c s1b s2d s1c s2e s2f +permutation s2a s2b s1a s2c s2d s1b s2e s2f s1c +permutation s2a s2b s1a s2c s2d s2e s1b s2f s1c +permutation s2a s2b s1a s2c s2d s2e s2f s1b s1c +permutation s2a s2b s2c s1a s1b s1c s2d s2e s2f +permutation s2a s2b s2c s1a s1b s2d s1c s2e s2f +permutation s2a s2b s2c s1a s2d s1b s2e s2f s1c +permutation s2a s2b s2c s1a s2d s2e s1b s2f s1c +permutation s2a s2b s2c s1a s2d s2e s2f s1b s1c +permutation s2a s2b s2c s2d s1a s1b s2e s2f s1c +permutation s2a s2b s2c s2d s1a s2e s1b s2f s1c +permutation s2a s2b s2c s2d s1a s2e s2f s1b s1c +permutation s2a s2b s2c s2d s2e s1a s1b s2f s1c +permutation s2a s2b s2c s2d s2e s1a s2f s1b s1c +permutation s2a s2b s2c s2d s2e s2f s1a s1b s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/alter-table-3.spec postgresql-10-10.19/src/test/isolation/specs/alter-table-3.spec --- postgresql-10-10.17/src/test/isolation/specs/alter-table-3.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/alter-table-3.spec 2021-11-08 22:05:38.000000000 +0000 @@ -17,63 +17,63 @@ DROP FUNCTION f(); } -session "s1" -step "s1a" { BEGIN; } -step "s1b" { ALTER TABLE a DISABLE TRIGGER t; } -step "s1c" { ALTER TABLE a ENABLE TRIGGER t; } -step "s1d" { COMMIT; } +session s1 +step s1a { BEGIN; } +step s1b { ALTER TABLE a DISABLE TRIGGER t; } +step s1c { ALTER TABLE a ENABLE TRIGGER t; } +step s1d { COMMIT; } -session "s2" -step "s2a" { BEGIN; } -step "s2b" { SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; } -step "s2c" { INSERT INTO a VALUES (0); } -step "s2d" { COMMIT; } +session s2 +step s2a { BEGIN; } +step s2b { SELECT * FROM a WHERE i = 1 LIMIT 1 FOR UPDATE; } +step s2c { INSERT INTO a VALUES (0); } +step s2d { COMMIT; } -permutation "s1a" "s1b" "s1c" "s1d" "s2a" "s2b" "s2c" "s2d" -permutation "s1a" "s1b" "s1c" "s2a" "s1d" "s2b" "s2c" "s2d" -permutation "s1a" "s1b" "s1c" "s2a" "s2b" "s1d" "s2c" "s2d" -permutation "s1a" "s1b" "s1c" "s2a" "s2b" "s2c" "s1d" "s2d" -permutation "s1a" "s1b" "s2a" "s1c" "s1d" "s2b" "s2c" "s2d" -permutation "s1a" "s1b" "s2a" "s1c" "s2b" "s1d" "s2c" "s2d" -permutation "s1a" "s1b" "s2a" "s1c" "s2b" "s2c" "s1d" "s2d" -permutation "s1a" "s1b" "s2a" "s2b" "s1c" "s1d" "s2c" "s2d" -permutation "s1a" "s1b" "s2a" "s2b" "s1c" "s2c" "s1d" "s2d" -permutation "s1a" "s1b" "s2a" "s2b" "s2c" "s1c" "s1d" "s2d" -permutation "s1a" "s2a" "s1b" "s1c" "s1d" "s2b" "s2c" "s2d" -permutation "s1a" "s2a" "s1b" "s1c" "s2b" "s1d" "s2c" "s2d" -permutation "s1a" "s2a" "s1b" "s1c" "s2b" "s2c" "s1d" "s2d" -permutation "s1a" "s2a" "s1b" "s2b" "s1c" "s1d" "s2c" "s2d" -permutation "s1a" "s2a" "s1b" "s2b" "s1c" "s2c" "s1d" "s2d" -permutation "s1a" "s2a" "s1b" "s2b" "s2c" "s1c" "s1d" "s2d" -permutation "s1a" "s2a" "s2b" "s1b" "s1c" "s1d" "s2c" "s2d" -permutation "s1a" "s2a" "s2b" "s1b" "s1c" "s2c" "s1d" "s2d" -permutation "s1a" "s2a" "s2b" "s1b" "s2c" "s1c" "s1d" "s2d" -permutation "s1a" "s2a" "s2b" "s2c" "s1b" "s1c" "s1d" "s2d" -permutation "s1a" "s2a" "s2b" "s2c" "s1b" "s1c" "s2d" "s1d" -permutation "s1a" "s2a" "s2b" "s2c" "s1b" "s2d" "s1c" "s1d" -permutation "s1a" "s2a" "s2b" "s2c" "s2d" "s1b" "s1c" "s1d" -permutation "s2a" "s1a" "s1b" "s1c" "s1d" "s2b" "s2c" "s2d" -permutation "s2a" "s1a" "s1b" "s1c" "s2b" "s1d" "s2c" "s2d" -permutation "s2a" "s1a" "s1b" "s1c" "s2b" "s2c" "s1d" "s2d" -permutation "s2a" "s1a" "s1b" "s2b" "s1c" "s1d" "s2c" "s2d" -permutation "s2a" "s1a" "s1b" "s2b" "s1c" "s2c" "s1d" "s2d" -permutation "s2a" "s1a" "s1b" "s2b" "s2c" "s1c" "s1d" "s2d" -permutation "s2a" "s1a" "s2b" "s1b" "s1c" "s1d" "s2c" "s2d" -permutation "s2a" "s1a" "s2b" "s1b" "s1c" "s2c" "s1d" "s2d" -permutation "s2a" "s1a" "s2b" "s1b" "s2c" "s1c" "s1d" "s2d" -permutation "s2a" "s1a" "s2b" "s2c" "s1b" "s1c" "s1d" "s2d" -permutation "s2a" "s1a" "s2b" "s2c" "s1b" "s1c" "s2d" "s1d" -permutation "s2a" "s1a" "s2b" "s2c" "s1b" "s2d" "s1c" "s1d" -permutation "s2a" "s1a" "s2b" "s2c" "s2d" "s1b" "s1c" "s1d" -permutation "s2a" "s2b" "s1a" "s1b" "s1c" "s1d" "s2c" "s2d" -permutation "s2a" "s2b" "s1a" "s1b" "s1c" "s2c" "s1d" "s2d" -permutation "s2a" "s2b" "s1a" "s1b" "s2c" "s1c" "s1d" "s2d" -permutation "s2a" "s2b" "s1a" "s2c" "s1b" "s1c" "s1d" "s2d" -permutation "s2a" "s2b" "s1a" "s2c" "s1b" "s1c" "s2d" "s1d" -permutation "s2a" "s2b" "s1a" "s2c" "s1b" "s2d" "s1c" "s1d" -permutation "s2a" "s2b" "s1a" "s2c" "s2d" "s1b" "s1c" "s1d" -permutation "s2a" "s2b" "s2c" "s1a" "s1b" "s1c" "s1d" "s2d" -permutation "s2a" "s2b" "s2c" "s1a" "s1b" "s1c" "s2d" "s1d" -permutation "s2a" "s2b" "s2c" "s1a" "s1b" "s2d" "s1c" "s1d" -permutation "s2a" "s2b" "s2c" "s1a" "s2d" "s1b" "s1c" "s1d" -permutation "s2a" "s2b" "s2c" "s2d" "s1a" "s1b" "s1c" "s1d" +permutation s1a s1b s1c s1d s2a s2b s2c s2d +permutation s1a s1b s1c s2a s1d s2b s2c s2d +permutation s1a s1b s1c s2a s2b s1d s2c s2d +permutation s1a s1b s1c s2a s2b s2c s1d s2d +permutation s1a s1b s2a s1c s1d s2b s2c s2d +permutation s1a s1b s2a s1c s2b s1d s2c s2d +permutation s1a s1b s2a s1c s2b s2c s1d s2d +permutation s1a s1b s2a s2b s1c s1d s2c s2d +permutation s1a s1b s2a s2b s1c s2c s1d s2d +permutation s1a s1b s2a s2b s2c s1c s1d s2d +permutation s1a s2a s1b s1c s1d s2b s2c s2d +permutation s1a s2a s1b s1c s2b s1d s2c s2d +permutation s1a s2a s1b s1c s2b s2c s1d s2d +permutation s1a s2a s1b s2b s1c s1d s2c s2d +permutation s1a s2a s1b s2b s1c s2c s1d s2d +permutation s1a s2a s1b s2b s2c s1c s1d s2d +permutation s1a s2a s2b s1b s1c s1d s2c s2d +permutation s1a s2a s2b s1b s1c s2c s1d s2d +permutation s1a s2a s2b s1b s2c s1c s1d s2d +permutation s1a s2a s2b s2c s1b s1c s1d s2d +permutation s1a s2a s2b s2c s1b s1c s2d s1d +permutation s1a s2a s2b s2c s1b s2d s1c s1d +permutation s1a s2a s2b s2c s2d s1b s1c s1d +permutation s2a s1a s1b s1c s1d s2b s2c s2d +permutation s2a s1a s1b s1c s2b s1d s2c s2d +permutation s2a s1a s1b s1c s2b s2c s1d s2d +permutation s2a s1a s1b s2b s1c s1d s2c s2d +permutation s2a s1a s1b s2b s1c s2c s1d s2d +permutation s2a s1a s1b s2b s2c s1c s1d s2d +permutation s2a s1a s2b s1b s1c s1d s2c s2d +permutation s2a s1a s2b s1b s1c s2c s1d s2d +permutation s2a s1a s2b s1b s2c s1c s1d s2d +permutation s2a s1a s2b s2c s1b s1c s1d s2d +permutation s2a s1a s2b s2c s1b s1c s2d s1d +permutation s2a s1a s2b s2c s1b s2d s1c s1d +permutation s2a s1a s2b s2c s2d s1b s1c s1d +permutation s2a s2b s1a s1b s1c s1d s2c s2d +permutation s2a s2b s1a s1b s1c s2c s1d s2d +permutation s2a s2b s1a s1b s2c s1c s1d s2d +permutation s2a s2b s1a s2c s1b s1c s1d s2d +permutation s2a s2b s1a s2c s1b s1c s2d s1d +permutation s2a s2b s1a s2c s1b s2d s1c s1d +permutation s2a s2b s1a s2c s2d s1b s1c s1d +permutation s2a s2b s2c s1a s1b s1c s1d s2d +permutation s2a s2b s2c s1a s1b s1c s2d s1d +permutation s2a s2b s2c s1a s1b s2d s1c s1d +permutation s2a s2b s2c s1a s2d s1b s1c s1d +permutation s2a s2b s2c s2d s1a s1b s1c s1d diff -Nru postgresql-10-10.17/src/test/isolation/specs/alter-table-4.spec postgresql-10-10.19/src/test/isolation/specs/alter-table-4.spec --- postgresql-10-10.17/src/test/isolation/specs/alter-table-4.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/alter-table-4.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,23 +15,23 @@ DROP TABLE IF EXISTS c1, c2, p; } -session "s1" -step "s1b" { BEGIN; } -step "s1delc1" { ALTER TABLE c1 NO INHERIT p; } -step "s1modc1a" { ALTER TABLE c1 ALTER COLUMN a TYPE float; } -step "s1addc2" { ALTER TABLE c2 INHERIT p; } -step "s1dropc1" { DROP TABLE c1; } -step "s1c" { COMMIT; } +session s1 +step s1b { BEGIN; } +step s1delc1 { ALTER TABLE c1 NO INHERIT p; } +step s1modc1a { ALTER TABLE c1 ALTER COLUMN a TYPE float; } +step s1addc2 { ALTER TABLE c2 INHERIT p; } +step s1dropc1 { DROP TABLE c1; } +step s1c { COMMIT; } -session "s2" -step "s2sel" { SELECT SUM(a) FROM p; } +session s2 +step s2sel { SELECT SUM(a) FROM p; } # NO INHERIT will not be visible to concurrent select, # since we identify children before locking them -permutation "s1b" "s1delc1" "s2sel" "s1c" "s2sel" +permutation s1b s1delc1 s2sel s1c s2sel # adding inheritance likewise is not seen if s1 commits after s2 locks p -permutation "s1b" "s1delc1" "s1addc2" "s2sel" "s1c" "s2sel" +permutation s1b s1delc1 s1addc2 s2sel s1c s2sel # but we do cope with DROP on a child table -permutation "s1b" "s1dropc1" "s2sel" "s1c" "s2sel" +permutation s1b s1dropc1 s2sel s1c s2sel # this case currently results in an error; doesn't seem worth preventing -permutation "s1b" "s1delc1" "s1modc1a" "s2sel" "s1c" "s2sel" +permutation s1b s1delc1 s1modc1a s2sel s1c s2sel diff -Nru postgresql-10-10.17/src/test/isolation/specs/async-notify.spec postgresql-10-10.19/src/test/isolation/specs/async-notify.spec --- postgresql-10-10.17/src/test/isolation/specs/async-notify.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/async-notify.spec 2021-11-08 22:05:38.000000000 +0000 @@ -5,15 +5,15 @@ # Note we assume that each step is delivered to the backend as a single Query # message so it will run as one transaction. -session "notifier" -step "listenc" { LISTEN c1; LISTEN c2; } -step "notify1" { NOTIFY c1; } -step "notify2" { NOTIFY c2, 'payload'; } -step "notify3" { NOTIFY c3, 'payload3'; } # not listening to c3 -step "notifyf" { SELECT pg_notify('c2', NULL); } -step "notifyd1" { NOTIFY c2, 'payload'; NOTIFY c1; NOTIFY "c2", 'payload'; } -step "notifyd2" { NOTIFY c1; NOTIFY c1; NOTIFY c1, 'p1'; NOTIFY c1, 'p2'; } -step "notifys1" { +session notifier +step listenc { LISTEN c1; LISTEN c2; } +step notify1 { NOTIFY c1; } +step notify2 { NOTIFY c2, 'payload'; } +step notify3 { NOTIFY c3, 'payload3'; } # not listening to c3 +step notifyf { SELECT pg_notify('c2', NULL); } +step notifyd1 { NOTIFY c2, 'payload'; NOTIFY c1; NOTIFY "c2", 'payload'; } +step notifyd2 { NOTIFY c1; NOTIFY c1; NOTIFY c1, 'p1'; NOTIFY c1, 'p2'; } +step notifys1 { BEGIN; NOTIFY c1, 'payload'; NOTIFY "c2", 'payload'; NOTIFY c1, 'payload'; NOTIFY "c2", 'payload'; @@ -31,47 +31,47 @@ ROLLBACK TO SAVEPOINT s2; COMMIT; } -step "usage" { SELECT pg_notification_queue_usage() > 0 AS nonzero; } -step "bignotify" { SELECT count(pg_notify('c1', s::text)) FROM generate_series(1, 1000) s; } +step usage { SELECT pg_notification_queue_usage() > 0 AS nonzero; } +step bignotify { SELECT count(pg_notify('c1', s::text)) FROM generate_series(1, 1000) s; } teardown { UNLISTEN *; } # The listener session is used for cross-backend notify checks. -session "listener" -step "llisten" { LISTEN c1; LISTEN c2; } -step "lcheck" { SELECT 1 AS x; } -step "lbegin" { BEGIN; } -step "lbegins" { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "lcommit" { COMMIT; } +session listener +step llisten { LISTEN c1; LISTEN c2; } +step lcheck { SELECT 1 AS x; } +step lbegin { BEGIN; } +step lbegins { BEGIN ISOLATION LEVEL SERIALIZABLE; } +step lcommit { COMMIT; } teardown { UNLISTEN *; } # In some tests we need a second listener, just to block the queue. -session "listener2" -step "l2listen" { LISTEN c1; } -step "l2begin" { BEGIN; } -step "l2commit" { COMMIT; } -step "l2stop" { UNLISTEN *; } +session listener2 +step l2listen { LISTEN c1; } +step l2begin { BEGIN; } +step l2commit { COMMIT; } +step l2stop { UNLISTEN *; } # Trivial cases. -permutation "listenc" "notify1" "notify2" "notify3" "notifyf" +permutation listenc notify1 notify2 notify3 notifyf # Check simple and less-simple deduplication. -permutation "listenc" "notifyd1" "notifyd2" "notifys1" +permutation listenc notifyd1 notifyd2 notifys1 # Cross-backend notification delivery. We use a "select 1" to force the # listener session to check for notifies. In principle we could just wait # for delivery, but that would require extra support in isolationtester # and might have portability-of-timing issues. -permutation "llisten" "notify1" "notify2" "notify3" "notifyf" "lcheck" +permutation llisten notify1 notify2 notify3 notifyf lcheck # Again, with local delivery too. -permutation "listenc" "llisten" "notify1" "notify2" "notify3" "notifyf" "lcheck" +permutation listenc llisten notify1 notify2 notify3 notifyf lcheck # Check for bug when initial listen is only action in a serializable xact, # and notify queue is not empty -permutation "l2listen" "l2begin" "notify1" "lbegins" "llisten" "lcommit" "l2commit" "l2stop" +permutation l2listen l2begin notify1 lbegins llisten lcommit l2commit l2stop # Verify that pg_notification_queue_usage correctly reports a non-zero result, # after submitting notifications while another connection is listening for @@ -81,4 +81,4 @@ # commit the listener's transaction, so that it never reports these events. # Hence, this should be the last test in this script. -permutation "llisten" "lbegin" "usage" "bignotify" "usage" +permutation llisten lbegin usage bignotify usage diff -Nru postgresql-10-10.17/src/test/isolation/specs/classroom-scheduling.spec postgresql-10-10.19/src/test/isolation/specs/classroom-scheduling.spec --- postgresql-10-10.17/src/test/isolation/specs/classroom-scheduling.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/classroom-scheduling.spec 2021-11-08 22:05:38.000000000 +0000 @@ -16,14 +16,14 @@ DROP TABLE room_reservation; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -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 "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 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 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; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -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 "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 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 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; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/create-trigger.spec postgresql-10-10.19/src/test/isolation/specs/create-trigger.spec --- postgresql-10-10.17/src/test/isolation/specs/create-trigger.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/create-trigger.spec 2021-11-08 22:05:38.000000000 +0000 @@ -16,39 +16,39 @@ DROP FUNCTION f(); } -session "s1" -step "s1a" { BEGIN; } -step "s1b" { CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); } -step "s1c" { COMMIT; } +session s1 +step s1a { BEGIN; } +step s1b { CREATE TRIGGER t AFTER UPDATE ON a EXECUTE PROCEDURE f(); } +step s1c { COMMIT; } -session "s2" -step "s2a" { BEGIN; } -step "s2b" { SELECT * FROM a WHERE i = 1 FOR UPDATE; } -step "s2c" { UPDATE a SET i = 4 WHERE i = 3; } -step "s2d" { COMMIT; } +session s2 +step s2a { BEGIN; } +step s2b { SELECT * FROM a WHERE i = 1 FOR UPDATE; } +step s2c { UPDATE a SET i = 4 WHERE i = 3; } +step s2d { COMMIT; } -permutation "s1a" "s1b" "s1c" "s2a" "s2b" "s2c" "s2d" -permutation "s1a" "s1b" "s2a" "s1c" "s2b" "s2c" "s2d" -permutation "s1a" "s1b" "s2a" "s2b" "s1c" "s2c" "s2d" -permutation "s1a" "s1b" "s2a" "s2b" "s2c" "s1c" "s2d" -permutation "s1a" "s2a" "s1b" "s1c" "s2b" "s2c" "s2d" -permutation "s1a" "s2a" "s1b" "s2b" "s1c" "s2c" "s2d" -permutation "s1a" "s2a" "s1b" "s2b" "s2c" "s1c" "s2d" -permutation "s1a" "s2a" "s2b" "s1b" "s1c" "s2c" "s2d" -permutation "s1a" "s2a" "s2b" "s1b" "s2c" "s1c" "s2d" -permutation "s1a" "s2a" "s2b" "s2c" "s1b" "s2d" "s1c" -permutation "s1a" "s2a" "s2b" "s2c" "s2d" "s1b" "s1c" -permutation "s2a" "s1a" "s1b" "s1c" "s2b" "s2c" "s2d" -permutation "s2a" "s1a" "s1b" "s2b" "s1c" "s2c" "s2d" -permutation "s2a" "s1a" "s1b" "s2b" "s2c" "s1c" "s2d" -permutation "s2a" "s1a" "s2b" "s1b" "s1c" "s2c" "s2d" -permutation "s2a" "s1a" "s2b" "s1b" "s2c" "s1c" "s2d" -permutation "s2a" "s1a" "s2b" "s2c" "s1b" "s2d" "s1c" -permutation "s2a" "s1a" "s2b" "s2c" "s2d" "s1b" "s1c" -permutation "s2a" "s2b" "s1a" "s1b" "s1c" "s2c" "s2d" -permutation "s2a" "s2b" "s1a" "s1b" "s2c" "s1c" "s2d" -permutation "s2a" "s2b" "s1a" "s2c" "s1b" "s2d" "s1c" -permutation "s2a" "s2b" "s1a" "s2c" "s2d" "s1b" "s1c" -permutation "s2a" "s2b" "s2c" "s1a" "s1b" "s2d" "s1c" -permutation "s2a" "s2b" "s2c" "s1a" "s2d" "s1b" "s1c" -permutation "s2a" "s2b" "s2c" "s2d" "s1a" "s1b" "s1c" +permutation s1a s1b s1c s2a s2b s2c s2d +permutation s1a s1b s2a s1c s2b s2c s2d +permutation s1a s1b s2a s2b s1c s2c s2d +permutation s1a s1b s2a s2b s2c s1c s2d +permutation s1a s2a s1b s1c s2b s2c s2d +permutation s1a s2a s1b s2b s1c s2c s2d +permutation s1a s2a s1b s2b s2c s1c s2d +permutation s1a s2a s2b s1b s1c s2c s2d +permutation s1a s2a s2b s1b s2c s1c s2d +permutation s1a s2a s2b s2c s1b s2d s1c +permutation s1a s2a s2b s2c s2d s1b s1c +permutation s2a s1a s1b s1c s2b s2c s2d +permutation s2a s1a s1b s2b s1c s2c s2d +permutation s2a s1a s1b s2b s2c s1c s2d +permutation s2a s1a s2b s1b s1c s2c s2d +permutation s2a s1a s2b s1b s2c s1c s2d +permutation s2a s1a s2b s2c s1b s2d s1c +permutation s2a s1a s2b s2c s2d s1b s1c +permutation s2a s2b s1a s1b s1c s2c s2d +permutation s2a s2b s1a s1b s2c s1c s2d +permutation s2a s2b s1a s2c s1b s2d s1c +permutation s2a s2b s1a s2c s2d s1b s1c +permutation s2a s2b s2c s1a s1b s2d s1c +permutation s2a s2b s2c s1a s2d s1b s1c +permutation s2a s2b s2c s2d s1a s1b s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/deadlock-hard.spec postgresql-10-10.19/src/test/isolation/specs/deadlock-hard.spec --- postgresql-10-10.17/src/test/isolation/specs/deadlock-hard.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/deadlock-hard.spec 2021-11-08 22:05:38.000000000 +0000 @@ -20,52 +20,60 @@ DROP TABLE a1, a2, a3, a4, a5, a6, a7, a8; } -session "s1" +session s1 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s1a1" { LOCK TABLE a1; } -step "s1a2" { LOCK TABLE a2; } -step "s1c" { COMMIT; } +step s1a1 { LOCK TABLE a1; } +step s1a2 { LOCK TABLE a2; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s2a2" { LOCK TABLE a2; } -step "s2a3" { LOCK TABLE a3; } -step "s2c" { COMMIT; } +step s2a2 { LOCK TABLE a2; } +step s2a3 { LOCK TABLE a3; } +step s2c { COMMIT; } -session "s3" +session s3 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s3a3" { LOCK TABLE a3; } -step "s3a4" { LOCK TABLE a4; } -step "s3c" { COMMIT; } +step s3a3 { LOCK TABLE a3; } +step s3a4 { LOCK TABLE a4; } +step s3c { COMMIT; } -session "s4" +session s4 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s4a4" { LOCK TABLE a4; } -step "s4a5" { LOCK TABLE a5; } -step "s4c" { COMMIT; } +step s4a4 { LOCK TABLE a4; } +step s4a5 { LOCK TABLE a5; } +step s4c { COMMIT; } -session "s5" +session s5 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s5a5" { LOCK TABLE a5; } -step "s5a6" { LOCK TABLE a6; } -step "s5c" { COMMIT; } +step s5a5 { LOCK TABLE a5; } +step s5a6 { LOCK TABLE a6; } +step s5c { COMMIT; } -session "s6" +session s6 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s6a6" { LOCK TABLE a6; } -step "s6a7" { LOCK TABLE a7; } -step "s6c" { COMMIT; } +step s6a6 { LOCK TABLE a6; } +step s6a7 { LOCK TABLE a7; } +step s6c { COMMIT; } -session "s7" +session s7 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s7a7" { LOCK TABLE a7; } -step "s7a8" { LOCK TABLE a8; } -step "s7c" { COMMIT; } +step s7a7 { LOCK TABLE a7; } +step s7a8 { LOCK TABLE a8; } +step s7c { COMMIT; } -session "s8" -setup { BEGIN; SET deadlock_timeout = '10s'; } -step "s8a8" { LOCK TABLE a8; } -step "s8a1" { LOCK TABLE a1; } -step "s8c" { COMMIT; } +session s8 +setup { BEGIN; SET deadlock_timeout = '10ms'; } +step s8a8 { LOCK TABLE a8; } +step s8a1 { LOCK TABLE a1; } +step s8c { COMMIT; } -permutation "s1a1" "s2a2" "s3a3" "s4a4" "s5a5" "s6a6" "s7a7" "s8a8" "s1a2" "s2a3" "s3a4" "s4a5" "s5a6" "s6a7" "s7a8" "s8a1" "s8c" "s7c" "s6c" "s5c" "s4c" "s3c" "s2c" "s1c" +# Note: when s8a1 detects the deadlock and fails, s7a8 is released, making +# it timing-dependent which query completion is received first by the tester. +# To ensure output stability, add a blocking mark to force s8a1's completion +# to be reported first. There is a second timing dependency, too: the tester +# might or might not observe s8a1 during its short lock wait state. Apply a +# dummy blocking mark to s8a1 to ensure it will be reported as "waiting" +# regardless of that. + +permutation s1a1 s2a2 s3a3 s4a4 s5a5 s6a6 s7a7 s8a8 s1a2 s2a3 s3a4 s4a5 s5a6 s6a7 s7a8(s8a1) s8a1(*) s8c s7c s6c s5c s4c s3c s2c s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/deadlock-simple.spec postgresql-10-10.19/src/test/isolation/specs/deadlock-simple.spec --- postgresql-10-10.17/src/test/isolation/specs/deadlock-simple.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/deadlock-simple.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,16 +14,16 @@ DROP TABLE a1; } -session "s1" +session s1 setup { BEGIN; } -step "s1as" { LOCK TABLE a1 IN ACCESS SHARE MODE; } -step "s1ae" { LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; } -step "s1c" { COMMIT; } +step s1as { LOCK TABLE a1 IN ACCESS SHARE MODE; } +step s1ae { LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2as" { LOCK TABLE a1 IN ACCESS SHARE MODE; } -step "s2ae" { LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; } -step "s2c" { COMMIT; } +step s2as { LOCK TABLE a1 IN ACCESS SHARE MODE; } +step s2ae { LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; } +step s2c { COMMIT; } -permutation "s1as" "s2as" "s1ae" "s2ae" "s1c" "s2c" +permutation s1as s2as s1ae s2ae s1c s2c diff -Nru postgresql-10-10.17/src/test/isolation/specs/deadlock-soft-2.spec postgresql-10-10.19/src/test/isolation/specs/deadlock-soft-2.spec --- postgresql-10-10.17/src/test/isolation/specs/deadlock-soft-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/deadlock-soft-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -2,12 +2,6 @@ # jump over both s3 and s4 and acquire the lock on a2 immediately, # since s3 and s4 are hard-blocked on a1. -# The expected output for this test assumes that isolationtester will -# detect step s1b as waiting before the deadlock detector runs and -# releases s1 from its blocked state. To leave enough time for that -# to happen even in very slow (CLOBBER_CACHE_ALWAYS) cases, we must -# increase deadlock_timeout. - setup { CREATE TABLE a1 (); @@ -19,26 +13,31 @@ DROP TABLE a1, a2; } -session "s1" -setup { BEGIN; SET deadlock_timeout = '5s'; } -step "s1a" { LOCK TABLE a1 IN SHARE UPDATE EXCLUSIVE MODE; } -step "s1b" { LOCK TABLE a2 IN SHARE UPDATE EXCLUSIVE MODE; } -step "s1c" { COMMIT; } +session s1 +setup { BEGIN; SET deadlock_timeout = '10ms'; } +step s1a { LOCK TABLE a1 IN SHARE UPDATE EXCLUSIVE MODE; } +step s1b { LOCK TABLE a2 IN SHARE UPDATE EXCLUSIVE MODE; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s2a" { LOCK TABLE a2 IN ACCESS SHARE MODE; } -step "s2b" { LOCK TABLE a1 IN SHARE UPDATE EXCLUSIVE MODE; } -step "s2c" { COMMIT; } +step s2a { LOCK TABLE a2 IN ACCESS SHARE MODE; } +step s2b { LOCK TABLE a1 IN SHARE UPDATE EXCLUSIVE MODE; } +step s2c { COMMIT; } -session "s3" +session s3 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s3a" { LOCK TABLE a2 IN ACCESS EXCLUSIVE MODE; } -step "s3c" { COMMIT; } +step s3a { LOCK TABLE a2 IN ACCESS EXCLUSIVE MODE; } +step s3c { COMMIT; } -session "s4" +session s4 setup { BEGIN; SET deadlock_timeout = '100s'; } -step "s4a" { LOCK TABLE a2 IN ACCESS EXCLUSIVE MODE; } -step "s4c" { COMMIT; } +step s4a { LOCK TABLE a2 IN ACCESS EXCLUSIVE MODE; } +step s4c { COMMIT; } + +# The expected output for this test assumes that isolationtester will +# detect step s1b as waiting before the deadlock detector runs and +# releases s1 from its blocked state. To ensure that happens even in +# very slow (CLOBBER_CACHE_ALWAYS) cases, apply a (*) annotation. -permutation "s1a" "s2a" "s2b" "s3a" "s4a" "s1b" "s1c" "s2c" "s3c" "s4c" +permutation s1a s2a s2b s3a s4a s1b(*) s1c s2c s3c s4c diff -Nru postgresql-10-10.17/src/test/isolation/specs/deadlock-soft.spec postgresql-10-10.19/src/test/isolation/specs/deadlock-soft.spec --- postgresql-10-10.17/src/test/isolation/specs/deadlock-soft.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/deadlock-soft.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,26 +15,26 @@ DROP TABLE a1, a2; } -session "d1" +session d1 setup { BEGIN; SET deadlock_timeout = '10s'; } -step "d1a1" { LOCK TABLE a1 IN ACCESS SHARE MODE; } -step "d1a2" { LOCK TABLE a2 IN ACCESS SHARE MODE; } -step "d1c" { COMMIT; } +step d1a1 { LOCK TABLE a1 IN ACCESS SHARE MODE; } +step d1a2 { LOCK TABLE a2 IN ACCESS SHARE MODE; } +step d1c { COMMIT; } -session "d2" +session d2 setup { BEGIN; SET deadlock_timeout = '10ms'; } -step "d2a2" { LOCK TABLE a2 IN ACCESS SHARE MODE; } -step "d2a1" { LOCK TABLE a1 IN ACCESS SHARE MODE; } -step "d2c" { COMMIT; } +step d2a2 { LOCK TABLE a2 IN ACCESS SHARE MODE; } +step d2a1 { LOCK TABLE a1 IN ACCESS SHARE MODE; } +step d2c { COMMIT; } -session "e1" +session e1 setup { BEGIN; SET deadlock_timeout = '10s'; } -step "e1l" { LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; } -step "e1c" { COMMIT; } +step e1l { LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; } +step e1c { COMMIT; } -session "e2" +session e2 setup { BEGIN; SET deadlock_timeout = '10s'; } -step "e2l" { LOCK TABLE a2 IN ACCESS EXCLUSIVE MODE; } -step "e2c" { COMMIT; } +step e2l { LOCK TABLE a2 IN ACCESS EXCLUSIVE MODE; } +step e2c { COMMIT; } -permutation "d1a1" "d2a2" "e1l" "e2l" "d1a2" "d2a1" "d1c" "e1c" "d2c" "e2c" +permutation d1a1 d2a2 e1l e2l d1a2 d2a1 d1c e1c d2c e2c diff -Nru postgresql-10-10.17/src/test/isolation/specs/delete-abort-savept-2.spec postgresql-10-10.19/src/test/isolation/specs/delete-abort-savept-2.spec --- postgresql-10-10.17/src/test/isolation/specs/delete-abort-savept-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/delete-abort-savept-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,21 +14,21 @@ DROP TABLE foo; } -session "s1" +session s1 setup { BEGIN; } -step "s1l" { SELECT * FROM foo FOR KEY SHARE; } -step "s1svp" { SAVEPOINT f; } -step "s1d" { SELECT * FROM foo FOR NO KEY UPDATE; } -step "s1r" { ROLLBACK TO f; } -step "s1c" { COMMIT; } +step s1l { SELECT * FROM foo FOR KEY SHARE; } +step s1svp { SAVEPOINT f; } +step s1d { SELECT * FROM foo FOR NO KEY UPDATE; } +step s1r { ROLLBACK TO f; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2l" { SELECT * FROM foo FOR UPDATE; } -step "s2l2" { SELECT * FROM foo FOR NO KEY UPDATE; } -step "s2c" { COMMIT; } +step s2l { SELECT * FROM foo FOR UPDATE; } +step s2l2 { SELECT * FROM foo FOR NO KEY UPDATE; } +step s2c { COMMIT; } -permutation "s1l" "s1svp" "s1d" "s1r" "s2l" "s1c" "s2c" -permutation "s1l" "s1svp" "s1d" "s2l" "s1r" "s1c" "s2c" -permutation "s1l" "s1svp" "s1d" "s1r" "s2l2" "s1c" "s2c" -permutation "s1l" "s1svp" "s1d" "s2l2" "s1r" "s1c" "s2c" +permutation s1l s1svp s1d s1r s2l s1c s2c +permutation s1l s1svp s1d s2l s1r s1c s2c +permutation s1l s1svp s1d s1r s2l2 s1c s2c +permutation s1l s1svp s1d s2l2 s1r s1c s2c diff -Nru postgresql-10-10.17/src/test/isolation/specs/delete-abort-savept.spec postgresql-10-10.19/src/test/isolation/specs/delete-abort-savept.spec --- postgresql-10-10.17/src/test/isolation/specs/delete-abort-savept.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/delete-abort-savept.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,23 +15,23 @@ DROP TABLE foo; } -session "s1" +session s1 setup { BEGIN; } -step "s1l" { SELECT * FROM foo FOR KEY SHARE; } -step "s1svp" { SAVEPOINT f; } -step "s1d" { DELETE FROM foo; } -step "s1r" { ROLLBACK TO f; } -step "s1c" { COMMIT; } +step s1l { SELECT * FROM foo FOR KEY SHARE; } +step s1svp { SAVEPOINT f; } +step s1d { DELETE FROM foo; } +step s1r { ROLLBACK TO f; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2l" { SELECT * FROM foo FOR UPDATE; } -step "s2c" { COMMIT; } +step s2l { SELECT * FROM foo FOR UPDATE; } +step s2c { COMMIT; } -permutation "s1l" "s1svp" "s1d" "s1r" "s1c" "s2l" "s2c" -permutation "s1l" "s1svp" "s1d" "s1r" "s2l" "s1c" "s2c" -permutation "s1l" "s1svp" "s1d" "s2l" "s1r" "s1c" "s2c" -permutation "s1l" "s1svp" "s2l" "s1d" "s1r" "s1c" "s2c" -permutation "s1l" "s2l" "s1svp" "s1d" "s1r" "s1c" "s2c" -permutation "s2l" "s1l" "s2c" "s1svp" "s1d" "s1r" "s1c" -permutation "s2l" "s2c" "s1l" "s1svp" "s1d" "s1r" "s1c" +permutation s1l s1svp s1d s1r s1c s2l s2c +permutation s1l s1svp s1d s1r s2l s1c s2c +permutation s1l s1svp s1d s2l s1r s1c s2c +permutation s1l s1svp s2l s1d s1r s1c s2c +permutation s1l s2l s1svp s1d s1r s1c s2c +permutation s2l s1l s2c s1svp s1d s1r s1c +permutation s2l s2c s1l s1svp s1d s1r s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/drop-index-concurrently-1.spec postgresql-10-10.19/src/test/isolation/specs/drop-index-concurrently-1.spec --- postgresql-10-10.17/src/test/isolation/specs/drop-index-concurrently-1.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/drop-index-concurrently-1.spec 2021-11-08 22:05:38.000000000 +0000 @@ -17,25 +17,25 @@ DROP TABLE test_dc; } -session "s1" -step "noseq" { SET enable_seqscan = false; } -step "chkiso" { SELECT (setting in ('read committed','read uncommitted')) AS is_read_committed FROM pg_settings WHERE name = 'default_transaction_isolation'; } -step "prepi" { PREPARE getrow_idx AS SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; } -step "preps" { PREPARE getrow_seq AS SELECT * FROM test_dc WHERE data::text=34::text ORDER BY id,data; } -step "begin" { BEGIN; } -step "explaini" { EXPLAIN (COSTS OFF) EXECUTE getrow_idx; } -step "explains" { EXPLAIN (COSTS OFF) EXECUTE getrow_seq; } -step "selecti" { EXECUTE getrow_idx; } -step "selects" { EXECUTE getrow_seq; } -step "end" { COMMIT; } +session s1 +step noseq { SET enable_seqscan = false; } +step chkiso { SELECT (setting in ('read committed','read uncommitted')) AS is_read_committed FROM pg_settings WHERE name = 'default_transaction_isolation'; } +step prepi { PREPARE getrow_idx AS SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; } +step preps { PREPARE getrow_seq AS SELECT * FROM test_dc WHERE data::text=34::text ORDER BY id,data; } +step begin { BEGIN; } +step explaini { EXPLAIN (COSTS OFF) EXECUTE getrow_idx; } +step explains { EXPLAIN (COSTS OFF) EXECUTE getrow_seq; } +step selecti { EXECUTE getrow_idx; } +step selects { EXECUTE getrow_seq; } +step end { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "select2" { SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; } -step "insert2" { INSERT INTO test_dc(data) SELECT * FROM generate_series(1, 100); } -step "end2" { COMMIT; } +step select2 { SELECT * FROM test_dc WHERE data=34 ORDER BY id,data; } +step insert2 { INSERT INTO test_dc(data) SELECT * FROM generate_series(1, 100); } +step end2 { COMMIT; } -session "s3" -step "drop" { DROP INDEX CONCURRENTLY test_dc_data; } +session s3 +step drop { DROP INDEX CONCURRENTLY test_dc_data; } -permutation "noseq" "chkiso" "prepi" "preps" "begin" "explaini" "explains" "select2" "drop" "insert2" "end2" "selecti" "selects" "end" +permutation noseq chkiso prepi preps begin explaini explains select2 drop insert2 end2 selecti selects end diff -Nru postgresql-10-10.17/src/test/isolation/specs/eval-plan-qual.spec postgresql-10-10.19/src/test/isolation/specs/eval-plan-qual.spec --- postgresql-10-10.17/src/test/isolation/specs/eval-plan-qual.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/eval-plan-qual.spec 2021-11-08 22:05:38.000000000 +0000 @@ -38,14 +38,14 @@ DROP TABLE parttbl; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } # wx1 then wx2 checks the basic case of re-fetching up-to-date values -step "wx1" { UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; } +step wx1 { UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; } # wy1 then wy2 checks the case where quals pass then fail -step "wy1" { UPDATE accounts SET balance = balance + 500 WHERE accountid = 'checking'; } +step wy1 { UPDATE accounts SET balance = balance + 500 WHERE accountid = 'checking'; } # upsert tests are to check writable-CTE cases -step "upsert1" { +step upsert1 { WITH upsert AS (UPDATE accounts SET balance = balance + 500 WHERE accountid = 'savings' @@ -59,20 +59,20 @@ # when the first updated tuple was in a non-first child table. # writep2/returningp1 tests a memory allocation issue -step "readp1" { SELECT tableoid::regclass, ctid, * FROM p WHERE b IN (0, 1) AND c = 0 FOR UPDATE; } -step "writep1" { UPDATE p SET b = -1 WHERE a = 1 AND b = 1 AND c = 0; } -step "writep2" { UPDATE p SET b = -b WHERE a = 1 AND c = 0; } -step "c1" { COMMIT; } +step readp1 { SELECT tableoid::regclass, ctid, * FROM p WHERE b IN (0, 1) AND c = 0 FOR UPDATE; } +step writep1 { UPDATE p SET b = -1 WHERE a = 1 AND b = 1 AND c = 0; } +step writep2 { UPDATE p SET b = -b WHERE a = 1 AND c = 0; } +step c1 { COMMIT; } # these tests are meant to exercise EvalPlanQualFetchRowMarks, # ie, handling non-locked tables in an EvalPlanQual recheck -step "partiallock" { +step partiallock { SELECT * FROM accounts a1, accounts a2 WHERE a1.accountid = a2.accountid FOR UPDATE OF a1; } -step "lockwithvalues" { +step lockwithvalues { SELECT * FROM accounts a1, (values('checking'),('savings')) v(id) WHERE a1.accountid = v.id FOR UPDATE OF a1; @@ -81,7 +81,7 @@ # these tests exercise EvalPlanQual with a SubLink sub-select (which should be # unaffected by any EPQ recheck behavior in the outer query); cf bug #14034 -step "updateforss" { +step updateforss { UPDATE table_a SET value = 'newTableAValue' WHERE id = 1; UPDATE table_b SET value = 'newTableBValue' WHERE id = 1; } @@ -89,13 +89,13 @@ # these tests exercise EvalPlanQual with conditional InitPlans which # have not been executed prior to the EPQ -step "updateforcip" { +step updateforcip { UPDATE table_a SET value = NULL WHERE id = 1; } # these tests exercise mark/restore during EPQ recheck, cf bug #15032 -step "selectjoinforupdate" { +step selectjoinforupdate { set enable_nestloop to 0; set enable_hashjoin to 0; set enable_seqscan to 0; @@ -106,16 +106,16 @@ # test for EPQ on a partitioned result table -step "simplepartupdate" { +step simplepartupdate { update parttbl set a = a; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "wx2" { UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking'; } -step "wy2" { UPDATE accounts SET balance = balance + 1000 WHERE accountid = 'checking' AND balance < 1000; } -step "upsert2" { +step wx2 { UPDATE accounts SET balance = balance + 450 WHERE accountid = 'checking'; } +step wy2 { UPDATE accounts SET balance = balance + 1000 WHERE accountid = 'checking' AND balance < 1000; } +step upsert2 { WITH upsert AS (UPDATE accounts SET balance = balance + 1234 WHERE accountid = 'savings' @@ -123,40 +123,40 @@ INSERT INTO accounts SELECT 'savings', 1234 WHERE NOT EXISTS (SELECT 1 FROM upsert); } -step "readp2" { SELECT tableoid::regclass, ctid, * FROM p WHERE b IN (0, 1) AND c = 0 FOR UPDATE; } -step "returningp1" { +step readp2 { SELECT tableoid::regclass, ctid, * FROM p WHERE b IN (0, 1) AND c = 0 FOR UPDATE; } +step returningp1 { WITH u AS ( UPDATE p SET b = b WHERE a > 0 RETURNING * ) SELECT * FROM u; } -step "readforss" { +step readforss { SELECT ta.id AS ta_id, ta.value AS ta_value, (SELECT ROW(tb.id, tb.value) FROM table_b tb WHERE ta.id = tb.id) AS tb_row FROM table_a ta WHERE ta.id = 1 FOR UPDATE OF ta; } -step "updateforcip2" { +step updateforcip2 { UPDATE table_a SET value = COALESCE(value, (SELECT text 'newValue')) WHERE id = 1; } -step "updateforcip3" { +step updateforcip3 { WITH d(val) AS (SELECT text 'newValue' FROM generate_series(1,1)) UPDATE table_a SET value = COALESCE(value, (SELECT val FROM d)) WHERE id = 1; } -step "wrtwcte" { UPDATE table_a SET value = 'tableAValue2' WHERE id = 1; } -step "wrjt" { UPDATE jointest SET data = 42 WHERE id = 7; } -step "complexpartupdate" { +step wrtwcte { UPDATE table_a SET value = 'tableAValue2' WHERE id = 1; } +step wrjt { UPDATE jointest SET data = 42 WHERE id = 7; } +step complexpartupdate { with u as (update parttbl set a = a returning parttbl.*) update parttbl set a = u.a from u; } -step "c2" { COMMIT; } +step c2 { COMMIT; } -session "s3" +session s3 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "read" { SELECT * FROM accounts ORDER BY accountid; } -step "read_a" { SELECT * FROM table_a ORDER BY id; } +step read { SELECT * FROM accounts ORDER BY accountid; } +step read_a { SELECT * FROM table_a ORDER BY id; } # this test exercises EvalPlanQual with a CTE, cf bug #14328 -step "readwcte" { +step readwcte { WITH cte1 AS ( SELECT id FROM table_b WHERE value = 'tableBValue' @@ -170,7 +170,7 @@ } # this test exercises a different CTE misbehavior, cf bug #14870 -step "multireadwcte" { +step multireadwcte { WITH updated AS ( UPDATE table_a SET value = 'tableAValue3' WHERE id = 1 RETURNING id ) @@ -179,18 +179,18 @@ teardown { COMMIT; } -permutation "wx1" "wx2" "c1" "c2" "read" -permutation "wy1" "wy2" "c1" "c2" "read" -permutation "upsert1" "upsert2" "c1" "c2" "read" -permutation "readp1" "writep1" "readp2" "c1" "c2" -permutation "writep2" "returningp1" "c1" "c2" -permutation "wx2" "partiallock" "c2" "c1" "read" -permutation "wx2" "lockwithvalues" "c2" "c1" "read" -permutation "updateforss" "readforss" "c1" "c2" -permutation "updateforcip" "updateforcip2" "c1" "c2" "read_a" -permutation "updateforcip" "updateforcip3" "c1" "c2" "read_a" -permutation "wrtwcte" "readwcte" "c1" "c2" -permutation "wrjt" "selectjoinforupdate" "c2" "c1" -permutation "wrtwcte" "multireadwcte" "c1" "c2" +permutation wx1 wx2 c1 c2 read +permutation wy1 wy2 c1 c2 read +permutation upsert1 upsert2 c1 c2 read +permutation readp1 writep1 readp2 c1 c2 +permutation writep2 returningp1 c1 c2 +permutation wx2 partiallock c2 c1 read +permutation wx2 lockwithvalues c2 c1 read +permutation updateforss readforss c1 c2 +permutation updateforcip updateforcip2 c1 c2 read_a +permutation updateforcip updateforcip3 c1 c2 read_a +permutation wrtwcte readwcte c1 c2 +permutation wrjt selectjoinforupdate c2 c1 +permutation wrtwcte multireadwcte c1 c2 -permutation "simplepartupdate" "complexpartupdate" "c1" "c2" +permutation simplepartupdate complexpartupdate c1 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/eval-plan-qual-trigger.spec postgresql-10-10.19/src/test/isolation/specs/eval-plan-qual-trigger.spec --- postgresql-10-10.17/src/test/isolation/specs/eval-plan-qual-trigger.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/eval-plan-qual-trigger.spec 2021-11-08 22:05:38.000000000 +0000 @@ -54,53 +54,53 @@ } -session "s0" -step "s0_rep" { SELECT * FROM trigtest ORDER BY key, data } +session s0 +step s0_rep { SELECT * FROM trigtest ORDER BY key, data } -session "s1" +session s1 #setup { } -step "s1_b_rc" { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; } -step "s1_b_rr" { BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; } -step "s1_c" { COMMIT; } -step "s1_r" { ROLLBACK; } -step "s1_trig_rep_b_i" { CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } -step "s1_trig_rep_a_i" { CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } -step "s1_trig_rep_b_u" { CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } -step "s1_trig_rep_a_u" { CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } -step "s1_trig_rep_b_d" { CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } -step "s1_trig_rep_a_d" { CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } -step "s1_ins_a" { INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; } -step "s1_ins_b" { INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; } -step "s1_ins_c" { INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; } -step "s1_del_a" { +step s1_b_rc { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; } +step s1_b_rr { BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; } +step s1_c { COMMIT; } +step s1_r { ROLLBACK; } +step s1_trig_rep_b_i { CREATE TRIGGER rep_b_i BEFORE INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } +step s1_trig_rep_a_i { CREATE TRIGGER rep_a_i AFTER INSERT ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } +step s1_trig_rep_b_u { CREATE TRIGGER rep_b_u BEFORE UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } +step s1_trig_rep_a_u { CREATE TRIGGER rep_a_u AFTER UPDATE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } +step s1_trig_rep_b_d { CREATE TRIGGER rep_b_d BEFORE DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } +step s1_trig_rep_a_d { CREATE TRIGGER rep_a_d AFTER DELETE ON trigtest FOR EACH ROW EXECUTE PROCEDURE trig_report(); } +step s1_ins_a { INSERT INTO trigtest VALUES ('key-a', 'val-a-s1') RETURNING *; } +step s1_ins_b { INSERT INTO trigtest VALUES ('key-b', 'val-b-s1') RETURNING *; } +step s1_ins_c { INSERT INTO trigtest VALUES ('key-c', 'val-c-s1') RETURNING *; } +step s1_del_a { DELETE FROM trigtest WHERE noisy_oper('upd', key, '=', 'key-a') AND noisy_oper('upk', data, '<>', 'mismatch') RETURNING * } -step "s1_del_b" { +step s1_del_b { DELETE FROM trigtest WHERE noisy_oper('upd', key, '=', 'key-b') AND noisy_oper('upk', data, '<>', 'mismatch') RETURNING * } -step "s1_upd_a_data" { +step s1_upd_a_data { UPDATE trigtest SET data = data || '-ups1' WHERE noisy_oper('upd', key, '=', 'key-a') AND noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; } -step "s1_upd_b_data" { +step s1_upd_b_data { UPDATE trigtest SET data = data || '-ups1' WHERE noisy_oper('upd', key, '=', 'key-b') AND noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; } -step "s1_upd_a_tob" { +step s1_upd_a_tob { UPDATE trigtest SET key = 'key-b', data = data || '-tobs1' WHERE noisy_oper('upk', key, '=', 'key-a') AND @@ -108,42 +108,42 @@ RETURNING *; } -session "s2" +session s2 #setup { } -step "s2_b_rc" { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; } -step "s2_b_rr" { BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; } -step "s2_c" { COMMIT; } -step "s2_r" { ROLLBACK; } -step "s2_ins_a" { INSERT INTO trigtest VALUES ('key-a', 'val-a-s2') RETURNING *; } -step "s2_del_a" { +step s2_b_rc { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; } +step s2_b_rr { BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; } +step s2_c { COMMIT; } +#step s2_r { ROLLBACK; } +step s2_ins_a { INSERT INTO trigtest VALUES ('key-a', 'val-a-s2') RETURNING *; } +step s2_del_a { DELETE FROM trigtest WHERE noisy_oper('upd', key, '=', 'key-a') AND noisy_oper('upk', data, '<>', 'mismatch') RETURNING * } -step "s2_upd_a_data" { +step s2_upd_a_data { UPDATE trigtest SET data = data || '-ups2' WHERE noisy_oper('upd', key, '=', 'key-a') AND noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; } -step "s2_upd_b_data" { +step s2_upd_b_data { UPDATE trigtest SET data = data || '-ups2' WHERE noisy_oper('upd', key, '=', 'key-b') AND noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; } -step "s2_upd_all_data" { +step s2_upd_all_data { UPDATE trigtest SET data = data || '-ups2' WHERE noisy_oper('upd', key, '<>', 'mismatch') AND noisy_oper('upk', data, '<>', 'mismatch') RETURNING *; } -step "s2_upsert_a_data" { +step s2_upsert_a_data { INSERT INTO trigtest VALUES ('key-a', 'val-a-upss2') ON CONFLICT (key) DO UPDATE SET data = trigtest.data || '-upserts2' @@ -153,258 +153,258 @@ RETURNING *; } -session "s3" +#session s3 #setup { } -step "s3_b_rc" { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; } -step "s3_c" { COMMIT; } -step "s3_r" { ROLLBACK; } -step "s3_del_a" { - DELETE FROM trigtest - WHERE - noisy_oper('upd', key, '=', 'key-a') AND - noisy_oper('upk', data, '<>', 'mismatch') - RETURNING * -} -step "s3_upd_a_data" { - UPDATE trigtest SET data = data || '-ups3' - WHERE - noisy_oper('upd', key, '=', 'key-a') AND - noisy_oper('upk', data, '<>', 'mismatch') - RETURNING *; -} +#step s3_b_rc { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT 1; } +#step s3_c { COMMIT; } +#step s3_r { ROLLBACK; } +#step s3_del_a { +# DELETE FROM trigtest +# WHERE +# noisy_oper('upd', key, '=', 'key-a') AND +# noisy_oper('upk', data, '<>', 'mismatch') +# RETURNING * +#} +#step s3_upd_a_data { +# UPDATE trigtest SET data = data || '-ups3' +# WHERE +# noisy_oper('upd', key, '=', 'key-a') AND +# noisy_oper('upk', data, '<>', 'mismatch') +# RETURNING *; +#} ### base case verifying that triggers see performed modifications # s1 updates, s1 commits, s2 updates -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s1_c" "s2_upd_a_data" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s1_c s2_upd_a_data s2_c + s0_rep # s1 updates, s1 rolls back, s2 updates -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s1_r" "s2_upd_a_data" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s1_r s2_upd_a_data s2_c + s0_rep # s1 updates, s1 commits back, s2 deletes -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s1_c" "s2_del_a" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s1_c s2_del_a s2_c + s0_rep # s1 updates, s1 rolls back back, s2 deletes -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s1_r" "s2_del_a" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s1_r s2_del_a s2_c + s0_rep ### Verify EPQ is performed if necessary, and skipped if transaction rolled back # s1 updates, s2 updates, s1 commits, EPQ -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_upd_a_data s1_c s2_c + s0_rep # s1 updates, s2 updates, s1 rolls back, no EPQ -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_upd_a_data s1_r s2_c + s0_rep # s1 updates, s2 deletes, s1 commits, EPQ -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_upd_a_data s1_c s2_c + s0_rep # s1 updates, s2 deletes, s1 rolls back, no EPQ -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_upd_a_data s1_r s2_c + s0_rep # s1 deletes, s2 updates, s1 commits, EPQ -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_del_a s2_upd_a_data s1_c s2_c + s0_rep # s1 deletes, s2 updates, s1 rolls back, no EPQ -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_del_a s2_upd_a_data s1_r s2_c + s0_rep # s1 inserts, s2 inserts, s1 commits, s2 inserts, unique conflict -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_a_i" "s1_trig_rep_a_d" - "s1_b_rc" "s2_b_rc" - "s1_ins_a" "s2_ins_a" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_a_i s1_trig_rep_a_d + s1_b_rc s2_b_rc + s1_ins_a s2_ins_a s1_c s2_c + s0_rep # s1 inserts, s2 inserts, s1 rolls back, s2 inserts, no unique conflict -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_a_i" "s1_trig_rep_a_d" - "s1_b_rc" "s2_b_rc" - "s1_ins_a" "s2_ins_a" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_a_i s1_trig_rep_a_d + s1_b_rc s2_b_rc + s1_ins_a s2_ins_a s1_r s2_c + s0_rep # s1 updates, s2 upserts, s1 commits, EPQ -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_upsert_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_upsert_a_data s1_c s2_c + s0_rep # s1 updates, s2 upserts, s1 rolls back, no EPQ -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_upsert_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_upsert_a_data s1_c s2_c + s0_rep # s1 inserts, s2 upserts, s1 commits -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_b_rc" "s2_b_rc" - "s1_ins_a" "s2_upsert_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u + s1_b_rc s2_b_rc + s1_ins_a s2_upsert_a_data s1_c s2_c + s0_rep # s1 inserts, s2 upserts, s1 rolls back -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_b_rc" "s2_b_rc" - "s1_ins_a" "s2_upsert_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u + s1_b_rc s2_b_rc + s1_ins_a s2_upsert_a_data s1_r s2_c + s0_rep # s1 inserts, s2 upserts, s1 updates, s1 commits, EPQ -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_b_rc" "s2_b_rc" - "s1_ins_a" "s1_upd_a_data" "s2_upsert_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u + s1_b_rc s2_b_rc + s1_ins_a s1_upd_a_data s2_upsert_a_data s1_c s2_c + s0_rep # s1 inserts, s2 upserts, s1 updates, s1 rolls back, no EPQ -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_b_rc" "s2_b_rc" - "s1_ins_a" "s1_upd_a_data" "s2_upsert_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u + s1_b_rc s2_b_rc + s1_ins_a s1_upd_a_data s2_upsert_a_data s1_r s2_c + s0_rep ### Verify EPQ is performed if necessary, and skipped if transaction rolled back, ### just without before triggers (for comparison, no additional row locks) # s1 updates, s2 updates, s1 commits, EPQ -permutation "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_upd_a_data s1_c s2_c + s0_rep # s1 updates, s2 updates, s1 rolls back, no EPQ -permutation "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_upd_a_data s1_r s2_c + s0_rep # s1 updates, s2 deletes, s1 commits, EPQ -permutation "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_del_a" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_del_a s1_c s2_c + s0_rep # s1 updates, s2 deletes, s1 rolls back, no EPQ -permutation "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_upd_a_data" "s2_del_a" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_upd_a_data s2_del_a s1_r s2_c + s0_rep # s1 deletes, s2 updates, s1 commits, EPQ -permutation "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_del_a s2_upd_a_data s1_c s2_c + s0_rep # s1 deletes, s2 updates, s1 rolls back, no EPQ -permutation "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_del_a s2_upd_a_data s1_r s2_c + s0_rep # s1 deletes, s2 deletes, s1 commits, EPQ -permutation "s1_trig_rep_a_d" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_del_a" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_a_d + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_del_a s2_del_a s1_c s2_c + s0_rep # s1 deletes, s2 deletes, s1 rolls back, no EPQ -permutation "s1_trig_rep_a_d" - "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_del_a" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_a_d + s1_ins_a s1_ins_b s1_b_rc s2_b_rc + s1_del_a s2_del_a s1_r s2_c + s0_rep ### Verify that an update affecting a row that has been ### updated/deleted to not match the where clause anymore works ### correctly # s1 updates to different key, s2 updates old key, s1 commits, EPQ failure should lead to no update -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_c" "s1_b_rc" "s2_b_rc" - "s1_upd_a_tob" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_c s1_b_rc s2_b_rc + s1_upd_a_tob s2_upd_a_data s1_c s2_c + s0_rep # s1 updates to different key, s2 updates old key, s1 rolls back, no EPQ failure -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_c" "s1_b_rc" "s2_b_rc" - "s1_upd_a_tob" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_c s1_b_rc s2_b_rc + s1_upd_a_tob s2_upd_a_data s1_r s2_c + s0_rep # s1 updates to different key, s2 updates new key, s1 commits, s2 will # not see tuple with new key and not block -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_c" "s1_b_rc" "s2_b_rc" - "s1_upd_a_tob" "s2_upd_b_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_c s1_b_rc s2_b_rc + s1_upd_a_tob s2_upd_b_data s1_c s2_c + s0_rep # s1 updates to different key, s2 updates all keys, s1 commits, s2, # will not see tuple with old key, but block on old, and then follow # the chain -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_c" "s1_b_rc" "s2_b_rc" - "s1_upd_a_tob" "s2_upd_all_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_c s1_b_rc s2_b_rc + s1_upd_a_tob s2_upd_all_data s1_c s2_c + s0_rep # s1 deletes, s2 updates, s1 committs, EPQ failure should lead to no update -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_c" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_c s1_b_rc s2_b_rc + s1_del_a s2_upd_a_data s1_c s2_c + s0_rep # s1 deletes, s2 updates, s1 rolls back, no EPQ failure -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_c" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_c s1_b_rc s2_b_rc + s1_del_a s2_upd_a_data s1_r s2_c + s0_rep # s1 deletes, s2 deletes, s1 committs, EPQ failure should lead to no delete -permutation "s1_trig_rep_b_d" "s1_trig_rep_a_d" - "s1_ins_a" "s1_ins_c" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_del_a" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_a_d + s1_ins_a s1_ins_c s1_b_rc s2_b_rc + s1_del_a s2_del_a s1_c s2_c + s0_rep # s1 deletes, s2 deletes, s1 rolls back, no EPQ failure -permutation "s1_trig_rep_b_d" "s1_trig_rep_a_d" - "s1_ins_a" "s1_ins_c" "s1_b_rc" "s2_b_rc" - "s1_del_a" "s2_del_a" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_a_d + s1_ins_a s1_ins_c s1_b_rc s2_b_rc + s1_del_a s2_del_a s1_r s2_c + s0_rep ### Verify EPQ with more than two participants works ## XXX: Disable tests, there is some potential for instability here that's not yet fully understood ## s1 updates, s2 updates, s3 updates, s1 commits, s2 EPQ, s2 commits, s3 EPQ -#permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" -# "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" "s3_b_rc" -# "s1_upd_a_data" "s2_upd_a_data" "s3_upd_a_data" "s1_c" "s2_c" "s3_c" -# "s0_rep" +#permutation s1_trig_rep_b_u s1_trig_rep_a_u +# s1_ins_a s1_ins_b s1_b_rc s2_b_rc s3_b_rc +# s1_upd_a_data s2_upd_a_data s3_upd_a_data s1_c s2_c s3_c +# s0_rep ## s1 updates, s2 updates, s3 updates, s1 commits, s2 EPQ, s2 rolls back, s3 EPQ -#permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" -# "s1_ins_a" "s1_ins_b" "s1_b_rc" "s2_b_rc" "s3_b_rc" -# "s1_upd_a_data" "s2_upd_a_data" "s3_upd_a_data" "s1_c" "s2_r" "s3_c" -# "s0_rep" +#permutation s1_trig_rep_b_u s1_trig_rep_a_u +# s1_ins_a s1_ins_b s1_b_rc s2_b_rc s3_b_rc +# s1_upd_a_data s2_upd_a_data s3_upd_a_data s1_c s2_r s3_c +# s0_rep ## s1 updates, s3 updates, s2 upserts, s1 updates, s1 commits, s3 EPQ, s3 deletes, s3 commits, s2 inserts without EPQ recheck -#permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" -# "s1_ins_a" "s1_b_rc" "s2_b_rc" "s3_b_rc" -# "s1_upd_a_data" "s3_upd_a_data" "s2_upsert_a_data" "s1_upd_a_data" "s1_c" "s3_del_a" "s3_c" "s2_c" -# "s0_rep" +#permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u +# s1_ins_a s1_b_rc s2_b_rc s3_b_rc +# s1_upd_a_data s3_upd_a_data s2_upsert_a_data s1_upd_a_data s1_c s3_del_a s3_c s2_c +# s0_rep ## s1 updates, s3 updates, s2 upserts, s1 updates, s1 commits, s3 EPQ, s3 deletes, s3 rolls back, s2 EPQ -#permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" -# "s1_ins_a" "s1_b_rc" "s2_b_rc" "s3_b_rc" -# "s1_upd_a_data" "s3_upd_a_data" "s2_upsert_a_data" "s1_upd_a_data" "s1_c" "s3_del_a" "s3_r" "s2_c" -# "s0_rep" +#permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u +# s1_ins_a s1_b_rc s2_b_rc s3_b_rc +# s1_upd_a_data s3_upd_a_data s2_upsert_a_data s1_upd_a_data s1_c s3_del_a s3_r s2_c +# s0_rep ### Document that EPQ doesn't "leap" onto a tuple that would match after blocking # s1 inserts a, s1 updates b, s2 updates b, s1 deletes b, s1 updates a to b, s1 commits, s2 EPQ finds tuple deleted -permutation "s1_trig_rep_b_i" "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_i" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_b" "s1_b_rc" "s2_b_rc" - "s1_ins_a" "s1_upd_b_data" "s2_upd_b_data" "s1_del_b" "s1_upd_a_tob" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_i s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_i s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_b s1_b_rc s2_b_rc + s1_ins_a s1_upd_b_data s2_upd_b_data s1_del_b s1_upd_a_tob s1_c s2_c + s0_rep ### Triggers for EPQ detect serialization failures # s1 updates, s2 updates, s1 commits, serialization failure -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rr" "s2_b_rr" - "s1_upd_a_data" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rr s2_b_rr + s1_upd_a_data s2_upd_a_data s1_c s2_c + s0_rep # s1 updates, s2 updates, s1 rolls back, s2 succeeds -permutation "s1_trig_rep_b_u" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rr" "s2_b_rr" - "s1_upd_a_data" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_u s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rr s2_b_rr + s1_upd_a_data s2_upd_a_data s1_r s2_c + s0_rep # s1 deletes, s2 updates, s1 commits, serialization failure -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rr" "s2_b_rr" - "s1_del_a" "s2_upd_a_data" "s1_c" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rr s2_b_rr + s1_del_a s2_upd_a_data s1_c s2_c + s0_rep # s1 deletes, s2 updates, s1 rolls back, s2 succeeds -permutation "s1_trig_rep_b_d" "s1_trig_rep_b_u" "s1_trig_rep_a_d" "s1_trig_rep_a_u" - "s1_ins_a" "s1_ins_b" "s1_b_rr" "s2_b_rr" - "s1_del_a" "s2_upd_a_data" "s1_r" "s2_c" - "s0_rep" +permutation s1_trig_rep_b_d s1_trig_rep_b_u s1_trig_rep_a_d s1_trig_rep_a_u + s1_ins_a s1_ins_b s1_b_rr s2_b_rr + s1_del_a s2_upd_a_data s1_r s2_c + s0_rep diff -Nru postgresql-10-10.17/src/test/isolation/specs/fk-contention.spec postgresql-10-10.19/src/test/isolation/specs/fk-contention.spec --- postgresql-10-10.17/src/test/isolation/specs/fk-contention.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/fk-contention.spec 2021-11-08 22:05:38.000000000 +0000 @@ -10,10 +10,10 @@ DROP TABLE foo, bar; } -session "s1" +session s1 setup { BEGIN; } -step "ins" { INSERT INTO bar VALUES (42); } -step "com" { COMMIT; } +step ins { INSERT INTO bar VALUES (42); } +step com { COMMIT; } -session "s2" -step "upd" { UPDATE foo SET b = 'Hello World'; } +session s2 +step upd { UPDATE foo SET b = 'Hello World'; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/fk-deadlock2.spec postgresql-10-10.19/src/test/isolation/specs/fk-deadlock2.spec --- postgresql-10-10.17/src/test/isolation/specs/fk-deadlock2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/fk-deadlock2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -23,26 +23,26 @@ DROP TABLE a, b; } -session "s1" +session s1 setup { BEGIN; SET deadlock_timeout = '100ms'; } -step "s1u1" { UPDATE A SET Col1 = 1 WHERE AID = 1; } -step "s1u2" { UPDATE B SET Col2 = 1 WHERE BID = 2; } -step "s1c" { COMMIT; } +step s1u1 { UPDATE A SET Col1 = 1 WHERE AID = 1; } +step s1u2 { UPDATE B SET Col2 = 1 WHERE BID = 2; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; SET deadlock_timeout = '10s'; } -step "s2u1" { UPDATE B SET Col2 = 1 WHERE BID = 2; } -step "s2u2" { UPDATE B SET Col2 = 1 WHERE BID = 2; } -step "s2c" { COMMIT; } +step s2u1 { UPDATE B SET Col2 = 1 WHERE BID = 2; } +step s2u2 { UPDATE B SET Col2 = 1 WHERE BID = 2; } +step s2c { COMMIT; } -permutation "s1u1" "s1u2" "s1c" "s2u1" "s2u2" "s2c" -permutation "s1u1" "s1u2" "s2u1" "s1c" "s2u2" "s2c" -permutation "s1u1" "s2u1" "s1u2" "s2u2" "s2c" "s1c" -permutation "s1u1" "s2u1" "s2u2" "s1u2" "s2c" "s1c" -permutation "s1u1" "s2u1" "s2u2" "s2c" "s1u2" "s1c" -permutation "s2u1" "s1u1" "s1u2" "s2u2" "s2c" "s1c" -permutation "s2u1" "s1u1" "s2u2" "s1u2" "s2c" "s1c" -permutation "s2u1" "s1u1" "s2u2" "s2c" "s1u2" "s1c" -permutation "s2u1" "s2u2" "s1u1" "s1u2" "s2c" "s1c" -permutation "s2u1" "s2u2" "s1u1" "s2c" "s1u2" "s1c" -permutation "s2u1" "s2u2" "s2c" "s1u1" "s1u2" "s1c" +permutation s1u1 s1u2 s1c s2u1 s2u2 s2c +permutation s1u1 s1u2 s2u1 s1c s2u2 s2c +permutation s1u1 s2u1 s1u2 s2u2 s2c s1c +permutation s1u1 s2u1 s2u2 s1u2 s2c s1c +permutation s1u1 s2u1 s2u2 s2c s1u2 s1c +permutation s2u1 s1u1 s1u2 s2u2 s2c s1c +permutation s2u1 s1u1 s2u2 s1u2 s2c s1c +permutation s2u1 s1u1 s2u2 s2c s1u2 s1c +permutation s2u1 s2u2 s1u1 s1u2 s2c s1c +permutation s2u1 s2u2 s1u1 s2c s1u2 s1c +permutation s2u1 s2u2 s2c s1u1 s1u2 s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/fk-deadlock.spec postgresql-10-10.19/src/test/isolation/specs/fk-deadlock.spec --- postgresql-10-10.17/src/test/isolation/specs/fk-deadlock.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/fk-deadlock.spec 2021-11-08 22:05:38.000000000 +0000 @@ -18,29 +18,29 @@ DROP TABLE parent, child; } -session "s1" +session s1 setup { BEGIN; SET deadlock_timeout = '100ms'; } -step "s1i" { INSERT INTO child VALUES (1, 1); } -step "s1u" { UPDATE parent SET aux = 'bar'; } -step "s1c" { COMMIT; } +step s1i { INSERT INTO child VALUES (1, 1); } +step s1u { UPDATE parent SET aux = 'bar'; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; SET deadlock_timeout = '10s'; } -step "s2i" { INSERT INTO child VALUES (2, 1); } -step "s2u" { UPDATE parent SET aux = 'baz'; } -step "s2c" { COMMIT; } +step s2i { INSERT INTO child VALUES (2, 1); } +step s2u { UPDATE parent SET aux = 'baz'; } +step s2c { COMMIT; } -permutation "s1i" "s1u" "s1c" "s2i" "s2u" "s2c" -permutation "s1i" "s1u" "s2i" "s1c" "s2u" "s2c" -permutation "s1i" "s1u" "s2i" "s2u" "s1c" "s2c" -permutation "s1i" "s2i" "s1u" "s1c" "s2u" "s2c" -permutation "s1i" "s2i" "s1u" "s2u" "s1c" "s2c" -permutation "s1i" "s2i" "s2u" "s1u" "s2c" "s1c" -permutation "s1i" "s2i" "s2u" "s2c" "s1u" "s1c" -permutation "s2i" "s1i" "s1u" "s1c" "s2u" "s2c" -permutation "s2i" "s1i" "s1u" "s2u" "s1c" "s2c" -permutation "s2i" "s1i" "s2u" "s1u" "s2c" "s1c" -permutation "s2i" "s1i" "s2u" "s2c" "s1u" "s1c" -permutation "s2i" "s2u" "s1i" "s1u" "s2c" "s1c" -permutation "s2i" "s2u" "s1i" "s2c" "s1u" "s1c" -permutation "s2i" "s2u" "s2c" "s1i" "s1u" "s1c" +permutation s1i s1u s1c s2i s2u s2c +permutation s1i s1u s2i s1c s2u s2c +permutation s1i s1u s2i s2u s1c s2c +permutation s1i s2i s1u s1c s2u s2c +permutation s1i s2i s1u s2u s1c s2c +permutation s1i s2i s2u s1u s2c s1c +permutation s1i s2i s2u s2c s1u s1c +permutation s2i s1i s1u s1c s2u s2c +permutation s2i s1i s1u s2u s1c s2c +permutation s2i s1i s2u s1u s2c s1c +permutation s2i s1i s2u s2c s1u s1c +permutation s2i s2u s1i s1u s2c s1c +permutation s2i s2u s1i s2c s1u s1c +permutation s2i s2u s2c s1i s1u s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/freeze-the-dead.spec postgresql-10-10.19/src/test/isolation/specs/freeze-the-dead.spec --- postgresql-10-10.17/src/test/isolation/specs/freeze-the-dead.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/freeze-the-dead.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,32 +15,29 @@ DROP TABLE tab_freeze; } -session "s1" -step "s1_begin" { BEGIN; } -step "s1_update" { UPDATE tab_freeze SET x = x + 1 WHERE id = 3; } -step "s1_commit" { COMMIT; } -step "s1_vacuum" { VACUUM FREEZE tab_freeze; } -step "s1_selectone" { +session s1 +step s1_begin { BEGIN; } +step s1_update { UPDATE tab_freeze SET x = x + 1 WHERE id = 3; } +step s1_commit { COMMIT; } +step s1_selectone { BEGIN; SET LOCAL enable_seqscan = false; SET LOCAL enable_bitmapscan = false; SELECT * FROM tab_freeze WHERE id = 3; COMMIT; } -step "s1_selectall" { SELECT * FROM tab_freeze ORDER BY name, id; } -step "s1_reindex" { REINDEX TABLE tab_freeze; } +step s1_selectall { SELECT * FROM tab_freeze ORDER BY name, id; } -session "s2" -step "s2_begin" { BEGIN; } -step "s2_key_share" { SELECT id FROM tab_freeze WHERE id = 3 FOR KEY SHARE; } -step "s2_commit" { COMMIT; } -step "s2_vacuum" { VACUUM FREEZE tab_freeze; } +session s2 +step s2_begin { BEGIN; } +step s2_key_share { SELECT id FROM tab_freeze WHERE id = 3 FOR KEY SHARE; } +step s2_commit { COMMIT; } +step s2_vacuum { VACUUM FREEZE tab_freeze; } -session "s3" -step "s3_begin" { BEGIN; } -step "s3_key_share" { SELECT id FROM tab_freeze WHERE id = 3 FOR KEY SHARE; } -step "s3_commit" { COMMIT; } -step "s3_vacuum" { VACUUM FREEZE tab_freeze; } +session s3 +step s3_begin { BEGIN; } +step s3_key_share { SELECT id FROM tab_freeze WHERE id = 3 FOR KEY SHARE; } +step s3_commit { COMMIT; } # This permutation verfies that a previous bug # https://postgr.es/m/E5711E62-8FDF-4DCA-A888-C200BF6B5742@amazon.com @@ -48,12 +45,12 @@ # is not reintroduced. We used to make wrong pruning / freezing # decision for multixacts, which could lead to a) broken hot chains b) # dead rows being revived. -permutation "s1_begin" "s2_begin" "s3_begin" # start transactions - "s1_update" "s2_key_share" "s3_key_share" # have xmax be a multi with an updater, updater being oldest xid - "s1_update" # create additional row version that has multis - "s1_commit" "s2_commit" # commit both updater and share locker - "s2_vacuum" # due to bug in freezing logic, we used to *not* prune updated row, and then froze it - "s1_selectone" # if hot chain is broken, the row can't be found via index scan - "s3_commit" # commit remaining open xact - "s2_vacuum" # pruning / freezing in broken hot chains would unset xmax, reviving rows - "s1_selectall" # show borkedness +permutation s1_begin s2_begin s3_begin # start transactions + s1_update s2_key_share s3_key_share # have xmax be a multi with an updater, updater being oldest xid + s1_update # create additional row version that has multis + s1_commit s2_commit # commit both updater and share locker + s2_vacuum # due to bug in freezing logic, we used to *not* prune updated row, and then froze it + s1_selectone # if hot chain is broken, the row can't be found via index scan + s3_commit # commit remaining open xact + s2_vacuum # pruning / freezing in broken hot chains would unset xmax, reviving rows + s1_selectall # show borkedness diff -Nru postgresql-10-10.17/src/test/isolation/specs/index-only-scan.spec postgresql-10-10.19/src/test/isolation/specs/index-only-scan.spec --- postgresql-10-10.17/src/test/isolation/specs/index-only-scan.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/index-only-scan.spec 2021-11-08 22:05:38.000000000 +0000 @@ -23,7 +23,7 @@ DROP TABLE taby; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -31,10 +31,10 @@ SET LOCAL random_page_cost = 0.1; SET LOCAL cpu_tuple_cost = 0.03; } -step "rxwy1" { DELETE FROM taby WHERE id = (SELECT min(id) FROM tabx); } -step "c1" { COMMIT; } +step rxwy1 { DELETE FROM taby WHERE id = (SELECT min(id) FROM tabx); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; @@ -42,5 +42,5 @@ SET LOCAL random_page_cost = 0.1; SET LOCAL cpu_tuple_cost = 0.03; } -step "rywx2" { DELETE FROM tabx WHERE id = (SELECT min(id) FROM taby); } -step "c2" { COMMIT; } +step rywx2 { DELETE FROM tabx WHERE id = (SELECT min(id) FROM taby); } +step c2 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/inherit-temp.spec postgresql-10-10.19/src/test/isolation/specs/inherit-temp.spec --- postgresql-10-10.17/src/test/isolation/specs/inherit-temp.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/inherit-temp.spec 2021-11-08 22:05:38.000000000 +0000 @@ -19,60 +19,60 @@ # Session 1 executes actions which act directly on both the parent and # its child. Abbreviation "c" is used for queries working on the child # and "p" on the parent. -session "s1" +session s1 setup { CREATE TEMPORARY TABLE inh_temp_child_s1 () INHERITS (inh_parent); } -step "s1_begin" { BEGIN; } -step "s1_truncate_p" { TRUNCATE inh_parent; } -step "s1_select_p" { SELECT a FROM inh_parent; } -step "s1_select_c" { SELECT a FROM inh_temp_child_s1; } -step "s1_insert_p" { INSERT INTO inh_parent VALUES (1), (2); } -step "s1_insert_c" { INSERT INTO inh_temp_child_s1 VALUES (3), (4); } -step "s1_update_p" { UPDATE inh_parent SET a = 11 WHERE a = 1; } -step "s1_update_c" { UPDATE inh_parent SET a = 13 WHERE a IN (3, 5); } -step "s1_delete_p" { DELETE FROM inh_parent WHERE a = 2; } -step "s1_delete_c" { DELETE FROM inh_parent WHERE a IN (4, 6); } -step "s1_commit" { COMMIT; } +step s1_begin { BEGIN; } +step s1_truncate_p { TRUNCATE inh_parent; } +step s1_select_p { SELECT a FROM inh_parent; } +step s1_select_c { SELECT a FROM inh_temp_child_s1; } +step s1_insert_p { INSERT INTO inh_parent VALUES (1), (2); } +step s1_insert_c { INSERT INTO inh_temp_child_s1 VALUES (3), (4); } +step s1_update_p { UPDATE inh_parent SET a = 11 WHERE a = 1; } +step s1_update_c { UPDATE inh_parent SET a = 13 WHERE a IN (3, 5); } +step s1_delete_p { DELETE FROM inh_parent WHERE a = 2; } +step s1_delete_c { DELETE FROM inh_parent WHERE a IN (4, 6); } +step s1_commit { COMMIT; } teardown { DROP TABLE inh_temp_child_s1; } # Session 2 executes actions on the parent which act only on the child. -session "s2" +session s2 setup { CREATE TEMPORARY TABLE inh_temp_child_s2 () INHERITS (inh_parent); } -step "s2_truncate_p" { TRUNCATE inh_parent; } -step "s2_select_p" { SELECT a FROM inh_parent; } -step "s2_select_c" { SELECT a FROM inh_temp_child_s2; } -step "s2_insert_c" { INSERT INTO inh_temp_child_s2 VALUES (5), (6); } -step "s2_update_c" { UPDATE inh_parent SET a = 15 WHERE a IN (3, 5); } -step "s2_delete_c" { DELETE FROM inh_parent WHERE a IN (4, 6); } +step s2_truncate_p { TRUNCATE inh_parent; } +step s2_select_p { SELECT a FROM inh_parent; } +step s2_select_c { SELECT a FROM inh_temp_child_s2; } +step s2_insert_c { INSERT INTO inh_temp_child_s2 VALUES (5), (6); } +step s2_update_c { UPDATE inh_parent SET a = 15 WHERE a IN (3, 5); } +step s2_delete_c { DELETE FROM inh_parent WHERE a IN (4, 6); } teardown { DROP TABLE inh_temp_child_s2; } # Check INSERT behavior across sessions -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c" +permutation s1_insert_p s1_insert_c s2_insert_c s1_select_p s1_select_c s2_select_p s2_select_c # Check UPDATE behavior across sessions -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_update_p" "s1_update_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c" -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s2_update_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c" +permutation s1_insert_p s1_insert_c s2_insert_c s1_update_p s1_update_c s1_select_p s1_select_c s2_select_p s2_select_c +permutation s1_insert_p s1_insert_c s2_insert_c s2_update_c s1_select_p s1_select_c s2_select_p s2_select_c # Check DELETE behavior across sessions -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_delete_p" "s1_delete_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c" -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s2_delete_c" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c" +permutation s1_insert_p s1_insert_c s2_insert_c s1_delete_p s1_delete_c s1_select_p s1_select_c s2_select_p s2_select_c +permutation s1_insert_p s1_insert_c s2_insert_c s2_delete_c s1_select_p s1_select_c s2_select_p s2_select_c # Check TRUNCATE behavior across sessions -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_truncate_p" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c" -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s2_truncate_p" "s1_select_p" "s1_select_c" "s2_select_p" "s2_select_c" +permutation s1_insert_p s1_insert_c s2_insert_c s1_truncate_p s1_select_p s1_select_c s2_select_p s2_select_c +permutation s1_insert_p s1_insert_c s2_insert_c s2_truncate_p s1_select_p s1_select_c s2_select_p s2_select_c # TRUNCATE on a parent tree does not block access to temporary child relation # of another session, and blocks when scanning the parent. -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_begin" "s1_truncate_p" "s2_select_p" "s1_commit" -permutation "s1_insert_p" "s1_insert_c" "s2_insert_c" "s1_begin" "s1_truncate_p" "s2_select_c" "s1_commit" +permutation s1_insert_p s1_insert_c s2_insert_c s1_begin s1_truncate_p s2_select_p s1_commit +permutation s1_insert_p s1_insert_c s2_insert_c s1_begin s1_truncate_p s2_select_c s1_commit diff -Nru postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-nothing-2.spec postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-nothing-2.spec --- postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-nothing-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-nothing-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -11,24 +11,24 @@ DROP TABLE ints; } -session "s1" -step "beginrr1" { BEGIN ISOLATION LEVEL REPEATABLE READ; } -step "begins1" { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "donothing1" { INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; } -step "c1" { COMMIT; } -step "show" { SELECT * FROM ints; } +session s1 +step beginrr1 { BEGIN ISOLATION LEVEL REPEATABLE READ; } +step begins1 { BEGIN ISOLATION LEVEL SERIALIZABLE; } +step donothing1 { INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; } +step c1 { COMMIT; } +step show { SELECT * FROM ints; } -session "s2" -step "beginrr2" { BEGIN ISOLATION LEVEL REPEATABLE READ; } -step "begins2" { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "donothing2" { INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donothing3') ON CONFLICT DO NOTHING; } -step "c2" { COMMIT; } +session s2 +step beginrr2 { BEGIN ISOLATION LEVEL REPEATABLE READ; } +step begins2 { BEGIN ISOLATION LEVEL SERIALIZABLE; } +step donothing2 { INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donothing3') ON CONFLICT DO NOTHING; } +step c2 { COMMIT; } -permutation "beginrr1" "beginrr2" "donothing1" "c1" "donothing2" "c2" "show" -permutation "beginrr1" "beginrr2" "donothing2" "c2" "donothing1" "c1" "show" -permutation "beginrr1" "beginrr2" "donothing1" "donothing2" "c1" "c2" "show" -permutation "beginrr1" "beginrr2" "donothing2" "donothing1" "c2" "c1" "show" -permutation "begins1" "begins2" "donothing1" "c1" "donothing2" "c2" "show" -permutation "begins1" "begins2" "donothing2" "c2" "donothing1" "c1" "show" -permutation "begins1" "begins2" "donothing1" "donothing2" "c1" "c2" "show" -permutation "begins1" "begins2" "donothing2" "donothing1" "c2" "c1" "show" +permutation beginrr1 beginrr2 donothing1 c1 donothing2 c2 show +permutation beginrr1 beginrr2 donothing2 c2 donothing1 c1 show +permutation beginrr1 beginrr2 donothing1 donothing2 c1 c2 show +permutation beginrr1 beginrr2 donothing2 donothing1 c2 c1 show +permutation begins1 begins2 donothing1 c1 donothing2 c2 show +permutation begins1 begins2 donothing2 c2 donothing1 c1 show +permutation begins1 begins2 donothing1 donothing2 c1 c2 show +permutation begins1 begins2 donothing2 donothing1 c2 c1 show diff -Nru postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-nothing.spec postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-nothing.spec --- postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-nothing.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-nothing.spec 2021-11-08 22:05:38.000000000 +0000 @@ -16,26 +16,25 @@ DROP TABLE ints; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "donothing1" { INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; } -step "c1" { COMMIT; } -step "a1" { ABORT; } +step donothing1 { INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT DO NOTHING; } +step c1 { COMMIT; } +step a1 { ABORT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "donothing2" { INSERT INTO ints(key, val) VALUES(1, 'donothing2') ON CONFLICT DO NOTHING; } -step "select2" { SELECT * FROM ints; } -step "c2" { COMMIT; } -step "a2" { ABORT; } +step donothing2 { INSERT INTO ints(key, val) VALUES(1, 'donothing2') ON CONFLICT DO NOTHING; } +step select2 { SELECT * FROM ints; } +step c2 { COMMIT; } # Regular case where one session block-waits on another to determine if it # should proceed with an insert or do nothing. -permutation "donothing1" "donothing2" "c1" "select2" "c2" -permutation "donothing1" "donothing2" "a1" "select2" "c2" +permutation donothing1 donothing2 c1 select2 c2 +permutation donothing1 donothing2 a1 select2 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-update-2.spec postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-update-2.spec --- postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-update-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-update-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,27 +15,26 @@ DROP TABLE upsert; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "insert1" { INSERT INTO upsert(key, payload) VALUES('FooFoo', 'insert1') ON CONFLICT (lower(key)) DO UPDATE set key = EXCLUDED.key, payload = upsert.payload || ' updated by insert1'; } -step "c1" { COMMIT; } -step "a1" { ABORT; } +step insert1 { INSERT INTO upsert(key, payload) VALUES('FooFoo', 'insert1') ON CONFLICT (lower(key)) DO UPDATE set key = EXCLUDED.key, payload = upsert.payload || ' updated by insert1'; } +step c1 { COMMIT; } +step a1 { ABORT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "insert2" { INSERT INTO upsert(key, payload) VALUES('FOOFOO', 'insert2') ON CONFLICT (lower(key)) DO UPDATE set key = EXCLUDED.key, payload = upsert.payload || ' updated by insert2'; } -step "select2" { SELECT * FROM upsert; } -step "c2" { COMMIT; } -step "a2" { ABORT; } +step insert2 { INSERT INTO upsert(key, payload) VALUES('FOOFOO', 'insert2') ON CONFLICT (lower(key)) DO UPDATE set key = EXCLUDED.key, payload = upsert.payload || ' updated by insert2'; } +step select2 { SELECT * FROM upsert; } +step c2 { COMMIT; } # One session (session 2) block-waits on another (session 1) to determine if it # should proceed with an insert or update. The user can still usefully UPDATE # a column constrained by a unique index, as the example illustrates. -permutation "insert1" "insert2" "c1" "select2" "c2" -permutation "insert1" "insert2" "a1" "select2" "c2" +permutation insert1 insert2 c1 select2 c2 +permutation insert1 insert2 a1 select2 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-update-3.spec postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-update-3.spec --- postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-update-3.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-update-3.spec 2021-11-08 22:05:38.000000000 +0000 @@ -37,12 +37,12 @@ DROP TABLE colors; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "insert1" { +step insert1 { WITH t AS ( INSERT INTO colors(key, color, is_active) VALUES(1, 'Brown', true), (2, 'Gray', true) @@ -50,20 +50,20 @@ SET color = EXCLUDED.color WHERE colors.is_active) SELECT * FROM colors ORDER BY key;} -step "select1surprise" { SELECT * FROM colors ORDER BY key; } -step "c1" { COMMIT; } +step select1surprise { SELECT * FROM colors ORDER BY key; } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "update2" { UPDATE colors SET is_active = true WHERE key = 1; } -step "c2" { COMMIT; } +step update2 { UPDATE colors SET is_active = true WHERE key = 1; } +step c2 { COMMIT; } # Perhaps surprisingly, the session 1 MVCC-snapshot-visible tuple (the tuple # with the pre-populated color 'Red') is denied the opportunity to prevent the # UPDATE from taking place -- only the conclusively-locked tuple version # matters, and so the tuple with key value 1 was updated to 'Brown' (but not # tuple with key value 2, since nothing changed there): -permutation "update2" "insert1" "c2" "select1surprise" "c1" +permutation update2 insert1 c2 select1surprise c1 diff -Nru postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-update.spec postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-update.spec --- postgresql-10-10.17/src/test/isolation/specs/insert-conflict-do-update.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/insert-conflict-do-update.spec 2021-11-08 22:05:38.000000000 +0000 @@ -13,28 +13,27 @@ DROP TABLE upsert; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "insert1" { INSERT INTO upsert(key, val) VALUES(1, 'insert1') ON CONFLICT (key) DO UPDATE set val = upsert.val || ' updated by insert1'; } -step "c1" { COMMIT; } -step "a1" { ABORT; } +step insert1 { INSERT INTO upsert(key, val) VALUES(1, 'insert1') ON CONFLICT (key) DO UPDATE set val = upsert.val || ' updated by insert1'; } +step c1 { COMMIT; } +step a1 { ABORT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "insert2" { INSERT INTO upsert(key, val) VALUES(1, 'insert2') ON CONFLICT (key) DO UPDATE set val = upsert.val || ' updated by insert2'; } -step "select2" { SELECT * FROM upsert; } -step "c2" { COMMIT; } -step "a2" { ABORT; } +step insert2 { INSERT INTO upsert(key, val) VALUES(1, 'insert2') ON CONFLICT (key) DO UPDATE set val = upsert.val || ' updated by insert2'; } +step select2 { SELECT * FROM upsert; } +step c2 { COMMIT; } # One session (session 2) block-waits on another (session 1) to determine if it # should proceed with an insert or update. Notably, this entails updating a # tuple while there is no version of that tuple visible to the updating # session's snapshot. This is permitted only in READ COMMITTED mode. -permutation "insert1" "insert2" "c1" "select2" "c2" -permutation "insert1" "insert2" "a1" "select2" "c2" +permutation insert1 insert2 c1 select2 c2 +permutation insert1 insert2 a1 select2 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/insert-conflict-specconflict.spec postgresql-10-10.19/src/test/isolation/specs/insert-conflict-specconflict.spec --- postgresql-10-10.17/src/test/isolation/specs/insert-conflict-specconflict.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/insert-conflict-specconflict.spec 2021-11-08 22:05:38.000000000 +0000 @@ -33,39 +33,39 @@ DROP TABLE upserttest; } -session "controller" +session controller setup { SET default_transaction_isolation = 'read committed'; } -step "controller_locks" {SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock);} -step "controller_unlock_1_1" { SELECT pg_advisory_unlock(1, 1); } -step "controller_unlock_2_1" { SELECT pg_advisory_unlock(2, 1); } -step "controller_unlock_1_2" { SELECT pg_advisory_unlock(1, 2); } -step "controller_unlock_2_2" { SELECT pg_advisory_unlock(2, 2); } -step "controller_unlock_1_3" { SELECT pg_advisory_unlock(1, 3); } -step "controller_unlock_2_3" { SELECT pg_advisory_unlock(2, 3); } -step "controller_show" {SELECT * FROM upserttest; } +step controller_locks {SELECT pg_advisory_lock(sess, lock), sess, lock FROM generate_series(1, 2) a(sess), generate_series(1,3) b(lock);} +step controller_unlock_1_1 { SELECT pg_advisory_unlock(1, 1); } +step controller_unlock_2_1 { SELECT pg_advisory_unlock(2, 1); } +step controller_unlock_1_2 { SELECT pg_advisory_unlock(1, 2); } +step controller_unlock_2_2 { SELECT pg_advisory_unlock(2, 2); } +step controller_unlock_1_3 { SELECT pg_advisory_unlock(1, 3); } +step controller_unlock_2_3 { SELECT pg_advisory_unlock(2, 3); } +step controller_show {SELECT * FROM upserttest; } -session "s1" +session s1 setup { SET default_transaction_isolation = 'read committed'; SET spec.session = 1; } -step "s1_begin" { BEGIN; } -step "s1_upsert" { INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s1') ON CONFLICT (blurt_and_lock(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s1'; } -step "s1_commit" { COMMIT; } +step s1_begin { BEGIN; } +step s1_upsert { INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s1') ON CONFLICT (blurt_and_lock(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s1'; } +step s1_commit { COMMIT; } -session "s2" +session s2 setup { SET default_transaction_isolation = 'read committed'; SET spec.session = 2; } -step "s2_begin" { BEGIN; } -step "s2_upsert" { INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; } -step "s2_commit" { COMMIT; } +step s2_begin { BEGIN; } +step s2_upsert { INSERT INTO upserttest(key, data) VALUES('k1', 'inserted s2') ON CONFLICT (blurt_and_lock(key)) DO UPDATE SET data = upserttest.data || ' with conflict update s2'; } +step s2_commit { COMMIT; } # Test that speculative locks are correctly acquired and released, s2 # inserts, s1 updates. @@ -74,23 +74,23 @@ # blurt_and_lock function acquires advisory locks that allow us to # continue after a) the optimistic conflict probe b) after the # insertion of the speculative tuple. - "controller_locks" - "controller_show" - "s1_upsert" "s2_upsert" - "controller_show" + controller_locks + controller_show + s1_upsert s2_upsert + controller_show # Switch both sessions to wait on the other lock next time (the speculative insertion) - "controller_unlock_1_1" "controller_unlock_2_1" + controller_unlock_1_1 controller_unlock_2_1 # Allow both sessions to continue - "controller_unlock_1_3" "controller_unlock_2_3" - "controller_show" + controller_unlock_1_3 controller_unlock_2_3 + controller_show # Allow the second session to finish insertion - "controller_unlock_2_2" + controller_unlock_2_2 # This should now show a successful insertion - "controller_show" + controller_show # Allow the first session to finish insertion - "controller_unlock_1_2" + controller_unlock_1_2 # This should now show a successful UPSERT - "controller_show" + controller_show # Test that speculative locks are correctly acquired and released, s2 # inserts, s1 updates. @@ -99,23 +99,23 @@ # blurt_and_lock function acquires advisory locks that allow us to # continue after a) the optimistic conflict probe b) after the # insertion of the speculative tuple. - "controller_locks" - "controller_show" - "s1_upsert" "s2_upsert" - "controller_show" + controller_locks + controller_show + s1_upsert s2_upsert + controller_show # Switch both sessions to wait on the other lock next time (the speculative insertion) - "controller_unlock_1_1" "controller_unlock_2_1" + controller_unlock_1_1 controller_unlock_2_1 # Allow both sessions to continue - "controller_unlock_1_3" "controller_unlock_2_3" - "controller_show" + controller_unlock_1_3 controller_unlock_2_3 + controller_show # Allow the first session to finish insertion - "controller_unlock_1_2" + controller_unlock_1_2 # This should now show a successful insertion - "controller_show" + controller_show # Allow the second session to finish insertion - "controller_unlock_2_2" + controller_unlock_2_2 # This should now show a successful UPSERT - "controller_show" + controller_show # Test that speculative locks are correctly acquired and released, s2 # inserts, s1 updates. With the added complication that transactions @@ -125,25 +125,25 @@ # blurt_and_lock function acquires advisory locks that allow us to # continue after a) the optimistic conflict probe b) after the # insertion of the speculative tuple. - "controller_locks" - "controller_show" - "s1_begin" "s2_begin" - "s1_upsert" "s2_upsert" - "controller_show" + controller_locks + controller_show + s1_begin s2_begin + s1_upsert s2_upsert + controller_show # Switch both sessions to wait on the other lock next time (the speculative insertion) - "controller_unlock_1_1" "controller_unlock_2_1" + controller_unlock_1_1 controller_unlock_2_1 # Allow both sessions to continue - "controller_unlock_1_3" "controller_unlock_2_3" - "controller_show" + controller_unlock_1_3 controller_unlock_2_3 + controller_show # Allow the first session to finish insertion - "controller_unlock_1_2" + controller_unlock_1_2 # But the change isn't visible yet, nor should the second session continue - "controller_show" + controller_show # Allow the second session to finish insertion, but it's blocked - "controller_unlock_2_2" - "controller_show" + controller_unlock_2_2 + controller_show # But committing should unblock - "s1_commit" - "controller_show" - "s2_commit" - "controller_show" + s1_commit + controller_show + s2_commit + controller_show diff -Nru postgresql-10-10.17/src/test/isolation/specs/insert-conflict-toast.spec postgresql-10-10.19/src/test/isolation/specs/insert-conflict-toast.spec --- postgresql-10-10.17/src/test/isolation/specs/insert-conflict-toast.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/insert-conflict-toast.spec 2021-11-08 22:05:38.000000000 +0000 @@ -22,30 +22,34 @@ DROP FUNCTION ctoast_large_val(); } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT pg_advisory_xact_lock(1); } -step "s1commit" { COMMIT; } +step s1commit { COMMIT; } -session "s2" +session s2 setup { SET default_transaction_isolation = 'read committed'; } -step "s2insert" { +step s2insert { INSERT INTO ctoast (key, val) VALUES (1, ctoast_large_val()) ON CONFLICT DO NOTHING; } -session "s3" +session s3 setup { SET default_transaction_isolation = 'read committed'; } -step "s3insert" { +step s3insert { INSERT INTO ctoast (key, val) VALUES (1, ctoast_large_val()) ON CONFLICT DO NOTHING; } -permutation "s2insert" "s3insert" "s1commit" +# s1's commit will release s2 and s3 at the same time, so there's a +# race condition as to which finishes first. Annotate the permutation +# to always report s2 first. + +permutation s2insert s3insert(s2insert) s1commit diff -Nru postgresql-10-10.17/src/test/isolation/specs/lock-committed-keyupdate.spec postgresql-10-10.19/src/test/isolation/specs/lock-committed-keyupdate.spec --- postgresql-10-10.17/src/test/isolation/specs/lock-committed-keyupdate.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/lock-committed-keyupdate.spec 2021-11-08 22:05:38.000000000 +0000 @@ -18,49 +18,49 @@ DROP TABLE lcku_table; } -session "s1" -step "s1b" { BEGIN; } -step "s1l" { SELECT pg_advisory_lock(578902068); } -step "s1u" { UPDATE lcku_table SET id = 2 WHERE id = 3; } -step "s1hint" { SELECT * FROM lcku_table; } -step "s1ul" { SELECT pg_advisory_unlock(578902068); } -step "s1c" { COMMIT; } +session s1 +step s1b { BEGIN; } +step s1l { SELECT pg_advisory_lock(578902068); } +step s1u { UPDATE lcku_table SET id = 2 WHERE id = 3; } +step s1hint { SELECT * FROM lcku_table; } +step s1ul { SELECT pg_advisory_unlock(578902068); } +step s1c { COMMIT; } teardown { SELECT pg_advisory_unlock_all(); } -session "s2" -step "s2b1" { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "s2b2" { BEGIN ISOLATION LEVEL REPEATABLE READ; } -step "s2b3" { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "s2l" { SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; } -step "s2c" { COMMIT; } +session s2 +step s2b1 { BEGIN ISOLATION LEVEL READ COMMITTED; } +step s2b2 { BEGIN ISOLATION LEVEL REPEATABLE READ; } +step s2b3 { BEGIN ISOLATION LEVEL SERIALIZABLE; } +step s2l { SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL FOR KEY SHARE; } +step s2c { COMMIT; } teardown { SELECT pg_advisory_unlock_all(); } -permutation "s1b" "s2b1" "s1l" "s2l" "s1u" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b1" "s1l" "s1u" "s2l" "s1c" "s1ul" "s2c" -#permutation "s1b" "s2b1" "s1l" "s2l" "s1ul" "s1u" "s1c" "s2c" -permutation "s1b" "s2b1" "s1l" "s1u" "s1ul" "s2l" "s1c" "s2c" - -permutation "s1b" "s2b1" "s1l" "s2l" "s1u" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b1" "s1l" "s1u" "s2l" "s1c" "s1hint" "s1ul" "s2c" -#permutation "s1b" "s2b1" "s1l" "s2l" "s1ul" "s1u" "s1c" "s1hint" "s2c" -permutation "s1b" "s2b1" "s1l" "s1u" "s1ul" "s2l" "s1c" "s1hint" "s2c" - -permutation "s1b" "s2b2" "s1l" "s2l" "s1u" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b2" "s1l" "s1u" "s2l" "s1c" "s1ul" "s2c" -#permutation "s1b" "s2b2" "s1l" "s2l" "s1ul" "s1u" "s1c" "s2c" -permutation "s1b" "s2b2" "s1l" "s1u" "s1ul" "s2l" "s1c" "s2c" - -permutation "s1b" "s2b2" "s1l" "s2l" "s1u" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b2" "s1l" "s1u" "s2l" "s1c" "s1hint" "s1ul" "s2c" -#permutation "s1b" "s2b2" "s1l" "s2l" "s1ul" "s1u" "s1c" "s1hint" "s2c" -permutation "s1b" "s2b2" "s1l" "s1u" "s1ul" "s2l" "s1c" "s1hint" "s2c" - -permutation "s1b" "s2b3" "s1l" "s2l" "s1u" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b3" "s1l" "s1u" "s2l" "s1c" "s1ul" "s2c" -#permutation "s1b" "s2b3" "s1l" "s2l" "s1ul" "s1u" "s1c" "s2c" -permutation "s1b" "s2b3" "s1l" "s1u" "s1ul" "s2l" "s1c" "s2c" - -permutation "s1b" "s2b3" "s1l" "s2l" "s1u" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b3" "s1l" "s1u" "s2l" "s1c" "s1hint" "s1ul" "s2c" -#permutation "s1b" "s2b3" "s1l" "s2l" "s1ul" "s1u" "s1c" "s1hint" "s2c" -permutation "s1b" "s2b3" "s1l" "s1u" "s1ul" "s2l" "s1c" "s1hint" "s2c" +permutation s1b s2b1 s1l s2l s1u s1c s1ul s2c +permutation s1b s2b1 s1l s1u s2l s1c s1ul s2c +#permutation s1b s2b1 s1l s2l s1ul s1u s1c s2c +permutation s1b s2b1 s1l s1u s1ul s2l s1c s2c + +permutation s1b s2b1 s1l s2l s1u s1c s1hint s1ul s2c +permutation s1b s2b1 s1l s1u s2l s1c s1hint s1ul s2c +#permutation s1b s2b1 s1l s2l s1ul s1u s1c s1hint s2c +permutation s1b s2b1 s1l s1u s1ul s2l s1c s1hint s2c + +permutation s1b s2b2 s1l s2l s1u s1c s1ul s2c +permutation s1b s2b2 s1l s1u s2l s1c s1ul s2c +#permutation s1b s2b2 s1l s2l s1ul s1u s1c s2c +permutation s1b s2b2 s1l s1u s1ul s2l s1c s2c + +permutation s1b s2b2 s1l s2l s1u s1c s1hint s1ul s2c +permutation s1b s2b2 s1l s1u s2l s1c s1hint s1ul s2c +#permutation s1b s2b2 s1l s2l s1ul s1u s1c s1hint s2c +permutation s1b s2b2 s1l s1u s1ul s2l s1c s1hint s2c + +permutation s1b s2b3 s1l s2l s1u s1c s1ul s2c +permutation s1b s2b3 s1l s1u s2l s1c s1ul s2c +#permutation s1b s2b3 s1l s2l s1ul s1u s1c s2c +permutation s1b s2b3 s1l s1u s1ul s2l s1c s2c + +permutation s1b s2b3 s1l s2l s1u s1c s1hint s1ul s2c +permutation s1b s2b3 s1l s1u s2l s1c s1hint s1ul s2c +#permutation s1b s2b3 s1l s2l s1ul s1u s1c s1hint s2c +permutation s1b s2b3 s1l s1u s1ul s2l s1c s1hint s2c diff -Nru postgresql-10-10.17/src/test/isolation/specs/lock-committed-update.spec postgresql-10-10.19/src/test/isolation/specs/lock-committed-update.spec --- postgresql-10-10.17/src/test/isolation/specs/lock-committed-update.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/lock-committed-update.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,49 +14,49 @@ DROP TABLE lcu_table; } -session "s1" -step "s1b" { BEGIN; } -step "s1l" { SELECT pg_advisory_lock(380170116); } -step "s1u" { UPDATE lcu_table SET value = 'two' WHERE id = 1; } -step "s1hint" { SELECT * FROM lcu_table; } -step "s1ul" { SELECT pg_advisory_unlock(380170116); } -step "s1c" { COMMIT; } +session s1 +step s1b { BEGIN; } +step s1l { SELECT pg_advisory_lock(380170116); } +step s1u { UPDATE lcu_table SET value = 'two' WHERE id = 1; } +step s1hint { SELECT * FROM lcu_table; } +step s1ul { SELECT pg_advisory_unlock(380170116); } +step s1c { COMMIT; } teardown { SELECT pg_advisory_unlock_all(); } -session "s2" -step "s2b1" { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "s2b2" { BEGIN ISOLATION LEVEL REPEATABLE READ; } -step "s2b3" { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "s2l" { SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; } -step "s2c" { COMMIT; } +session s2 +step s2b1 { BEGIN ISOLATION LEVEL READ COMMITTED; } +step s2b2 { BEGIN ISOLATION LEVEL REPEATABLE READ; } +step s2b3 { BEGIN ISOLATION LEVEL SERIALIZABLE; } +step s2l { SELECT * FROM lcu_table WHERE pg_advisory_lock(380170116) IS NOT NULL FOR KEY SHARE; } +step s2c { COMMIT; } teardown { SELECT pg_advisory_unlock_all(); } -permutation "s1b" "s2b1" "s1l" "s2l" "s1u" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b1" "s1l" "s1u" "s2l" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b1" "s1l" "s2l" "s1ul" "s1u" "s1c" "s2c" -permutation "s1b" "s2b1" "s1l" "s1u" "s1ul" "s2l" "s1c" "s2c" - -permutation "s1b" "s2b1" "s1l" "s2l" "s1u" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b1" "s1l" "s1u" "s2l" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b1" "s1l" "s2l" "s1ul" "s1u" "s1c" "s1hint" "s2c" -permutation "s1b" "s2b1" "s1l" "s1u" "s1ul" "s2l" "s1c" "s1hint" "s2c" - -permutation "s1b" "s2b2" "s1l" "s2l" "s1u" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b2" "s1l" "s1u" "s2l" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b2" "s1l" "s2l" "s1ul" "s1u" "s1c" "s2c" -permutation "s1b" "s2b2" "s1l" "s1u" "s1ul" "s2l" "s1c" "s2c" - -permutation "s1b" "s2b2" "s1l" "s2l" "s1u" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b2" "s1l" "s1u" "s2l" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b2" "s1l" "s2l" "s1ul" "s1u" "s1c" "s1hint" "s2c" -permutation "s1b" "s2b2" "s1l" "s1u" "s1ul" "s2l" "s1c" "s1hint" "s2c" - -permutation "s1b" "s2b3" "s1l" "s2l" "s1u" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b3" "s1l" "s1u" "s2l" "s1c" "s1ul" "s2c" -permutation "s1b" "s2b3" "s1l" "s2l" "s1ul" "s1u" "s1c" "s2c" -permutation "s1b" "s2b3" "s1l" "s1u" "s1ul" "s2l" "s1c" "s2c" - -permutation "s1b" "s2b3" "s1l" "s2l" "s1u" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b3" "s1l" "s1u" "s2l" "s1c" "s1hint" "s1ul" "s2c" -permutation "s1b" "s2b3" "s1l" "s2l" "s1ul" "s1u" "s1c" "s1hint" "s2c" -permutation "s1b" "s2b3" "s1l" "s1u" "s1ul" "s2l" "s1c" "s1hint" "s2c" +permutation s1b s2b1 s1l s2l s1u s1c s1ul s2c +permutation s1b s2b1 s1l s1u s2l s1c s1ul s2c +permutation s1b s2b1 s1l s2l s1ul s1u s1c s2c +permutation s1b s2b1 s1l s1u s1ul s2l s1c s2c + +permutation s1b s2b1 s1l s2l s1u s1c s1hint s1ul s2c +permutation s1b s2b1 s1l s1u s2l s1c s1hint s1ul s2c +permutation s1b s2b1 s1l s2l s1ul s1u s1c s1hint s2c +permutation s1b s2b1 s1l s1u s1ul s2l s1c s1hint s2c + +permutation s1b s2b2 s1l s2l s1u s1c s1ul s2c +permutation s1b s2b2 s1l s1u s2l s1c s1ul s2c +permutation s1b s2b2 s1l s2l s1ul s1u s1c s2c +permutation s1b s2b2 s1l s1u s1ul s2l s1c s2c + +permutation s1b s2b2 s1l s2l s1u s1c s1hint s1ul s2c +permutation s1b s2b2 s1l s1u s2l s1c s1hint s1ul s2c +permutation s1b s2b2 s1l s2l s1ul s1u s1c s1hint s2c +permutation s1b s2b2 s1l s1u s1ul s2l s1c s1hint s2c + +permutation s1b s2b3 s1l s2l s1u s1c s1ul s2c +permutation s1b s2b3 s1l s1u s2l s1c s1ul s2c +permutation s1b s2b3 s1l s2l s1ul s1u s1c s2c +permutation s1b s2b3 s1l s1u s1ul s2l s1c s2c + +permutation s1b s2b3 s1l s2l s1u s1c s1hint s1ul s2c +permutation s1b s2b3 s1l s1u s2l s1c s1hint s1ul s2c +permutation s1b s2b3 s1l s2l s1ul s1u s1c s1hint s2c +permutation s1b s2b3 s1l s1u s1ul s2l s1c s1hint s2c diff -Nru postgresql-10-10.17/src/test/isolation/specs/lock-update-delete.spec postgresql-10-10.19/src/test/isolation/specs/lock-update-delete.spec --- postgresql-10-10.17/src/test/isolation/specs/lock-update-delete.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/lock-update-delete.spec 2021-11-08 22:05:38.000000000 +0000 @@ -31,31 +31,31 @@ DROP TABLE foo; } -session "s1" +session s1 # obtain lock on the tuple, traversing its update chain -step "s1l" { SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; } +step s1l { SELECT * FROM foo WHERE pg_advisory_xact_lock(0) IS NOT NULL AND key = 1 FOR KEY SHARE; } -session "s2" +session s2 setup { SELECT pg_advisory_lock(0); } -step "s2b" { BEGIN; } -step "s2u" { UPDATE foo SET value = 2 WHERE key = 1; } -step "s2_blocker1" { DELETE FROM foo; } -step "s2_blocker2" { UPDATE foo SET key = 2 WHERE key = 1; } -step "s2_blocker3" { UPDATE foo SET value = 2 WHERE key = 1; } -step "s2_unlock" { SELECT pg_advisory_unlock(0); } -step "s2c" { COMMIT; } -step "s2r" { ROLLBACK; } +step s2b { BEGIN; } +step s2u { UPDATE foo SET value = 2 WHERE key = 1; } +step s2_blocker1 { DELETE FROM foo; } +step s2_blocker2 { UPDATE foo SET key = 2 WHERE key = 1; } +step s2_blocker3 { UPDATE foo SET value = 2 WHERE key = 1; } +step s2_unlock { SELECT pg_advisory_unlock(0); } +step s2c { COMMIT; } +step s2r { ROLLBACK; } -permutation "s2b" "s1l" "s2u" "s2_blocker1" "s2_unlock" "s2c" -permutation "s2b" "s1l" "s2u" "s2_blocker2" "s2_unlock" "s2c" -permutation "s2b" "s1l" "s2u" "s2_blocker3" "s2_unlock" "s2c" -permutation "s2b" "s1l" "s2u" "s2_blocker1" "s2_unlock" "s2r" -permutation "s2b" "s1l" "s2u" "s2_blocker2" "s2_unlock" "s2r" -permutation "s2b" "s1l" "s2u" "s2_blocker3" "s2_unlock" "s2r" +permutation s2b s1l s2u s2_blocker1 s2_unlock s2c +permutation s2b s1l s2u s2_blocker2 s2_unlock s2c +permutation s2b s1l s2u s2_blocker3 s2_unlock s2c +permutation s2b s1l s2u s2_blocker1 s2_unlock s2r +permutation s2b s1l s2u s2_blocker2 s2_unlock s2r +permutation s2b s1l s2u s2_blocker3 s2_unlock s2r -permutation "s2b" "s1l" "s2u" "s2_blocker1" "s2c" "s2_unlock" -permutation "s2b" "s1l" "s2u" "s2_blocker2" "s2c" "s2_unlock" -permutation "s2b" "s1l" "s2u" "s2_blocker3" "s2c" "s2_unlock" -permutation "s2b" "s1l" "s2u" "s2_blocker1" "s2r" "s2_unlock" -permutation "s2b" "s1l" "s2u" "s2_blocker2" "s2r" "s2_unlock" -permutation "s2b" "s1l" "s2u" "s2_blocker3" "s2r" "s2_unlock" +permutation s2b s1l s2u s2_blocker1 s2c s2_unlock +permutation s2b s1l s2u s2_blocker2 s2c s2_unlock +permutation s2b s1l s2u s2_blocker3 s2c s2_unlock +permutation s2b s1l s2u s2_blocker1 s2r s2_unlock +permutation s2b s1l s2u s2_blocker2 s2r s2_unlock +permutation s2b s1l s2u s2_blocker3 s2r s2_unlock diff -Nru postgresql-10-10.17/src/test/isolation/specs/lock-update-traversal.spec postgresql-10-10.19/src/test/isolation/specs/lock-update-traversal.spec --- postgresql-10-10.17/src/test/isolation/specs/lock-update-traversal.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/lock-update-traversal.spec 2021-11-08 22:05:38.000000000 +0000 @@ -19,20 +19,20 @@ DROP TABLE foo; } -session "s1" -step "s1b" { BEGIN ISOLATION LEVEL REPEATABLE READ; } -step "s1s" { SELECT * FROM foo; } # obtain snapshot -step "s1l" { SELECT * FROM foo FOR KEY SHARE; } # obtain lock -step "s1c" { COMMIT; } +session s1 +step s1b { BEGIN ISOLATION LEVEL REPEATABLE READ; } +step s1s { SELECT * FROM foo; } # obtain snapshot +step s1l { SELECT * FROM foo FOR KEY SHARE; } # obtain lock +step s1c { COMMIT; } -session "s2" -step "s2b" { BEGIN; } -step "s2u" { UPDATE foo SET value = 2 WHERE key = 1; } -step "s2c" { COMMIT; } -step "s2d1" { DELETE FROM foo WHERE key = 1; } -step "s2d2" { UPDATE foo SET key = 3 WHERE key = 1; } -step "s2d3" { UPDATE foo SET value = 3 WHERE key = 1; } +session s2 +step s2b { BEGIN; } +step s2u { UPDATE foo SET value = 2 WHERE key = 1; } +step s2c { COMMIT; } +step s2d1 { DELETE FROM foo WHERE key = 1; } +step s2d2 { UPDATE foo SET key = 3 WHERE key = 1; } +step s2d3 { UPDATE foo SET value = 3 WHERE key = 1; } -permutation "s1b" "s2b" "s1s" "s2u" "s1l" "s2c" "s2d1" "s1c" -permutation "s1b" "s2b" "s1s" "s2u" "s1l" "s2c" "s2d2" "s1c" -permutation "s1b" "s2b" "s1s" "s2u" "s1l" "s2c" "s2d3" "s1c" +permutation s1b s2b s1s s2u s1l s2c s2d1 s1c +permutation s1b s2b s1s s2u s1l s2c s2d2 s1c +permutation s1b s2b s1s s2u s1l s2c s2d3 s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/multiple-cic.spec postgresql-10-10.19/src/test/isolation/specs/multiple-cic.spec --- postgresql-10-10.17/src/test/isolation/specs/multiple-cic.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/multiple-cic.spec 2021-11-08 22:05:38.000000000 +0000 @@ -22,19 +22,22 @@ DROP FUNCTION unlck(); } -session "s1" -step "s1i" { +session s1 +step s1i { CREATE INDEX CONCURRENTLY mcic_one_pkey ON mcic_one (id) WHERE lck_shr(281457); } teardown { SELECT unlck(); } -session "s2" -step "s2l" { SELECT pg_advisory_lock(281457); } -step "s2i" { +session s2 +step s2l { SELECT pg_advisory_lock(281457); } +step s2i { CREATE INDEX CONCURRENTLY mcic_two_pkey ON mcic_two (id) WHERE unlck(); } -permutation "s2l" "s1i" "s2i" +# (*) marker ensures that s2i is reported as "waiting", even if it +# completes very quickly + +permutation s2l s1i s2i(*) diff -Nru postgresql-10-10.17/src/test/isolation/specs/multiple-row-versions.spec postgresql-10-10.19/src/test/isolation/specs/multiple-row-versions.spec --- postgresql-10-10.17/src/test/isolation/specs/multiple-row-versions.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/multiple-row-versions.spec 2021-11-08 22:05:38.000000000 +0000 @@ -19,29 +19,29 @@ DROP TABLE t; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rx1" { SELECT * FROM t WHERE id = 1000000; } +step rx1 { SELECT * FROM t WHERE id = 1000000; } # delay until after T3 commits -step "wz1" { UPDATE t SET txt = 'a' WHERE id = 1; } -step "c1" { COMMIT; } +step wz1 { UPDATE t SET txt = 'a' WHERE id = 1; } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wx2" { UPDATE t SET txt = 'b' WHERE id = 1000000; } -step "c2" { COMMIT; } +step wx2 { UPDATE t SET txt = 'b' WHERE id = 1000000; } +step c2 { COMMIT; } -session "s3" +session s3 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wx3" { UPDATE t SET txt = 'c' WHERE id = 1000000; } -step "ry3" { SELECT * FROM t WHERE id = 500000; } +step wx3 { UPDATE t SET txt = 'c' WHERE id = 1000000; } +step ry3 { SELECT * FROM t WHERE id = 500000; } # delay until after T4 commits -step "c3" { COMMIT; } +step c3 { COMMIT; } -session "s4" +session s4 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wy4" { UPDATE t SET txt = 'd' WHERE id = 500000; } -step "rz4" { SELECT * FROM t WHERE id = 1; } -step "c4" { COMMIT; } +step wy4 { UPDATE t SET txt = 'd' WHERE id = 500000; } +step rz4 { SELECT * FROM t WHERE id = 1; } +step c4 { COMMIT; } -permutation "rx1" "wx2" "c2" "wx3" "ry3" "wy4" "rz4" "c4" "c3" "wz1" "c1" +permutation rx1 wx2 c2 wx3 ry3 wy4 rz4 c4 c3 wz1 c1 diff -Nru postgresql-10-10.17/src/test/isolation/specs/multixact-no-deadlock.spec postgresql-10-10.19/src/test/isolation/specs/multixact-no-deadlock.spec --- postgresql-10-10.17/src/test/isolation/specs/multixact-no-deadlock.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/multixact-no-deadlock.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,21 +15,21 @@ DROP TABLE justthis; } -session "s1" +session s1 setup { BEGIN; } -step "s1lock" { SELECT * FROM justthis FOR SHARE; } -step "s1svpt" { SAVEPOINT foo; } -step "s1lock2" { SELECT * FROM justthis FOR SHARE; } -step "s1c" { COMMIT; } +step s1lock { SELECT * FROM justthis FOR SHARE; } +step s1svpt { SAVEPOINT foo; } +step s1lock2 { SELECT * FROM justthis FOR SHARE; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2lock" { SELECT * FROM justthis FOR SHARE; } # ensure it's a multi -step "s2c" { COMMIT; } +step s2lock { SELECT * FROM justthis FOR SHARE; } # ensure it's a multi +step s2c { COMMIT; } -session "s3" +session s3 setup { BEGIN; } -step "s3lock" { SELECT * FROM justthis FOR UPDATE; } -step "s3c" { COMMIT; } +step s3lock { SELECT * FROM justthis FOR UPDATE; } +step s3c { COMMIT; } -permutation "s1lock" "s2lock" "s1svpt" "s3lock" "s1lock2" "s2c" "s1c" "s3c" +permutation s1lock s2lock s1svpt s3lock s1lock2 s2c s1c s3c diff -Nru postgresql-10-10.17/src/test/isolation/specs/multixact-no-forget.spec postgresql-10-10.19/src/test/isolation/specs/multixact-no-forget.spec --- postgresql-10-10.17/src/test/isolation/specs/multixact-no-forget.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/multixact-no-forget.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,31 +14,31 @@ DROP TABLE dont_forget; } -session "s1" +session s1 setup { BEGIN; } -step "s1_show" { SELECT current_setting('default_transaction_isolation') <> 'read committed'; } -step "s1_lock" { SELECT * FROM dont_forget FOR KEY SHARE; } -step "s1_commit" { COMMIT; } +step s1_show { SELECT current_setting('default_transaction_isolation') <> 'read committed'; } +step s1_lock { SELECT * FROM dont_forget FOR KEY SHARE; } +step s1_commit { COMMIT; } -session "s2" -setup { BEGIN; } -step "s2_update" { UPDATE dont_forget SET value = 2; } -step "s2_abort" { ROLLBACK; } -step "s2_commit" { COMMIT; } +session s2 +setup { BEGIN; } +step s2_update { UPDATE dont_forget SET value = 2; } +step s2_abort { ROLLBACK; } +step s2_commit { COMMIT; } -session "s3" +session s3 # try cases with both a non-conflicting lock with s1's and a conflicting one -step "s3_forkeyshr" { SELECT * FROM dont_forget FOR KEY SHARE; } -step "s3_fornokeyupd" { SELECT * FROM dont_forget FOR NO KEY UPDATE; } -step "s3_forupd" { SELECT * FROM dont_forget FOR UPDATE; } +step s3_forkeyshr { SELECT * FROM dont_forget FOR KEY SHARE; } +step s3_fornokeyupd { SELECT * FROM dont_forget FOR NO KEY UPDATE; } +step s3_forupd { SELECT * FROM dont_forget FOR UPDATE; } -permutation "s1_show" "s1_commit" "s2_commit" -permutation "s1_lock" "s2_update" "s2_abort" "s3_forkeyshr" "s1_commit" -permutation "s1_lock" "s2_update" "s2_commit" "s3_forkeyshr" "s1_commit" -permutation "s1_lock" "s2_update" "s1_commit" "s3_forkeyshr" "s2_commit" -permutation "s1_lock" "s2_update" "s2_abort" "s3_fornokeyupd" "s1_commit" -permutation "s1_lock" "s2_update" "s2_commit" "s3_fornokeyupd" "s1_commit" -permutation "s1_lock" "s2_update" "s1_commit" "s3_fornokeyupd" "s2_commit" -permutation "s1_lock" "s2_update" "s2_abort" "s3_forupd" "s1_commit" -permutation "s1_lock" "s2_update" "s2_commit" "s3_forupd" "s1_commit" -permutation "s1_lock" "s2_update" "s1_commit" "s3_forupd" "s2_commit" +permutation s1_show s1_commit s2_commit +permutation s1_lock s2_update s2_abort s3_forkeyshr s1_commit +permutation s1_lock s2_update s2_commit s3_forkeyshr s1_commit +permutation s1_lock s2_update s1_commit s3_forkeyshr s2_commit +permutation s1_lock s2_update s2_abort s3_fornokeyupd s1_commit +permutation s1_lock s2_update s2_commit s3_fornokeyupd s1_commit +permutation s1_lock s2_update s1_commit s3_fornokeyupd s2_commit +permutation s1_lock s2_update s2_abort s3_forupd s1_commit +permutation s1_lock s2_update s2_commit s3_forupd s1_commit +permutation s1_lock s2_update s1_commit s3_forupd s2_commit diff -Nru postgresql-10-10.17/src/test/isolation/specs/nowait-2.spec postgresql-10-10.19/src/test/isolation/specs/nowait-2.spec --- postgresql-10-10.17/src/test/isolation/specs/nowait-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/nowait-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,24 +14,24 @@ DROP TABLE foo; } -session "s1" +session s1 setup { BEGIN; } -step "s1a" { SELECT * FROM foo FOR SHARE NOWAIT; } -step "s1b" { COMMIT; } +step s1a { SELECT * FROM foo FOR SHARE NOWAIT; } +step s1b { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2a" { SELECT * FROM foo FOR SHARE NOWAIT; } -step "s2b" { SELECT * FROM foo FOR UPDATE NOWAIT; } -step "s2c" { COMMIT; } +step s2a { SELECT * FROM foo FOR SHARE NOWAIT; } +step s2b { SELECT * FROM foo FOR UPDATE NOWAIT; } +step s2c { COMMIT; } # s1 and s2 both get SHARE lock, creating a multixact lock, then s2 # tries to upgrade to UPDATE but aborts because it cannot acquire a # multi-xact lock -permutation "s1a" "s2a" "s2b" "s1b" "s2c" +permutation s1a s2a s2b s1b s2c # the same but with the SHARE locks acquired in a different order, so # s2 again aborts because it can't acquired a multi-xact lock -permutation "s2a" "s1a" "s2b" "s1b" "s2c" +permutation s2a s1a s2b s1b s2c # s2 acquires SHARE then UPDATE, then s1 tries to acquire SHARE but # can't so aborts because it can't acquire a regular lock -permutation "s2a" "s2b" "s1a" "s1b" "s2c" +permutation s2a s2b s1a s1b s2c diff -Nru postgresql-10-10.17/src/test/isolation/specs/nowait-3.spec postgresql-10-10.19/src/test/isolation/specs/nowait-3.spec --- postgresql-10-10.17/src/test/isolation/specs/nowait-3.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/nowait-3.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,20 +14,20 @@ DROP TABLE foo; } -session "s1" +session s1 setup { BEGIN; } -step "s1a" { SELECT * FROM foo FOR UPDATE; } -step "s1b" { COMMIT; } +step s1a { SELECT * FROM foo FOR UPDATE; } +step s1b { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2a" { SELECT * FROM foo FOR UPDATE; } -step "s2b" { COMMIT; } +step s2a { SELECT * FROM foo FOR UPDATE; } +step s2b { COMMIT; } -session "s3" +session s3 setup { BEGIN; } -step "s3a" { SELECT * FROM foo FOR UPDATE NOWAIT; } -step "s3b" { COMMIT; } +step s3a { SELECT * FROM foo FOR UPDATE NOWAIT; } +step s3b { COMMIT; } # s3 skips to second record due to tuple lock held by s2 -permutation "s1a" "s2a" "s3a" "s1b" "s2b" "s3b" +permutation s1a s2a s3a s1b s2b s3b diff -Nru postgresql-10-10.17/src/test/isolation/specs/nowait-4.spec postgresql-10-10.19/src/test/isolation/specs/nowait-4.spec --- postgresql-10-10.17/src/test/isolation/specs/nowait-4.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/nowait-4.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,22 +14,22 @@ DROP TABLE foo; } -session "s1" +session s1 setup { BEGIN; } -step "s1a" { SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL FOR UPDATE NOWAIT; } -step "s1b" { COMMIT; } +step s1a { SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL FOR UPDATE NOWAIT; } +step s1b { COMMIT; } -session "s2" -step "s2a" { SELECT pg_advisory_lock(0); } -step "s2b" { UPDATE foo SET data = data; } -step "s2c" { BEGIN; } -step "s2d" { UPDATE foo SET data = data; } -step "s2e" { SELECT pg_advisory_unlock(0); } -step "s2f" { COMMIT; } +session s2 +step s2a { SELECT pg_advisory_lock(0); } +step s2b { UPDATE foo SET data = data; } +step s2c { BEGIN; } +step s2d { UPDATE foo SET data = data; } +step s2e { SELECT pg_advisory_unlock(0); } +step s2f { COMMIT; } # s1 takes a snapshot but then waits on an advisory lock, then s2 # updates the row in one transaction, then again in another without # committing, before allowing s1 to proceed to try to lock a row; # because it has a snapshot that sees the older version, we reach the # waiting code in EvalPlanQualFetch which ereports when in NOWAIT mode. -permutation "s2a" "s1a" "s2b" "s2c" "s2d" "s2e" "s1b" "s2f" +permutation s2a s1a s2b s2c s2d s2e s1b s2f diff -Nru postgresql-10-10.17/src/test/isolation/specs/nowait-5.spec postgresql-10-10.19/src/test/isolation/specs/nowait-5.spec --- postgresql-10-10.17/src/test/isolation/specs/nowait-5.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/nowait-5.spec 2021-11-08 22:05:38.000000000 +0000 @@ -18,11 +18,11 @@ DROP TABLE test_nowait; } -session "sl1" -step "sl1_prep" { +session sl1 +step sl1_prep { PREPARE sl1_run AS SELECT id FROM test_nowait WHERE pg_advisory_lock(0) is not null FOR UPDATE NOWAIT; } -step "sl1_exec" { +step sl1_exec { BEGIN ISOLATION LEVEL READ COMMITTED; EXECUTE sl1_run; SELECT xmin, xmax, ctid, * FROM test_nowait; @@ -31,22 +31,22 @@ # A session that's used for an UPDATE of the rows to be locked, for when we're testing ctid # chain following. -session "upd" -step "upd_getlock" { +session upd +step upd_getlock { SELECT pg_advisory_lock(0); } -step "upd_doupdate" { +step upd_doupdate { BEGIN ISOLATION LEVEL READ COMMITTED; UPDATE test_nowait SET value = value WHERE id % 2 = 0; COMMIT; } -step "upd_releaselock" { +step upd_releaselock { SELECT pg_advisory_unlock(0); } # A session that acquires locks that sl1 is supposed to avoid blocking on -session "lk1" -step "lk1_doforshare" { +session lk1 +step lk1_doforshare { BEGIN ISOLATION LEVEL READ COMMITTED; SELECT id FROM test_nowait WHERE id % 2 = 0 FOR SHARE; } @@ -54,4 +54,4 @@ COMMIT; } -permutation "sl1_prep" "upd_getlock" "sl1_exec" "upd_doupdate" "lk1_doforshare" "upd_releaselock" +permutation sl1_prep upd_getlock sl1_exec upd_doupdate lk1_doforshare upd_releaselock diff -Nru postgresql-10-10.17/src/test/isolation/specs/nowait.spec postgresql-10-10.19/src/test/isolation/specs/nowait.spec --- postgresql-10-10.17/src/test/isolation/specs/nowait.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/nowait.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,12 +14,12 @@ DROP TABLE foo; } -session "s1" +session s1 setup { BEGIN; } -step "s1a" { SELECT * FROM foo FOR UPDATE NOWAIT; } -step "s1b" { COMMIT; } +step s1a { SELECT * FROM foo FOR UPDATE NOWAIT; } +step s1b { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2a" { SELECT * FROM foo FOR UPDATE NOWAIT; } -step "s2b" { COMMIT; } +step s2a { SELECT * FROM foo FOR UPDATE NOWAIT; } +step s2b { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/partial-index.spec postgresql-10-10.19/src/test/isolation/specs/partial-index.spec --- postgresql-10-10.17/src/test/isolation/specs/partial-index.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/partial-index.spec 2021-11-08 22:05:38.000000000 +0000 @@ -19,14 +19,14 @@ DROP TABLE test_t; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rxy1" { 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 rxy1 { select * from test_t where val2 = 1; } +step wx1 { update test_t set val2 = 2 where val2 = 1 and id = 10; } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wy2" { update test_t set val2 = 2 where val2 = 1 and id = 9; } -step "rxy2" { select * from test_t where val2 = 1; } -step "c2" { 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 c2 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/predicate-lock-hot-tuple.spec postgresql-10-10.19/src/test/isolation/specs/predicate-lock-hot-tuple.spec --- postgresql-10-10.17/src/test/isolation/specs/predicate-lock-hot-tuple.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/predicate-lock-hot-tuple.spec 2021-11-08 22:05:38.000000000 +0000 @@ -22,16 +22,16 @@ DROP TABLE test; } -session "s1" -step "b1" { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r1" { SELECT * FROM test WHERE i IN (5, 7) } -step "w1" { UPDATE test SET t = 'pear_xact1' WHERE i = 7 } -step "c1" { COMMIT; } +session s1 +step b1 { BEGIN ISOLATION LEVEL SERIALIZABLE; } +step r1 { SELECT * FROM test WHERE i IN (5, 7) } +step w1 { UPDATE test SET t = 'pear_xact1' WHERE i = 7 } +step c1 { COMMIT; } -session "s2" -step "b2" { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r2" { SELECT * FROM test WHERE i IN (5, 7) } -step "w2" { UPDATE test SET t = 'apple_xact2' WHERE i = 5 } -step "c2" { COMMIT; } +session s2 +step b2 { BEGIN ISOLATION LEVEL SERIALIZABLE; } +step r2 { SELECT * FROM test WHERE i IN (5, 7) } +step w2 { UPDATE test SET t = 'apple_xact2' WHERE i = 5 } +step c2 { COMMIT; } -permutation "b1" "b2" "r1" "r2" "w1" "w2" "c1" "c2" +permutation b1 b2 r1 r2 w1 w2 c1 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/prepared-transactions-cic.spec postgresql-10-10.19/src/test/isolation/specs/prepared-transactions-cic.spec --- postgresql-10-10.17/src/test/isolation/specs/prepared-transactions-cic.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/prepared-transactions-cic.spec 2021-11-08 22:05:38.000000000 +0000 @@ -12,26 +12,26 @@ # Sessions for CREATE INDEX CONCURRENTLY test -session "s1" -step "w1" { BEGIN; INSERT INTO cic_test VALUES (1); } -step "p1" { PREPARE TRANSACTION 's1'; } -step "c1" { COMMIT PREPARED 's1'; } +session s1 +step w1 { BEGIN; INSERT INTO cic_test VALUES (1); } +step p1 { PREPARE TRANSACTION 's1'; } +step c1 { COMMIT PREPARED 's1'; } -session "s2" +session s2 # The isolation tester never recognizes that a lock of s1 blocks s2, because a # prepared transaction's locks have no pid associated. While there's a slight # chance of timeout while waiting for an autovacuum-held lock, that wouldn't # change the output. Hence, no timeout is too short. setup { SET lock_timeout = 10; } -step "cic2" +step cic2 { CREATE INDEX CONCURRENTLY on cic_test(a); } -step "r2" +step r2 { SET enable_seqscan to off; SET enable_bitmapscan to off; SELECT * FROM cic_test WHERE a = 1; } -permutation "w1" "p1" "cic2" "c1" "r2" +permutation w1 p1 cic2 c1 r2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/prepared-transactions.spec postgresql-10-10.19/src/test/isolation/specs/prepared-transactions.spec --- postgresql-10-10.17/src/test/isolation/specs/prepared-transactions.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/prepared-transactions.spec 2021-11-08 22:05:38.000000000 +0000 @@ -32,30 +32,30 @@ } -session "s1" +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'; } +step r1 { SELECT * FROM test2; } +step p1 { PREPARE TRANSACTION 's1'; } +step c1 { COMMIT PREPARED 's1'; } -session "s2" +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'; } +step r2 { SELECT * FROM test3; } +step w2 { INSERT INTO test2 VALUES (2); } +step p2 { PREPARE TRANSACTION 's2'; } +step c2 { COMMIT PREPARED 's2'; } -session "s3" +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'; } +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; } +session s4 +step check { SELECT * FROM test1,test2,test3; } # We run on all permutations of the statements above subject to the # following constraints: @@ -73,1435 +73,1435 @@ # 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" +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 -Nru postgresql-10-10.17/src/test/isolation/specs/project-manager.spec postgresql-10-10.19/src/test/isolation/specs/project-manager.spec --- postgresql-10-10.17/src/test/isolation/specs/project-manager.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/project-manager.spec 2021-11-08 22:05:38.000000000 +0000 @@ -17,14 +17,14 @@ DROP TABLE person, project; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rx1" { SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; } -step "wy1" { INSERT INTO project VALUES (101, 'Build Great Wall', 1); } -step "c1" { COMMIT; } +step rx1 { SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; } +step wy1 { INSERT INTO project VALUES (101, 'Build Great Wall', 1); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "ry2" { SELECT count(*) FROM project WHERE project_manager = 1; } -step "wx2" { UPDATE person SET is_project_manager = false WHERE person_id = 1; } -step "c2" { COMMIT; } +step ry2 { SELECT count(*) FROM project WHERE project_manager = 1; } +step wx2 { UPDATE person SET is_project_manager = false WHERE person_id = 1; } +step c2 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/propagate-lock-delete.spec postgresql-10-10.19/src/test/isolation/specs/propagate-lock-delete.spec --- postgresql-10-10.17/src/test/isolation/specs/propagate-lock-delete.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/propagate-lock-delete.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,29 +14,29 @@ drop table child, parent; } -session "s1" -step "s1b" { BEGIN; } -step "s1l" { INSERT INTO child VALUES (1); } -step "s1c" { COMMIT; } +session s1 +step s1b { BEGIN; } +step s1l { INSERT INTO child VALUES (1); } +step s1c { COMMIT; } -session "s2" -step "s2b" { BEGIN; } -step "s2l" { INSERT INTO child VALUES (1); } -step "s2c" { COMMIT; } +session s2 +step s2b { BEGIN; } +step s2l { INSERT INTO child VALUES (1); } +step s2c { COMMIT; } -session "s3" -step "s3b" { BEGIN; } -step "s3u" { UPDATE parent SET c=lower(c); } # no key update -step "s3u2" { UPDATE parent SET i = i; } # key update -step "s3svu" { SAVEPOINT f; UPDATE parent SET c = 'bbb'; ROLLBACK TO f; } -step "s3d" { DELETE FROM parent; } -step "s3c" { COMMIT; } +session s3 +step s3b { BEGIN; } +step s3u { UPDATE parent SET c=lower(c); } # no key update +step s3u2 { UPDATE parent SET i = i; } # key update +step s3svu { SAVEPOINT f; UPDATE parent SET c = 'bbb'; ROLLBACK TO f; } +step s3d { DELETE FROM parent; } +step s3c { COMMIT; } -permutation "s1b" "s1l" "s2b" "s2l" "s3b" "s3u" "s3d" "s1c" "s2c" "s3c" -permutation "s1b" "s1l" "s2b" "s2l" "s3b" "s3u" "s3svu" "s3d" "s1c" "s2c" "s3c" -permutation "s1b" "s1l" "s2b" "s2l" "s3b" "s3u2" "s3d" "s1c" "s2c" "s3c" -permutation "s1b" "s1l" "s2b" "s2l" "s3b" "s3u2" "s3svu" "s3d" "s1c" "s2c" "s3c" -permutation "s1b" "s1l" "s3b" "s3u" "s3d" "s1c" "s3c" -permutation "s1b" "s1l" "s3b" "s3u" "s3svu" "s3d" "s1c" "s3c" -permutation "s1b" "s1l" "s3b" "s3u2" "s3d" "s1c" "s3c" -permutation "s1b" "s1l" "s3b" "s3u2" "s3svu" "s3d" "s1c" "s3c" +permutation s1b s1l s2b s2l s3b s3u s3d s1c s2c s3c +permutation s1b s1l s2b s2l s3b s3u s3svu s3d s1c s2c s3c +permutation s1b s1l s2b s2l s3b s3u2 s3d s1c s2c s3c +permutation s1b s1l s2b s2l s3b s3u2 s3svu s3d s1c s2c s3c +permutation s1b s1l s3b s3u s3d s1c s3c +permutation s1b s1l s3b s3u s3svu s3d s1c s3c +permutation s1b s1l s3b s3u2 s3d s1c s3c +permutation s1b s1l s3b s3u2 s3svu s3d s1c s3c diff -Nru postgresql-10-10.17/src/test/isolation/specs/read-only-anomaly-2.spec postgresql-10-10.19/src/test/isolation/specs/read-only-anomaly-2.spec --- postgresql-10-10.17/src/test/isolation/specs/read-only-anomaly-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/read-only-anomaly-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -17,26 +17,26 @@ DROP TABLE bank_account; } -session "s1" +session s1 setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } -step "s1ry" { SELECT balance FROM bank_account WHERE id = 'Y'; } -step "s1wy" { UPDATE bank_account SET balance = 20 WHERE id = 'Y'; } -step "s1c" { COMMIT; } +step s1ry { SELECT balance FROM bank_account WHERE id = 'Y'; } +step s1wy { UPDATE bank_account SET balance = 20 WHERE id = 'Y'; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } -step "s2rx" { SELECT balance FROM bank_account WHERE id = 'X'; } -step "s2ry" { SELECT balance FROM bank_account WHERE id = 'Y'; } -step "s2wx" { UPDATE bank_account SET balance = -11 WHERE id = 'X'; } -step "s2c" { COMMIT; } +step s2rx { SELECT balance FROM bank_account WHERE id = 'X'; } +step s2ry { SELECT balance FROM bank_account WHERE id = 'Y'; } +step s2wx { UPDATE bank_account SET balance = -11 WHERE id = 'X'; } +step s2c { COMMIT; } -session "s3" +session s3 setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } -step "s3r" { SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; } -step "s3c" { COMMIT; } +step s3r { SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; } +step s3c { COMMIT; } # without s3, s1 and s2 commit -permutation "s2rx" "s2ry" "s1ry" "s1wy" "s1c" "s2wx" "s2c" "s3c" +permutation s2rx s2ry s1ry s1wy s1c s2wx s2c s3c # once s3 observes the data committed by s1, a cycle is created and s2 aborts -permutation "s2rx" "s2ry" "s1ry" "s1wy" "s1c" "s3r" "s3c" "s2wx" +permutation s2rx s2ry s1ry s1wy s1c s3r s3c s2wx diff -Nru postgresql-10-10.17/src/test/isolation/specs/read-only-anomaly-3.spec postgresql-10-10.19/src/test/isolation/specs/read-only-anomaly-3.spec --- postgresql-10-10.17/src/test/isolation/specs/read-only-anomaly-3.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/read-only-anomaly-3.spec 2021-11-08 22:05:38.000000000 +0000 @@ -18,22 +18,22 @@ DROP TABLE bank_account; } -session "s1" +session s1 setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } -step "s1ry" { SELECT balance FROM bank_account WHERE id = 'Y'; } -step "s1wy" { UPDATE bank_account SET balance = 20 WHERE id = 'Y'; } -step "s1c" { COMMIT; } +step s1ry { SELECT balance FROM bank_account WHERE id = 'Y'; } +step s1wy { UPDATE bank_account SET balance = 20 WHERE id = 'Y'; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } -step "s2rx" { SELECT balance FROM bank_account WHERE id = 'X'; } -step "s2ry" { SELECT balance FROM bank_account WHERE id = 'Y'; } -step "s2wx" { UPDATE bank_account SET balance = -11 WHERE id = 'X'; } -step "s2c" { COMMIT; } +step s2rx { SELECT balance FROM bank_account WHERE id = 'X'; } +step s2ry { SELECT balance FROM bank_account WHERE id = 'Y'; } +step s2wx { UPDATE bank_account SET balance = -11 WHERE id = 'X'; } +step s2c { COMMIT; } -session "s3" +session s3 setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY DEFERRABLE; } -step "s3r" { SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; } -step "s3c" { COMMIT; } +step s3r { SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; } +step s3c { COMMIT; } -permutation "s2rx" "s2ry" "s1ry" "s1wy" "s1c" "s3r" "s2wx" "s2c" "s3c" +permutation s2rx s2ry s1ry s1wy s1c s3r s2wx s2c s3c diff -Nru postgresql-10-10.17/src/test/isolation/specs/read-only-anomaly.spec postgresql-10-10.19/src/test/isolation/specs/read-only-anomaly.spec --- postgresql-10-10.17/src/test/isolation/specs/read-only-anomaly.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/read-only-anomaly.spec 2021-11-08 22:05:38.000000000 +0000 @@ -17,22 +17,22 @@ DROP TABLE bank_account; } -session "s1" +session s1 setup { BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; } -step "s1ry" { SELECT balance FROM bank_account WHERE id = 'Y'; } -step "s1wy" { UPDATE bank_account SET balance = 20 WHERE id = 'Y'; } -step "s1c" { COMMIT; } +step s1ry { SELECT balance FROM bank_account WHERE id = 'Y'; } +step s1wy { UPDATE bank_account SET balance = 20 WHERE id = 'Y'; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; } -step "s2rx" { SELECT balance FROM bank_account WHERE id = 'X'; } -step "s2ry" { SELECT balance FROM bank_account WHERE id = 'Y'; } -step "s2wx" { UPDATE bank_account SET balance = -11 WHERE id = 'X'; } -step "s2c" { COMMIT; } +step s2rx { SELECT balance FROM bank_account WHERE id = 'X'; } +step s2ry { SELECT balance FROM bank_account WHERE id = 'Y'; } +step s2wx { UPDATE bank_account SET balance = -11 WHERE id = 'X'; } +step s2c { COMMIT; } -session "s3" +session s3 setup { BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; } -step "s3r" { SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; } -step "s3c" { COMMIT; } +step s3r { SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; } +step s3c { COMMIT; } -permutation "s2rx" "s2ry" "s1ry" "s1wy" "s1c" "s3r" "s2wx" "s2c" "s3c" +permutation s2rx s2ry s1ry s1wy s1c s3r s2wx s2c s3c diff -Nru postgresql-10-10.17/src/test/isolation/specs/read-write-unique-2.spec postgresql-10-10.19/src/test/isolation/specs/read-write-unique-2.spec --- postgresql-10-10.17/src/test/isolation/specs/read-write-unique-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/read-write-unique-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -10,27 +10,27 @@ DROP TABLE test; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r1" { SELECT * FROM test WHERE i = 42; } -step "w1" { INSERT INTO test VALUES (42); } -step "c1" { COMMIT; } +step r1 { SELECT * FROM test WHERE i = 42; } +step w1 { INSERT INTO test VALUES (42); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r2" { SELECT * FROM test WHERE i = 42; } -step "w2" { INSERT INTO test VALUES (42); } -step "c2" { COMMIT; } +step r2 { SELECT * FROM test WHERE i = 42; } +step w2 { INSERT INTO test VALUES (42); } +step c2 { COMMIT; } # Two SSI transactions see that there is no row with value 42 # in the table, then try to insert that value; T1 inserts, # and then T2 blocks waiting for T1 to commit. Finally, # T2 reports a serialization failure. -permutation "r1" "r2" "w1" "w2" "c1" "c2" +permutation r1 r2 w1 w2 c1 c2 # If the value is already visible before T2 begins, then a # regular unique constraint violation should still be raised # by T2. -permutation "r1" "w1" "c1" "r2" "w2" "c2" +permutation r1 w1 c1 r2 w2 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/read-write-unique-3.spec postgresql-10-10.19/src/test/isolation/specs/read-write-unique-3.spec --- postgresql-10-10.17/src/test/isolation/specs/read-write-unique-3.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/read-write-unique-3.spec 2021-11-08 22:05:38.000000000 +0000 @@ -20,14 +20,14 @@ DROP TABLE test; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rw1" { SELECT insert_unique(1, '1'); } -step "c1" { COMMIT; } +step rw1 { SELECT insert_unique(1, '1'); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rw2" { SELECT insert_unique(1, '2'); } -step "c2" { COMMIT; } +step rw2 { SELECT insert_unique(1, '2'); } +step c2 { COMMIT; } -permutation "rw1" "rw2" "c1" "c2" +permutation rw1 rw2 c1 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/read-write-unique-4.spec postgresql-10-10.19/src/test/isolation/specs/read-write-unique-4.spec --- postgresql-10-10.17/src/test/isolation/specs/read-write-unique-4.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/read-write-unique-4.spec 2021-11-08 22:05:38.000000000 +0000 @@ -17,27 +17,27 @@ DROP TABLE invoice; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r1" { SELECT COALESCE(MAX(invoice_number) + 1, 1) FROM invoice WHERE year = 2016; } -step "w1" { INSERT INTO invoice VALUES (2016, 3); } -step "c1" { COMMIT; } +step r1 { SELECT COALESCE(MAX(invoice_number) + 1, 1) FROM invoice WHERE year = 2016; } +step w1 { INSERT INTO invoice VALUES (2016, 3); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r2" { SELECT COALESCE(MAX(invoice_number) + 1, 1) FROM invoice WHERE year = 2016; } -step "w2" { INSERT INTO invoice VALUES (2016, 3); } -step "c2" { COMMIT; } +step r2 { SELECT COALESCE(MAX(invoice_number) + 1, 1) FROM invoice WHERE year = 2016; } +step w2 { INSERT INTO invoice VALUES (2016, 3); } +step c2 { COMMIT; } # if they both read first then there should be an SSI conflict -permutation "r1" "r2" "w1" "w2" "c1" "c2" +permutation r1 r2 w1 w2 c1 c2 # cases where one session doesn't explicitly read before writing: # if s2 doesn't explicitly read, then trying to insert the value # generates a unique constraint violation after s1 commits, as if s2 # ran after s1 -permutation "r1" "w1" "w2" "c1" "c2" +permutation r1 w1 w2 c1 c2 # if s1 doesn't explicitly read, but s2 does, then s1 inserts and # commits first, should s2 experience an SSI failure instead of a @@ -45,4 +45,4 @@ # (s1, s2) or (s2, s1) where s1 succeeds, and s2 doesn't see the row # in an explicit select but then fails to insert due to unique # constraint violation -permutation "r2" "w1" "w2" "c1" "c2" +permutation r2 w1 w2 c1 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/read-write-unique.spec postgresql-10-10.19/src/test/isolation/specs/read-write-unique.spec --- postgresql-10-10.17/src/test/isolation/specs/read-write-unique.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/read-write-unique.spec 2021-11-08 22:05:38.000000000 +0000 @@ -10,17 +10,17 @@ DROP TABLE test; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r1" { SELECT * FROM test; } -step "w1" { INSERT INTO test VALUES (42); } -step "c1" { COMMIT; } +step r1 { SELECT * FROM test; } +step w1 { INSERT INTO test VALUES (42); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r2" { SELECT * FROM test; } -step "w2" { INSERT INTO test VALUES (42); } -step "c2" { COMMIT; } +step r2 { SELECT * FROM test; } +step w2 { INSERT INTO test VALUES (42); } +step c2 { COMMIT; } # Two SSI transactions see that there is no row with value 42 # in the table, then try to insert that value; T1 inserts, @@ -30,10 +30,10 @@ # (In an earlier version of Postgres, T2 would report a unique # constraint violation). -permutation "r1" "r2" "w1" "w2" "c1" "c2" +permutation r1 r2 w1 w2 c1 c2 # If the value is already visible before T2 begins, then a # regular unique constraint violation should still be raised # by T2. -permutation "r1" "w1" "c1" "r2" "w2" "c2" +permutation r1 w1 c1 r2 w2 c2 diff -Nru postgresql-10-10.17/src/test/isolation/specs/receipt-report.spec postgresql-10-10.19/src/test/isolation/specs/receipt-report.spec --- postgresql-10-10.17/src/test/isolation/specs/receipt-report.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/receipt-report.spec 2021-11-08 22:05:38.000000000 +0000 @@ -30,18 +30,18 @@ DROP TABLE ctl, receipt; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rxwy1" { INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); } -step "c1" { COMMIT; } +step rxwy1 { INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wx2" { UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; } -step "c2" { COMMIT; } +step wx2 { UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; } +step c2 { COMMIT; } -session "s3" +session s3 setup { BEGIN ISOLATION LEVEL SERIALIZABLE, READ ONLY; } -step "rx3" { SELECT * FROM ctl WHERE k = 'receipt'; } -step "ry3" { SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; } -step "c3" { COMMIT; } +step rx3 { SELECT * FROM ctl WHERE k = 'receipt'; } +step ry3 { SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; } +step c3 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/referential-integrity.spec postgresql-10-10.19/src/test/isolation/specs/referential-integrity.spec --- postgresql-10-10.17/src/test/isolation/specs/referential-integrity.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/referential-integrity.spec 2021-11-08 22:05:38.000000000 +0000 @@ -18,15 +18,15 @@ DROP TABLE a, b; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rx1" { SELECT i FROM a WHERE i = 1; } -step "wy1" { INSERT INTO b VALUES (1); } -step "c1" { COMMIT; } +step rx1 { SELECT i FROM a WHERE i = 1; } +step wy1 { INSERT INTO b VALUES (1); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rx2" { SELECT i FROM a WHERE i = 1; } -step "ry2" { SELECT a_id FROM b WHERE a_id = 1; } -step "wx2" { DELETE FROM a WHERE i = 1; } -step "c2" { COMMIT; } +step rx2 { SELECT i FROM a WHERE i = 1; } +step ry2 { SELECT a_id FROM b WHERE a_id = 1; } +step wx2 { DELETE FROM a WHERE i = 1; } +step c2 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/ri-trigger.spec postgresql-10-10.19/src/test/isolation/specs/ri-trigger.spec --- postgresql-10-10.17/src/test/isolation/specs/ri-trigger.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/ri-trigger.spec 2021-11-08 22:05:38.000000000 +0000 @@ -41,13 +41,13 @@ DROP FUNCTION ri_child(); } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wxry1" { INSERT INTO child (parent_id) VALUES (0); } -step "c1" { COMMIT; } +step wxry1 { INSERT INTO child (parent_id) VALUES (0); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "r2" { SELECT TRUE; } -step "wyrx2" { DELETE FROM parent WHERE parent_id = 0; } -step "c2" { COMMIT; } +step r2 { SELECT TRUE; } +step wyrx2 { DELETE FROM parent WHERE parent_id = 0; } +step c2 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/sequence-ddl.spec postgresql-10-10.19/src/test/isolation/specs/sequence-ddl.spec --- postgresql-10-10.17/src/test/isolation/specs/sequence-ddl.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/sequence-ddl.spec 2021-11-08 22:05:38.000000000 +0000 @@ -10,33 +10,32 @@ DROP SEQUENCE seq1; } -session "s1" +session s1 setup { BEGIN; } -step "s1alter" { ALTER SEQUENCE seq1 MAXVALUE 10; } -step "s1alter2" { ALTER SEQUENCE seq1 MAXVALUE 20; } -step "s1restart" { ALTER SEQUENCE seq1 RESTART WITH 5; } -step "s1setval" { SELECT setval('seq1', 5); } -step "s1commit" { COMMIT; } - -session "s2" -step "s2begin" { BEGIN; } -step "s2nv" { SELECT nextval('seq1') FROM generate_series(1, 15); } -step "s2commit" { COMMIT; } +step s1alter { ALTER SEQUENCE seq1 MAXVALUE 10; } +step s1alter2 { ALTER SEQUENCE seq1 MAXVALUE 20; } +step s1restart { ALTER SEQUENCE seq1 RESTART WITH 5; } +step s1commit { COMMIT; } + +session s2 +step s2begin { BEGIN; } +step s2nv { SELECT nextval('seq1') FROM generate_series(1, 15); } +step s2commit { COMMIT; } -permutation "s1alter" "s1commit" "s2nv" +permutation s1alter s1commit s2nv # Prior to PG10, the s2nv step would see the uncommitted s1alter # change, but now it waits. -permutation "s1alter" "s2nv" "s1commit" +permutation s1alter s2nv s1commit # Prior to PG10, the s2nv step would see the uncommitted s1reset # change, but now it waits. -permutation "s1restart" "s2nv" "s1commit" +permutation s1restart s2nv s1commit # In contrast to ALTER setval() is non-transactional, so it doesn't # have to wait. -permutation "s1restart" "s2nv" "s1commit" +permutation s1restart s2nv s1commit # nextval doesn't release lock until transaction end, so s1alter2 has # to wait for s2commit. -permutation "s2begin" "s2nv" "s1alter2" "s2commit" "s1commit" +permutation s2begin s2nv s1alter2 s2commit s1commit diff -Nru postgresql-10-10.17/src/test/isolation/specs/simple-write-skew.spec postgresql-10-10.19/src/test/isolation/specs/simple-write-skew.spec --- postgresql-10-10.17/src/test/isolation/specs/simple-write-skew.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/simple-write-skew.spec 2021-11-08 22:05:38.000000000 +0000 @@ -19,12 +19,12 @@ DROP TABLE test; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rwx1" { UPDATE test SET t = 'apple' WHERE t = 'pear'; } -step "c1" { COMMIT; } +step rwx1 { UPDATE test SET t = 'apple' WHERE t = 'pear'; } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rwx2" { UPDATE test SET t = 'pear' WHERE t = 'apple'} -step "c2" { COMMIT; } +step rwx2 { UPDATE test SET t = 'pear' WHERE t = 'apple'} +step c2 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/skip-locked-2.spec postgresql-10-10.19/src/test/isolation/specs/skip-locked-2.spec --- postgresql-10-10.17/src/test/isolation/specs/skip-locked-2.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/skip-locked-2.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,27 +15,27 @@ DROP TABLE queue; } -session "s1" +session s1 setup { BEGIN; } -step "s1a" { SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; } -step "s1b" { COMMIT; } +step s1a { SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; } +step s1b { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2a" { SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; } -step "s2b" { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } -step "s2c" { COMMIT; } +step s2a { SELECT * FROM queue ORDER BY id FOR SHARE SKIP LOCKED LIMIT 1; } +step s2b { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } +step s2c { COMMIT; } # s1 and s2 both get SHARE lock, creating a multixact lock, then s2 # tries to update to UPDATE but skips the record because it can't # acquire a multixact lock -permutation "s1a" "s2a" "s2b" "s1b" "s2c" +permutation s1a s2a s2b s1b s2c # the same but with the SHARE locks acquired in a different order, so # s2 again skips because it can't acquired a multixact lock -permutation "s2a" "s1a" "s2b" "s1b" "s2c" +permutation s2a s1a s2b s1b s2c # s2 acquires SHARE then UPDATE, then s1 tries to acquire SHARE but # can't so skips the first record because it can't acquire a regular # lock -permutation "s2a" "s2b" "s1a" "s1b" "s2c" +permutation s2a s2b s1a s1b s2c diff -Nru postgresql-10-10.17/src/test/isolation/specs/skip-locked-3.spec postgresql-10-10.19/src/test/isolation/specs/skip-locked-3.spec --- postgresql-10-10.17/src/test/isolation/specs/skip-locked-3.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/skip-locked-3.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,22 +15,22 @@ DROP TABLE queue; } -session "s1" +session s1 setup { BEGIN; } -step "s1a" { SELECT * FROM queue ORDER BY id FOR UPDATE LIMIT 1; } -step "s1b" { COMMIT; } +step s1a { SELECT * FROM queue ORDER BY id FOR UPDATE LIMIT 1; } +step s1b { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2a" { SELECT * FROM queue ORDER BY id FOR UPDATE LIMIT 1; } -step "s2b" { COMMIT; } +step s2a { SELECT * FROM queue ORDER BY id FOR UPDATE LIMIT 1; } +step s2b { COMMIT; } -session "s3" +session s3 setup { BEGIN; } -step "s3a" { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } -step "s3b" { COMMIT; } +step s3a { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } +step s3b { COMMIT; } # s3 skips to the second record because it can't obtain the tuple lock # (s2 holds the tuple lock because it is next in line to obtain the # row lock, and s1 holds the row lock) -permutation "s1a" "s2a" "s3a" "s1b" "s2b" "s3b" +permutation s1a s2a s3a s1b s2b s3b diff -Nru postgresql-10-10.17/src/test/isolation/specs/skip-locked-4.spec postgresql-10-10.19/src/test/isolation/specs/skip-locked-4.spec --- postgresql-10-10.17/src/test/isolation/specs/skip-locked-4.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/skip-locked-4.spec 2021-11-08 22:05:38.000000000 +0000 @@ -14,18 +14,18 @@ DROP TABLE foo; } -session "s1" +session s1 setup { BEGIN; } -step "s1a" { SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED; } -step "s1b" { COMMIT; } +step s1a { SELECT * FROM foo WHERE pg_advisory_lock(0) IS NOT NULL ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED; } +step s1b { COMMIT; } -session "s2" -step "s2a" { SELECT pg_advisory_lock(0); } -step "s2b" { UPDATE foo SET data = data WHERE id = 1; } -step "s2c" { BEGIN; } -step "s2d" { UPDATE foo SET data = data WHERE id = 1; } -step "s2e" { SELECT pg_advisory_unlock(0); } -step "s2f" { COMMIT; } +session s2 +step s2a { SELECT pg_advisory_lock(0); } +step s2b { UPDATE foo SET data = data WHERE id = 1; } +step s2c { BEGIN; } +step s2d { UPDATE foo SET data = data WHERE id = 1; } +step s2e { SELECT pg_advisory_unlock(0); } +step s2f { COMMIT; } # s1 takes a snapshot but then waits on an advisory lock, then s2 # updates the row in one transaction, then again in another without @@ -33,4 +33,4 @@ # because it has a snapshot that sees the older version, we reach the # waiting code in EvalPlanQualFetch which skips rows when in SKIP # LOCKED mode, so s1 sees the second row -permutation "s2a" "s1a" "s2b" "s2c" "s2d" "s2e" "s1b" "s2f" +permutation s2a s1a s2b s2c s2d s2e s1b s2f diff -Nru postgresql-10-10.17/src/test/isolation/specs/skip-locked.spec postgresql-10-10.19/src/test/isolation/specs/skip-locked.spec --- postgresql-10-10.17/src/test/isolation/specs/skip-locked.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/skip-locked.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,14 +15,14 @@ DROP TABLE queue; } -session "s1" +session s1 setup { BEGIN; } -step "s1a" { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } -step "s1b" { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } -step "s1c" { COMMIT; } +step s1a { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } +step s1b { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } +step s1c { COMMIT; } -session "s2" +session s2 setup { BEGIN; } -step "s2a" { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } -step "s2b" { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } -step "s2c" { COMMIT; } +step s2a { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } +step s2b { SELECT * FROM queue ORDER BY id FOR UPDATE SKIP LOCKED LIMIT 1; } +step s2c { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/temporal-range-integrity.spec postgresql-10-10.19/src/test/isolation/specs/temporal-range-integrity.spec --- postgresql-10-10.17/src/test/isolation/specs/temporal-range-integrity.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/temporal-range-integrity.spec 2021-11-08 22:05:38.000000000 +0000 @@ -25,14 +25,14 @@ DROP TABLE statute, offense; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -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 "wy1" { INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); } -step "c1" { 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 wy1 { INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "ry2" { SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; } -step "wx2" { DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; } -step "c2" { COMMIT; } +step ry2 { SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; } +step wx2 { DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; } +step c2 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/timeouts.spec postgresql-10-10.19/src/test/isolation/specs/timeouts.spec --- postgresql-10-10.17/src/test/isolation/specs/timeouts.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/timeouts.spec 2021-11-08 22:05:38.000000000 +0000 @@ -11,35 +11,39 @@ DROP TABLE accounts; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "rdtbl" { SELECT * FROM accounts; } -step "wrtbl" { UPDATE accounts SET balance = balance + 100; } +step rdtbl { SELECT * FROM accounts; } +step wrtbl { UPDATE accounts SET balance = balance + 100; } teardown { ABORT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL READ COMMITTED; } -step "sto" { SET statement_timeout = 5000; } -step "lto" { SET lock_timeout = 5000; } -step "lsto" { SET lock_timeout = 5000; SET statement_timeout = 6000; } -step "slto" { SET lock_timeout = 6000; SET statement_timeout = 5000; } -step "locktbl" { LOCK TABLE accounts; } -step "update" { DELETE FROM accounts WHERE accountid = 'checking'; } +step sto { SET statement_timeout = '10ms'; } +step lto { SET lock_timeout = '10ms'; } +step lsto { SET lock_timeout = '10ms'; SET statement_timeout = '10s'; } +step slto { SET lock_timeout = '10s'; SET statement_timeout = '10ms'; } +step locktbl { LOCK TABLE accounts; } +step update { DELETE FROM accounts WHERE accountid = 'checking'; } teardown { ABORT; } +# It's possible that the isolation tester will not observe the final +# steps as "waiting", thanks to the relatively short timeouts we use. +# We can ensure consistent test output by marking those steps with (*). + # statement timeout, table-level lock -permutation "rdtbl" "sto" "locktbl" +permutation rdtbl sto locktbl(*) # lock timeout, table-level lock -permutation "rdtbl" "lto" "locktbl" +permutation rdtbl lto locktbl(*) # lock timeout expires first, table-level lock -permutation "rdtbl" "lsto" "locktbl" +permutation rdtbl lsto locktbl(*) # statement timeout expires first, table-level lock -permutation "rdtbl" "slto" "locktbl" +permutation rdtbl slto locktbl(*) # statement timeout, row-level lock -permutation "wrtbl" "sto" "update" +permutation wrtbl sto update(*) # lock timeout, row-level lock -permutation "wrtbl" "lto" "update" +permutation wrtbl lto update(*) # lock timeout expires first, row-level lock -permutation "wrtbl" "lsto" "update" +permutation wrtbl lsto update(*) # statement timeout expires first, row-level lock -permutation "wrtbl" "slto" "update" +permutation wrtbl slto update(*) diff -Nru postgresql-10-10.17/src/test/isolation/specs/total-cash.spec postgresql-10-10.19/src/test/isolation/specs/total-cash.spec --- postgresql-10-10.17/src/test/isolation/specs/total-cash.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/total-cash.spec 2021-11-08 22:05:38.000000000 +0000 @@ -15,14 +15,14 @@ DROP TABLE accounts; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wx1" { UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; } -step "rxy1" { SELECT SUM(balance) FROM accounts; } -step "c1" { COMMIT; } +step wx1 { UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; } +step rxy1 { SELECT SUM(balance) FROM accounts; } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wy2" { UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; } -step "rxy2" { SELECT SUM(balance) FROM accounts; } -step "c2" { COMMIT; } +step wy2 { UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; } +step rxy2 { SELECT SUM(balance) FROM accounts; } +step c2 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/tuplelock-conflict.spec postgresql-10-10.19/src/test/isolation/specs/tuplelock-conflict.spec --- postgresql-10-10.17/src/test/isolation/specs/tuplelock-conflict.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/tuplelock-conflict.spec 2021-11-08 22:05:38.000000000 +0000 @@ -11,53 +11,53 @@ DROP TABLE multixact_conflict; } -session "s1" -step "s1_begin" { BEGIN; } -step "s1_lcksvpt" { SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; } -step "s1_tuplock1" { SELECT * FROM multixact_conflict FOR KEY SHARE; } -step "s1_tuplock2" { SELECT * FROM multixact_conflict FOR SHARE; } -step "s1_tuplock3" { SELECT * FROM multixact_conflict FOR NO KEY UPDATE; } -step "s1_tuplock4" { SELECT * FROM multixact_conflict FOR UPDATE; } -step "s1_commit" { COMMIT; } +session s1 +step s1_begin { BEGIN; } +step s1_lcksvpt { SELECT * FROM multixact_conflict FOR KEY SHARE; SAVEPOINT foo; } +step s1_tuplock1 { SELECT * FROM multixact_conflict FOR KEY SHARE; } +step s1_tuplock2 { SELECT * FROM multixact_conflict FOR SHARE; } +step s1_tuplock3 { SELECT * FROM multixact_conflict FOR NO KEY UPDATE; } +step s1_tuplock4 { SELECT * FROM multixact_conflict FOR UPDATE; } +step s1_commit { COMMIT; } -session "s2" -step "s2_tuplock1" { SELECT * FROM multixact_conflict FOR KEY SHARE; } -step "s2_tuplock2" { SELECT * FROM multixact_conflict FOR SHARE; } -step "s2_tuplock3" { SELECT * FROM multixact_conflict FOR NO KEY UPDATE; } -step "s2_tuplock4" { SELECT * FROM multixact_conflict FOR UPDATE; } +session s2 +step s2_tuplock1 { SELECT * FROM multixact_conflict FOR KEY SHARE; } +step s2_tuplock2 { SELECT * FROM multixact_conflict FOR SHARE; } +step s2_tuplock3 { SELECT * FROM multixact_conflict FOR NO KEY UPDATE; } +step s2_tuplock4 { SELECT * FROM multixact_conflict FOR UPDATE; } # The version with savepoints test the multixact cases -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock1" "s2_tuplock1" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock1" "s2_tuplock2" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock1" "s2_tuplock3" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock1" "s2_tuplock4" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock2" "s2_tuplock1" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock2" "s2_tuplock2" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock2" "s2_tuplock3" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock2" "s2_tuplock4" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock3" "s2_tuplock1" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock3" "s2_tuplock2" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock3" "s2_tuplock3" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock3" "s2_tuplock4" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock4" "s2_tuplock1" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock4" "s2_tuplock2" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock4" "s2_tuplock3" "s1_commit" -permutation "s1_begin" "s1_lcksvpt" "s1_tuplock4" "s2_tuplock4" "s1_commit" +permutation s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock1 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock2 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock3 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock1 s2_tuplock4 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock1 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock2 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock3 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock2 s2_tuplock4 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock1 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock2 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock3 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock3 s2_tuplock4 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock1 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock2 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock3 s1_commit +permutation s1_begin s1_lcksvpt s1_tuplock4 s2_tuplock4 s1_commit # no multixacts here -permutation "s1_begin" "s1_tuplock1" "s2_tuplock1" "s1_commit" -permutation "s1_begin" "s1_tuplock1" "s2_tuplock2" "s1_commit" -permutation "s1_begin" "s1_tuplock1" "s2_tuplock3" "s1_commit" -permutation "s1_begin" "s1_tuplock1" "s2_tuplock4" "s1_commit" -permutation "s1_begin" "s1_tuplock2" "s2_tuplock1" "s1_commit" -permutation "s1_begin" "s1_tuplock2" "s2_tuplock2" "s1_commit" -permutation "s1_begin" "s1_tuplock2" "s2_tuplock3" "s1_commit" -permutation "s1_begin" "s1_tuplock2" "s2_tuplock4" "s1_commit" -permutation "s1_begin" "s1_tuplock3" "s2_tuplock1" "s1_commit" -permutation "s1_begin" "s1_tuplock3" "s2_tuplock2" "s1_commit" -permutation "s1_begin" "s1_tuplock3" "s2_tuplock3" "s1_commit" -permutation "s1_begin" "s1_tuplock3" "s2_tuplock4" "s1_commit" -permutation "s1_begin" "s1_tuplock4" "s2_tuplock1" "s1_commit" -permutation "s1_begin" "s1_tuplock4" "s2_tuplock2" "s1_commit" -permutation "s1_begin" "s1_tuplock4" "s2_tuplock3" "s1_commit" -permutation "s1_begin" "s1_tuplock4" "s2_tuplock4" "s1_commit" +permutation s1_begin s1_tuplock1 s2_tuplock1 s1_commit +permutation s1_begin s1_tuplock1 s2_tuplock2 s1_commit +permutation s1_begin s1_tuplock1 s2_tuplock3 s1_commit +permutation s1_begin s1_tuplock1 s2_tuplock4 s1_commit +permutation s1_begin s1_tuplock2 s2_tuplock1 s1_commit +permutation s1_begin s1_tuplock2 s2_tuplock2 s1_commit +permutation s1_begin s1_tuplock2 s2_tuplock3 s1_commit +permutation s1_begin s1_tuplock2 s2_tuplock4 s1_commit +permutation s1_begin s1_tuplock3 s2_tuplock1 s1_commit +permutation s1_begin s1_tuplock3 s2_tuplock2 s1_commit +permutation s1_begin s1_tuplock3 s2_tuplock3 s1_commit +permutation s1_begin s1_tuplock3 s2_tuplock4 s1_commit +permutation s1_begin s1_tuplock4 s2_tuplock1 s1_commit +permutation s1_begin s1_tuplock4 s2_tuplock2 s1_commit +permutation s1_begin s1_tuplock4 s2_tuplock3 s1_commit +permutation s1_begin s1_tuplock4 s2_tuplock4 s1_commit diff -Nru postgresql-10-10.17/src/test/isolation/specs/tuplelock-update.spec postgresql-10-10.19/src/test/isolation/specs/tuplelock-update.spec --- postgresql-10-10.17/src/test/isolation/specs/tuplelock-update.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/tuplelock-update.spec 2021-11-08 22:05:38.000000000 +0000 @@ -8,27 +8,30 @@ DROP TABLE pktab; } -session "s1" -step "s1_advlock" { +session s1 +step s1_advlock { SELECT pg_advisory_lock(142857), pg_advisory_lock(285714), pg_advisory_lock(571428); } -step "s1_chain" { UPDATE pktab SET data = DEFAULT; } -step "s1_begin" { BEGIN; } -step "s1_grablock" { SELECT * FROM pktab FOR KEY SHARE; } -step "s1_advunlock1" { SELECT pg_advisory_unlock(142857); } -step "s1_advunlock2" { SELECT pg_sleep(5), pg_advisory_unlock(285714); } -step "s1_advunlock3" { SELECT pg_sleep(5), pg_advisory_unlock(571428); } -step "s1_commit" { COMMIT; } +step s1_chain { UPDATE pktab SET data = DEFAULT; } +step s1_begin { BEGIN; } +step s1_grablock { SELECT * FROM pktab FOR KEY SHARE; } +step s1_advunlock1 { SELECT pg_advisory_unlock(142857); } +step s1_advunlock2 { SELECT pg_advisory_unlock(285714); } +step s1_advunlock3 { SELECT pg_advisory_unlock(571428); } +step s1_commit { COMMIT; } -session "s2" -step "s2_update" { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; } +session s2 +step s2_update { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; } -session "s3" -step "s3_update" { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(285714) IS NOT NULL; } +session s3 +step s3_update { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(285714) IS NOT NULL; } -session "s4" -step "s4_update" { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(571428) IS NOT NULL; } +session s4 +step s4_update { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(571428) IS NOT NULL; } -permutation "s1_advlock" "s2_update" "s3_update" "s4_update" "s1_chain" "s1_begin" "s1_grablock" "s1_advunlock1" "s1_advunlock2" "s1_advunlock3" "s1_commit" +# We use blocker annotations on the s1_advunlockN steps so that we will not +# move on to the next step until the other session's released step finishes. +# This ensures stable ordering of the test output. +permutation s1_advlock s2_update s3_update s4_update s1_chain s1_begin s1_grablock s1_advunlock1(s2_update) s1_advunlock2(s3_update) s1_advunlock3(s4_update) s1_commit diff -Nru postgresql-10-10.17/src/test/isolation/specs/tuplelock-upgrade-no-deadlock.spec postgresql-10-10.19/src/test/isolation/specs/tuplelock-upgrade-no-deadlock.spec --- postgresql-10-10.17/src/test/isolation/specs/tuplelock-upgrade-no-deadlock.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/tuplelock-upgrade-no-deadlock.spec 2021-11-08 22:05:38.000000000 +0000 @@ -16,57 +16,54 @@ drop table tlu_job; } -session "s0" -step "s0_begin" { begin; } -step "s0_keyshare" { select id from tlu_job where id = 1 for key share;} -step "s0_share" { select id from tlu_job where id = 1 for share;} -step "s0_rollback" { rollback; } +session s0 +step s0_begin { begin; } +step s0_keyshare { select id from tlu_job where id = 1 for key share;} +step s0_rollback { rollback; } -session "s1" +session s1 setup { begin; } -step "s1_keyshare" { select id from tlu_job where id = 1 for key share;} -step "s1_share" { select id from tlu_job where id = 1 for share; } -step "s1_fornokeyupd" { select id from tlu_job where id = 1 for no key update; } -step "s1_update" { update tlu_job set name = 'b' where id = 1; } -step "s1_delete" { delete from tlu_job where id = 1; } -step "s1_savept_e" { savepoint s1_e; } -step "s1_savept_f" { savepoint s1_f; } -step "s1_rollback_e" { rollback to s1_e; } -step "s1_rollback_f" { rollback to s1_f; } -step "s1_rollback" { rollback; } -step "s1_commit" { commit; } +step s1_keyshare { select id from tlu_job where id = 1 for key share;} +step s1_share { select id from tlu_job where id = 1 for share; } +step s1_fornokeyupd { select id from tlu_job where id = 1 for no key update; } +step s1_update { update tlu_job set name = 'b' where id = 1; } +step s1_savept_e { savepoint s1_e; } +step s1_savept_f { savepoint s1_f; } +step s1_rollback_e { rollback to s1_e; } +step s1_rollback_f { rollback to s1_f; } +step s1_rollback { rollback; } +step s1_commit { commit; } -session "s2" +session s2 setup { begin; } -step "s2_for_keyshare" { select id from tlu_job where id = 1 for key share; } -step "s2_fornokeyupd" { select id from tlu_job where id = 1 for no key update; } -step "s2_for_update" { select id from tlu_job where id = 1 for update; } -step "s2_update" { update tlu_job set name = 'b' where id = 1; } -step "s2_delete" { delete from tlu_job where id = 1; } -step "s2_rollback" { rollback; } -step "s2_commit" { commit; } +step s2_for_keyshare { select id from tlu_job where id = 1 for key share; } +step s2_fornokeyupd { select id from tlu_job where id = 1 for no key update; } +step s2_for_update { select id from tlu_job where id = 1 for update; } +step s2_update { update tlu_job set name = 'b' where id = 1; } +step s2_delete { delete from tlu_job where id = 1; } +step s2_rollback { rollback; } -session "s3" +session s3 setup { begin; } -step "s3_keyshare" { select id from tlu_job where id = 1 for key share; } -step "s3_share" { select id from tlu_job where id = 1 for share; } -step "s3_for_update" { select id from tlu_job where id = 1 for update; } -step "s3_update" { update tlu_job set name = 'c' where id = 1; } -step "s3_delete" { delete from tlu_job where id = 1; } -step "s3_rollback" { rollback; } -step "s3_commit" { commit; } +step s3_keyshare { select id from tlu_job where id = 1 for key share; } +step s3_share { select id from tlu_job where id = 1 for share; } +step s3_for_update { select id from tlu_job where id = 1 for update; } +step s3_update { update tlu_job set name = 'c' where id = 1; } +step s3_delete { delete from tlu_job where id = 1; } +step s3_rollback { rollback; } +step s3_commit { commit; } # test that s2 will not deadlock with s3 when s1 is rolled back -permutation "s1_share" "s2_for_update" "s3_share" "s3_for_update" "s1_rollback" "s3_rollback" "s2_rollback" +permutation s1_share s2_for_update s3_share s3_for_update s1_rollback s3_rollback s2_rollback # test that update does not cause deadlocks if it can proceed -permutation "s1_keyshare" "s2_for_update" "s3_keyshare" "s1_update" "s3_update" "s1_rollback" "s3_rollback" "s2_rollback" -permutation "s1_keyshare" "s2_for_update" "s3_keyshare" "s1_update" "s3_update" "s1_commit" "s3_rollback" "s2_rollback" +permutation s1_keyshare s2_for_update s3_keyshare s1_update s3_update s1_rollback s3_rollback s2_rollback +permutation s1_keyshare s2_for_update s3_keyshare s1_update s3_update s1_commit s3_rollback s2_rollback # test that delete does not cause deadlocks if it can proceed -permutation "s1_keyshare" "s2_for_update" "s3_keyshare" "s3_delete" "s1_rollback" "s3_rollback" "s2_rollback" -permutation "s1_keyshare" "s2_for_update" "s3_keyshare" "s3_delete" "s1_rollback" "s3_commit" "s2_rollback" +permutation s1_keyshare s2_for_update s3_keyshare s3_delete s1_rollback s3_rollback s2_rollback +permutation s1_keyshare s2_for_update s3_keyshare s3_delete s1_rollback s3_commit s2_rollback # test that sessions that don't upgrade locks acquire them in order -permutation "s1_share" "s2_for_update" "s3_for_update" "s1_rollback" "s2_rollback" "s3_rollback" -permutation "s1_share" "s2_update" "s3_update" "s1_rollback" "s2_rollback" "s3_rollback" -permutation "s1_share" "s2_delete" "s3_delete" "s1_rollback" "s2_rollback" "s3_rollback" +permutation s1_share s2_for_update s3_for_update s1_rollback s2_rollback s3_rollback +permutation s1_share s2_update s3_update s1_rollback s2_rollback s3_rollback +permutation s1_share s2_delete s3_delete s1_rollback s2_rollback s3_rollback # test s2 retrying the overall tuple lock algorithm after initially avoiding deadlock -permutation "s1_keyshare" "s3_for_update" "s2_for_keyshare" "s1_savept_e" "s1_share" "s1_savept_f" "s1_fornokeyupd" "s2_fornokeyupd" "s0_begin" "s0_keyshare" "s1_rollback_f" "s0_keyshare" "s1_rollback_e" "s1_rollback" "s2_rollback" "s0_rollback" "s3_rollback" +permutation s1_keyshare s3_for_update s2_for_keyshare s1_savept_e s1_share s1_savept_f s1_fornokeyupd s2_fornokeyupd s0_begin s0_keyshare s1_rollback_f s0_keyshare s1_rollback_e s1_rollback s2_rollback s0_rollback s3_rollback diff -Nru postgresql-10-10.17/src/test/isolation/specs/two-ids.spec postgresql-10-10.19/src/test/isolation/specs/two-ids.spec --- postgresql-10-10.17/src/test/isolation/specs/two-ids.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/two-ids.spec 2021-11-08 22:05:38.000000000 +0000 @@ -24,17 +24,17 @@ DROP TABLE D1, D2; } -session "s1" +session s1 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "wx1" { update D1 set id = id + 1; } -step "c1" { COMMIT; } +step wx1 { update D1 set id = id + 1; } +step c1 { COMMIT; } -session "s2" +session s2 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "rxwy2" { update D2 set id = (select id+1 from D1); } -step "c2" { COMMIT; } +step rxwy2 { update D2 set id = (select id+1 from D1); } +step c2 { COMMIT; } -session "s3" +session s3 setup { BEGIN ISOLATION LEVEL SERIALIZABLE; } -step "ry3" { select id from D2; } -step "c3" { COMMIT; } +step ry3 { select id from D2; } +step c3 { COMMIT; } diff -Nru postgresql-10-10.17/src/test/isolation/specs/update-conflict-out.spec postgresql-10-10.19/src/test/isolation/specs/update-conflict-out.spec --- postgresql-10-10.17/src/test/isolation/specs/update-conflict-out.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/update-conflict-out.spec 2021-11-08 22:05:38.000000000 +0000 @@ -16,39 +16,39 @@ DROP TABLE txn1; } -session "foo" +session foo setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } -step "foo_select" { SELECT * FROM txn0 WHERE id = 42; } -step "foo_insert" { INSERT INTO txn1 SELECT 7, 'foo_insert'; } -step "foo_commit" { COMMIT; } +step foo_select { SELECT * FROM txn0 WHERE id = 42; } +step foo_insert { INSERT INTO txn1 SELECT 7, 'foo_insert'; } +step foo_commit { COMMIT; } -session "bar" +session bar setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } -step "bar_select" { SELECT * FROM txn1 WHERE id = 7; } -step "bar_insert" { INSERT INTO txn0 SELECT 42, 'bar_insert'; } -step "bar_commit" { COMMIT; } +step bar_select { SELECT * FROM txn1 WHERE id = 7; } +step bar_insert { INSERT INTO txn0 SELECT 42, 'bar_insert'; } +step bar_commit { COMMIT; } # This session creates the conditions that confused bar's "conflict out" # handling in old releases affected by bug: -session "trouble" +session trouble setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; } -step "trouble_update" { UPDATE txn1 SET val = 'add physical version for "bar_select"' WHERE id = 7; } -step "trouble_delete" { DELETE FROM txn1 WHERE id = 7; } -step "trouble_abort" { ABORT; } +step trouble_update { UPDATE txn1 SET val = 'add physical version for "bar_select"' WHERE id = 7; } +step trouble_delete { DELETE FROM txn1 WHERE id = 7; } +step trouble_abort { ABORT; } -permutation "foo_select" - "bar_insert" - "foo_insert" "foo_commit" - "trouble_update" # Updates tuple... - "bar_select" # Should observe one distinct XID per version - "bar_commit" # "bar" should fail here at the latest - "trouble_abort" +permutation foo_select + bar_insert + foo_insert foo_commit + trouble_update # Updates tuple... + bar_select # Should observe one distinct XID per version + bar_commit # "bar" should fail here at the latest + trouble_abort # Same as above, but "trouble" session DELETEs this time around -permutation "foo_select" - "bar_insert" - "foo_insert" "foo_commit" - "trouble_delete" # Deletes tuple... - "bar_select" # Should observe foo's XID - "bar_commit" # "bar" should fail here at the latest - "trouble_abort" +permutation foo_select + bar_insert + foo_insert foo_commit + trouble_delete # Deletes tuple... + bar_select # Should observe foo's XID + bar_commit # "bar" should fail here at the latest + trouble_abort diff -Nru postgresql-10-10.17/src/test/isolation/specs/update-locked-tuple.spec postgresql-10-10.19/src/test/isolation/specs/update-locked-tuple.spec --- postgresql-10-10.17/src/test/isolation/specs/update-locked-tuple.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/update-locked-tuple.spec 2021-11-08 22:05:38.000000000 +0000 @@ -19,20 +19,20 @@ DROP TABLE users, orders; } -session "s1" -step "s1b" { BEGIN ISOLATION LEVEL REPEATABLE READ; } -step "s1u1" { UPDATE orders SET name = 'order of olivier (2)', user_id = 1 WHERE id = 1; } -step "s1u2" { UPDATE orders SET name = 'order of olivier (3)', user_id = 1 WHERE id = 1; } -step "s1c" { COMMIT; } +session s1 +step s1b { BEGIN ISOLATION LEVEL REPEATABLE READ; } +step s1u1 { UPDATE orders SET name = 'order of olivier (2)', user_id = 1 WHERE id = 1; } +step s1u2 { UPDATE orders SET name = 'order of olivier (3)', user_id = 1 WHERE id = 1; } +step s1c { COMMIT; } -session "s2" -step "s2b" { BEGIN ISOLATION LEVEL REPEATABLE READ; } -step "s2u" { UPDATE users SET sometime = '1830-10-04' WHERE id = 1; } -step "s2c" { COMMIT; } +session s2 +step s2b { BEGIN ISOLATION LEVEL REPEATABLE READ; } +step s2u { UPDATE users SET sometime = '1830-10-04' WHERE id = 1; } +step s2c { COMMIT; } -permutation "s1b" "s2b" "s2u" "s2c" "s1u1" "s1u2" "s1c" -permutation "s1b" "s2b" "s2u" "s1u1" "s2c" "s1u2" "s1c" -permutation "s1b" "s2b" "s1u1" "s2u" "s2c" "s1u2" "s1c" -permutation "s1b" "s1u1" "s2b" "s2u" "s2c" "s1u2" "s1c" -permutation "s1b" "s1u1" "s2b" "s1u2" "s2u" "s2c" "s1c" -permutation "s1b" "s1u1" "s1u2" "s2b" "s2u" "s2c" "s1c" +permutation s1b s2b s2u s2c s1u1 s1u2 s1c +permutation s1b s2b s2u s1u1 s2c s1u2 s1c +permutation s1b s2b s1u1 s2u s2c s1u2 s1c +permutation s1b s1u1 s2b s2u s2c s1u2 s1c +permutation s1b s1u1 s2b s1u2 s2u s2c s1c +permutation s1b s1u1 s1u2 s2b s2u s2c s1c diff -Nru postgresql-10-10.17/src/test/isolation/specs/vacuum-reltuples.spec postgresql-10-10.19/src/test/isolation/specs/vacuum-reltuples.spec --- postgresql-10-10.17/src/test/isolation/specs/vacuum-reltuples.spec 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specs/vacuum-reltuples.spec 2021-11-08 22:05:38.000000000 +0000 @@ -19,30 +19,30 @@ drop table smalltbl; } -session "worker" -step "open" { +session worker +step open { begin; declare c1 cursor for select 1 as dummy from smalltbl; } -step "fetch1" { +step fetch1 { fetch next from c1; } -step "close" { +step close { commit; } -step "stats" { +step stats { select relpages, reltuples from pg_class where oid='smalltbl'::regclass; } -session "vacuumer" -step "vac" { +session vacuumer +step vac { vacuum smalltbl; } -step "modify" { +step modify { insert into smalltbl select max(id)+1 from smalltbl; } -permutation "modify" "vac" "stats" -permutation "modify" "open" "fetch1" "vac" "close" "stats" -permutation "modify" "vac" "stats" +permutation modify vac stats +permutation modify open fetch1 vac close stats +permutation modify vac stats diff -Nru postgresql-10-10.17/src/test/isolation/specscanner.c postgresql-10-10.19/src/test/isolation/specscanner.c --- postgresql-10-10.17/src/test/isolation/specscanner.c 2021-05-10 20:59:01.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specscanner.c 2021-11-08 22:25:45.000000000 +0000 @@ -614,8 +614,8 @@ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 18 -#define YY_END_OF_BUFFER 19 +#define YY_NUM_RULES 23 +#define YY_END_OF_BUFFER 24 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -623,14 +623,15 @@ flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[58] = +static const flex_int16_t yy_accept[71] = { 0, - 0, 0, 0, 0, 0, 0, 19, 17, 8, 6, - 9, 7, 17, 17, 17, 13, 15, 15, 16, 14, - 11, 12, 10, 7, 0, 0, 0, 0, 13, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, - 0, 0, 5, 0, 0, 1, 0 + 0, 0, 0, 0, 0, 0, 24, 22, 9, 7, + 11, 8, 21, 20, 10, 10, 10, 10, 10, 16, + 18, 18, 19, 17, 14, 15, 13, 8, 20, 10, + 10, 10, 10, 10, 10, 16, 0, 17, 12, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 5, + 10, 10, 10, 10, 4, 10, 10, 10, 10, 10, + 1, 10, 3, 10, 10, 6, 10, 10, 2, 0 } ; static const YY_CHAR yy_ec[256] = @@ -638,88 +639,98 @@ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 5, 6, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 7, 1, 1, 8, - - 9, 1, 1, 1, 10, 1, 1, 1, 11, 12, - 13, 14, 1, 15, 16, 17, 18, 1, 19, 1, - 1, 1, 20, 1, 21, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 + 1, 2, 1, 5, 6, 7, 1, 1, 1, 8, + 8, 8, 1, 8, 1, 1, 1, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, + 1, 1, 1, 1, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 1, 1, 1, 1, 10, 1, 11, 10, 12, 13, + + 14, 10, 10, 10, 15, 10, 10, 10, 16, 17, + 18, 19, 10, 20, 21, 22, 23, 10, 24, 10, + 10, 10, 25, 1, 26, 1, 1, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10 } ; -static const YY_CHAR yy_meta[22] = +static const YY_CHAR yy_meta[27] = { 0, - 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1 + 1, 1, 2, 2, 1, 1, 3, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 1, 1 } ; -static const flex_int16_t yy_base[61] = +static const flex_int16_t yy_base[75] = { 0, - 0, 0, 20, 40, 22, 23, 78, 79, 79, 79, - 79, 0, 68, 20, 67, 28, 79, 29, 79, 79, - 79, 79, 79, 0, 60, 18, 65, 66, 34, 43, - 79, 61, 55, 52, 55, 48, 44, 50, 45, 79, - 50, 40, 43, 79, 42, 47, 41, 33, 34, 79, - 37, 38, 79, 33, 28, 79, 79, 64, 66, 38 + 0, 0, 25, 50, 27, 28, 96, 97, 97, 97, + 97, 0, 97, 86, 0, 76, 79, 20, 78, 33, + 97, 34, 97, 97, 97, 97, 86, 0, 81, 0, + 67, 68, 18, 73, 75, 39, 42, 97, 97, 69, + 59, 53, 50, 53, 51, 58, 46, 52, 47, 0, + 52, 50, 41, 44, 0, 43, 38, 47, 40, 32, + 0, 33, 0, 33, 34, 0, 30, 30, 0, 97, + 76, 79, 82, 42 } ; -static const flex_int16_t yy_def[61] = +static const flex_int16_t yy_def[75] = { 0, - 57, 1, 58, 58, 59, 59, 57, 57, 57, 57, - 57, 60, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 60, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 0, 57, 57, 57 + 70, 1, 71, 71, 72, 72, 70, 70, 70, 70, + 70, 73, 70, 70, 74, 74, 74, 74, 74, 70, + 70, 70, 70, 70, 70, 70, 70, 73, 70, 74, + 74, 74, 74, 74, 74, 70, 70, 70, 70, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 0, + 70, 70, 70, 70 } ; -static const flex_int16_t yy_nxt[101] = +static const flex_int16_t yy_nxt[124] = { 0, - 8, 9, 10, 9, 11, 12, 8, 8, 8, 8, - 8, 8, 8, 13, 8, 14, 15, 8, 8, 16, - 8, 18, 19, 18, 22, 22, 23, 23, 26, 29, - 30, 29, 30, 33, 34, 29, 27, 29, 24, 56, - 20, 18, 19, 18, 30, 55, 30, 54, 53, 31, - 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, - 20, 42, 41, 31, 17, 17, 21, 21, 40, 39, - 38, 37, 36, 35, 32, 28, 25, 57, 7, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57 - + 8, 9, 10, 9, 11, 12, 8, 13, 14, 15, + 15, 15, 15, 15, 15, 15, 16, 15, 17, 15, + 18, 19, 15, 15, 20, 8, 22, 23, 22, 26, + 26, 27, 27, 33, 36, 37, 36, 37, 42, 43, + 36, 34, 36, 37, 30, 37, 69, 68, 67, 66, + 24, 22, 23, 22, 65, 64, 63, 62, 61, 38, + 60, 59, 58, 57, 56, 55, 54, 38, 53, 52, + 51, 50, 49, 48, 47, 24, 21, 21, 21, 25, + 25, 25, 28, 46, 28, 45, 44, 41, 40, 29, + 39, 35, 32, 31, 29, 70, 7, 70, 70, 70, + + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70 } ; -static const flex_int16_t yy_chk[101] = +static const flex_int16_t yy_chk[124] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 3, 3, 5, 6, 5, 6, 14, 16, - 18, 16, 18, 26, 26, 29, 14, 29, 60, 55, - 3, 4, 4, 4, 30, 54, 30, 52, 51, 18, - 49, 48, 47, 46, 45, 43, 42, 41, 39, 38, - 4, 37, 36, 30, 58, 58, 59, 59, 35, 34, - 33, 32, 28, 27, 25, 15, 13, 7, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57 - + 1, 1, 1, 1, 1, 1, 3, 3, 3, 5, + 6, 5, 6, 18, 20, 22, 20, 22, 33, 33, + 36, 18, 36, 37, 74, 37, 68, 67, 65, 64, + 3, 4, 4, 4, 62, 60, 59, 58, 57, 22, + 56, 54, 53, 52, 51, 49, 48, 37, 47, 46, + 45, 44, 43, 42, 41, 4, 71, 71, 71, 72, + 72, 72, 73, 40, 73, 35, 34, 32, 31, 29, + 27, 19, 17, 16, 14, 7, 70, 70, 70, 70, + + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70 } ; static yy_state_type yy_last_accepting_state; @@ -758,14 +769,14 @@ static void addlitchar(char c); -#line 762 "specscanner.c" +#line 773 "specscanner.c" #define YY_NO_INPUT 1 -#line 765 "specscanner.c" +#line 776 "specscanner.c" #define INITIAL 0 #define sql 1 -#define qstr 2 +#define qident 2 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -978,16 +989,21 @@ } { -#line 42 "specscanner.l" +#line 50 "specscanner.l" -#line 46 "specscanner.l" - litbuf = pg_malloc(LITBUF_INIT); - litbufsize = LITBUF_INIT; +#line 54 "specscanner.l" + /* Allocate litbuf in first call of yylex() */ + if (litbuf == NULL) + { + litbuf = pg_malloc(LITBUF_INIT); + litbufsize = LITBUF_INIT; + } -#line 991 "specscanner.c" + /* Keywords (must appear before the {identifier} rule!) */ +#line 1007 "specscanner.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1014,13 +1030,13 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 58 ) + if ( yy_current_state >= 71 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 57 ); + while ( yy_current_state != 70 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -1042,92 +1058,113 @@ case 1: YY_RULE_SETUP -#line 50 "specscanner.l" -{ return(PERMUTATION); } +#line 63 "specscanner.l" +{ return NOTICES; } YY_BREAK case 2: YY_RULE_SETUP -#line 51 "specscanner.l" -{ return(SESSION); } +#line 64 "specscanner.l" +{ return PERMUTATION; } YY_BREAK case 3: YY_RULE_SETUP -#line 52 "specscanner.l" -{ return(SETUP); } +#line 65 "specscanner.l" +{ return SESSION; } YY_BREAK case 4: YY_RULE_SETUP -#line 53 "specscanner.l" -{ return(STEP); } +#line 66 "specscanner.l" +{ return SETUP; } YY_BREAK case 5: YY_RULE_SETUP -#line 54 "specscanner.l" -{ return(TEARDOWN); } +#line 67 "specscanner.l" +{ return STEP; } YY_BREAK case 6: -/* rule 6 can match eol */ YY_RULE_SETUP -#line 56 "specscanner.l" -{ yyline++; } +#line 68 "specscanner.l" +{ return TEARDOWN; } YY_BREAK +/* Whitespace and comments */ case 7: +/* rule 7 can match eol */ YY_RULE_SETUP -#line 57 "specscanner.l" -{ /* ignore */ } +#line 71 "specscanner.l" +{ yyline++; } YY_BREAK case 8: YY_RULE_SETUP -#line 58 "specscanner.l" +#line 72 "specscanner.l" { /* ignore */ } YY_BREAK -/* Quoted strings: "foo" */ case 9: YY_RULE_SETUP -#line 61 "specscanner.l" +#line 73 "specscanner.l" +{ /* ignore */ } + YY_BREAK +/* Plain identifiers */ +case 10: +YY_RULE_SETUP +#line 76 "specscanner.l" +{ + yylval.str = pg_strdup(yytext); + return(identifier); + } + YY_BREAK +/* Quoted identifiers: "foo" */ +case 11: +YY_RULE_SETUP +#line 82 "specscanner.l" { litbufpos = 0; - BEGIN(qstr); + BEGIN(qident); } YY_BREAK -case 10: +case 12: YY_RULE_SETUP -#line 65 "specscanner.l" +#line 86 "specscanner.l" +{ addlitchar(yytext[0]); } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 87 "specscanner.l" { litbuf[litbufpos] = '\0'; yylval.str = pg_strdup(litbuf); BEGIN(INITIAL); - return(string_literal); + return(identifier); } YY_BREAK -case 11: +case 14: YY_RULE_SETUP -#line 71 "specscanner.l" +#line 93 "specscanner.l" { addlitchar(yytext[0]); } YY_BREAK -case 12: -/* rule 12 can match eol */ +case 15: +/* rule 15 can match eol */ YY_RULE_SETUP -#line 72 "specscanner.l" -{ yyerror("unexpected newline in quoted string"); } +#line 94 "specscanner.l" +{ yyerror("unexpected newline in quoted identifier"); } YY_BREAK -case YY_STATE_EOF(qstr): -#line 73 "specscanner.l" -{ yyerror("unterminated quoted string"); } +case YY_STATE_EOF(qident): +#line 95 "specscanner.l" +{ yyerror("unterminated quoted identifier"); } YY_BREAK /* SQL blocks: { UPDATE ... } */ -case 13: +/* We trim leading/trailing whitespace, otherwise they're unprocessed */ +case 16: YY_RULE_SETUP -#line 76 "specscanner.l" +#line 99 "specscanner.l" { litbufpos = 0; BEGIN(sql); } YY_BREAK -case 14: +case 17: YY_RULE_SETUP -#line 81 "specscanner.l" +#line 104 "specscanner.l" { litbuf[litbufpos] = '\0'; yylval.str = pg_strdup(litbuf); @@ -1135,42 +1172,57 @@ return(sqlblock); } YY_BREAK -case 15: +case 18: YY_RULE_SETUP -#line 87 "specscanner.l" +#line 110 "specscanner.l" { addlitchar(yytext[0]); } YY_BREAK -case 16: -/* rule 16 can match eol */ +case 19: +/* rule 19 can match eol */ YY_RULE_SETUP -#line 90 "specscanner.l" +#line 113 "specscanner.l" { yyline++; addlitchar(yytext[0]); } YY_BREAK case YY_STATE_EOF(sql): -#line 94 "specscanner.l" +#line 117 "specscanner.l" { yyerror("unterminated sql block"); } YY_BREAK -case 17: +/* Numbers and punctuation */ +case 20: YY_RULE_SETUP -#line 98 "specscanner.l" +#line 122 "specscanner.l" +{ + yylval.integer = atoi(yytext); + return INTEGER; + } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 127 "specscanner.l" +{ return yytext[0]; } + YY_BREAK +/* Anything else is an error */ +case 22: +YY_RULE_SETUP +#line 130 "specscanner.l" { fprintf(stderr, "syntax error at line %d: unexpected character \"%s\"\n", yyline, yytext); exit(1); } YY_BREAK -case 18: +case 23: YY_RULE_SETUP -#line 102 "specscanner.l" +#line 134 "specscanner.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1174 "specscanner.c" +#line 1226 "specscanner.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1468,7 +1520,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 58 ) + if ( yy_current_state >= 71 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1496,11 +1548,11 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 58 ) + if ( yy_current_state >= 71 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 57); + yy_is_jam = (yy_current_state == 70); return yy_is_jam ? 0 : yy_current_state; } @@ -2139,7 +2191,7 @@ #define YYTABLES_NAME "yytables" -#line 102 "specscanner.l" +#line 134 "specscanner.l" static void diff -Nru postgresql-10-10.17/src/test/isolation/specscanner.l postgresql-10-10.19/src/test/isolation/specscanner.l --- postgresql-10-10.17/src/test/isolation/specscanner.l 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/isolation/specscanner.l 2021-11-08 22:05:38.000000000 +0000 @@ -32,46 +32,69 @@ %x sql -%x qstr +%x qident non_newline [^\n\r] space [ \t\r\f] comment ("#"{non_newline}*) +digit [0-9] +ident_start [A-Za-z\200-\377_] +ident_cont [A-Za-z\200-\377_0-9\$] + +identifier {ident_start}{ident_cont}* + +self [,()*] + %% %{ - litbuf = pg_malloc(LITBUF_INIT); - litbufsize = LITBUF_INIT; + /* Allocate litbuf in first call of yylex() */ + if (litbuf == NULL) + { + litbuf = pg_malloc(LITBUF_INIT); + litbufsize = LITBUF_INIT; + } %} -permutation { return(PERMUTATION); } -session { return(SESSION); } -setup { return(SETUP); } -step { return(STEP); } -teardown { return(TEARDOWN); } + /* Keywords (must appear before the {identifier} rule!) */ +notices { return NOTICES; } +permutation { return PERMUTATION; } +session { return SESSION; } +setup { return SETUP; } +step { return STEP; } +teardown { return TEARDOWN; } + /* Whitespace and comments */ [\n] { yyline++; } {comment} { /* ignore */ } {space} { /* ignore */ } - /* Quoted strings: "foo" */ + /* Plain identifiers */ +{identifier} { + yylval.str = pg_strdup(yytext); + return(identifier); + } + + /* Quoted identifiers: "foo" */ \" { litbufpos = 0; - BEGIN(qstr); + BEGIN(qident); } -\" { +\"\" { addlitchar(yytext[0]); } +\" { litbuf[litbufpos] = '\0'; yylval.str = pg_strdup(litbuf); BEGIN(INITIAL); - return(string_literal); + return(identifier); } -. { addlitchar(yytext[0]); } -\n { yyerror("unexpected newline in quoted string"); } -<> { yyerror("unterminated quoted string"); } +. { addlitchar(yytext[0]); } +\n { yyerror("unexpected newline in quoted identifier"); } +<> { yyerror("unterminated quoted identifier"); } /* SQL blocks: { UPDATE ... } */ + /* We trim leading/trailing whitespace, otherwise they're unprocessed */ "{"{space}* { litbufpos = 0; @@ -94,6 +117,15 @@ yyerror("unterminated sql block"); } + /* Numbers and punctuation */ +{digit}+ { + yylval.integer = atoi(yytext); + return INTEGER; + } + +{self} { return yytext[0]; } + + /* Anything else is an error */ . { fprintf(stderr, "syntax error at line %d: unexpected character \"%s\"\n", yyline, yytext); exit(1); diff -Nru postgresql-10-10.17/src/test/modules/brin/expected/summarization-and-inprogress-insertion.out postgresql-10-10.19/src/test/modules/brin/expected/summarization-and-inprogress-insertion.out --- postgresql-10-10.17/src/test/modules/brin/expected/summarization-and-inprogress-insertion.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/modules/brin/expected/summarization-and-inprogress-insertion.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,38 +2,50 @@ starting permutation: s2check s1b s2b s1i s2summ s1c s2c s2check step s2check: SELECT * FROM brin_page_items(get_raw_page('brinidx', 2), 'brinidx'::regclass); -itemoffset blknum attnum allnulls hasnulls placeholder value +itemoffset|blknum|attnum|allnulls|hasnulls|placeholder|value +----------+------+------+--------+--------+-----------+-------- + 1| 0| 1|f |f |f |{1 .. 1} +(1 row) -1 0 1 f f f {1 .. 1} step s1b: BEGIN ISOLATION LEVEL REPEATABLE READ; step s2b: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT 1; -?column? +?column? +-------- + 1 +(1 row) -1 step s1i: INSERT INTO brin_iso VALUES (1000); step s2summ: SELECT brin_summarize_new_values('brinidx'::regclass); brin_summarize_new_values +------------------------- + 1 +(1 row) -1 step s1c: COMMIT; step s2c: COMMIT; step s2check: SELECT * FROM brin_page_items(get_raw_page('brinidx', 2), 'brinidx'::regclass); -itemoffset blknum attnum allnulls hasnulls placeholder value +itemoffset|blknum|attnum|allnulls|hasnulls|placeholder|value +----------+------+------+--------+--------+-----------+----------- + 1| 0| 1|f |f |f |{1 .. 1} + 2| 1| 1|f |f |f |{1 .. 1000} +(2 rows) -1 0 1 f f f {1 .. 1} -2 1 1 f f f {1 .. 1000} starting permutation: s2check s1b s1i s2vacuum s1c s2check step s2check: SELECT * FROM brin_page_items(get_raw_page('brinidx', 2), 'brinidx'::regclass); -itemoffset blknum attnum allnulls hasnulls placeholder value +itemoffset|blknum|attnum|allnulls|hasnulls|placeholder|value +----------+------+------+--------+--------+-----------+-------- + 1| 0| 1|f |f |f |{1 .. 1} +(1 row) -1 0 1 f f f {1 .. 1} step s1b: BEGIN ISOLATION LEVEL REPEATABLE READ; step s1i: INSERT INTO brin_iso VALUES (1000); step s2vacuum: VACUUM brin_iso; step s1c: COMMIT; step s2check: SELECT * FROM brin_page_items(get_raw_page('brinidx', 2), 'brinidx'::regclass); -itemoffset blknum attnum allnulls hasnulls placeholder value +itemoffset|blknum|attnum|allnulls|hasnulls|placeholder|value +----------+------+------+--------+--------+-----------+----------- + 1| 0| 1|f |f |f |{1 .. 1} + 2| 1| 1|f |f |f |{1 .. 1000} +(2 rows) -1 0 1 f f f {1 .. 1} -2 1 1 f f f {1 .. 1000} diff -Nru postgresql-10-10.17/src/test/modules/snapshot_too_old/expected/sto_using_cursor.out postgresql-10-10.19/src/test/modules/snapshot_too_old/expected/sto_using_cursor.out --- postgresql-10-10.17/src/test/modules/snapshot_too_old/expected/sto_using_cursor.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/modules/snapshot_too_old/expected/sto_using_cursor.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,29 +3,39 @@ starting permutation: s1decl s1f1 s1sleep s1f2 s2u step s1decl: DECLARE cursor1 CURSOR FOR SELECT c FROM sto1; step s1f1: FETCH FIRST FROM cursor1; -c +c +- +1 +(1 row) -1 step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s1f2: FETCH FIRST FROM cursor1; -c +c +- +1 +(1 row) -1 step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; starting permutation: s1decl s1f1 s1sleep s2u s1f2 step s1decl: DECLARE cursor1 CURSOR FOR SELECT c FROM sto1; step s1f1: FETCH FIRST FROM cursor1; -c +c +- +1 +(1 row) -1 step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; step s1f2: FETCH FIRST FROM cursor1; ERROR: snapshot too old @@ -33,14 +43,18 @@ starting permutation: s1decl s1f1 s2u s1sleep s1f2 step s1decl: DECLARE cursor1 CURSOR FOR SELECT c FROM sto1; step s1f1: FETCH FIRST FROM cursor1; -c +c +- +1 +(1 row) -1 step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s1f2: FETCH FIRST FROM cursor1; ERROR: snapshot too old @@ -48,13 +62,17 @@ step s1decl: DECLARE cursor1 CURSOR FOR SELECT c FROM sto1; step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; step s1f1: FETCH FIRST FROM cursor1; -c +c +- +1 +(1 row) -1 step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s1f2: FETCH FIRST FROM cursor1; ERROR: snapshot too old @@ -62,12 +80,16 @@ step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; step s1decl: DECLARE cursor1 CURSOR FOR SELECT c FROM sto1; step s1f1: FETCH FIRST FROM cursor1; -c +c +- +2 +(1 row) -2 step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s1f2: FETCH FIRST FROM cursor1; ERROR: snapshot too old diff -Nru postgresql-10-10.17/src/test/modules/snapshot_too_old/expected/sto_using_hash_index.out postgresql-10-10.19/src/test/modules/snapshot_too_old/expected/sto_using_hash_index.out --- postgresql-10-10.17/src/test/modules/snapshot_too_old/expected/sto_using_hash_index.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/modules/snapshot_too_old/expected/sto_using_hash_index.out 2021-11-08 22:05:38.000000000 +0000 @@ -3,13 +3,17 @@ starting permutation: noseq s1f1 s2sleep s2u s1f2 step noseq: SET enable_seqscan = false; step s1f1: SELECT c FROM sto1 where c = 1000; -c + c +---- +1000 +(1 row) -1000 step s2sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1000; step s1f2: SELECT c FROM sto1 where c = 1001; ERROR: snapshot too old diff -Nru postgresql-10-10.17/src/test/modules/snapshot_too_old/expected/sto_using_select.out postgresql-10-10.19/src/test/modules/snapshot_too_old/expected/sto_using_select.out --- postgresql-10-10.17/src/test/modules/snapshot_too_old/expected/sto_using_select.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/modules/snapshot_too_old/expected/sto_using_select.out 2021-11-08 22:05:38.000000000 +0000 @@ -2,54 +2,72 @@ starting permutation: s1f1 s1sleep s1f2 s2u step s1f1: SELECT c FROM sto1 ORDER BY c LIMIT 1; -c +c +- +1 +(1 row) -1 step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s1f2: SELECT c FROM sto1 ORDER BY c LIMIT 1; -c +c +- +1 +(1 row) -1 step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; starting permutation: s1f1 s1sleep s2u s1f2 step s1f1: SELECT c FROM sto1 ORDER BY c LIMIT 1; -c +c +- +1 +(1 row) -1 step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; step s1f2: SELECT c FROM sto1 ORDER BY c LIMIT 1; ERROR: snapshot too old starting permutation: s1f1 s2u s1sleep s1f2 step s1f1: SELECT c FROM sto1 ORDER BY c LIMIT 1; -c +c +- +1 +(1 row) -1 step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s1f2: SELECT c FROM sto1 ORDER BY c LIMIT 1; ERROR: snapshot too old starting permutation: s2u s1f1 s1sleep s1f2 step s2u: UPDATE sto1 SET c = 1001 WHERE c = 1; step s1f1: SELECT c FROM sto1 ORDER BY c LIMIT 1; -c +c +- +2 +(1 row) -2 step s1sleep: SELECT setting, pg_sleep(6) FROM pg_settings WHERE name = 'old_snapshot_threshold'; -setting pg_sleep +setting|pg_sleep +-------+-------- + 0| +(1 row) -0 step s1f2: SELECT c FROM sto1 ORDER BY c LIMIT 1; ERROR: snapshot too old diff -Nru postgresql-10-10.17/src/test/modules/test_shm_mq/test.c postgresql-10-10.19/src/test/modules/test_shm_mq/test.c --- postgresql-10-10.17/src/test/modules/test_shm_mq/test.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/modules/test_shm_mq/test.c 2021-11-08 22:05:38.000000000 +0000 @@ -57,17 +57,17 @@ if (loop_count < 0) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("repeat count size must be a non-negative integer"))); + errmsg("repeat count size must be an integer value greater than or equal to zero"))); /* * Since this test sends data using the blocking interfaces, it cannot * send data to itself. Therefore, a minimum of 1 worker is required. Of * course, a negative worker count is nonsensical. */ - if (nworkers < 1) + if (nworkers <= 0) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("number of workers must be a positive integer"))); + errmsg("number of workers must be an integer value greater than zero"))); /* Set up dynamic shared memory segment and background workers. */ test_shm_mq_setup(queue_size, nworkers, &seg, &outqh, &inqh); @@ -149,7 +149,7 @@ if (loop_count < 0) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("repeat count size must be a non-negative integer"))); + errmsg("repeat count size must be an integer value greater than or equal to zero"))); /* * Using the nonblocking interfaces, we can even send data to ourselves, @@ -158,7 +158,7 @@ if (nworkers < 0) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("number of workers must be a non-negative integer"))); + errmsg("number of workers must be an integer value greater than or equal to zero"))); /* Set up dynamic shared memory segment and background workers. */ test_shm_mq_setup(queue_size, nworkers, &seg, &outqh, &inqh); diff -Nru postgresql-10-10.17/src/test/perl/PostgresNode.pm postgresql-10-10.19/src/test/perl/PostgresNode.pm --- postgresql-10-10.17/src/test/perl/PostgresNode.pm 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/perl/PostgresNode.pm 2021-11-08 22:05:38.000000000 +0000 @@ -29,9 +29,9 @@ # as well as the psql exit code. Pass some extra psql # options. If there's an error from psql raise an exception. my ($stdout, $stderr, $timed_out); - my $cmdret = $node->psql('postgres', 'SELECT pg_sleep(60)', + my $cmdret = $node->psql('postgres', 'SELECT pg_sleep(600)', stdout => \$stdout, stderr => \$stderr, - timeout => 30, timed_out => \$timed_out, + timeout => 180, timed_out => \$timed_out, extra_params => ['--single-transaction'], on_error_die => 1) print "Sleep timed out" if $timed_out; @@ -504,8 +504,11 @@ =item $node->backup(backup_name) Create a hot backup with B in subdirectory B of -B<< $node->backup_dir >>, including the WAL. WAL files -fetched at the end of the backup, not streamed. +B<< $node->backup_dir >>, including the WAL. + +By default, WAL files are fetched at the end of the backup, not streamed. +You can adjust that and other things by passing an array of additional +B command line options in the keyword parameter backup_options. You'll have to configure a suitable B on the target server since it isn't done by default. @@ -514,7 +517,7 @@ sub backup { - my ($self, $backup_name) = @_; + my ($self, $backup_name, %params) = @_; my $backup_path = $self->backup_dir . '/' . $backup_name; my $name = $self->name; @@ -522,7 +525,8 @@ TestLib::system_or_bail( 'pg_basebackup', '-D', $backup_path, '-h', $self->host, '-p', $self->port, '--checkpoint', - 'fast', '--no-sync'); + 'fast', '--no-sync', + @{ $params{backup_options} }); print "# Backup finished\n"; } @@ -1203,9 +1207,9 @@ e.g. my ($stdout, $stderr, $timed_out); - my $cmdret = $node->psql('postgres', 'SELECT pg_sleep(60)', + my $cmdret = $node->psql('postgres', 'SELECT pg_sleep(600)', stdout => \$stdout, stderr => \$stderr, - timeout => 30, timed_out => \$timed_out, + timeout => 180, timed_out => \$timed_out, extra_params => ['--single-transaction']) will set $cmdret to undef and $timed_out to a true value. @@ -1359,6 +1363,231 @@ =pod +=item $node->background_psql($dbname, \$stdin, \$stdout, $timer, %params) => harness + +Invoke B on B<$dbname> and return an IPC::Run harness object, which the +caller may use to send input to B. The process's stdin is sourced from +the $stdin scalar reference, and its stdout and stderr go to the $stdout +scalar reference. This allows the caller to act on other parts of the system +while idling this backend. + +The specified timer object is attached to the harness, as well. It's caller's +responsibility to select the timeout length, and to restart the timer after +each command if the timeout is per-command. + +psql is invoked in tuples-only unaligned mode with reading of B<.psqlrc> +disabled. That may be overridden by passing extra psql parameters. + +Dies on failure to invoke psql, or if psql fails to connect. Errors occurring +later are the caller's problem. psql runs with on_error_stop by default so +that it will stop running sql and return 3 if passed SQL results in an error. + +Be sure to "finish" the harness when done with it. + +=over + +=item on_error_stop => 1 + +By default, the B method invokes the B program with ON_ERROR_STOP=1 +set, so SQL execution is stopped at the first error and exit code 3 is +returned. Set B to 0 to ignore errors instead. + +=item replication => B + +If set, add B to the conninfo string. +Passing the literal value C results in a logical replication +connection. + +=item extra_params => ['--single-transaction'] + +If given, it must be an array reference containing additional parameters to B. + +=back + +=cut + +sub background_psql +{ + my ($self, $dbname, $stdin, $stdout, $timer, %params) = @_; + + local $ENV{PGHOST} = $self->host; + local $ENV{PGPORT} = $self->port; + + my $replication = $params{replication}; + + my @psql_params = ( + 'psql', + '-XAtq', + '-d', + $self->connstr($dbname) + . (defined $replication ? " replication=$replication" : ""), + '-f', + '-'); + + $params{on_error_stop} = 1 unless defined $params{on_error_stop}; + + push @psql_params, '-v', 'ON_ERROR_STOP=1' if $params{on_error_stop}; + push @psql_params, @{ $params{extra_params} } + if defined $params{extra_params}; + + # Ensure there is no data waiting to be sent: + $$stdin = "" if ref($stdin); + # IPC::Run would otherwise append to existing contents: + $$stdout = "" if ref($stdout); + + my $harness = IPC::Run::start \@psql_params, + '<', $stdin, '>', $stdout, $timer; + + # Request some output, and pump until we see it. This means that psql + # connection failures are caught here, relieving callers of the need to + # handle those. (Right now, we have no particularly good handling for + # errors anyway, but that might be added later.) + my $banner = "background_psql: ready"; + $$stdin = "\\echo $banner\n"; + pump $harness until $$stdout =~ /$banner/ || $timer->is_expired; + + die "psql startup timed out" if $timer->is_expired; + + return $harness; +} + +# Common sub of pgbench-invoking interfaces. Makes any requested script files +# and returns pgbench command-line options causing use of those files. +sub _pgbench_make_files +{ + my ($self, $files) = @_; + my @file_opts; + + if (defined $files) + { + + # note: files are ordered for determinism + for my $fn (sort keys %$files) + { + my $filename = $self->basedir . '/' . $fn; + push @file_opts, '-f', $filename; + + # cleanup file weight + $filename =~ s/\@\d+$//; + + #push @filenames, $filename; + # filenames are expected to be unique on a test + if (-e $filename) + { + ok(0, "$filename must not already exist"); + unlink $filename or die "cannot unlink $filename: $!"; + } + TestLib::append_to_file($filename, $$files{$fn}); + } + } + + return @file_opts; +} + +=pod + +=item $node->pgbench($opts, $stat, $out, $err, $name, $files, @args) + +Invoke B, with parameters and files. + +=over + +=item $opts + +Options as a string to be split on spaces. + +=item $stat + +Expected exit status. + +=item $out + +Reference to a regexp list that must match stdout. + +=item $err + +Reference to a regexp list that must match stderr. + +=item $name + +Name of test for error messages. + +=item $files + +Reference to filename/contents dictionary. + +=item @args + +Further raw options or arguments. + +=back + +=cut + +sub pgbench +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + + my ($self, $opts, $stat, $out, $err, $name, $files, @args) = @_; + my @cmd = ( + 'pgbench', + split(/\s+/, $opts), + $self->_pgbench_make_files($files), @args); + + $self->command_checks_all(\@cmd, $stat, $out, $err, $name); +} + +=pod + +=item $node->background_pgbench($opts, $files, \$stdout, $timer) => harness + +Invoke B and return an IPC::Run harness object. The process's stdin +is empty, and its stdout and stderr go to the $stdout scalar reference. This +allows the caller to act on other parts of the system while B is +running. Errors from B are the caller's problem. + +The specified timer object is attached to the harness, as well. It's caller's +responsibility to select the timeout length, and to restart the timer after +each command if the timeout is per-command. + +Be sure to "finish" the harness when done with it. + +=over + +=item $opts + +Options as a string to be split on spaces. + +=item $files + +Reference to filename/contents dictionary. + +=back + +=cut + +sub background_pgbench +{ + my ($self, $opts, $files, $stdout, $timer) = @_; + + my @cmd = + ('pgbench', split(/\s+/, $opts), $self->_pgbench_make_files($files)); + + local $ENV{PGHOST} = $self->host; + local $ENV{PGPORT} = $self->port; + + my $stdin = ""; + # IPC::Run would otherwise append to existing contents: + $$stdout = "" if ref($stdout); + + my $harness = IPC::Run::start \@cmd, '<', \$stdin, '>', $stdout, '2>&1', + $timer; + + return $harness; +} + +=pod + =item $node->poll_query_until($dbname, $query [, $expected ]) Run B<$query> repeatedly, until it returns the B<$expected> result @@ -1375,19 +1604,22 @@ $expected = 't' unless defined($expected); # default value - my $cmd = [ 'psql', '-XAt', '-c', $query, '-d', $self->connstr($dbname) ]; + my $cmd = [ 'psql', '-XAt', '-d', $self->connstr($dbname) ]; my ($stdout, $stderr); my $max_attempts = 180 * 10; my $attempts = 0; while ($attempts < $max_attempts) { - my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; + my $result = IPC::Run::run $cmd, '<', \$query, + '>', \$stdout, '2>', \$stderr; $stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; chomp($stdout); + $stderr =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; + chomp($stderr); - if ($stdout eq $expected) + if ($stdout eq $expected && $stderr eq '') { return 1; } @@ -1400,8 +1632,6 @@ # The query result didn't change in 180 seconds. Give up. Print the # output from the last attempt, hopefully that's useful for debugging. - $stderr =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; - chomp($stderr); diag qq(poll_query_until timed out executing this query: $query expecting this output: @@ -1469,6 +1699,26 @@ } =pod + +=item $node->command_checks_all(...) + +TestLib::command_checks_all with our connection parameters. See +command_ok(...) + +=cut + +sub command_checks_all +{ + my $self = shift; + + local $ENV{PGHOST} = $self->host; + local $ENV{PGPORT} = $self->port; + + TestLib::command_checks_all(@_); + return; +} + +=pod =item $node->issues_sql_like(cmd, expected_sql, test_name) diff -Nru postgresql-10-10.17/src/test/perl/TestLib.pm postgresql-10-10.19/src/test/perl/TestLib.pm --- postgresql-10-10.17/src/test/perl/TestLib.pm 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/perl/TestLib.pm 2021-11-08 22:05:38.000000000 +0000 @@ -56,16 +56,32 @@ delete $ENV{LC_ALL}; $ENV{LC_MESSAGES} = 'C'; - delete $ENV{PGCONNECT_TIMEOUT}; - delete $ENV{PGDATA}; - delete $ENV{PGDATABASE}; - delete $ENV{PGHOSTADDR}; - delete $ENV{PGREQUIRESSL}; - delete $ENV{PGSERVICE}; - delete $ENV{PGSSLMODE}; - delete $ENV{PGUSER}; - delete $ENV{PGPORT}; - delete $ENV{PGHOST}; + # This list should be kept in sync with pg_regress.c. + my @envkeys = qw ( + PGCLIENTENCODING + PGCONNECT_TIMEOUT + PGDATA + PGDATABASE + PGGSSLIB + PGHOSTADDR + PGKRBSRVNAME + PGPASSFILE + PGPASSWORD + PGREQUIREPEER + PGREQUIRESSL + PGSERVICE + PGSERVICEFILE + PGSSLCERT + PGSSLCRL + PGSSLKEY + PGSSLMODE + PGSSLROOTCERT + PGTARGETSESSIONATTRS + PGUSER + PGPORT + PGHOST + ); + delete @ENV{@envkeys}; $ENV{PGAPPNAME} = $0; @@ -74,7 +90,7 @@ if ($windows_os) { require Win32API::File; - Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle setFilePointer)); + Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle)); } } @@ -243,33 +259,33 @@ my ($filename, $offset) = @_; local $/; my $contents; + my $fh; + + # On windows open file using win32 APIs, to allow us to set the + # FILE_SHARE_DELETE flag ("d" below), otherwise other accesses to the file + # may fail. if ($Config{osname} ne 'MSWin32') { - open(my $in, '<', $filename) + open($fh, '<', $filename) or die "could not read \"$filename\": $!"; - if (defined($offset)) - { - seek($in, $offset, SEEK_SET) - or die "could not seek \"$filename\": $!"; - } - $contents = <$in>; - close $in; } else { my $fHandle = createFile($filename, "r", "rwd") or die "could not open \"$filename\": $^E"; - OsFHandleOpen(my $fh = IO::Handle->new(), $fHandle, 'r') + OsFHandleOpen($fh = IO::Handle->new(), $fHandle, 'r') or die "could not read \"$filename\": $^E\n"; - if (defined($offset)) - { - setFilePointer($fh, $offset, qw(FILE_BEGIN)) - or die "could not seek \"$filename\": $^E\n"; - } - $contents = <$fh>; - CloseHandle($fHandle) - or die "could not close \"$filename\": $^E\n"; } + + if (defined($offset)) + { + seek($fh, $offset, SEEK_SET) + or die "could not seek \"$filename\": $!"; + } + + $contents = <$fh>; + close $fh; + $contents =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; return $contents; } @@ -365,6 +381,7 @@ my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; ok($result, "$test_name: exit code 0"); is($stderr, '', "$test_name: no stderr"); + $stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; like($stdout, $expected_stdout, "$test_name: matches"); } @@ -394,7 +411,51 @@ print("# Running: " . join(" ", @{$cmd}) . "\n"); my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; ok(!$result, "$test_name: exit code not 0"); + $stderr =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; like($stderr, $expected_stderr, "$test_name: matches"); } +# Run a command and check its status and outputs. +# The 5 arguments are: +# - cmd: ref to list for command, options and arguments to run +# - ret: expected exit status +# - out: ref to list of re to be checked against stdout (all must match) +# - err: ref to list of re to be checked against stderr (all must match) +# - test_name: name of test +sub command_checks_all +{ + my ($cmd, $expected_ret, $out, $err, $test_name) = @_; + + # run command + my ($stdout, $stderr); + print("# Running: " . join(" ", @{$cmd}) . "\n"); + IPC::Run::run($cmd, '>', \$stdout, '2>', \$stderr); + + # See http://perldoc.perl.org/perlvar.html#%24CHILD_ERROR + my $ret = $?; + die "command exited with signal " . ($ret & 127) + if $ret & 127; + $ret = $ret >> 8; + + foreach ($stderr, $stdout) { s/\r\n/\n/g if $Config{osname} eq 'msys'; } + + # check status + ok($ret == $expected_ret, + "$test_name status (got $ret vs expected $expected_ret)"); + + # check stdout + for my $re (@$out) + { + like($stdout, $re, "$test_name stdout /$re/"); + } + + # check stderr + for my $re (@$err) + { + like($stderr, $re, "$test_name stderr /$re/"); + } + + return; +} + 1; diff -Nru postgresql-10-10.17/src/test/recovery/Makefile postgresql-10-10.19/src/test/recovery/Makefile --- postgresql-10-10.17/src/test/recovery/Makefile 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/recovery/Makefile 2021-11-08 22:05:38.000000000 +0000 @@ -15,6 +15,10 @@ top_builddir = ../../.. include $(top_builddir)/src/Makefile.global +# required for 017_shm.pl +REGRESS_SHLIB=$(abs_top_builddir)/src/test/regress/regress$(DLSUFFIX) +export REGRESS_SHLIB + check: $(prove_check) diff -Nru postgresql-10-10.17/src/test/recovery/t/010_logical_decoding_timelines.pl postgresql-10-10.19/src/test/recovery/t/010_logical_decoding_timelines.pl --- postgresql-10-10.17/src/test/recovery/t/010_logical_decoding_timelines.pl 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/recovery/t/010_logical_decoding_timelines.pl 2021-11-08 22:05:38.000000000 +0000 @@ -155,7 +155,7 @@ ($ret, $stdout, $stderr) = $node_replica->psql( 'postgres', "SELECT data FROM pg_logical_slot_peek_changes('before_basebackup', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');", - timeout => 30); + timeout => 180); is($ret, 0, 'replay from slot before_basebackup succeeds'); my $final_expected_output_bb = q(BEGIN diff -Nru postgresql-10-10.17/src/test/recovery/t/025_stuck_on_old_timeline.pl postgresql-10-10.19/src/test/recovery/t/025_stuck_on_old_timeline.pl --- postgresql-10-10.17/src/test/recovery/t/025_stuck_on_old_timeline.pl 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/src/test/recovery/t/025_stuck_on_old_timeline.pl 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,107 @@ + +# Copyright (c) 2021, PostgreSQL Global Development Group + +# Testing streaming replication where standby is promoted and a new cascading +# standby (without WAL) is connected to the promoted standby. Both archiving +# and streaming are enabled, but only the history file is available from the +# archive, so the WAL files all have to be streamed. Test that the cascading +# standby can follow the new primary (promoted standby). +use strict; +use warnings; +use PostgresNode; +use TestLib; + +use File::Basename; +use FindBin; +use Test::More tests => 1; + +# Initialize primary node +my $node_primary = get_new_node('primary'); + +# Set up an archive command that will copy the history file but not the WAL +# files. No real archive command should behave this way; the point is to +# simulate a race condition where the new cascading standby starts up after +# the timeline history file reaches the archive but before any of the WAL files +# get there. +$node_primary->init(allows_streaming => 1, has_archiving => 1); + +# Note: consistent use of forward slashes here avoids any escaping problems +# that arise from use of backslashes. That means we need to double-quote all +# the paths in the archive_command +my $perlbin = TestLib::perl2host($^X); +$perlbin =~ s!\\!/!g if $TestLib::windows_os; +my $archivedir_primary = $node_primary->archive_dir; +$archivedir_primary =~ s!\\!/!g if $TestLib::windows_os; +$node_primary->append_conf('postgresql.conf', qq( +archive_command = '"$perlbin" "$FindBin::RealBin/cp_history_files" "%p" "$archivedir_primary/%f"' +wal_keep_segments=8 +)); +# Make sure that Msys perl doesn't complain about difficulty in setting locale +# when called from the archive_command. +local $ENV{PERL_BADLANG}=0; +$node_primary->start; + +# Take backup from primary +my $backup_name = 'my_backup'; +$node_primary->backup($backup_name); + +# Create streaming standby linking to primary +my $node_standby = get_new_node('standby'); +$node_standby->init_from_backup($node_primary, $backup_name, + allows_streaming => 1, has_streaming => 1, has_archiving => 1); +$node_standby->start; + +# Take backup of standby, use -Xnone so that pg_wal is empty. +$node_standby->backup($backup_name, backup_options => ['-Xnone']); + +# Create cascading standby but don't start it yet. +# Must set up both streaming and archiving. +my $node_cascade = get_new_node('cascade'); +$node_cascade->init_from_backup($node_standby, $backup_name, + has_streaming => 1); +$node_cascade->enable_restoring($node_primary); +$node_cascade->append_conf('recovery.conf', qq( +recovery_target_timeline='latest' +)); + +# Promote the standby. +$node_standby->promote; + +# Wait for promotion to complete +$node_standby->poll_query_until('postgres', + "SELECT NOT pg_is_in_recovery();") + or die "Timed out while waiting for promotion"; + +# Find next WAL segment to be archived +my $walfile_to_be_archived = $node_standby->safe_psql('postgres', + "SELECT pg_walfile_name(pg_current_wal_lsn());"); + +# Make WAL segment eligible for archival +$node_standby->safe_psql('postgres', 'SELECT pg_switch_wal()'); + +# Wait until the WAL segment has been archived. +# Since the history file gets created on promotion and is archived before any +# WAL segment, this is enough to guarantee that the history file was +# archived. +my $archive_wait_query = + "SELECT '$walfile_to_be_archived' <= last_archived_wal FROM pg_stat_archiver"; +$node_standby->poll_query_until('postgres', $archive_wait_query) + or die "Timed out while waiting for WAL segment to be archived"; +my $last_archived_wal_file = $walfile_to_be_archived; + +# Start cascade node +$node_cascade->start; + +# Create some content on promoted standby and check its presence on the +# cascading standby. +$node_standby->safe_psql('postgres', "CREATE TABLE tab_int AS SELECT 1 AS a"); + +# Wait for the replication to catch up +$node_standby->wait_for_catchup($node_cascade, 'replay', + $node_standby->lsn('insert')); + +# Check that cascading standby has the new content +my $result = + $node_cascade->safe_psql('postgres', "SELECT count(*) FROM tab_int"); +print "cascade: $result\n"; +is($result, 1, 'check streamed content on cascade standby'); diff -Nru postgresql-10-10.17/src/test/recovery/t/026_overwrite_contrecord.pl postgresql-10-10.19/src/test/recovery/t/026_overwrite_contrecord.pl --- postgresql-10-10.17/src/test/recovery/t/026_overwrite_contrecord.pl 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/src/test/recovery/t/026_overwrite_contrecord.pl 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,104 @@ +# Copyright (c) 2021, PostgreSQL Global Development Group + +# Tests for already-propagated WAL segments ending in incomplete WAL records. + +use strict; +use warnings; + +use FindBin; +use PostgresNode; +use TestLib; +use Test::More; + +plan tests => 3; + +# Test: Create a physical replica that's missing the last WAL file, +# then restart the primary to create a divergent WAL file and observe +# that the replica replays the "overwrite contrecord" from that new +# file. + +my $node = PostgresNode->get_new_node('primary'); +$node->init(allows_streaming => 1); +$node->append_conf('postgresql.conf', 'wal_keep_segments=16'); +$node->start; + +$node->safe_psql('postgres', 'create table filler (a int, b text)'); + +# Now consume all remaining room in the current WAL segment, leaving +# space enough only for the start of a largish record. +$node->safe_psql( + 'postgres', q{ +DO $$ +DECLARE + wal_segsize int := + (max(setting) filter (where name = 'wal_segment_size'))::int * + (max(setting) filter (where name = 'wal_block_size'))::int from pg_settings ; + remain int; + iters int := 0; +BEGIN + LOOP + INSERT into filler + select g, repeat(md5(g::text), (random() * 60 + 1)::int) + from generate_series(1, 10) g; + + remain := wal_segsize - (pg_current_wal_insert_lsn() - '0/0') % wal_segsize; + IF remain < 2 * setting::int from pg_settings where name = 'block_size' THEN + RAISE log 'exiting after % iterations, % bytes to end of WAL segment', iters, remain; + EXIT; + END IF; + iters := iters + 1; + END LOOP; +END +$$; +}); + +my $initfile = $node->safe_psql('postgres', + 'SELECT pg_walfile_name(pg_current_wal_insert_lsn())'); +$node->safe_psql('postgres', +qq{SELECT pg_logical_emit_message(true, 'test 026', repeat('xyzxz', 123456))} +); + +#$node->safe_psql('postgres', qq{create table foo ()}); +my $endfile = $node->safe_psql('postgres', + 'SELECT pg_walfile_name(pg_current_wal_insert_lsn())'); +ok($initfile != $endfile, "$initfile differs from $endfile"); + +# Now stop abruptly, to avoid a stop checkpoint. We can remove the tail file +# afterwards, and on startup the large message should be overwritten with new +# contents +$node->stop('immediate'); + +unlink $node->basedir . "/pgdata/pg_wal/$endfile" + or die "could not unlink " . $node->basedir . "/pgdata/pg_wal/$endfile: $!"; + +# OK, create a standby at this spot. +$node->backup_fs_cold('backup'); +my $node_standby = PostgresNode->get_new_node('standby'); +$node_standby->init_from_backup($node, 'backup', has_streaming => 1); + +$node_standby->start; +$node->start; + +$node->safe_psql('postgres', + qq{create table foo (a text); insert into foo values ('hello')}); +$node->safe_psql('postgres', + qq{SELECT pg_logical_emit_message(true, 'test 026', 'AABBCC')}); + +my $until_lsn = $node->safe_psql('postgres', "SELECT pg_current_wal_lsn()"); +my $caughtup_query = + "SELECT '$until_lsn'::pg_lsn <= pg_last_wal_replay_lsn()"; +$node_standby->poll_query_until('postgres', $caughtup_query) + or die "Timed out while waiting for standby to catch up"; + +ok($node_standby->safe_psql('postgres', 'select * from foo') eq 'hello', + 'standby replays past overwritten contrecord'); + +# Verify message appears in standby's log +my $log = slurp_file($node_standby->logfile); +like( + $log, + qr[successfully skipped missing contrecord at], + "found log line in standby"); + +$node->stop; +$node_standby->stop; diff -Nru postgresql-10-10.17/src/test/recovery/t/cp_history_files postgresql-10-10.19/src/test/recovery/t/cp_history_files --- postgresql-10-10.17/src/test/recovery/t/cp_history_files 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-10-10.19/src/test/recovery/t/cp_history_files 2021-11-08 22:05:38.000000000 +0000 @@ -0,0 +1,17 @@ +#!/usr/bin/perl + +use File::Copy; +use strict; +use warnings; + +die "wrong number of arguments" if @ARGV != 2; +my ($source, $target) = @ARGV; +exit if $source !~ /history/; +if ($^O eq 'msys') +{ + # make a windows path look like an msys path if necessary + $source =~ s!^([A-Za-z]):!'/' . lc($1)!e; + $source =~ s!\\!/!g; +} + +copy($source, $target) or die "couldn't copy $source to $target: $!"; diff -Nru postgresql-10-10.17/src/test/regress/expected/aggregates.out postgresql-10-10.19/src/test/regress/expected/aggregates.out --- postgresql-10-10.17/src/test/regress/expected/aggregates.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/aggregates.out 2021-11-08 22:05:38.000000000 +0000 @@ -1504,6 +1504,36 @@ {"(2,2,bar)","(3,1,baz)"} (1 row) +-- check handling of bare boolean Var in FILTER +select max(0) filter (where b1) from bool_test; + max +----- + 0 +(1 row) + +select (select max(0) filter (where b1)) from bool_test; + max +----- + 0 +(1 row) + +-- check for correct detection of nested-aggregate errors in FILTER +select max(unique1) filter (where sum(ten) > 0) from tenk1; +ERROR: aggregate functions are not allowed in FILTER +LINE 1: select max(unique1) filter (where sum(ten) > 0) from tenk1; + ^ +select (select max(unique1) filter (where sum(ten) > 0) from int8_tbl) from tenk1; +ERROR: aggregate function calls cannot be nested +LINE 1: select (select max(unique1) filter (where sum(ten) > 0) from... + ^ +select max(unique1) filter (where bool_or(ten > 0)) from tenk1; +ERROR: aggregate functions are not allowed in FILTER +LINE 1: select max(unique1) filter (where bool_or(ten > 0)) from ten... + ^ +select (select max(unique1) filter (where bool_or(ten > 0)) from int8_tbl) from tenk1; +ERROR: aggregate function calls cannot be nested +LINE 1: select (select max(unique1) filter (where bool_or(ten > 0)) ... + ^ -- ordered-set aggregates select p, percentile_cont(p) within group (order by x::float8) from generate_series(1,5) x, diff -Nru postgresql-10-10.17/src/test/regress/expected/alter_table.out postgresql-10-10.19/src/test/regress/expected/alter_table.out --- postgresql-10-10.17/src/test/regress/expected/alter_table.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/alter_table.out 2021-11-08 22:05:38.000000000 +0000 @@ -3856,3 +3856,23 @@ (2 rows) drop table alttype_cluster; +-- +-- Check that attaching or detaching a partitioned partition correctly leads +-- to its partitions' constraint being updated to reflect the parent's +-- newly added/removed constraint +create table target_parted (a int, b int) partition by list (a); +create table attach_parted (a int, b int) partition by list (b); +create table attach_parted_part1 partition of attach_parted for values in (1); +-- insert a row directly into the leaf partition so that its partition +-- constraint is built and stored in the relcache +insert into attach_parted_part1 values (1, 1); +-- the following better invalidate the partition constraint of the leaf +-- partition too... +alter table target_parted attach partition attach_parted for values in (1); +-- ...such that the following insert fails +insert into attach_parted_part1 values (2, 1); +ERROR: new row for relation "attach_parted_part1" violates partition constraint +DETAIL: Failing row contains (2, 1). +-- ...and doesn't when the partition is detached along with its own partition +alter table target_parted detach partition attach_parted; +insert into attach_parted_part1 values (2, 1); diff -Nru postgresql-10-10.17/src/test/regress/expected/create_index.out postgresql-10-10.19/src/test/regress/expected/create_index.out --- postgresql-10-10.17/src/test/regress/expected/create_index.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/create_index.out 2021-11-08 22:05:38.000000000 +0000 @@ -2472,6 +2472,18 @@ CREATE INDEX CONCURRENTLY concur_index7 ON concur_heap(f1); ERROR: CREATE INDEX CONCURRENTLY cannot run inside a transaction block COMMIT; +-- test where predicate is able to do a transactional update during +-- a concurrent build before switching pg_index state flags. +CREATE FUNCTION predicate_stable() RETURNS bool IMMUTABLE +LANGUAGE plpgsql AS $$ +BEGIN + EXECUTE 'SELECT txid_current()'; + RETURN true; +END; $$; +CREATE INDEX CONCURRENTLY concur_index8 ON concur_heap (f1) + WHERE predicate_stable(); +DROP INDEX concur_index8; +DROP FUNCTION predicate_stable(); -- But you can do a regular index build in a transaction BEGIN; CREATE INDEX std_index on concur_heap(f2); diff -Nru postgresql-10-10.17/src/test/regress/expected/dbsize.out postgresql-10-10.19/src/test/regress/expected/dbsize.out --- postgresql-10-10.17/src/test/regress/expected/dbsize.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/dbsize.out 2021-11-08 22:05:38.000000000 +0000 @@ -35,6 +35,48 @@ 1000000000000000.5 | 909 TB | -909 TB (12 rows) +-- test where units change up +SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM + (VALUES (10239::bigint), (10240::bigint), + (10485247::bigint), (10485248::bigint), + (10736893951::bigint), (10736893952::bigint), + (10994579406847::bigint), (10994579406848::bigint), + (11258449312612351::bigint), (11258449312612352::bigint)) x(size); + size | pg_size_pretty | pg_size_pretty +-------------------+----------------+---------------- + 10239 | 10239 bytes | -10239 bytes + 10240 | 10 kB | -10 kB + 10485247 | 10239 kB | -10239 kB + 10485248 | 10 MB | -10 MB + 10736893951 | 10239 MB | -10239 MB + 10736893952 | 10 GB | -10 GB + 10994579406847 | 10239 GB | -10239 GB + 10994579406848 | 10 TB | -10 TB + 11258449312612351 | 10239 TB | -10239 TB + 11258449312612352 | 10240 TB | -10240 TB +(10 rows) + +SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM + (VALUES (10239::numeric), (10240::numeric), + (10485247::numeric), (10485248::numeric), + (10736893951::numeric), (10736893952::numeric), + (10994579406847::numeric), (10994579406848::numeric), + (11258449312612351::numeric), (11258449312612352::numeric)) x(size); + size | pg_size_pretty | pg_size_pretty +-------------------+----------------+---------------- + 10239 | 10239 bytes | -10239 bytes + 10240 | 10 kB | -10 kB + 10485247 | 10239 kB | -10239 kB + 10485248 | 10 MB | -10 MB + 10736893951 | 10239 MB | -10239 MB + 10736893952 | 10 GB | -10 GB + 10994579406847 | 10239 GB | -10239 GB + 10994579406848 | 10 TB | -10 TB + 11258449312612351 | 10239 TB | -10239 TB + 11258449312612352 | 10240 TB | -10240 TB +(10 rows) + +-- pg_size_bytes() tests SELECT size, pg_size_bytes(size) FROM (VALUES ('1'), ('123bytes'), ('1kB'), ('1MB'), (' 1 GB'), ('1.5 GB '), ('1TB'), ('3000 TB'), ('1e6 MB')) x(size); diff -Nru postgresql-10-10.17/src/test/regress/expected/errors.out postgresql-10-10.19/src/test/regress/expected/errors.out --- postgresql-10-10.17/src/test/regress/expected/errors.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/errors.out 2021-11-08 22:05:38.000000000 +0000 @@ -50,6 +50,11 @@ ERROR: column "foobar" does not exist LINE 1: select distinct on (foobar) * from pg_database; ^ +-- grouping with FOR UPDATE +select null from pg_database group by datname for update; +ERROR: FOR UPDATE is not allowed with GROUP BY clause +select null from pg_database group by grouping sets (()) for update; +ERROR: FOR UPDATE is not allowed with GROUP BY clause -- -- DELETE -- missing relation name (this had better not wildcard!) diff -Nru postgresql-10-10.17/src/test/regress/expected/expressions.out postgresql-10-10.19/src/test/regress/expected/expressions.out --- postgresql-10-10.17/src/test/regress/expected/expressions.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/expressions.out 2021-11-08 22:05:38.000000000 +0000 @@ -75,3 +75,40 @@ (1 row) RESET search_path; +-- +-- Test parsing of a no-op cast to a type with unspecified typmod +-- +begin; +create table numeric_tbl (f1 numeric(18,3), f2 numeric); +create view numeric_view as + select + f1, f1::numeric(16,4) as f1164, f1::numeric as f1n, + f2, f2::numeric(16,4) as f2164, f2::numeric as f2n + from numeric_tbl; +\d+ numeric_view + View "public.numeric_view" + Column | Type | Collation | Nullable | Default | Storage | Description +--------+---------------+-----------+----------+---------+---------+------------- + f1 | numeric(18,3) | | | | main | + f1164 | numeric(16,4) | | | | main | + f1n | numeric | | | | main | + f2 | numeric | | | | main | + f2164 | numeric(16,4) | | | | main | + f2n | numeric | | | | main | +View definition: + SELECT numeric_tbl.f1, + numeric_tbl.f1::numeric(16,4) AS f1164, + numeric_tbl.f1::numeric AS f1n, + numeric_tbl.f2, + numeric_tbl.f2::numeric(16,4) AS f2164, + numeric_tbl.f2 AS f2n + FROM numeric_tbl; + +explain (verbose, costs off) select * from numeric_view; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------- + Seq Scan on public.numeric_tbl + Output: numeric_tbl.f1, (numeric_tbl.f1)::numeric(16,4), (numeric_tbl.f1)::numeric, numeric_tbl.f2, (numeric_tbl.f2)::numeric(16,4), numeric_tbl.f2 +(2 rows) + +rollback; diff -Nru postgresql-10-10.17/src/test/regress/expected/matview.out postgresql-10-10.19/src/test/regress/expected/matview.out --- postgresql-10-10.17/src/test/regress/expected/matview.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/matview.out 2021-11-08 22:05:38.000000000 +0000 @@ -551,7 +551,15 @@ -- make sure running as superuser works when MV owned by another role (bug #11208) CREATE ROLE regress_user_mvtest; SET ROLE regress_user_mvtest; -CREATE TABLE mvtest_foo_data AS SELECT i, md5(random()::text) +-- this test case also checks for ambiguity in the queries issued by +-- refresh_by_match_merge(), by choosing column names that intentionally +-- duplicate all the aliases used in those queries +CREATE TABLE mvtest_foo_data AS SELECT i, + i+1 AS tid, + md5(random()::text) AS mv, + md5(random()::text) AS newdata, + md5(random()::text) AS newdata2, + md5(random()::text) AS diff FROM generate_series(1, 10) i; CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; diff -Nru postgresql-10-10.17/src/test/regress/expected/numeric.out postgresql-10-10.19/src/test/regress/expected/numeric.out --- postgresql-10-10.17/src/test/regress/expected/numeric.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/numeric.out 2021-11-08 22:05:38.000000000 +0000 @@ -708,6 +708,55 @@ (6 rows) DROP TABLE fract_only; +-- Check conversion to integers +SELECT (-9223372036854775808.5)::int8; -- should fail +ERROR: bigint out of range +SELECT (-9223372036854775808.4)::int8; -- ok + int8 +---------------------- + -9223372036854775808 +(1 row) + +SELECT 9223372036854775807.4::int8; -- ok + int8 +--------------------- + 9223372036854775807 +(1 row) + +SELECT 9223372036854775807.5::int8; -- should fail +ERROR: bigint out of range +SELECT (-2147483648.5)::int4; -- should fail +ERROR: integer out of range +SELECT (-2147483648.4)::int4; -- ok + int4 +------------- + -2147483648 +(1 row) + +SELECT 2147483647.4::int4; -- ok + int4 +------------ + 2147483647 +(1 row) + +SELECT 2147483647.5::int4; -- should fail +ERROR: integer out of range +SELECT (-32768.5)::int2; -- should fail +ERROR: smallint out of range +SELECT (-32768.4)::int2; -- ok + int2 +-------- + -32768 +(1 row) + +SELECT 32767.4::int2; -- ok + int2 +------- + 32767 +(1 row) + +SELECT 32767.5::int2; -- should fail +ERROR: smallint out of range -- Check inf/nan conversion behavior SELECT 'NaN'::float8::numeric; numeric @@ -1217,6 +1266,39 @@ | 100 (1 row) +-- Test scientific notation with various exponents +WITH v(exp) AS + (VALUES(-16379),(-16378),(-1234),(-789),(-45),(-5),(-4),(-3),(-2),(-1),(0), + (1),(2),(3),(4),(5),(38),(275),(2345),(45678),(131070),(131071)) +SELECT exp, + to_char(('1.2345e'||exp)::numeric, '9.999EEEE') as numeric +FROM v; + exp | numeric +--------+---------------- + -16379 | 1.235e-16379 + -16378 | 1.235e-16378 + -1234 | 1.235e-1234 + -789 | 1.235e-789 + -45 | 1.235e-45 + -5 | 1.235e-05 + -4 | 1.235e-04 + -3 | 1.235e-03 + -2 | 1.235e-02 + -1 | 1.235e-01 + 0 | 1.235e+00 + 1 | 1.235e+01 + 2 | 1.235e+02 + 3 | 1.235e+03 + 4 | 1.235e+04 + 5 | 1.235e+05 + 38 | 1.235e+38 + 275 | 1.235e+275 + 2345 | 1.235e+2345 + 45678 | 1.235e+45678 + 131070 | 1.235e+131070 + 131071 | 1.235e+131071 +(22 rows) + -- TO_NUMBER() -- SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999'); @@ -1381,6 +1463,12 @@ 47699999999999999999999999999999999999999999999999999999999999999999999999999999999999985230000000000000000000000000000000000000000000000000000000000000000000000000000000000001 (1 row) +select (0.1 - 2e-16383) * (0.1 - 3e-16383) = 0.01 as rounds_to_point_zero_one; + rounds_to_point_zero_one +-------------------------- + t +(1 row) + -- -- Test some corner cases for division -- @@ -1512,6 +1600,18 @@ 0.7678656556403084 (1 row) +select coalesce(nullif(0.9999999999 ^ 23300000000000, 0), 0) as rounds_to_zero; + rounds_to_zero +---------------- + 0 +(1 row) + +select round(((1 - 1.500012345678e-1000) ^ 1.45e1003) * 1e1000); + round +---------------------------------------------------------- + 25218976308958387188077465658068501556514992509509282366 +(1 row) + -- cases that used to error out select 0.12 ^ (-25); ?column? @@ -1525,6 +1625,43 @@ 782333637740774446257.7719390061997396 (1 row) +select coalesce(nullif(0.9999999999 ^ 70000000000000, 0), 0) as underflows; + underflows +------------ + 0 +(1 row) + +-- negative base to integer powers +select (-1.0) ^ 2147483646; + ?column? +-------------------- + 1.0000000000000000 +(1 row) + +select (-1.0) ^ 2147483647; + ?column? +--------------------- + -1.0000000000000000 +(1 row) + +select (-1.0) ^ 2147483648; + ?column? +-------------------- + 1.0000000000000000 +(1 row) + +select (-1.0) ^ 1000000000000000; + ?column? +-------------------- + 1.0000000000000000 +(1 row) + +select (-1.0) ^ 1000000000000001; + ?column? +--------------------- + -1.0000000000000000 +(1 row) + -- -- Tests for raising to non-integer powers -- @@ -1612,6 +1749,18 @@ 2.7182818284590452353602874713526624977572470936999595749669676277240766 (1 row) +select coalesce(nullif(exp(-5000::numeric), 0), 0) as rounds_to_zero; + rounds_to_zero +---------------- + 0 +(1 row) + +select coalesce(nullif(exp(-10000::numeric), 0), 0) as underflows; + underflows +------------ + 0 +(1 row) + -- cases that used to generate inaccurate results select exp(32.999); exp diff -Nru postgresql-10-10.17/src/test/regress/expected/prepared_xacts_1.out postgresql-10-10.19/src/test/regress/expected/prepared_xacts_1.out --- postgresql-10-10.17/src/test/regress/expected/prepared_xacts_1.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/prepared_xacts_1.out 2021-11-08 22:05:38.000000000 +0000 @@ -153,6 +153,23 @@ -- Clean up DROP TABLE pxtest1; +-- Test detection of session-level and xact-level locks on same object +BEGIN; +SELECT pg_advisory_lock(1); + pg_advisory_lock +------------------ + +(1 row) + +SELECT pg_advisory_xact_lock_shared(1); + pg_advisory_xact_lock_shared +------------------------------ + +(1 row) + +PREPARE TRANSACTION 'foo6'; -- fails +ERROR: prepared transactions are disabled +HINT: Set max_prepared_transactions to a nonzero value. -- Test subtransactions BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; CREATE TABLE pxtest2 (a int); diff -Nru postgresql-10-10.17/src/test/regress/expected/prepared_xacts.out postgresql-10-10.19/src/test/regress/expected/prepared_xacts.out --- postgresql-10-10.17/src/test/regress/expected/prepared_xacts.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/prepared_xacts.out 2021-11-08 22:05:38.000000000 +0000 @@ -151,6 +151,22 @@ -- Clean up DROP TABLE pxtest1; +-- Test detection of session-level and xact-level locks on same object +BEGIN; +SELECT pg_advisory_lock(1); + pg_advisory_lock +------------------ + +(1 row) + +SELECT pg_advisory_xact_lock_shared(1); + pg_advisory_xact_lock_shared +------------------------------ + +(1 row) + +PREPARE TRANSACTION 'foo6'; -- fails +ERROR: cannot PREPARE while holding both session-level and transaction-level locks on the same object -- Test subtransactions BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; CREATE TABLE pxtest2 (a int); diff -Nru postgresql-10-10.17/src/test/regress/expected/publication.out postgresql-10-10.19/src/test/regress/expected/publication.out --- postgresql-10-10.17/src/test/regress/expected/publication.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/publication.out 2021-11-08 22:05:38.000000000 +0000 @@ -107,6 +107,21 @@ DROP TABLE testpub_tbl3, testpub_tbl3a; DROP PUBLICATION testpub3, testpub4; +-- Test cache invalidation FOR ALL TABLES publication +SET client_min_messages = 'ERROR'; +CREATE TABLE testpub_tbl4(a int); +INSERT INTO testpub_tbl4 values(1); +UPDATE testpub_tbl4 set a = 2; +CREATE PUBLICATION testpub_foralltables FOR ALL TABLES; +RESET client_min_messages; +-- fail missing REPLICA IDENTITY +UPDATE testpub_tbl4 set a = 3; +ERROR: cannot update table "testpub_tbl4" because it does not have a replica identity and publishes updates +HINT: To enable updating the table, set REPLICA IDENTITY using ALTER TABLE. +DROP PUBLICATION testpub_foralltables; +-- should pass after dropping the publication +UPDATE testpub_tbl4 set a = 3; +DROP TABLE testpub_tbl4; -- fail - view CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view; ERROR: "testpub_view" is not a table diff -Nru postgresql-10-10.17/src/test/regress/expected/regex.out postgresql-10-10.19/src/test/regress/expected/regex.out --- postgresql-10-10.17/src/test/regress/expected/regex.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/regex.out 2021-11-08 22:05:38.000000000 +0000 @@ -567,6 +567,38 @@ t (1 row) +-- Test incorrect removal of capture groups within {0} +select 'xxx' ~ '(.){0}(\1)' as f; + f +--- + f +(1 row) + +select 'xxx' ~ '((.)){0}(\2)' as f; + f +--- + f +(1 row) + +select 'xyz' ~ '((.)){0}(\2){0}' as t; + t +--- + t +(1 row) + +-- Test ancient oversight in when to apply zaptreesubs +select 'abcdef' ~ '^(.)\1|\1.' as f; + f +--- + f +(1 row) + +select 'abadef' ~ '^((.)\2|..)\2' as f; + f +--- + f +(1 row) + -- Error conditions select 'xyz' ~ 'x(\w)(?=\1)'; -- no backrefs in LACONs ERROR: invalid regular expression: invalid backreference number diff -Nru postgresql-10-10.17/src/test/regress/expected/rowsecurity.out postgresql-10-10.19/src/test/regress/expected/rowsecurity.out --- postgresql-10-10.17/src/test/regress/expected/rowsecurity.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/rowsecurity.out 2021-11-08 22:05:38.000000000 +0000 @@ -3906,6 +3906,15 @@ CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1,regress_rls_dob_role2 USING (true); DROP OWNED BY regress_rls_dob_role1; DROP POLICY p1 ON dob_t1; -- should succeed +-- same cases with duplicate polroles entries +CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1,regress_rls_dob_role1 USING (true); +DROP OWNED BY regress_rls_dob_role1; +DROP POLICY p1 ON dob_t1; -- should fail, already gone +ERROR: policy "p1" for table "dob_t1" does not exist +CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1,regress_rls_dob_role1,regress_rls_dob_role2 USING (true); +DROP OWNED BY regress_rls_dob_role1; +DROP POLICY p1 ON dob_t1; -- should succeed +-- partitioned target CREATE POLICY p1 ON dob_t2 TO regress_rls_dob_role1,regress_rls_dob_role2 USING (true); DROP OWNED BY regress_rls_dob_role1; DROP POLICY p1 ON dob_t2; -- should succeed diff -Nru postgresql-10-10.17/src/test/regress/expected/rules.out postgresql-10-10.19/src/test/regress/expected/rules.out --- postgresql-10-10.17/src/test/regress/expected/rules.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/rules.out 2021-11-08 22:05:38.000000000 +0000 @@ -2702,6 +2702,31 @@ (10 rows) reset constraint_exclusion; +-- test FOR UPDATE in rules +create table rules_base(f1 int, f2 int); +insert into rules_base values(1,2), (11,12); +create rule r1 as on update to rules_base do instead + select * from rules_base where f1 = 1 for update; +update rules_base set f2 = f2 + 1; + f1 | f2 +----+---- + 1 | 2 +(1 row) + +create or replace rule r1 as on update to rules_base do instead + select * from rules_base where f1 = 11 for update of rules_base; +update rules_base set f2 = f2 + 1; + f1 | f2 +----+---- + 11 | 12 +(1 row) + +create or replace rule r1 as on update to rules_base do instead + select * from rules_base where f1 = 11 for update of old; -- error +ERROR: relation "old" in FOR UPDATE clause not found in FROM clause +LINE 2: select * from rules_base where f1 = 11 for update of old; + ^ +drop table rules_base; -- test various flavors of pg_get_viewdef() select pg_get_viewdef('shoe'::regclass) as unpretty; unpretty diff -Nru postgresql-10-10.17/src/test/regress/expected/stats_ext.out postgresql-10-10.19/src/test/regress/expected/stats_ext.out --- postgresql-10-10.17/src/test/regress/expected/stats_ext.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/stats_ext.out 2021-11-08 22:05:38.000000000 +0000 @@ -35,6 +35,17 @@ -- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER); CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1; +COMMENT ON STATISTICS ab1_a_b_stats IS 'new comment'; +CREATE ROLE regress_stats_ext; +SET SESSION AUTHORIZATION regress_stats_ext; +COMMENT ON STATISTICS ab1_a_b_stats IS 'changed comment'; +ERROR: must be owner of statistics object ab1_a_b_stats +DROP STATISTICS ab1_a_b_stats; +ERROR: must be owner of statistics object ab1_a_b_stats +ALTER STATISTICS ab1_a_b_stats RENAME TO ab1_a_b_stats_new; +ERROR: must be owner of statistics object ab1_a_b_stats +RESET SESSION AUTHORIZATION; +DROP ROLE regress_stats_ext; CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1; NOTICE: statistics object "ab1_a_b_stats" already exists, skipping DROP STATISTICS ab1_a_b_stats; diff -Nru postgresql-10-10.17/src/test/regress/expected/subscription.out postgresql-10-10.19/src/test/regress/expected/subscription.out --- postgresql-10-10.17/src/test/regress/expected/subscription.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/subscription.out 2021-11-08 22:05:38.000000000 +0000 @@ -86,6 +86,9 @@ ALTER SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist2'; ALTER SUBSCRIPTION testsub SET (slot_name = 'newname'); -- fail +ALTER SUBSCRIPTION testsub SET (slot_name = ''); +ERROR: replication slot name "" is too short +-- fail ALTER SUBSCRIPTION doesnotexist CONNECTION 'dbname=doesnotexist2'; ERROR: subscription "doesnotexist" does not exist ALTER SUBSCRIPTION testsub SET (create_slot = false); diff -Nru postgresql-10-10.17/src/test/regress/expected/with.out postgresql-10-10.19/src/test/regress/expected/with.out --- postgresql-10-10.17/src/test/regress/expected/with.out 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/expected/with.out 2021-11-08 22:05:38.000000000 +0000 @@ -1656,7 +1656,7 @@ CREATE TEMP TABLE bug6051_2 (i int); CREATE RULE bug6051_ins AS ON INSERT TO bug6051 DO INSTEAD INSERT INTO bug6051_2 - SELECT NEW.i; + VALUES(NEW.i); WITH t1 AS ( DELETE FROM bug6051 RETURNING * ) INSERT INTO bug6051 SELECT * FROM t1; SELECT * FROM bug6051; @@ -1672,6 +1672,41 @@ 3 (3 rows) +-- check INSERT...SELECT rule actions are disallowed on commands +-- that have modifyingCTEs +CREATE OR REPLACE RULE bug6051_ins AS ON INSERT TO bug6051 DO INSTEAD + INSERT INTO bug6051_2 + SELECT NEW.i; +WITH t1 AS ( DELETE FROM bug6051 RETURNING * ) +INSERT INTO bug6051 SELECT * FROM t1; +ERROR: INSERT...SELECT rule actions are not supported for queries having data-modifying statements in WITH +-- silly example to verify that hasModifyingCTE flag is propagated +CREATE TEMP TABLE bug6051_3 AS + SELECT a FROM generate_series(11,13) AS a; +CREATE RULE bug6051_3_ins AS ON INSERT TO bug6051_3 DO INSTEAD + SELECT i FROM bug6051_2; +BEGIN; SET LOCAL force_parallel_mode = on; +WITH t1 AS ( DELETE FROM bug6051_3 RETURNING * ) + INSERT INTO bug6051_3 SELECT * FROM t1; + i +--- + 1 + 2 + 3 + 1 + 2 + 3 + 1 + 2 + 3 +(9 rows) + +COMMIT; +SELECT * FROM bug6051_3; + a +--- +(0 rows) + -- a truly recursive CTE in the same list WITH RECURSIVE t(a) AS ( SELECT 0 @@ -2256,6 +2291,31 @@ ) VALUES(FALSE); ERROR: conditional DO INSTEAD rules are not supported for data-modifying statements in WITH +CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO INSTEAD NOTHING; +WITH t AS ( + INSERT INTO y VALUES(0) +) +VALUES(FALSE); +ERROR: DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH +CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO INSTEAD NOTIFY foo; +WITH t AS ( + INSERT INTO y VALUES(0) +) +VALUES(FALSE); +ERROR: DO INSTEAD NOTIFY rules are not supported for data-modifying statements in WITH +CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO ALSO NOTIFY foo; +WITH t AS ( + INSERT INTO y VALUES(0) +) +VALUES(FALSE); +ERROR: DO ALSO rules are not supported for data-modifying statements in WITH +CREATE OR REPLACE RULE y_rule AS ON INSERT TO y + DO INSTEAD (NOTIFY foo; NOTIFY bar); +WITH t AS ( + INSERT INTO y VALUES(0) +) +VALUES(FALSE); +ERROR: multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH DROP RULE y_rule ON y; -- check that parser lookahead for WITH doesn't cause any odd behavior create table foo (with baz); -- fail, WITH is a reserved word diff -Nru postgresql-10-10.17/src/test/regress/input/largeobject.source postgresql-10-10.19/src/test/regress/input/largeobject.source --- postgresql-10-10.17/src/test/regress/input/largeobject.source 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/input/largeobject.source 2021-11-08 22:05:38.000000000 +0000 @@ -124,6 +124,17 @@ SELECT lo_open(loid, x'40000'::int) from lotest_stash_values; ABORT; +DO $$ +DECLARE + loid oid; +BEGIN + SELECT tbl.loid INTO loid FROM lotest_stash_values tbl; + PERFORM lo_export(loid, '@abs_builddir@/results/invalid/path'); +EXCEPTION + WHEN UNDEFINED_FILE THEN RAISE NOTICE 'could not open file, as expected'; +END; +$$; + -- Test truncation. BEGIN; UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); diff -Nru postgresql-10-10.17/src/test/regress/output/largeobject_1.source postgresql-10-10.19/src/test/regress/output/largeobject_1.source --- postgresql-10-10.17/src/test/regress/output/largeobject_1.source 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/output/largeobject_1.source 2021-11-08 22:05:38.000000000 +0000 @@ -161,6 +161,17 @@ (1 row) ABORT; +DO $$ +DECLARE + loid oid; +BEGIN + SELECT tbl.loid INTO loid FROM lotest_stash_values tbl; + PERFORM lo_export(loid, '@abs_builddir@/results/invalid/path'); +EXCEPTION + WHEN UNDEFINED_FILE THEN RAISE NOTICE 'could not open file, as expected'; +END; +$$; +NOTICE: could not open file, as expected -- Test truncation. BEGIN; UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); diff -Nru postgresql-10-10.17/src/test/regress/output/largeobject.source postgresql-10-10.19/src/test/regress/output/largeobject.source --- postgresql-10-10.17/src/test/regress/output/largeobject.source 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/output/largeobject.source 2021-11-08 22:05:38.000000000 +0000 @@ -161,6 +161,17 @@ (1 row) ABORT; +DO $$ +DECLARE + loid oid; +BEGIN + SELECT tbl.loid INTO loid FROM lotest_stash_values tbl; + PERFORM lo_export(loid, '@abs_builddir@/results/invalid/path'); +EXCEPTION + WHEN UNDEFINED_FILE THEN RAISE NOTICE 'could not open file, as expected'; +END; +$$; +NOTICE: could not open file, as expected -- Test truncation. BEGIN; UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); diff -Nru postgresql-10-10.17/src/test/regress/pg_regress.c postgresql-10-10.19/src/test/regress/pg_regress.c --- postgresql-10-10.17/src/test/regress/pg_regress.c 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/pg_regress.c 2021-11-08 22:05:38.000000000 +0000 @@ -799,14 +799,32 @@ * we also use psql's -X switch consistently, so that ~/.psqlrc files * won't mess things up.) Also, set PGPORT to the temp port, and set * PGHOST depending on whether we are using TCP or Unix sockets. + * + * This list should be kept in sync with TestLib.pm. */ + /* PGCLIENTENCODING, see above */ + unsetenv("PGCONNECT_TIMEOUT"); + unsetenv("PGDATA"); unsetenv("PGDATABASE"); - unsetenv("PGUSER"); + unsetenv("PGGSSLIB"); + /* PGHOSTADDR, see below */ + unsetenv("PGKRBSRVNAME"); + unsetenv("PGPASSFILE"); + unsetenv("PGPASSWORD"); + unsetenv("PGREQUIREPEER"); + unsetenv("PGREQUIRESSL"); unsetenv("PGSERVICE"); + unsetenv("PGSERVICEFILE"); + unsetenv("PGSSLCERT"); + unsetenv("PGSSLCRL"); + unsetenv("PGSSLKEY"); unsetenv("PGSSLMODE"); - unsetenv("PGREQUIRESSL"); - unsetenv("PGCONNECT_TIMEOUT"); - unsetenv("PGDATA"); + unsetenv("PGSSLROOTCERT"); + unsetenv("PGTARGETSESSIONATTRS"); + unsetenv("PGUSER"); + /* PGPORT, see below */ + /* PGHOST, see below */ + #ifdef HAVE_UNIX_SOCKETS if (hostname != NULL) doputenv("PGHOST", hostname); diff -Nru postgresql-10-10.17/src/test/regress/sql/aggregates.sql postgresql-10-10.19/src/test/regress/sql/aggregates.sql --- postgresql-10-10.17/src/test/regress/sql/aggregates.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/aggregates.sql 2021-11-08 22:05:38.000000000 +0000 @@ -568,6 +568,17 @@ from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,2) i; +-- check handling of bare boolean Var in FILTER +select max(0) filter (where b1) from bool_test; +select (select max(0) filter (where b1)) from bool_test; + +-- check for correct detection of nested-aggregate errors in FILTER +select max(unique1) filter (where sum(ten) > 0) from tenk1; +select (select max(unique1) filter (where sum(ten) > 0) from int8_tbl) from tenk1; +select max(unique1) filter (where bool_or(ten > 0)) from tenk1; +select (select max(unique1) filter (where bool_or(ten > 0)) from int8_tbl) from tenk1; + + -- ordered-set aggregates select p, percentile_cont(p) within group (order by x::float8) diff -Nru postgresql-10-10.17/src/test/regress/sql/alter_table.sql postgresql-10-10.19/src/test/regress/sql/alter_table.sql --- postgresql-10-10.17/src/test/regress/sql/alter_table.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/alter_table.sql 2021-11-08 22:05:38.000000000 +0000 @@ -2510,3 +2510,22 @@ where indrelid = 'alttype_cluster'::regclass order by indexrelid::regclass::text; drop table alttype_cluster; + +-- +-- Check that attaching or detaching a partitioned partition correctly leads +-- to its partitions' constraint being updated to reflect the parent's +-- newly added/removed constraint +create table target_parted (a int, b int) partition by list (a); +create table attach_parted (a int, b int) partition by list (b); +create table attach_parted_part1 partition of attach_parted for values in (1); +-- insert a row directly into the leaf partition so that its partition +-- constraint is built and stored in the relcache +insert into attach_parted_part1 values (1, 1); +-- the following better invalidate the partition constraint of the leaf +-- partition too... +alter table target_parted attach partition attach_parted for values in (1); +-- ...such that the following insert fails +insert into attach_parted_part1 values (2, 1); +-- ...and doesn't when the partition is detached along with its own partition +alter table target_parted detach partition attach_parted; +insert into attach_parted_part1 values (2, 1); diff -Nru postgresql-10-10.17/src/test/regress/sql/create_index.sql postgresql-10-10.19/src/test/regress/sql/create_index.sql --- postgresql-10-10.17/src/test/regress/sql/create_index.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/create_index.sql 2021-11-08 22:05:38.000000000 +0000 @@ -775,11 +775,22 @@ CREATE INDEX CONCURRENTLY concur_index5 on concur_heap(f2) WHERE f1='x'; -- here we also check that you can default the index name CREATE INDEX CONCURRENTLY on concur_heap((f2||f1)); - -- You can't do a concurrent index build in a transaction BEGIN; CREATE INDEX CONCURRENTLY concur_index7 ON concur_heap(f1); COMMIT; +-- test where predicate is able to do a transactional update during +-- a concurrent build before switching pg_index state flags. +CREATE FUNCTION predicate_stable() RETURNS bool IMMUTABLE +LANGUAGE plpgsql AS $$ +BEGIN + EXECUTE 'SELECT txid_current()'; + RETURN true; +END; $$; +CREATE INDEX CONCURRENTLY concur_index8 ON concur_heap (f1) + WHERE predicate_stable(); +DROP INDEX concur_index8; +DROP FUNCTION predicate_stable(); -- But you can do a regular index build in a transaction BEGIN; diff -Nru postgresql-10-10.17/src/test/regress/sql/dbsize.sql postgresql-10-10.19/src/test/regress/sql/dbsize.sql --- postgresql-10-10.17/src/test/regress/sql/dbsize.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/dbsize.sql 2021-11-08 22:05:38.000000000 +0000 @@ -11,6 +11,22 @@ (1000000000.5::numeric), (1000000000000.5::numeric), (1000000000000000.5::numeric)) x(size); +-- test where units change up +SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM + (VALUES (10239::bigint), (10240::bigint), + (10485247::bigint), (10485248::bigint), + (10736893951::bigint), (10736893952::bigint), + (10994579406847::bigint), (10994579406848::bigint), + (11258449312612351::bigint), (11258449312612352::bigint)) x(size); + +SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM + (VALUES (10239::numeric), (10240::numeric), + (10485247::numeric), (10485248::numeric), + (10736893951::numeric), (10736893952::numeric), + (10994579406847::numeric), (10994579406848::numeric), + (11258449312612351::numeric), (11258449312612352::numeric)) x(size); + +-- pg_size_bytes() tests SELECT size, pg_size_bytes(size) FROM (VALUES ('1'), ('123bytes'), ('1kB'), ('1MB'), (' 1 GB'), ('1.5 GB '), ('1TB'), ('3000 TB'), ('1e6 MB')) x(size); diff -Nru postgresql-10-10.17/src/test/regress/sql/errors.sql postgresql-10-10.19/src/test/regress/sql/errors.sql --- postgresql-10-10.17/src/test/regress/sql/errors.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/errors.sql 2021-11-08 22:05:38.000000000 +0000 @@ -37,6 +37,10 @@ -- bad attribute name in select distinct on select distinct on (foobar) * from pg_database; +-- grouping with FOR UPDATE +select null from pg_database group by datname for update; +select null from pg_database group by grouping sets (()) for update; + -- -- DELETE diff -Nru postgresql-10-10.17/src/test/regress/sql/expressions.sql postgresql-10-10.19/src/test/regress/sql/expressions.sql --- postgresql-10-10.17/src/test/regress/sql/expressions.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/expressions.sql 2021-11-08 22:05:38.000000000 +0000 @@ -34,3 +34,23 @@ SET search_path = 'pg_catalog'; SELECT current_schema; RESET search_path; + + +-- +-- Test parsing of a no-op cast to a type with unspecified typmod +-- +begin; + +create table numeric_tbl (f1 numeric(18,3), f2 numeric); + +create view numeric_view as + select + f1, f1::numeric(16,4) as f1164, f1::numeric as f1n, + f2, f2::numeric(16,4) as f2164, f2::numeric as f2n + from numeric_tbl; + +\d+ numeric_view + +explain (verbose, costs off) select * from numeric_view; + +rollback; diff -Nru postgresql-10-10.17/src/test/regress/sql/matview.sql postgresql-10-10.19/src/test/regress/sql/matview.sql --- postgresql-10-10.17/src/test/regress/sql/matview.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/matview.sql 2021-11-08 22:05:38.000000000 +0000 @@ -211,7 +211,15 @@ -- make sure running as superuser works when MV owned by another role (bug #11208) CREATE ROLE regress_user_mvtest; SET ROLE regress_user_mvtest; -CREATE TABLE mvtest_foo_data AS SELECT i, md5(random()::text) +-- this test case also checks for ambiguity in the queries issued by +-- refresh_by_match_merge(), by choosing column names that intentionally +-- duplicate all the aliases used in those queries +CREATE TABLE mvtest_foo_data AS SELECT i, + i+1 AS tid, + md5(random()::text) AS mv, + md5(random()::text) AS newdata, + md5(random()::text) AS newdata2, + md5(random()::text) AS diff FROM generate_series(1, 10) i; CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; diff -Nru postgresql-10-10.17/src/test/regress/sql/numeric.sql postgresql-10-10.19/src/test/regress/sql/numeric.sql --- postgresql-10-10.17/src/test/regress/sql/numeric.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/numeric.sql 2021-11-08 22:05:38.000000000 +0000 @@ -655,6 +655,20 @@ SELECT * FROM fract_only; DROP TABLE fract_only; +-- Check conversion to integers +SELECT (-9223372036854775808.5)::int8; -- should fail +SELECT (-9223372036854775808.4)::int8; -- ok +SELECT 9223372036854775807.4::int8; -- ok +SELECT 9223372036854775807.5::int8; -- should fail +SELECT (-2147483648.5)::int4; -- should fail +SELECT (-2147483648.4)::int4; -- ok +SELECT 2147483647.4::int4; -- ok +SELECT 2147483647.5::int4; -- should fail +SELECT (-32768.5)::int2; -- should fail +SELECT (-32768.4)::int2; -- ok +SELECT 32767.4::int2; -- ok +SELECT 32767.5::int2; -- should fail + -- Check inf/nan conversion behavior SELECT 'NaN'::float8::numeric; SELECT 'Infinity'::float8::numeric; @@ -786,6 +800,14 @@ SELECT '' AS to_char_25, to_char('100'::numeric, 'FM999.'); SELECT '' AS to_char_26, to_char('100'::numeric, 'FM999'); +-- Test scientific notation with various exponents +WITH v(exp) AS + (VALUES(-16379),(-16378),(-1234),(-789),(-45),(-5),(-4),(-3),(-2),(-1),(0), + (1),(2),(3),(4),(5),(38),(275),(2345),(45678),(131070),(131071)) +SELECT exp, + to_char(('1.2345e'||exp)::numeric, '9.999EEEE') as numeric +FROM v; + -- TO_NUMBER() -- SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999'); @@ -841,6 +863,8 @@ select 4769999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; +select (0.1 - 2e-16383) * (0.1 - 3e-16383) = 0.01 as rounds_to_point_zero_one; + -- -- Test some corner cases for division -- @@ -874,10 +898,20 @@ select 1.2 ^ 345; select 0.12 ^ (-20); select 1.000000000123 ^ (-2147483648); +select coalesce(nullif(0.9999999999 ^ 23300000000000, 0), 0) as rounds_to_zero; +select round(((1 - 1.500012345678e-1000) ^ 1.45e1003) * 1e1000); -- cases that used to error out select 0.12 ^ (-25); select 0.5678 ^ (-85); +select coalesce(nullif(0.9999999999 ^ 70000000000000, 0), 0) as underflows; + +-- negative base to integer powers +select (-1.0) ^ 2147483646; +select (-1.0) ^ 2147483647; +select (-1.0) ^ 2147483648; +select (-1.0) ^ 1000000000000000; +select (-1.0) ^ 1000000000000001; -- -- Tests for raising to non-integer powers @@ -910,6 +944,8 @@ select exp(0.0); select exp(1.0); select exp(1.0::numeric(71,70)); +select coalesce(nullif(exp(-5000::numeric), 0), 0) as rounds_to_zero; +select coalesce(nullif(exp(-10000::numeric), 0), 0) as underflows; -- cases that used to generate inaccurate results select exp(32.999); diff -Nru postgresql-10-10.17/src/test/regress/sql/prepared_xacts.sql postgresql-10-10.19/src/test/regress/sql/prepared_xacts.sql --- postgresql-10-10.17/src/test/regress/sql/prepared_xacts.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/prepared_xacts.sql 2021-11-08 22:05:38.000000000 +0000 @@ -88,6 +88,12 @@ -- Clean up DROP TABLE pxtest1; +-- Test detection of session-level and xact-level locks on same object +BEGIN; +SELECT pg_advisory_lock(1); +SELECT pg_advisory_xact_lock_shared(1); +PREPARE TRANSACTION 'foo6'; -- fails + -- Test subtransactions BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; CREATE TABLE pxtest2 (a int); diff -Nru postgresql-10-10.17/src/test/regress/sql/publication.sql postgresql-10-10.19/src/test/regress/sql/publication.sql --- postgresql-10-10.17/src/test/regress/sql/publication.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/publication.sql 2021-11-08 22:05:38.000000000 +0000 @@ -60,6 +60,20 @@ DROP TABLE testpub_tbl3, testpub_tbl3a; DROP PUBLICATION testpub3, testpub4; +-- Test cache invalidation FOR ALL TABLES publication +SET client_min_messages = 'ERROR'; +CREATE TABLE testpub_tbl4(a int); +INSERT INTO testpub_tbl4 values(1); +UPDATE testpub_tbl4 set a = 2; +CREATE PUBLICATION testpub_foralltables FOR ALL TABLES; +RESET client_min_messages; +-- fail missing REPLICA IDENTITY +UPDATE testpub_tbl4 set a = 3; +DROP PUBLICATION testpub_foralltables; +-- should pass after dropping the publication +UPDATE testpub_tbl4 set a = 3; +DROP TABLE testpub_tbl4; + -- fail - view CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view; CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1, pub_test.testpub_nopk; diff -Nru postgresql-10-10.17/src/test/regress/sql/regex.sql postgresql-10-10.19/src/test/regress/sql/regex.sql --- postgresql-10-10.17/src/test/regress/sql/regex.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/regex.sql 2021-11-08 22:05:38.000000000 +0000 @@ -135,6 +135,15 @@ select 'a' ~ '()*\1'; select 'a' ~ '()+\1'; +-- Test incorrect removal of capture groups within {0} +select 'xxx' ~ '(.){0}(\1)' as f; +select 'xxx' ~ '((.)){0}(\2)' as f; +select 'xyz' ~ '((.)){0}(\2){0}' as t; + +-- Test ancient oversight in when to apply zaptreesubs +select 'abcdef' ~ '^(.)\1|\1.' as f; +select 'abadef' ~ '^((.)\2|..)\2' as f; + -- Error conditions select 'xyz' ~ 'x(\w)(?=\1)'; -- no backrefs in LACONs select 'xyz' ~ 'x(\w)(?=(\1))'; diff -Nru postgresql-10-10.17/src/test/regress/sql/rowsecurity.sql postgresql-10-10.19/src/test/regress/sql/rowsecurity.sql --- postgresql-10-10.17/src/test/regress/sql/rowsecurity.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/rowsecurity.sql 2021-11-08 22:05:38.000000000 +0000 @@ -1760,6 +1760,16 @@ DROP OWNED BY regress_rls_dob_role1; DROP POLICY p1 ON dob_t1; -- should succeed +-- same cases with duplicate polroles entries +CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1,regress_rls_dob_role1 USING (true); +DROP OWNED BY regress_rls_dob_role1; +DROP POLICY p1 ON dob_t1; -- should fail, already gone + +CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1,regress_rls_dob_role1,regress_rls_dob_role2 USING (true); +DROP OWNED BY regress_rls_dob_role1; +DROP POLICY p1 ON dob_t1; -- should succeed + +-- partitioned target CREATE POLICY p1 ON dob_t2 TO regress_rls_dob_role1,regress_rls_dob_role2 USING (true); DROP OWNED BY regress_rls_dob_role1; DROP POLICY p1 ON dob_t2; -- should succeed diff -Nru postgresql-10-10.17/src/test/regress/sql/rules.sql postgresql-10-10.19/src/test/regress/sql/rules.sql --- postgresql-10-10.17/src/test/regress/sql/rules.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/rules.sql 2021-11-08 22:05:38.000000000 +0000 @@ -991,6 +991,20 @@ reset constraint_exclusion; +-- test FOR UPDATE in rules + +create table rules_base(f1 int, f2 int); +insert into rules_base values(1,2), (11,12); +create rule r1 as on update to rules_base do instead + select * from rules_base where f1 = 1 for update; +update rules_base set f2 = f2 + 1; +create or replace rule r1 as on update to rules_base do instead + select * from rules_base where f1 = 11 for update of rules_base; +update rules_base set f2 = f2 + 1; +create or replace rule r1 as on update to rules_base do instead + select * from rules_base where f1 = 11 for update of old; -- error +drop table rules_base; + -- test various flavors of pg_get_viewdef() select pg_get_viewdef('shoe'::regclass) as unpretty; diff -Nru postgresql-10-10.17/src/test/regress/sql/stats_ext.sql postgresql-10-10.19/src/test/regress/sql/stats_ext.sql --- postgresql-10-10.17/src/test/regress/sql/stats_ext.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/stats_ext.sql 2021-11-08 22:05:38.000000000 +0000 @@ -23,6 +23,15 @@ -- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER); CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1; +COMMENT ON STATISTICS ab1_a_b_stats IS 'new comment'; +CREATE ROLE regress_stats_ext; +SET SESSION AUTHORIZATION regress_stats_ext; +COMMENT ON STATISTICS ab1_a_b_stats IS 'changed comment'; +DROP STATISTICS ab1_a_b_stats; +ALTER STATISTICS ab1_a_b_stats RENAME TO ab1_a_b_stats_new; +RESET SESSION AUTHORIZATION; +DROP ROLE regress_stats_ext; + CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1; DROP STATISTICS ab1_a_b_stats; diff -Nru postgresql-10-10.17/src/test/regress/sql/subscription.sql postgresql-10-10.19/src/test/regress/sql/subscription.sql --- postgresql-10-10.17/src/test/regress/sql/subscription.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/subscription.sql 2021-11-08 22:05:38.000000000 +0000 @@ -66,6 +66,9 @@ ALTER SUBSCRIPTION testsub SET (slot_name = 'newname'); -- fail +ALTER SUBSCRIPTION testsub SET (slot_name = ''); + +-- fail ALTER SUBSCRIPTION doesnotexist CONNECTION 'dbname=doesnotexist2'; ALTER SUBSCRIPTION testsub SET (create_slot = false); diff -Nru postgresql-10-10.17/src/test/regress/sql/with.sql postgresql-10-10.19/src/test/regress/sql/with.sql --- postgresql-10-10.17/src/test/regress/sql/with.sql 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/regress/sql/with.sql 2021-11-08 22:05:38.000000000 +0000 @@ -765,7 +765,7 @@ CREATE RULE bug6051_ins AS ON INSERT TO bug6051 DO INSTEAD INSERT INTO bug6051_2 - SELECT NEW.i; + VALUES(NEW.i); WITH t1 AS ( DELETE FROM bug6051 RETURNING * ) INSERT INTO bug6051 SELECT * FROM t1; @@ -773,6 +773,31 @@ SELECT * FROM bug6051; SELECT * FROM bug6051_2; +-- check INSERT...SELECT rule actions are disallowed on commands +-- that have modifyingCTEs +CREATE OR REPLACE RULE bug6051_ins AS ON INSERT TO bug6051 DO INSTEAD + INSERT INTO bug6051_2 + SELECT NEW.i; + +WITH t1 AS ( DELETE FROM bug6051 RETURNING * ) +INSERT INTO bug6051 SELECT * FROM t1; + +-- silly example to verify that hasModifyingCTE flag is propagated +CREATE TEMP TABLE bug6051_3 AS + SELECT a FROM generate_series(11,13) AS a; + +CREATE RULE bug6051_3_ins AS ON INSERT TO bug6051_3 DO INSTEAD + SELECT i FROM bug6051_2; + +BEGIN; SET LOCAL force_parallel_mode = on; + +WITH t1 AS ( DELETE FROM bug6051_3 RETURNING * ) + INSERT INTO bug6051_3 SELECT * FROM t1; + +COMMIT; + +SELECT * FROM bug6051_3; + -- a truly recursive CTE in the same list WITH RECURSIVE t(a) AS ( SELECT 0 @@ -1021,6 +1046,27 @@ WITH t AS ( INSERT INTO y VALUES(0) ) +VALUES(FALSE); +CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO INSTEAD NOTHING; +WITH t AS ( + INSERT INTO y VALUES(0) +) +VALUES(FALSE); +CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO INSTEAD NOTIFY foo; +WITH t AS ( + INSERT INTO y VALUES(0) +) +VALUES(FALSE); +CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO ALSO NOTIFY foo; +WITH t AS ( + INSERT INTO y VALUES(0) +) +VALUES(FALSE); +CREATE OR REPLACE RULE y_rule AS ON INSERT TO y + DO INSTEAD (NOTIFY foo; NOTIFY bar); +WITH t AS ( + INSERT INTO y VALUES(0) +) VALUES(FALSE); DROP RULE y_rule ON y; diff -Nru postgresql-10-10.17/src/test/subscription/t/001_rep_changes.pl postgresql-10-10.19/src/test/subscription/t/001_rep_changes.pl --- postgresql-10-10.17/src/test/subscription/t/001_rep_changes.pl 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/subscription/t/001_rep_changes.pl 2021-11-08 22:05:38.000000000 +0000 @@ -248,28 +248,30 @@ 'update works with dropped subscriber column'); # check that change of connection string and/or publication list causes -# restart of subscription workers. Not all of these are registered as tests -# as we need to poll for a change but the test suite will fail none the less -# when something goes wrong. +# restart of subscription workers. We check the state along with +# application_name to ensure that the walsender is (re)started. +# +# Not all of these are registered as tests as we need to poll for a change +# but the test suite will fail none the less when something goes wrong. my $oldpid = $node_publisher->safe_psql('postgres', - "SELECT pid FROM pg_stat_replication WHERE application_name = '$appname';" + "SELECT pid FROM pg_stat_replication WHERE application_name = '$appname' AND state = 'streaming';" ); $node_subscriber->safe_psql('postgres', "ALTER SUBSCRIPTION tap_sub CONNECTION 'application_name=$appname $publisher_connstr'" ); $node_publisher->poll_query_until('postgres', -"SELECT pid != $oldpid FROM pg_stat_replication WHERE application_name = '$appname';" -) or die "Timed out while waiting for apply to restart"; +"SELECT pid != $oldpid FROM pg_stat_replication WHERE application_name = '$appname' AND state = 'streaming';" +) or die "Timed out while waiting for apply to restart after changing CONNECTION"; $oldpid = $node_publisher->safe_psql('postgres', - "SELECT pid FROM pg_stat_replication WHERE application_name = '$appname';" + "SELECT pid FROM pg_stat_replication WHERE application_name = '$appname' AND state = 'streaming';" ); $node_subscriber->safe_psql('postgres', "ALTER SUBSCRIPTION tap_sub SET PUBLICATION tap_pub_ins_only WITH (copy_data = false)" ); $node_publisher->poll_query_until('postgres', -"SELECT pid != $oldpid FROM pg_stat_replication WHERE application_name = '$appname';" -) or die "Timed out while waiting for apply to restart"; +"SELECT pid != $oldpid FROM pg_stat_replication WHERE application_name = '$appname' AND state = 'streaming';" +) or die "Timed out while waiting for apply to restart after changing PUBLICATION"; $node_publisher->safe_psql('postgres', "INSERT INTO tab_ins SELECT generate_series(1001,1100)"); @@ -314,13 +316,13 @@ # check restart on rename $oldpid = $node_publisher->safe_psql('postgres', - "SELECT pid FROM pg_stat_replication WHERE application_name = '$appname';" + "SELECT pid FROM pg_stat_replication WHERE application_name = '$appname' AND state = 'streaming';" ); $node_subscriber->safe_psql('postgres', "ALTER SUBSCRIPTION tap_sub RENAME TO tap_sub_renamed"); $node_publisher->poll_query_until('postgres', -"SELECT pid != $oldpid FROM pg_stat_replication WHERE application_name = '$appname';" -) or die "Timed out while waiting for apply to restart"; +"SELECT pid != $oldpid FROM pg_stat_replication WHERE application_name = '$appname' AND state = 'streaming';" +) or die "Timed out while waiting for apply to restart after renaming SUBSCRIPTION"; # check all the cleanup $node_subscriber->safe_psql('postgres', "DROP SUBSCRIPTION tap_sub_renamed"); diff -Nru postgresql-10-10.17/src/test/subscription/t/002_types.pl postgresql-10-10.19/src/test/subscription/t/002_types.pl --- postgresql-10-10.17/src/test/subscription/t/002_types.pl 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/test/subscription/t/002_types.pl 2021-11-08 22:05:38.000000000 +0000 @@ -239,9 +239,9 @@ -- test_tbl_range_array INSERT INTO tst_range_array (a, b, c) VALUES (1, tstzrange('Mon Aug 04 00:00:00 2014 CEST'::timestamptz, 'infinity'), '{"[1,2]", "[10,20]"}'), - (2, tstzrange('Mon Aug 04 00:00:00 2014 CEST'::timestamptz - interval '2 days', 'Mon Aug 04 00:00:00 2014 CEST'::timestamptz), '{"[2,3]", "[20,30]"}'), - (3, tstzrange('Mon Aug 04 00:00:00 2014 CEST'::timestamptz - interval '3 days', 'Mon Aug 04 00:00:00 2014 CEST'::timestamptz), '{"[3,4]"}'), - (4, tstzrange('Mon Aug 04 00:00:00 2014 CEST'::timestamptz - interval '4 days', 'Mon Aug 04 00:00:00 2014 CEST'::timestamptz), '{"[4,5]", NULL, "[40,50]"}'), + (2, tstzrange('Sat Aug 02 00:00:00 2014 CEST'::timestamptz, 'Mon Aug 04 00:00:00 2014 CEST'::timestamptz), '{"[2,3]", "[20,30]"}'), + (3, tstzrange('Fri Aug 01 00:00:00 2014 CEST'::timestamptz, 'Mon Aug 04 00:00:00 2014 CEST'::timestamptz), '{"[3,4]"}'), + (4, tstzrange('Thu Jul 31 00:00:00 2014 CEST'::timestamptz, 'Mon Aug 04 00:00:00 2014 CEST'::timestamptz), '{"[4,5]", NULL, "[40,50]"}'), (5, NULL, NULL); -- tst_hstore diff -Nru postgresql-10-10.17/src/timezone/data/tzdata.zi postgresql-10-10.19/src/timezone/data/tzdata.zi --- postgresql-10-10.17/src/timezone/data/tzdata.zi 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/timezone/data/tzdata.zi 2021-11-08 22:05:38.000000000 +0000 @@ -1,4 +1,4 @@ -# version 2021a +# version 2021e # This zic input file is in the public domain. R d 1916 o - Jun 14 23s 1 S R d 1916 1919 - O Su>=1 23s 0 - @@ -43,6 +43,7 @@ 1 - WAT Z Africa/Abidjan -0:16:8 - LMT 1912 0 - GMT +L Africa/Abidjan Africa/Accra L Africa/Abidjan Africa/Bamako L Africa/Abidjan Africa/Banjul L Africa/Abidjan Africa/Conakry @@ -86,16 +87,6 @@ R K 2014 o - S lastTh 24 0 - Z Africa/Cairo 2:5:9 - LMT 1900 O 2 K EE%sT -R GH 1919 o - N 24 0 0:20 +0020 -R GH 1920 1942 - Ja 1 2 0 GMT -R GH 1920 1939 - S 1 2 0:20 +0020 -R GH 1940 1941 - May 1 2 0:20 +0020 -R GH 1950 1955 - S 1 2 0:30 +0030 -R GH 1951 1956 - Ja 1 2 0 GMT -Z Africa/Accra -0:0:52 - LMT 1915 N 2 -0 GH %s 1942 F 8 -0:30 - +0030 1946 Ja 6 -0 GH %s Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u -1 - -01 1975 0 - GMT @@ -456,12 +447,6 @@ 5 - +05 Z Indian/Kerguelen 0 - -00 1950 5 - +05 -Z Antarctica/DumontDUrville 0 - -00 1947 -10 - +10 1952 Ja 14 -0 - -00 1956 N -10 - +10 -Z Antarctica/Syowa 0 - -00 1957 Ja 29 -3 - +03 R Tr 2005 ma - Mar lastSu 1u 2 +02 R Tr 2004 ma - O lastSu 1u 0 +00 Z Antarctica/Troll 0 - -00 2005 F 12 @@ -916,8 +901,9 @@ R J 2005 o - S lastF 0s 0 - R J 2006 2011 - O lastF 0s 0 - R J 2013 o - D 20 0 0 - -R J 2014 ma - Mar lastTh 24 1 S +R J 2014 2021 - Mar lastTh 24 1 S R J 2014 ma - O lastF 0s 0 - +R J 2022 ma - F lastTh 24 1 S Z Asia/Amman 2:23:44 - LMT 1931 2 J EE%sT Z Asia/Almaty 5:7:48 - LMT 1924 May 2 @@ -1126,7 +1112,8 @@ R P 2019 o - Mar 29 0 1 S R P 2019 o - O Sa>=24 0 0 - R P 2020 ma - Mar Sa>=24 0 1 S -R P 2020 ma - O Sa>=24 1 0 - +R P 2020 o - O 24 1 0 - +R P 2021 ma - O lastF 1 0 - Z Asia/Gaza 2:17:52 - LMT 1900 O 2 Z EET/EEST 1948 May 15 2 K EE%sT 1967 Jun 5 @@ -1162,6 +1149,7 @@ L Asia/Qatar Asia/Bahrain Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14 3 - +03 +L Asia/Riyadh Antarctica/Syowa L Asia/Riyadh Asia/Aden L Asia/Riyadh Asia/Kuwait Z Asia/Singapore 6:55:25 - LMT 1901 @@ -1431,10 +1419,11 @@ R FJ 2012 2013 - Ja Su>=18 3 0 - R FJ 2014 o - Ja Su>=18 2 0 - R FJ 2014 2018 - N Su>=1 2 1 - -R FJ 2015 ma - Ja Su>=12 3 0 - +R FJ 2015 2021 - Ja Su>=12 3 0 - R FJ 2019 o - N Su>=8 2 1 - R FJ 2020 o - D 20 2 1 - -R FJ 2021 ma - N Su>=8 2 1 - +R FJ 2022 ma - N Su>=8 2 1 - +R FJ 2023 ma - Ja Su>=12 3 0 - Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 12 FJ +12/+13 Z Pacific/Gambier -8:59:48 - LMT 1912 O @@ -1466,7 +1455,7 @@ L Pacific/Guam Pacific/Saipan Z Pacific/Tarawa 11:32:4 - LMT 1901 12 - +12 -Z Pacific/Enderbury -11:24:20 - LMT 1901 +Z Pacific/Kanton 0 - -00 1937 Au 31 -12 - -12 1979 O -11 - -11 1994 D 31 13 - +13 @@ -1560,12 +1549,12 @@ R CK 1978 o - N 12 0 0:30 - R CK 1979 1991 - Mar Su>=1 0 0 - R CK 1979 1990 - O lastSu 0 0:30 - -Z Pacific/Rarotonga -10:39:4 - LMT 1901 +Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26 +-10:39:4 - LMT 1952 O 16 -10:30 - -1030 1978 N 12 -10 CK -10/-0930 -Z Pacific/Niue -11:19:40 - LMT 1901 --11:20 - -1120 1951 --11:30 - -1130 1978 O +Z Pacific/Niue -11:19:40 - LMT 1952 O 16 +-11:20 - -1120 1964 Jul -11 - -11 Z Pacific/Norfolk 11:11:52 - LMT 1901 11:12 - +1112 1951 @@ -1580,6 +1569,7 @@ Z Pacific/Port_Moresby 9:48:40 - LMT 1880 9:48:32 - PMMT 1895 10 - +10 +L Pacific/Port_Moresby Antarctica/DumontDUrville Z Pacific/Bougainville 10:22:16 - LMT 1880 9:48:32 - PMMT 1895 10 - +10 1942 Jul @@ -1596,8 +1586,8 @@ R WS 2010 o - S lastSu 0 1 - R WS 2011 o - Ap Sa>=1 4 0 - R WS 2011 o - S lastSa 3 1 - -R WS 2012 ma - Ap Su>=1 4 0 - -R WS 2012 ma - S lastSu 3 1 - +R WS 2012 2021 - Ap Su>=1 4 0 - +R WS 2012 2020 - S lastSu 3 1 - Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 -11:26:56 - LMT 1911 -11:30 - -1130 1950 @@ -1614,8 +1604,8 @@ R TO 2001 2002 - Ja lastSu 2 0 - R TO 2016 o - N Su>=1 2 1 - R TO 2017 o - Ja Su>=15 3 0 - -Z Pacific/Tongatapu 12:19:20 - LMT 1901 -12:20 - +1220 1941 +Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10 +12:20 - +1220 1961 13 - +13 1999 13 TO +13/+14 Z Pacific/Funafuti 11:56:52 - LMT 1901 @@ -2354,10 +2344,8 @@ R p 1944 1945 - Ap Sa>=21 22s 2 M R p 1946 o - Ap Sa>=1 23s 1 S R p 1946 o - O Sa>=1 23s 0 - -R p 1947 1949 - Ap Su>=1 2s 1 S -R p 1947 1949 - O Su>=1 2s 0 - -R p 1951 1965 - Ap Su>=1 2s 1 S -R p 1951 1965 - O Su>=1 2s 0 - +R p 1947 1965 - Ap Su>=1 2s 1 S +R p 1947 1965 - O Su>=1 2s 0 - R p 1977 o - Mar 27 0s 1 S R p 1977 o - S 25 0s 0 - R p 1978 1979 - Ap Su>=1 0s 1 S @@ -2967,6 +2955,7 @@ -7 - MST 1967 -7 u M%sT 1968 Mar 21 -7 - MST +L America/Phoenix America/Creston Z America/Boise -7:44:49 - LMT 1883 N 18 12:15:11 -8 u P%sT 1923 May 13 2 -7 u M%sT 1974 @@ -3237,9 +3226,6 @@ -4 C A%sT 1993 -4 o A%sT 2007 -4 C A%sT -Z America/Blanc-Sablon -3:48:28 - LMT 1884 --4 C A%sT 1970 --4 - AST R t 1919 o - Mar 30 23:30 1 D R t 1919 o - O 26 0 0 S R t 1920 o - May 2 2 1 D @@ -3268,6 +3254,7 @@ -5 C E%sT 1946 -5 t E%sT 1974 -5 C E%sT +L America/Toronto America/Nassau Z America/Thunder_Bay -5:57 - LMT 1895 -6 - CST 1910 -5 - EST 1942 @@ -3283,11 +3270,6 @@ -6 C C%sT 1940 S 29 -6 1 CDT 1942 F 9 2s -6 C C%sT -Z America/Atikokan -6:6:28 - LMT 1895 --6 C C%sT 1940 S 29 --6 1 CDT 1942 F 9 2s --6 C C%sT 1945 S 30 2 --5 - EST R W 1916 o - Ap 23 0 1 D R W 1916 o - S 17 0 0 S R W 1918 o - Ap 14 2 1 D @@ -3383,10 +3365,6 @@ -8 Va P%sT 1987 -8 C P%sT 2015 Mar 8 2 -7 - MST -Z America/Creston -7:46:4 - LMT 1884 --7 - MST 1916 O --8 - PST 1918 Jun 2 --7 - MST R Y 1918 o - Ap 14 2 1 D R Y 1918 o - O 27 2 0 S R Y 1919 o - May 25 2 1 D @@ -3554,23 +3532,20 @@ -8 u P%sT 2002 F 20 -8 m P%sT 2010 -8 u P%sT -R BS 1942 o - May 1 24 1 W -R BS 1944 o - D 31 24 0 S -R BS 1945 o - F 1 0 1 W -R BS 1945 o - Au 14 23u 1 P -R BS 1945 o - O 17 24 0 S -R BS 1964 1975 - O lastSu 2 0 S -R BS 1964 1975 - Ap lastSu 2 1 D -Z America/Nassau -5:9:30 - LMT 1912 Mar 2 --5 BS E%sT 1976 --5 u E%sT +R BB 1942 o - Ap 19 5u 1 D +R BB 1942 o - Au 31 6u 0 S +R BB 1943 o - May 2 5u 1 D +R BB 1943 o - S 5 6u 0 S +R BB 1944 o - Ap 10 5u 0:30 - +R BB 1944 o - S 10 6u 0 S R BB 1977 o - Jun 12 2 1 D R BB 1977 1978 - O Su>=1 2 0 S R BB 1978 1980 - Ap Su>=15 2 1 D R BB 1979 o - S 30 2 0 S R BB 1980 o - S 25 2 0 S -Z America/Barbados -3:58:29 - LMT 1924 --3:58:29 - BMT 1932 +Z America/Barbados -3:58:29 - LMT 1911 Au 28 +-4 BB A%sT 1944 +-4 BB AST/-0330 1945 -4 BB A%sT R BZ 1918 1941 - O Sa>=1 24 0:30 -0530 R BZ 1919 1942 - F Sa>=8 24 0 CST @@ -3730,11 +3705,31 @@ Z America/Panama -5:18:8 - LMT 1890 -5:19:36 - CMT 1908 Ap 22 -5 - EST +L America/Panama America/Atikokan L America/Panama America/Cayman Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 -4 - AST 1942 May 3 -4 u A%sT 1946 -4 - AST +L America/Puerto_Rico America/Anguilla +L America/Puerto_Rico America/Antigua +L America/Puerto_Rico America/Aruba +L America/Puerto_Rico America/Curacao +L America/Puerto_Rico America/Blanc-Sablon +L America/Puerto_Rico America/Dominica +L America/Puerto_Rico America/Grenada +L America/Puerto_Rico America/Guadeloupe +L America/Puerto_Rico America/Kralendijk +L America/Puerto_Rico America/Lower_Princes +L America/Puerto_Rico America/Marigot +L America/Puerto_Rico America/Montserrat +L America/Puerto_Rico America/Port_of_Spain +L America/Puerto_Rico America/St_Barthelemy +L America/Puerto_Rico America/St_Kitts +L America/Puerto_Rico America/St_Lucia +L America/Puerto_Rico America/St_Thomas +L America/Puerto_Rico America/St_Vincent +L America/Puerto_Rico America/Tortola Z America/Miquelon -3:44:40 - LMT 1911 May 15 -4 - AST 1980 May -3 - -03 1987 @@ -3914,7 +3909,6 @@ -4 - -04 2004 Jun 20 -3 A -03/-02 2008 O 18 -3 - -03 -L America/Curacao America/Aruba Z America/La_Paz -4:32:36 - LMT 1890 -4:32:36 - CMT 1931 O 15 -4:32:36 1 BST 1932 Mar 21 @@ -4135,11 +4129,6 @@ Z America/Bogota -4:56:16 - LMT 1884 Mar 13 -4:56:16 - BMT 1914 N 23 -5 CO -05/-04 -Z America/Curacao -4:35:47 - LMT 1912 F 12 --4:30 - -0430 1965 --4 - AST -L America/Curacao America/Lower_Princes -L America/Curacao America/Kralendijk R EC 1992 o - N 28 0 1 - R EC 1993 o - F 5 0 0 - Z America/Guayaquil -5:19:20 - LMT 1890 @@ -4169,9 +4158,10 @@ Z America/Cayenne -3:29:20 - LMT 1911 Jul -4 - -04 1967 O -3 - -03 -Z America/Guyana -3:52:40 - LMT 1915 Mar --3:45 - -0345 1975 Jul 31 --3 - -03 1991 +Z America/Guyana -3:52:39 - LMT 1911 Au +-4 - -04 1915 Mar +-3:45 - -0345 1975 Au +-3 - -03 1992 Mar 29 1 -4 - -04 R y 1975 1988 - O 1 0 1 - R y 1975 1978 - Mar 1 0 0 - @@ -4220,21 +4210,6 @@ -3:40:36 - PMT 1945 O -3:30 - -0330 1984 O -3 - -03 -Z America/Port_of_Spain -4:6:4 - LMT 1912 Mar 2 --4 - AST -L America/Port_of_Spain America/Anguilla -L America/Port_of_Spain America/Antigua -L America/Port_of_Spain America/Dominica -L America/Port_of_Spain America/Grenada -L America/Port_of_Spain America/Guadeloupe -L America/Port_of_Spain America/Marigot -L America/Port_of_Spain America/Montserrat -L America/Port_of_Spain America/St_Barthelemy -L America/Port_of_Spain America/St_Kitts -L America/Port_of_Spain America/St_Lucia -L America/Port_of_Spain America/St_Thomas -L America/Port_of_Spain America/St_Vincent -L America/Port_of_Spain America/Tortola R U 1923 1925 - O 1 0 0:30 - R U 1924 1926 - Ap 1 0 0 - R U 1933 1938 - O lastSu 0 0:30 - @@ -4342,7 +4317,7 @@ L America/Adak America/Atka L America/Argentina/Buenos_Aires America/Buenos_Aires L America/Argentina/Catamarca America/Catamarca -L America/Atikokan America/Coral_Harbour +L America/Panama America/Coral_Harbour L America/Argentina/Cordoba America/Cordoba L America/Tijuana America/Ensenada L America/Indiana/Indianapolis America/Fort_Wayne @@ -4357,7 +4332,7 @@ L America/Argentina/Cordoba America/Rosario L America/Tijuana America/Santa_Isabel L America/Denver America/Shiprock -L America/Port_of_Spain America/Virgin +L America/Puerto_Rico America/Virgin L Pacific/Auckland Antarctica/South_Pole L Asia/Ashgabat Asia/Ashkhabad L Asia/Kolkata Asia/Calcutta @@ -4429,6 +4404,7 @@ L Pacific/Chatham NZ-CHAT L America/Denver Navajo L Asia/Shanghai PRC +L Pacific/Kanton Pacific/Enderbury L Pacific/Honolulu Pacific/Johnston L Pacific/Pohnpei Pacific/Ponape L Pacific/Pago_Pago Pacific/Samoa diff -Nru postgresql-10-10.17/src/timezone/known_abbrevs.txt postgresql-10-10.19/src/timezone/known_abbrevs.txt --- postgresql-10-10.17/src/timezone/known_abbrevs.txt 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/timezone/known_abbrevs.txt 2021-11-08 22:05:38.000000000 +0000 @@ -28,7 +28,6 @@ +13 46800 D +1345 49500 D +14 50400 -+14 50400 D -00 0 -01 -3600 -02 -7200 diff -Nru postgresql-10-10.17/src/tools/msvc/Solution.pm postgresql-10-10.19/src/tools/msvc/Solution.pm --- postgresql-10-10.17/src/tools/msvc/Solution.pm 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/tools/msvc/Solution.pm 2021-11-08 22:05:38.000000000 +0000 @@ -256,7 +256,8 @@ my ($digit1, $digit2, $digit3) = $self->GetOpenSSLVersion(); # More symbols are needed with OpenSSL 1.1.0 and above. - if ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0') + if ( ($digit1 >= '3' && $digit2 >= '0' && $digit3 >= '0') + || ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0')) { print $o "#define HAVE_ASN1_STRING_GET0_DATA 1\n"; print $o "#define HAVE_BIO_GET_DATA 1\n"; @@ -578,7 +579,8 @@ # changed their library names from: # - libeay to libcrypto # - ssleay to libssl - if ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0') + if ( ($digit1 >= '3' && $digit2 >= '0' && $digit3 >= '0') + || ($digit1 >= '1' && $digit2 >= '1' && $digit3 >= '0')) { my $dbgsuffix; my $libsslpath; @@ -645,10 +647,26 @@ } if ($self->{options}->{gss}) { - $proj->AddIncludeDir($self->{options}->{gss} . '\inc\krb5'); - $proj->AddLibrary($self->{options}->{gss} . '\lib\i386\krb5_32.lib'); - $proj->AddLibrary($self->{options}->{gss} . '\lib\i386\comerr32.lib'); - $proj->AddLibrary($self->{options}->{gss} . '\lib\i386\gssapi32.lib'); + $proj->AddIncludeDir($self->{options}->{gss} . '\include'); + $proj->AddIncludeDir($self->{options}->{gss} . '\include\krb5'); + if ($self->{platform} eq 'Win32') + { + $proj->AddLibrary( + $self->{options}->{gss} . '\lib\i386\krb5_32.lib'); + $proj->AddLibrary( + $self->{options}->{gss} . '\lib\i386\comerr32.lib'); + $proj->AddLibrary( + $self->{options}->{gss} . '\lib\i386\gssapi32.lib'); + } + else + { + $proj->AddLibrary( + $self->{options}->{gss} . '\lib\amd64\krb5_64.lib'); + $proj->AddLibrary( + $self->{options}->{gss} . '\lib\amd64\comerr64.lib'); + $proj->AddLibrary( + $self->{options}->{gss} . '\lib\amd64\gssapi64.lib'); + } } if ($self->{options}->{iconv}) { @@ -797,6 +815,8 @@ $cfg .= ' --with-tcl' if ($self->{options}->{tcl}); $cfg .= ' --with-perl' if ($self->{options}->{perl}); $cfg .= ' --with-python' if ($self->{options}->{python}); + my $port = $self->{options}->{'--with-pgport'}; + $cfg .= " --with-pgport=$port" if defined($port); return $cfg; } diff -Nru postgresql-10-10.17/src/tools/pgindent/typedefs.list postgresql-10-10.19/src/tools/pgindent/typedefs.list --- postgresql-10-10.17/src/tools/pgindent/typedefs.list 2021-05-10 20:47:56.000000000 +0000 +++ postgresql-10-10.19/src/tools/pgindent/typedefs.list 2021-11-08 22:05:38.000000000 +0000 @@ -972,6 +972,7 @@ ImportForeignSchemaType ImportForeignSchema_function ImportQual +InProgressEnt IncludeWal InclusionOpaque IncrementVarSublevelsUp_context @@ -3149,6 +3150,7 @@ xl_multi_insert_tuple xl_multixact_create xl_multixact_truncate +xl_overwrite_contrecord xl_parameter_change xl_relmap_update xl_replorigin_drop